OpenCVで学ぶ画像認識

第4回 オブジェクト検出器の作成方法

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

学習の進捗は以下のように,画面上に表示されます。

学習の様子

Parent node: 1
Chosen number of splits: 0

Total number of splits: 0

Tree Classifier
Stage
+---+---+---+
|  0|  1|  2|
+---+---+---+

   0---1---2


Parent node: 2

*** 1 cluster ***
POS: 2990 3000 0.996667
NEG: 1292 0.00242816
BACKGROUND PROCESSING TIME: 13.95
Precalculation time: 20.47
+----+----+-+---------+---------+---------+---------+
|  N |%SMP|F|  ST.THR |    HR   |    FA   | EXP. ERR|
+----+----+-+---------+---------+---------+---------+
|   1|100%|-|-0.912555| 1.000000| 1.000000| 0.146894|
+----+----+-+---------+---------+---------+---------+
|   2|100%|+|-0.836548| 1.000000| 0.861455| 0.130546|
+----+----+-+---------+---------+---------+---------+
|   3| 95%|-|-0.397814| 1.000000| 0.487616| 0.074731|
+----+----+-+---------+---------+---------+---------+
Stage training time: 399.80
Number of used features: 3

上記の表の"node"または"stage"が一つの強識別器にあたります。この画面の例では2つの強識別器まで学習が終わっており,stage 2を親ノードとする3番目の強識別器が,3つの矩形特徴(弱識別器)を用いて学習が終わったところです。

もし計算時間がかかりすぎて途中で止めたいときは,Ctrl-Cなどで強制終了して下さい。再度haartraining.exeを同じオプションで実行すれば,学習が終わったステージから学習が再開されます。

表のNというのは,そのステージの強識別器の学習に要している弱識別器の数で,一つ一つ増やしながら目標となる認識率や許容できる誤認識率を達成するように調整を繰り返していきます。学習によっては,このNの回数が増え続けていつまでたっても終わらないという場合があります。これは,現在の学習データではどのようにパラメータを調整しても,なかなか目標値を達成できないということであり,その場合は学習画像の数やcreatesamplesのパラメータを調整するなどして,再度チャレンジした方が良いかもしれません。

オブジェクト検出プログラムの実行

では,本連載の第2回を参考にオブジェクト検出プログラムを作成して下さい。顔学習データ"haarcascade_frontalface_default.xml"の代わりに,今回学習させたxmlファイルを指定するだけで,実行が可能です。

図5 検出結果例1

図5 検出結果例1

図6 検出結果例2

図5 検出結果例2

このように,オリジナルのオブジェクト検出機を作成することができました。現時点で若干の誤認識がありますが、学習パラメータや学習画像を増やすなどして色々と試してみて下さい。

連載の終りに

これで4回にわたって行われた連載は終了です。この連載ではOpenCVのオブジェクト検出アルゴリズムを通して,皆さんに画像認識技術とはどういうものか,実感として少しでも伝えることを目的に始めました。

そして一方で,画像認識技術が人間の認識能力と比べて非常に見劣りするものであることも感じたのではないかと思います。

この分野はまだまだ発展途上の分野です。世界中の優れた研究者がしのぎを削って研究を行っており,次々と新しい手法が考案されています。認知科学や脳科学、数学、物理など他の分野からもどんどん新しい知見を取り入れています。この連載で扱ったアルゴリズムは画像認識の,さらにはコンピュータ・ビジョンという枠組みの中のごく一部でしかありません。

今,IT技術はどんどんコモディティ化が進み,アイデアさえあれば誰でもサービスが作れるような時代がきつつあります。少なくとも一昔前に比べれば,開発のハードルは圧倒的に下がりました。

それと比べると,画像認識の分野は誰もが簡単に開発できるほど技術が成熟してはいません。しかし,今後少しずつ一般の技術者でも使える画像認識技術が世の中に出てくると思います。OpenCVはそのための大事な一歩であることは確かです。

そして僕は,成熟していない分野だからこそインターネットの黎明期のように,技術者にとって非常に魅力的なフロンティアが広がっていると思っています。

この連載を通して,少しでも皆さんにこの魅力が伝わったなら,とても嬉しく思います。

最後までお読みいただき,ありがとうございました。

著者プロフィール

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

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

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