Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

顔の検出と追跡

この例では、MATLAB® Function ブロックを使用して Simulink® に顔の検出と追跡のアルゴリズムを実装する方法を示します。これは MATLAB® の例 KLT アルゴリズムを使用した顔の検出と追跡とほぼ同じです。

はじめに

オブジェクトの検出と追跡は、アクティビティ認識、自動車安全性、監視など、多くのコンピューター ビジョン アプリケーションにおいて重要です。この例では、ビデオ フレーム内の顔を検出して顔の特徴を特定し、その特徴を追跡するシステムを Simulink® で設計します。出力ビデオ フレームには、検出された顔と追跡対象の特徴が含まれます。顔が表示されない場合やフォーカスが合っていない場合は、システムで顔の取得し直しと追跡の実行が試みられます。この例は、1 つの顔の検出と追跡を行うように設計されています。

モデル例

close
open_system('DetectAndTrackFace');

設定

この例では、From Multimedia File ブロックを使用してビデオ ファイルからビデオ フレームを読み取ります。Detection and Tracking サブシステムはビデオ フレームを受け取り、Draw Annotations サブシステムへの出力として顔の境界ボックスと境界ボックス内の特徴点を提示します。このサブシステムは、イメージ内に境界ボックスの四角形と特徴点のマーカーを挿入します。

検出と追跡

この例では、vision.CascadeObjectDetector System object™ が現在のビデオ フレーム内の顔の位置を検出します。カスケード型オブジェクト検出器では、Viola-Jones 検出アルゴリズムと、検出用に学習済みの分類モデルを使用します。顔の検出後に、Shi & Tomasi の提唱する "追跡に適した特徴 (Good Features to Track)" 手法を使用して顔の特徴点が特定されます。

次に、vision.PointTracker System object™ が Kanade-Lucas-Tomasi (KLT) 特徴追跡アルゴリズムを使用して特定された特徴点を追跡します。ポイント トラッカーは、前のフレーム内の点ごとに現在のフレーム内の対応点を検出しようとします。その後、関数 estimateGeometricTransform を使用して、以前の点と新しい点の間の平行移動、回転およびスケールを推定します。この変換は顔の周りの境界ボックスに適用されます。

各フレームにカスケード型オブジェクト検出器を使用することも可能ですが、これには大量の計算が必要です。また、この手法では、対象者が向きを変えたり顔を傾けたりすると顔を検出できなくなる可能性もあります。この制限は、検出に使用される学習済み分類モデルのタイプに起因しています。この例で顔を検出するのは一度だけで、その後は KLT アルゴリズムを使い複数のビデオ フレームを通して顔を追跡します。検出が再実行されるのは、顔が表示されなくなったときやトラッカーが十分な数の特徴点を検出できないときだけです。

MATLAB 関数の動的メモリ割り当て (Simulink)を実行する機能により、MATLAB® Function ブロック内で前述の System object とメソッドを使用できます。

open_system('DetectAndTrackFace/Detection and Tracking')

注釈の描画

出力ビデオ フレームへの描画には境界ボックスのコーナー ポイントと特徴点の位置が使用されます。Draw Shapes ブロックは境界ボックスを描画します。特徴点は Draw Markers ブロックを使用して描画されます。

open_system('DetectAndTrackFace/Draw Annotations')

結果

次の表示は、検出された顔と特徴点を示しています。

次の表示は、追跡された顔と特徴点を示しています。

参考文献

Viola, Paul A., and Michael J. Jones."Rapid Object Detection using a Boosted Cascade of Simple Features", IEEE CVPR, 2001.

Lucas, Bruce D., and Takeo Kanade."An Iterative Image Registration Technique with an Application to Stereo Vision."International Joint Conference on Artificial Intelligence, 1981.

Lucas, Bruce D., and Takeo Kanade."Detection and Tracking of Point Features."Carnegie Mellon University Technical Report CMU-CS-91-132, 1991.

Shi, Jianbo, and Carlo Tomasi."Good Features to Track."IEEE Conference on Computer Vision and Pattern Recognition, 1994.

ZKalal, Zdenek, Krystian Mikolajczyk, and Jiri Matas."Forward-Backward Error: Automatic Detection of Tracking Failures." International Conference on Pattern Recognition, 2010