Cognitive Services: Face APIの顔認識を検証してみた

今回は、Microsoft Cognitive ServicesのFace APIで認識できる顔と、そこから得られる情報について検証をしていきます。

認識可能な顔

それではFace APIがどの程度までの顔を認識できるか、様々な画像で検証していきます。
まずは、標準的な正面向き画像を認識させてみました。男性、女性それぞれで認識させましたが、正しく顔と性別を認識することができていました。
(※男性はシアン、女性はマゼンタの枠で表示するように設定しています)

続いて、5人の子供の写真を認識させてみました。子供のためか性別の判定に若干の怪しさはありますが、5人の顔を同時に認識することができていました。


ヒトの顔が正しく認識できることはわかったので、今度はヒト以外のものを認識させてみます。
まずは、ヒト型ロボットのNAOを認識させてみましたが、さすがにヒトの顔ではないため、顔を検出することはできませんでした。


ヒトの顔ではないものの、同じヒト科のチンパンジーとゴリラも認識させてみました。すると、子どものチンパンジーの顔は認識することができました。チンパンジー、ゴリラ、ニホンザルなど、この他にいくつか試してみましたが、顔が認識される場合、されない場合があり、やはりヒトでないと正確な認識は難しいようです。

であればと、上野の「西郷隆盛」像、「ベートーヴェン」の肖像画、「織田信長像」のようなヒトの銅像、肖像で試してみたところ、いずれも顔を認識することができました。ヒトの顔の造形であれば、認識することは可能なようです。

取得できる顔の情報

Face APIでは性別のほか、認識した顔を基に「年齢」、「メガネの有無」、「ひげの有無」などの情報を取得できます。これらの情報がどの程度のレベルで認識できるか試してみます。

まずは、男性、女性、子供、家族写真と様々な年代の写真を認識させて、年齢の出力をしてみました。フリー画像を認識させているため、それぞれの人物の正確な年齢はわからないのですが、概ねそれらしい年齢が出力されていることが分かりました。
年齢のわかる人物でもいくつか試したところ、おおよそ写真の画質にもよりますが、概ね±5歳程度で判定できるようで、20代、40代といった括りで分類するといったことは容易にできそうです。


続いて、男性の画像にメガネを合成して、メガネの有無について認識をさせてみました。
元の画像では「NoGlasses」(裸眼)の判定だったものが、メガネのフレームを合成することで「ReadingGlasses」(メガネ)の判定に変わり、レンズを黒く塗りつぶすと「Sunglasses」(サングラス)へと変わりました。丸メガネ風の線や図形を書き加えてもReadingGlasseやSunglassesと判定されており、目の周りの状態からメガネの判定をしていることがわかりました。


また、ひげの有無の判定についても試してみました。
口ひげ(moustache)、あごひげ(beard)、頬ひげ/もみあげ(sideburns)を持つ歴史上の人物、夏目漱石、伊藤博文、リンカーンを認識させてみましたが、ひげの部位に応じて判定値が変化しており、ひげを認識できていることがわかりました。


今回は、Face APIを使った顔認識と取得できる顔の情報について検証をしていきましたが、年齢やメガネの有無など比較的精度よく捉えられているようで、年齢に応じたレコメンデーションといったような応用に期待が出来そうです。
次回は、Face APIの顔認識の限界を検証していきます。
お楽しみに!

この記事を書いた人

azure-recipe-user