OpenCVで学ぶ画像認識

第3回 オブジェクト検出してみよう

この記事を読むのに必要な時間:およそ 3 分

弱識別器とHaar-Like特徴量

それでは次に,画像からどのような特徴量を取得するかを考えます。OpenCVのオブジェクト検出器で用いている特徴の例を下の図に示しました。

図3 オブジェクト検出特徴の例

図3 オブジェクト検出特徴の例

入力画像上の任意の場所に,図のような検出窓をおいた場合,検出窓の中の画像の特徴量は,以下の式で計算されます。

特徴量 = 矩形特徴の黒領域の画素値の合計 - 矩形特徴の白領域の画素値の合計

この矩形領域の白黒パターンはHaar-Like(ハールライク)特徴と呼ばれるもので,以下のパターンを用意しています。

図4 矩形領域のパターン

図4 矩形領域のパターン

このように,検出窓内の矩形の位置とパターンの組み合わせによって,約12万通りのオブジェクト検出特徴が用いられます。 この特徴パターン一つ一つが,AdaBoostの弱識別器の役割を果たします。

例えば,オブジェクト検出特徴を顔画像の上においた場合を考えます。

図5 検出特徴を顔に適用したの例

図5 検出特徴を顔に適用したの例

通常の顔画像では,目の領域の画素は周辺よりも暗いと考えられるので,上図のような検出特徴の特徴量は高くなることが予想されます。このような特徴に対しては,AdaBoostによって強い重みがつけられます。

このような検出窓で画像中をスキャンして,その都度強い識別器で判別していくことで,オブジェクトの検出を行うことができます。

なお,Haar-Like特徴はちょっとした工夫で非常に早く計算することが可能です。このHaar-Like特徴を用いたことと,次に説明するAttentional Cascadeを用いたことにより,OpenCVのオブジェクト検出プログラムはリアルタイムに動作することができます。

Attentional Cascade

通常,検出窓で画像内をスキャンした場合,オブジェクトがみつかるよりもオブジェクト以外が見つかる方がはるかに確率が高いです。そのため,"いかに非オブジェクトの検出窓を拒否するか"というのが高速化の鍵になります。

そこでOpenCVのオブジェクト検出では,ここまでの説明で作成した強い識別器を複数連結(カスケード)することで,精度と速度を改善しています。

図6 Attentinal Cascade

図6 Attentinal Cascade

この図のように識別器を連結させたものを,Attentional Cascadeといいます。

画像上にある検出窓を設けた時,1つめの識別器で非オブジェクトと判断されたものは,それ以上の処理は行われずに終了します。もし,1つめでオブジェクトとして判断された場合は,2つめの識別器へ渡されます。同様に,2つめの識別器で非オブジェクトであると判断されたものは弾かれ,それ以外の画像が3つめの識別器へ渡されます。

つまり,上流の識別器では緩い判断基準で次々と疑わしい画像を排除していき,下流にいくほどオブジェクトの判断基準が厳しくなるように調整されています。

これらの識別器は,12万個の特徴パターンのうち,通常上流ほどわずかな数の特徴パターンを使用しているため,高速に非オブジェクト画像を弾くことできます。

以上が,OpenCVで用いられているオブジェクト検出の仕組みになります。

著者プロフィール

皆川卓也(みながわたくや)

ジェイマジック株式会社のラボに所属する傍ら,慶応義塾大学の博士課程でコンピュータビジョンを研究する社会人ドクター。画像認識とIT技術を融合して新しいソリューションを開発することを生業とする自称テクニカル・ソリューション・アーキテクト。ジェイマジックでは、「顔ちぇき!~誰に似てる?~™」や「SAYL™」のシステムの立ち上げに携わる。

ジェイマジック
URLhttp://www.j-magic.co.jp/
慶応大学 斎藤英雄研究室
URLhttp://www.hvrl.ics.keio.ac.jp/

コメント

  • 私も次回の連載楽しみにしてます

    cvで学習させていますが、なかなかうまくいきません。

    ようやくできたXMLファイルも全然判別できてません。



    今までの連載ペースからして、最終回がなかなかアップされていないのはもしかして著者もうまくいってないのでしょうか・・・

    Commented : #3  Haar (2008/08/28, 13:19)

  • 連載楽しみにしてます

    私も次回の判別対象を学習させる方法について楽しみにしています。

    Commented : #2  ぴこてんた (2008/08/25, 11:30)

  • はじめまして.

    大学にて画像処理を専門に学んでいる者です.
    第3回まで読ませていただきまして,今まで使わず嫌いだったOpenCVを使い出し,その便利さに感動しております.
    そこで,xmlファイルを与えるのではなく,自分で学習させて見たく,次回の連載が楽しめで仕方ありません.ご多忙かと思いますが,最終回頑張って下さい.

    Commented : #1  サイコ (2008/08/19, 17:57)

コメントの記入