まだやってる

 まだ顔検出やってます。
 政治家チーム51名とAKBチーム44名の顔写真で検証中です。

 瞳検出のみでの成績は・・、
 
 成功例
000 他
 失敗例
009 AKBチーム9名

010 政治家チーム8名
 82%の検出率です。
 口元と頬の検出も始めました。が、まだまだ。
 
 並行して別のアプローチを考えてみようかしらん。

AKBに玉砕

 顔検出を AKB の面々に試したところ、20人近くが誤認識と玉砕でした。

 茶髪だったり、顔傾けていたり、帽子被っていたりで強敵揃いです。
 なんとか突破口を見つけたい。

 でも、試す画像も増えてきて、いちいち Android アプリを起動するのが面倒なのですね。メモリリークも起こしているようで強制終了することもありますし。

 そこで、Android アプリを捨て Java アプリケーションで検証し始めました。
faces
 まずは、変換画像の一覧をば。

 左上から元画像、モザイク画像、64色モザイク画像、赤成分精細64色モザイク画像
グレースケール・モザイク画像、16階調グレースケール・モザイク画像、4階調グレースケール・モザイク画像、白黒モザイク画像
赤成分モザイク画像、16階調赤成分モザイク画像、4階調赤成分モザイク画像、2階調赤成分モザイク画像でございます。
 
 まだまだ、まだ続く。

顔検出を仕切り直し

 もうアプリの完成なんて眼目にもなく、顔(パーツ)検出に集中しています。
 
 前回、総理に眼鏡ヒゲを付けさせていただいたのですが、全般的に検出率が悪いのですね。7割そこそこといったところ。
 
 モザイクにして16階調モノスケールにしていたのですが、256階調にしても計算量は変わらない。
 戻したところ、ちょっと検出率向上。
 
 また、試しにRGB成分ごとに検出してみたらR>G>Bの順に差が出たので、グレースケール化の

color = (int)(r*0.298912 + g*0.586611 + b*0.114478);

color = (int)(r*(0.298912+0.3) + g*(0.586611-0.2) + b*(0.114478-0.1));

に変更。+0.3、-0.2、-0.1 の補正値は適当です。
 これが、こう変わりました。美白化ですね(赤味を強くした)。
device-2015-02-28-165702 device-2015-02-28-165808
ちょっと検出率向上。
 
 でも、顔が大き過ぎたり小さ過ぎたり、上過ぎたり下過ぎたりで、検出率には限界があるのですね。
 
 仕切り直ししました。
 
 はじめに顔の位置や大きさを知りたいので、R成分を抜き出してみる。

color = r*2 – g – b;
if(color < 0) color = 0; この値をRGBに入れるので、黒白グレーなど赤くない色は、黒くなるといった次第。 device-2015-02-28-165934
 気持ち悪いけど、こうなります。
 
 このままでは処理しにくいので、4階調にして

color = ((int)(color/64f))*64;

 更に、上3階調分を白くして2階調にしちゃう。

if(color > 0) color = 255;
device-2015-02-28-170046 device-2015-02-28-170141

 この画像を使って位置と大きさを求めるのですが、白黒の境を走査してもゴミも拾っちゃいそうだったので、とても好きなモンテカルロ法を導入。

 画面上に適当に 2000 発の点を打ち込み、その場所が「白」ならば上下左右に走査し「黒」になったらマークします。
 最後に上下左右端から走査して、規定値(10マーク)以上のラインを顔の位置としたものです。
 耳の端っことか、背景の赤部分を拾い難くしたわけですね。
 
 更に、検出した顔エリアの横中央付近で一番明るいラインを いろいろやって(省略)検出してみました。

 そのラインを基に瞳検出器を当てた結果が次のとおりです(R成分画像に重ねてみました。気持ち悪い画像が続きますがご容赦を。中央縦ラインは、瞳検出後にその中間点に引いた線なので、あまり意味がありません)。

 まずは、合格者から
ok1
ok2
 副大臣たちも参加し
ok3
ok4
 44名合格です。

 そして、残念ながらの不合格者は
ng
 8名。コワい大統領が入ってしまったのが悔やまれます。

 検出率 約 84 %です。良くはなりました。
 この内4名は、顔エリアの中央に瞳が検出されてしまったケースなので拾い上げて補正できそうかな。

 おじさん顔に相当にフィッティングしてしまったとも思われるので、女子のサンプルも加えつつ、まだまだ続きます。

 今宵はジンフィズを嗜んでいるので、これまで。

( 灬 ) を付ける

 瞳検出と口元検出の後に鼻筋検出して、その結果から瞳位置を補正し、再度口元検出したところ、総理の目や口も正しく捉えることができたので、鼻検出も加えて円眼鏡とちょび髭を付けてみました。
device-2015-02-23-003908
 サザンのアルバム発売を前に大晦日の話題を蒸し返すつもりはございません。
 
 眼鏡の傾きも計算して考慮しています。
 髭は、AndEngine の Particle システムを使っていますが、思い通りに生えてくれない・・。
 第一、ズレてるしなぁ。

(●ー●) を付ける 後編

 前編に続き「サングラスを付ける」ランキング発表です。
 
 早速、第5位
05
 沖縄及び北方対策 消費者及び食品安全 科学技術政策 宇宙政策特命大臣:判定の精度の割にはお似合いです。それにしても、仕事多そうだな。
 
 第4位
04
 コワい大統領:さすが元KGBだけあって、多少のズレは貫禄で押し切っています。コワいなぁ。
 
 第3位
03
 規制改革、少子化対策、男女共同参画特命大臣:コワい大統領をかわして3位入賞です。判定もドンピシャ、正面顔でフィット感もバッチリです。
 
 第2位
02
 コワくない大統領:判定の精度もさることながら、このフィット感!似合いすぎです。サングラスを付けること自体が東洋の人には不利だったか・・と思いきや。
 
 第1位
01
 経済産業大臣:両大統領をおさえ堂々の第1位です。眼鏡オン眼鏡でありながらジャストフィット、元々の眼鏡の弦も一体となり、最早画像を重ねたとは思えません。貫禄も十分で文句なしの第1位です。
 
 あぁ楽しかった。角度を調整して実装しようかしらん。
 さて、アプリ作成に戻るとするか。