このプロジェクトは人物の検出と追跡に基づいており、私は主に人物の追跡に焦点を当てています。 README.md または Output.mp4 の出力 GIF に示されているように、各人にはフレームに入るとすぐにid
が提供され、そのid
同時フレームで発生する検出に関係なく維持されます。アルゴリズムは人物検出を実行し、人物がフレーム内に留まる限り追跡します。
person_det_track.py は、SSD とカルマン フィルターを使用して人物を検出および追跡します。
できる限り提供されたバージョンを使い続けるようにしてください。そうしないと、互換性の問題が発生します。コーディング時に可能な限り最良の組み合わせを使用しました。
opencv [v3.1]
テンソルフロー [v1.5.0]
ここで提案する方法は大きく 2 つの部分に分かれています
人物検出 - リアルタイムでの人物検出は、シングルショット マルチボックス検出器を使用して行われます。 SSD は 75.1% の mAP を達成し、同等の最先端の Faster R-CNN モデルを上回ります。 SSD モデルは Tensorflow 検出動物園で入手できます。 SSD と tensorflow のシームレスな統合は、アルゴリズムのさらなる最適化と実装に役立ちます。 SSD オブジェクト検出は 2 つの部分で構成されます。
人物追跡 - すべてのフレームで物体検出モデルを実行することで、物体/人物の周囲に境界ボックスを実現できますが、これには計算コストがかかります。ここで使用される追跡アルゴリズムはカルマン フィルタリングです。カルマン フィルターは、多くの追跡およびデータ予測タスクに対する最適なソリューションとして長い間考えられてきました。視覚的な動きの分析に使用されます。フィルタリングの目的は、他のすべてを無視して、信号から必要な情報を抽出することです。このプロジェクトでは、カルマン フィルターに人の速度、位置、方向が入力され、以前のデータに基づいて人の将来の位置を予測するのに役立ちます。
追跡部分はオクルージョン時にまだいくつかの問題に直面しています。 (取り組んでいます)
このシステムは、まず人間の検出、次に追跡の 2 つの部分で構成されます。初期の研究は追跡ではなく人間の認識に偏っていました。人間の動きを監視することで、追跡の必要性が高まりました。動きの監視は、人の活動や人の注意を判断する上で非常に興味深いものです。
計算能力要件の削減 - 通常の物体検出アルゴリズムはオブジェクトを検出しますが、フレーム全体でオブジェクトを追跡 (ID の割り当て) しません。したがって、境界ボックスを取得するにはすべてのフレームで実行する必要があります。追跡は、検出アルゴリズムを実行する必要がある回数を減らすのに役立ちます。つまり、フレームごとに検出アルゴリズムを実行する代わりに、この実装では 5 フレームごとに検出を実行します。
オブジェクト検出モデルの障害補正 - ポーズによっては、SSD が人物を検出できない可能性があります。遮蔽さえも検出器に大きな影響を与える可能性があります。そこで、追跡アルゴリズムが大いに役立ちます。
ID の取得 - 人間の追跡は、生体認証の顔認識の前段階として使用できます。人物を継続的に追跡することで、いつでも人物を特定できるようになります。特定の一連のフレームで顔の識別が不可能な場合でも、彼の身元を追跡して見つけることができます。ニーラジ・メノン著