ビデオの例で「速度」が何を意味するのかわかりません。そこで検出が行われる「速度」を理解するのは難しいからです。コンピューター ビジョンでは、検出の「速度」について話すとき、通常、1 秒または 1 セットのビデオのアルゴリズムの 1 秒あたりのフレーム数 (FPS) またはミリ秒の実行時間を意味します。アルゴリズムによって達成された FPS が入力ビデオの FPS と同じ場合、これはリアルタイムまたは 1 倍の処理速度と呼ばれます。処理 FPS が入力 FPS よりも大きい場合は、リアルタイム処理よりも高速であり、小さい場合はリアルタイム処理よりも遅くなります。あなたが「スピード」と言ったとき、あなたは同じことを意味していたと思います。
これを踏まえて、検出を高速化する 2 つの方法を紹介します。過去数年間で歩行者検出の基準を設定した次の 2 つの論文を読むことを強くお勧めします: The Fastest Pedestrian Detector in the WestとPedestrian detection at 100 fps で、どちらも複数のスケールで検出を実行する際の計算ボトルネックを最適化しています。従来の検出設定で。後者には、こことここで公開されているコードがあります。しかし、これは改善が必要な領域の 1 つであるスケール サイズです。
OpenCV でネイティブに実装されているメソッドは、検出に使用される Haar のような機能セットを拡張する Viola-Jones メソッドのバリアントに基づいています。考慮すべきもう 1 つの改善領域は、ウィンドウ処理と呼ばれます。OpenCV でネイティブに実装されているものを含む従来の検出方法では、通常は左上から右下に行方向に、ウィンドウを画像全体に拡大してスライドさせる必要があります。これを回避する古典的な方法は、分岐限定最適化を実行するEfficient Subwindow Search (ESS)と呼ばれます。これに基づいて多くの拡張機能が構築されていますが、オブジェクト検出の基本を開始して理解するのに最適な場所です。
もちろん、検出プロセスを高速化する非常に明白な方法の 1 つは、マルチスレッドや GPU などのコードを並列化することです。公開されている GPU 実装がいくつかあります。たとえば、ここではサポート ベクター マシン ベースの検出器を使用しています。