2012
12/23

顔認識API「detectFace();」が簡単に使えて面白い、という話

画像から顔かどうかを判別するというのはデジカメでは当たり前の機能ですが、個人が独自で開発するとなるとなかなか難しい機能だと思います。それをWebAPIを使うことで簡単に実装できてしまいます。
一番有名なのはface.comというAPIなのですが、facebookに買収されて残念ながらAPIの提供がなくなってしまいました。

face.comを使ったサービスでは以下のようなものがあります。今はどうしてるんだろう・・・・。
自分でWEBサービスを作りたいと思っている人へ (完全に一致をつくった人)
目からビームジェネレータ

しかしながらdetectFace();という顔認識APIが精度も高く動作も軽いため、face.comがなくなった今でも手軽に顔認識機能を使うことが可能です。

ADs

detectFace();の基本的な使い方

公式のドキュメントが日本語でとても充実しているのであらためて解説するようなこともないですが・・・。

画像のURLと検出モード、ムリヤリ度というオプションを指定して以下のURLへアクセスすると、目の位置や顔の大きさなどがXMLで返ってきます(以下はGETの例ですが、POSTも可能です)。

返されるXMLは以下のフォーマットとなっており、faceが顔と判定されたものの数だけ返ります。顔の各部位の詳細な位置まで返ってきますが、boundsに含まれる属性(顔の位置・大きさ)と目の位置ぐらいがあればWebサービスで使用するには充分ではないかと思います。

上記のXMLをsimplexml_load_fileで配列とすると、写真から顔の位置や大きさを取得したりすることができます。
具体的には以下のようなコードで顔の位置、大きさを取得できます。

実際に使ってみると分かるのですが、相当に高い精度で顔が判定され、さらに動作も非常に高速です。世界に通用するサービスではないかと思います(買収されてAPI提供が終わってしまうのはやめてほしいですが)。

detectFace();を使ったWebサービスの例

その精度と速さを多くの人に体感してほしいと思い、簡単ですがWebサービスをつくってみました。

顔にモザイク

画像をアップロードすると、顔と判定された部分にモザイクをかけて返してくれるサービスです。集合写真などをブログに掲載したいけど顔出しNGの人も多くて加工がめんどうさい・・・というときの利用を想定しています。

実際の仕上がり例

集合写真が一番分かりやすいのですが、自由に使えるものがなかったので手持ちの素材集より・・・。

JR171_72A
1356207478

どうですか!

正面を向いた写真は相当高い精度で判定してくれます。
もちろん顔と判定されずモザイクがかからない場合もありますが、ためしに写真をアップロードしてみてください。精度の高さに驚くと思います。

このサービスを使ってほしいというよりも(実際難しい処理はしてないし・・・)、detectFace();APIのすごさを分かっていただければと思います。

ADs

Post Comments

メールアドレスが公開されることはありません。

Comments

コメントはまだありません。