Faceing | 顔検出

現代では顔検出機能は当たり前な技術
最近のカメラには顔検出機能が標準で搭載されている...多分。 この機能は結構古い技術で、10年以上前から公開されていたし、半導体に組み込むIPも販売されていた。 大抵はオープンな技術を利用し、機械学習による分類器の精度を上げてIPとして商品化しているハズだ。




顔検出の技術は古くからあり、カメラにも組み込まれていた。 クラシックな一眼レフは光学ファインダーなので、あまり恩恵はないけど、ライブビュー方式のコンデジなどは顔検出や顔追尾のコマーシャルを昔から訴求していた。 

トップの写真は SONY ILCE-9 で撮影した写真だけど、カメラ自体は顔検出・顔追尾を行っていた様だ。 ただし、写真の EXIF情報 には残されていないので、自作ソフトウェアで顔検出・眼検出した情報を重ねている。 背景のオッサンに対して顔検出しているのが気に喰わないけど、有償の機械学習による分類器を買わなくても検出は可能だ。 なお、水色の矩形枠は自作ソフトが検出した人体枠である。


SONY機でも顔検出情報が記録される事はある
SONY ILCE-9 でも単写設定なら顔検出情報がEXIFに記録されている。 この写真でも顔を検出し、眼にピントを合わせている事が判る。 ただし、三つの顔が検出され、極小さな顔枠が存在する事が判る。 たぶん、検出ミスとかファームウェアバグだろうけど、心霊写真の様な怖い思いをするので、ソニー製アプリなどでも顔枠を表示する機能は実装されていない。

自作アプリで顔検出してみた
一方、自作アプリでは検出座標の若干の差はあるけど、心霊写真の様な小さな顔は検出されなかった。 

この手のアプリケーションソフトを作っていると、EXIF情報に撮影距離情報が記録されていない事がネックとなる。 カメラ自身は撮影距離が判っているので、有り得ない小顔とか大顔を排除できるけど、撮影されてしまった写真の撮影距離が判らない場合、アプリケーションソフトではあり得る顔の大きさを特定できないので、異常な小顔や大顔を排除できない。

また、対象となる顔の大きさが判れば、顔を認識できる程度まで画像を小さくリサイズできるので、処理を高速にすることも可能になる。

精度に疑問は残るが、ニコンやキヤノンの画像は撮影距離情報を基にリサイズ率を設定出来るので効率的な検出が可能である。 人物の大きさが変化しない監視カメラの様な場合は人体検出や顔検出は簡単なのである。


心霊写真の例
この写真はRX100M4で撮影したものだけど、自作アプリで被写体認識させると、ウサギ飾りがあっても顔検出されている事が判る。 ウチの娘だけ顔検出されていなかったり、背景の「壺」を顔だとか人体だとかに認識しているのは誤検出の結果だ。 機械学習のサンプルを増やして分類器を高精度化すれば良いのだけど、これが面倒なのよねぇ。


撮影倍率が低い写真は人体検出で充分
おおざっぱでも撮影距離情報が判る場合は最初から顔検出を実行しない様にしている。 対象は人体検出だけど、スポーツの場合は上半身検出じゃないと上手く行かない。 この写真では実際の画像サイズ5174×3456を撮影距離情報により864×576にリサイズして人体検出のみを実施している。

人体用の分類器がタコなので、検出されない人体も多いが、ライブビューなどの動画なら検出されるチャンスが格段に増えるので、検出された部分を仮想的に継続する事で検出意思一致度は格段に向上する。

この辺のパラメーターは写真を撮る人じゃないと決定は難しいんだけど、ソニーさんは判ってない気がする。

Sponsored Link
Sponsored Link
Sponsored Link