OpenCVによるアニメ顔検出ならlbpcascade_animeface.xml

追記

lbpcascade_animeface · GitHub
githubに置きました。

追記前

かなりいい。http://j.mp/oMVViM http://j.mp/pKZC4Y イロイロ試すと丸っこいものに対する誤検出がちょっと気になるくらい。

http://twitter.com/#!/ultraistter/status/92775087635312640

金曜日から何度か学習していたLBP版のアニメ顔検出ができていた。前回のOpenCVでアニメ顔を検出するためのXML v2 - デーに比べるとかなりよくなっていると思います。検出速度もこっちのほうが速い。

ダウンロード

http://anime.udp.jp/data/lbpcascade_animeface.xml (デカイので右クリックで保存)

使い方

OpenCVのサンプルに入っているfacedetectというプログラムに--cascade引数で渡せば試せます。
プログラムからの使い方は、http://opencv.jp/cookbook/opencv_img.html#id40と同じだと思います。ダメだったら、facedetectのコードを見たらいい。

内容

animeface2用に作っていた学習データをopencv_traincascadeというOpenCVの物体検出器を学習するプログラムに入力しただけです。opencv_traincascadeは昔から入っていたhaartrainingに置き換わるものらしく、Haar-like featuresの他にLBP(Local Binary Patterns)に対応しているので、データはあるし、こっちでも試しておこうと思ってやってみました。
パラメーターは、numPos、numNeg、それぞれ20000。featureTypeはLBP。その他はデフォルト値です。

"animeface2用に作っていた学習データ"というのは、Imager::AnimeFaceの検出の閾値を(ソースコードをいじらないと下げれないところまで)下げて、顔より少し広い範囲を自動で切り取ったあと、誤検出を手作業で消したものです。Imager::AnimeFaceで検出できない顔はデータに入らないようになっています(検出できていない顔はほとんど無いですが)。opencv_cascadeの学習では、このデータからよさそうな顔の範囲のデータ(info.txt)をテキトウなスクリプトで生成して入力としています。
負例は、イラストの顔だけを塗りつぶした画像25000枚くらいです。

Haa-like版(haacascade_animeface2.xml)とは学習に使ったデータが異なるので、特徴量がすごいと言いたいわけでなくて、この世に存在するモノとしてこっちのほうがいいヨということです。特徴量もあってると思うけど。思う!