3

OpenCV カスケードを使用してリアルタイムで人を検出する必要があります。現在、OpenCV に付属するトレーニング済みのカスケード ファイルを使用していますが、後で独自の LBP カスケードをトレーニングして速度を向上させます。質問があります。

カスケードの検出を高速化する方法は何ですか? 例として、このビデオをご覧ください。それは本当に高速で、Haar カスケードを使用し、素晴らしいです。特にリアルタイムアプリケーションの場合、この速度を達成するために何ができますか? トリックやハックはありますか?

4

4 に答える 4

5

ビデオの例で「速度」が何を意味するのかわかりません。そこで検出が行われる「速度」を理解するのは難しいからです。コンピューター ビジョンでは、検出の「速度」について話すとき、通常、1 秒または 1 セットのビデオのアルゴリズムの 1 秒あたりのフレーム数 (FPS) またはミリ秒の実行時間を意味します。アルゴリズムによって達成された FPS が入力ビデオの FPS と同じ場合、これはリアルタイムまたは 1 倍の処理速度と呼ばれます。処理 FPS が入力 FPS よりも大きい場合は、リアルタイム処理よりも高速であり、小さい場合はリアルタイム処理よりも遅くなります。あなたが「スピード」と言ったとき、あなたは同じことを意味していたと思います。

これを踏まえて、検出を高速化する 2 つの方法を紹介します。過去数年間で歩行者検出の基準を設定した次の 2 つの論文を読むことを強くお勧めします: The Fastest Pedestrian Detector in the WestPedestrian detection at 100 fps で、どちらも複数のスケールで検出を実行する際の計算ボトルネックを最適化しています。従来の検出設定で。後者には、ここここで公開されているコードがあります。しかし、これは改善が必要な領域の 1 つであるスケール サイズです。

OpenCV でネイティブに実装されているメソッドは、検出に使用される Haar のような機能セットを拡張する Viola-Jones メソッドのバリアントに基づいています。考慮すべきもう 1 つの改善領域は、ウィンドウ処理と呼ばれます。OpenCV でネイティブに実装されているものを含む従来の検出方法では、通常は左上から右下に行方向に、ウィンドウを画像全体に拡大してスライドさせる必要があります。これを回避する古典的な方法は、分岐限定最適化を実行するEfficient Subwindow Search (ESS)と呼ばれます。これに基づいて多くの拡張機能が構築されていますが、オブジェクト検出の基本を開始して理解するのに最適な場所です。

もちろん、検出プロセスを高速化する非常に明白な方法の 1 つは、マルチスレッドや GPU などのコードを並列化することです。公開されている GPU 実装がいくつかあります。たとえば、ここではサポート ベクター マシン ベースの検出器を使用しています。

于 2014-07-29T19:09:40.167 に答える
4

HAAR カスケード検出の速度を向上させる必要がある場合は、HAAR および LBP カスケード分類器の実装が改善されたSimd Libraryを使用することをお勧めします (SSE4.1、AVX2、および NEON(ARM) を使用するため、2 で動作します)。 -元の OpenCV よりも 3 倍高速です)。OpenCV の標準 HAAR および LBP カスケードを使用できることに注意してください。

于 2016-11-22T06:48:25.070 に答える
1

画像処理を扱う際の主な要因の 1 つは、入力画像のサイズです。画像を縮小することを検討してください。あなたの例の場合、車は既知の方向に合理的に予測可能な速度で移動しているため、車が検出された場合、その領域の周囲の画像の関心領域部分を次のフレームで検索できます。より速い検出。

于 2014-07-29T19:15:59.337 に答える