9

私は、コンピューター ビジョンで人物追跡を行っています。私は観察 (バックグラウンド減算後のブロブ検出の出力としてのブロブ) を持っており、これらの観察を生成したオブジェクトを推測したいと考えています。

いくつかのカルマン フィルター コードで問題が発生しました。そして、それは私には明らかですが、私の問題はマルチオブジェクト追跡です.私の問題は、観測が不完全/ノイズが多いことです. もっと詳しく説明しましょう - 明確な観察によるテストでは、各人に 1 つのブロブがあります。カルマン フィルターは、人のノイズの多い経路を滑らかな曲線に滑らかにするのに役立ちます。しかし、これは私の問題ではありません。問題は、ブロブの検出が完全ではない場合があり、1 人に対して 2 つのブロブがある場合 (たとえば、追跡したい人物が背景と同じ色の T シャツを着ている場合)、または 2 人に対して 1 つのブロブがある場合があります。人 (たとえば、2 人が抱き合っている場合、または互いに近すぎる場合)。

いくつかの理論を検索したところ、粒子フィルターを使用したオブジェクト追跡の問題を解決している多くの論文が見つかりました。そこで、ベイジアン フィルター、モンテカルロ法、重要度サンプリングを勉強しましたが、少しわかりました (すべてを理解する確率に関する数学の知識はありませんが、アイデアは明らかです)。

とにかく、2 つのブロブが 1 つのオブジェクトに対応する場合、または 1 つのブロブが 2 つのオブジェクトに対応する場合を検出する際に、パーティクル フィルターがどのように役立つかはまだわかりません。

誰かがこの問題を理解するのを助けることができますか?

4

4 に答える 4

7

まず第一に、OpenCV VideoSurveillanceプロジェクトは、質問に対処するための良い方法です。

あなたが言ったように、検出応答のデータ関連付けを行います。また、単純化されたメカニズム(初期化はフレームのしきい値と削除にも基づいています)によって誤検知(あなたが言ったように1つのオブジェクトに2つのブロブ)を処理します。もう1つの問題は、あなたが言及したように、通常、2つのオブジェクトに対応する約1つのブロブがオクルージョンと呼ばれます(VideoSurveillanceプロジェクトでは「衝突」という用語が使用されますが、現在は廃止されています)。VideoSurveillance は、3D カラー ヒストグラム モデリングに基づくパーティクル フィルタの実装を使用して、この状況を解決しています。

簡単な説明: 見た目 (服装) に基づいて 2 つの異なるターゲットをどのように区別できますか? 色ヒストグラムを保存して、後で将来のフレームで使用できますよね? でも、どうやって検索するの?次のフレームで考えられるすべての重心を検索するか、オブジェクトがあると思われる領域の周りに散在する 200 のランダムなポイントを使用できます。この200点が粒子です。それらはどのように機能しますか?それらは、焦点を合わせている領域を比較し、オブジェクトがそこにある確率を生成します。距離が近ければ近いほど、その可能性は高くなります。最後に、すべての可能性を合計して、「平均」重心を見つけます。

簡単に言えば、各ターゲットの衣服は確率関数内でモデル化され、粒子フィルタリングのアイデアのおかげでほぼリアルタイムの計算が実現されます。

最後に、カルマン フィルターは予測子であり、モーション データのみを使用してトラッカーを支援します。パーティクル フィルタの結果が本来よりもクレイジーになった場合に備えて、極端な動きの動作を「フィルタリング」します。VideoSurveillance にはこれも含まれます。両方を使用すると、外観が補完され、トラッカーがより洗練されます。

編集:マルチターゲット追跡にどのように役立ちますか? データが関連付けられた単純なトラッカーがあると仮定して、2 つのオブジェクトが「衝突」しようとしているとします。オブジェクトがマージされるまで、トラッカーは正常に動作します。「マージ」中、トラッカーは 1 つのオブジェクトのみを認識します。もう1つは失われます。しばらくすると、それらは分割され、トラッカーは古いオブジェクトを新しいオブジェクトとして検出します! どうすればこれを修正できますか? 今回は、パーティクル フィルタリングと外観モデリングからやり直しましょう。

  • マージする前に、2 つのオブジェクトが互いに近づいています。オブジェクトは独立しており、トラッカーはそれらをはっきりと見ることができます。この間、外観モデラー (オブジェクトがどのように見えるかを「記憶」するメカニズム) は、これら 2 つのオブジェクトがどのように見えるかを学習しています。もちろん、フレームが進むにつれて、両方のオブジェクトの外観がわずかに変化します。だからこそモデ​​ラーには、時間の経過とともに「記憶」を適応させる「学習率」があります。

  • 今回は、マージ中にトラッカーをより辛抱強く設定し、以前のように 2 番目のオブジェクトを簡単には殺さないようにしました。トラッカーは両方のオブジェクトをアクティブにします。遮られていないオブジェクトは以前と同様に正常に追跡され、他のオブジェクト バウンディング ボックスはターゲットの再配置を試みます。運が良ければ*、しばらくすると、遮られた (隠れた) オブジェクトが再表示 (分割) され、バウンディング ボックスがパーティクルのおかげでそこに引き付けられます。

*前述のように、遮られたターゲットのバウンディング ボックスはモデラーによってモデル化されます。遮られた人物が隠れている時間が長すぎると、モデラーは古いオブジェクトを忘れて、遮られた領域の前にあるもの (つまり、遮られていないオブジェクト) を学習するか、孤児の箱のようにさまよってしまいます (これは漂流と呼ばれます)。VideoSurveillance にはそのためのメカニズムがありません。簡単な解決策の 1 つは、オクルージョン中にモデラーの適応を停止することです。どのように?2 つのバウンディング ボックスが重なっている場合。

于 2013-04-08T12:28:42.787 に答える
3

カルマン フィルターまたは粒子フィルターは、データ関連付けの問題 (複数の検出を複数のトラックに対して照合する必要がある複数の追跡問題) を処理できません。

必要なのは、ソフトな方法で各検出をトラックに関連付ける Joint Probability Data Association Filter (JPDAF) です (1 つの検出は、X % が最初のトラックに属し、Y % が 2 番目のトラックに属します...)。

基礎となる追跡アルゴリズムは、粒子フィルターまたはカルマン フィルターにすることができます。

C# での JPDAF 実装を見てみましょう - カルマンおよび粒子フィルター用に実装されています。現時点では、動作サンプルはカルマンおよび粒子フィルター用です。JPDAF は後で提供されますが、実装済みで準備が整っています。

Accord.NET 拡張ライブラリ: https://github.com/dajuric/accord-net-extensions

于 2014-08-08T22:11:50.437 に答える
2

キーワードは「断片化」だと思います。例の紙

http://people.csail.mit.edu/cielbleu/pubs/BoseEtalCVPR07Multiclass.pdf

于 2013-04-08T20:27:52.817 に答える