kabaohのブログ

仕事ができなすぎて辛いので、趣味に逃げるカバ野郎

HAAR-Like特徴量の話

HAAR-Like特徴量ってなんじゃらほい。
文字通りだとHAARっぽい特徴量ってことになる。

実際は
f:id:kabaoh:20160818093421p:plain
この白と黒でできた四角の
黒い所の平均明度と白いところの平均明度の差らしい。

下記スライドのP13-P15くらいが自分的には分かりやすかった。
局所特徴量と統計学習手法による物体検出

なんで差を取るか。ちょっと考えたら至極簡単。

f:id:kabaoh:20160818094633p:plain:w240
これが顔のパターンだとする。
このパターンにマッチすれば顔と考えて良いと。

与えられた画像が顔を表しているか判別するために
仮に画像の全ピクセルの明度をチェックできるとする。

絶対値しかみないとどうなるか


f:id:kabaoh:20160818094900p:plain:w240

完全に同じ場所に、それっぽいパターンが並んでいるのに
これを顔と認識できなくなる。



閾値を設ければ、多少判別率は上がるだろうが
周辺の明度との差分を見ることにしたほうがシンプルに済みそうだ。
なるほどという感じ。

OpenCVでやっている顔認識について

単純にHaar-Like特徴量を得るには問題があった。
この四角のパターンつまり、矩形領域をどのように配置するかは自由なので
全パターンを網羅しようとすると、それだけで大量のパターンが考えられてしまう。

たとえば、3x3の領域だと30通り?(かぞえ間違っていたらごめんなさい。)
24x24で18,000通りくらいありえるらしい。
ここで、integral imageというのを考えて、計算量を劇的に減らすという工夫を行った論文が下記

[Viola & Jones, CVPR ʼ01] Viola, P and Jones, M,"Rapid object detection using a boosted cascade of simple features", CVPR,vol.1,pp.511-518,(2001). 

論文中では、それだけでなく、学習にBoostingをつかったり、Cascadeなるものをつかったりして
高速化を図っていた。全部かくとまとめだけで時間がくれてしまうので、割愛します。

雑感

基本的な所を抑えておきたいけど、まだまだ色々知らない単語がある。
Boosting,なんとなくわかったけどAdaboostはよくわかってない
Cascade,よくわかってない...
どうしよう。
Wikipediaめぐりのように知らない単語めぐりで先にすすめない
楽しいんだけども。