第34回では、OpenCVを用いたトラッキングの実装方法、トラッキング結果についてまとめました。
第35回目の今回は、OpenCVに組み込まれている5つのトラッキング手法のうち、Boosting、MIL、Median Flowの3つを紹介します。

Boosting

Boostingを用いたトラッキング[1]の概要は図1のとおりです。
まず追跡対象物の近傍領域からPositiveサンプル、その周辺の領域からNegativeサンプルを生成し、識別器(AdaBoost)を学習します。そして、探索領域内の各領域(sub-patches)が追跡対象物らしいか否かを識別器により求めます。そして追跡対象物らしさが最大となる箇所を新たな物体位置とするとともに、PositiveサンプルとNegativeサンプルを更新します。

図1 Bootingを用いたトラッキングの概要 (出典:参考文献[1])

図1 Bootingを用いたトラッキングの概要 (出典:参考文献[1])

MIL (Multiple Instance Learning)

MIL(Multiple Instance Learning)を用いたトラッキング[2]の概念は、図2(C)のとおりです。図2(A)、(B)はBoostingを用いたトラッキングの枠組みです。

Multi Instance Learningで用いる学習データは、「複数のサンプルの中にPositiveサンプルがあります」という形でサンプルの集合(bag)に対してラベルが与えられます。
トラッキング中の物体の周辺からPositiveサンプルを切り出した際、トラッキング誤差の影響により全てのサンプルが本当にPositiveであるとは限りません。そこで、Multi Instance Learningの枠組みを導入することで、複数のサンプルを1つの集合(bag)として扱い、そのbagの中にPositiveサンプルだけでなくNegativeも入ってしまうことを許容したものが、MILを用いたトラッキングです。

図2 MILを用いたトラッキング (出典:参考文献[2])

図2 MILを用いたトラッキング (出典:参考文献[2])

Median Flow

Median Flow[3]の処理の概要は図3のとおりです。
まず、追跡対象のBounding Boxをグリッド状に分割します。そして、各グリッド内の点をLucas-Kanade Trackerにより追跡し、点の動き(Flow)を求めます。最後に、トラッキングエラーが大きいグリッドを除去し、残ったFlowの中央値を用いてBounding Boxの座標を更新します。

図3 Median Flowの概要 (出典:参考文献[3])

図3 Median Flowの概要 (出典:参考文献[3])

次回紹介するTLD、KCFの方が、新しい手法でトラッキング精度も高いですが、今回紹介した3つの手法の概要だけでも頭の片隅に置いておくと、独自に新しいトラッキングアルゴリズムを開発するときに役立つはずです。
次回は、OpenCVに組み込まれている5つのトラッキング手法の残りの2つの手法のうちTLDの概要について紹介します!


参考文献
[1] Grabner, H., Grabner, M., & Bischof, H.: Real-time tracking via on-line boosting. In BMVC, 2006.
[2] Babenko, B., Yang, M. H., & Belongie., S.: Visual Tracking with Online Multiple Instance Learning. In CVPR, 2009.
[3] Kalal, Z., Mikolajczyk, K. & Matas, J.: Forward-Backward Error: Automatic Detection of Tracking Failures. In ICPR, 2010.