AIに人間はどう見えるか?顔認識で年齢から感情まで読み取るMicrosoftのFace APIを試してみた

このエントリーをはてなブックマークに追加

最近はiPhoneにもついていたりと、何かと話題な顔認識の技術。実は、APIとして一般開放されているものも多くあります。たとえば、Microsoftの「Face API」

基本的な機能は下記の通り。

①画像中の顔を認識し、年齢や性別、感情などを推定
②2つの写真の人物を同一人物か検証

顔認証の機能が簡単にAPIで使えるとなると、いろいろな応用ができそうですが、どの程度の精度が出るものなのでしょうか?
今回は、①の機能に絞り、Face APIでどこまでの精度で何ができるのかを実際に検証してみます。

AIは写真から年齢・感情を当てられる?

まずは、画像から年齢を当てられるか、Ledge.aiの編集部メンバー写真で検証してみます。

Face APIはwebからも試せるようになっていて、画像を入れると、上記のように認識された顔部分がボックスで囲まれ、ボックスにカーソルを合わせると性別、年齢、眼鏡、感情の推定値を表示してくれます。

写真は現在29歳の人物なので、+2歳の誤差が出ました。無表情なので、「中立」と認識していますね。

同じくLedge.aiのほかのメンバーも判定し、まとめた結果が下記の表です。

……残念ながら、Face API には4人とも老けて見えるようですね。

いろいろな年齢幅で試してみる

Ledge.aiメンバーだけだとサンプルの質に不安があるので、ほかの人物の写真でも試してみましょう。こちらの70代の方の年齢は当てられるのか?

70.5歳との判定。フリー素材のサイトによると「70-80代の方」なので、当たっています。また、表情をもとに、「中立」と感情も分析できていますね。

では、赤ちゃんの写真ではどうでしょう?

こちらは0.7歳との判定。正しい年齢はわかりかねますが、概ね正しく推定できていることがわかります。感情分析では「喜び」と出ています。「微笑み」レベルの表情でもしっかり分析できているのはすごいですね。


Ledge.ai編集部や、他の写真で調べてみましたが、年齢予測の精度はそれなりに高そうです。ここまでくれば、いろいろな応用が考えられますよね。

ちなみに、この技術は実際のビジネス現場で既に使われています。Microsoftと電通がこの技術を活用して資生堂のOOH広告で実証実験をおこなっています。OOH広告をみた人の人数や属性などを認識し、広告を切り替えるといったことが可能なんだとか。

年齢や性別がわかるだけでも、活用方法は無限大ですよね。マーケティングデータとしても重宝しそうです。

ある程度斜めでも顔の検出は可能

正面の写真ではある程度正しく推定ができることはわかりましたが、実際に使うとなると、そんなに条件がいい環境ばかりではないですよね。斜めを向いていたり、横を向いていたりする状況でも認識できるでしょうか。

ということで、どの程度斜めの顔でも認識可能か、検証してみます。


正面からの写真はもちろん認識できていますね。実年齢24に対して28歳との判定。ここは上述のLedge.aiメンバーでの検証結果と同様です。あちらは光が当たっていましたが、このように暗くなっても同様の判定でした。


斜めからの写真① 
これも認識しました。若干歳を取りましたが……。斜めになったことで光の当たり方が微妙に変わり、見えている肌面積が減ったからでしょうか。


斜めからの写真②
この角度も大丈夫。今度は若返りました。


斜めからの写真③
認識しません。このくらい斜めを向いてしまうと難しいようです。


真横からの写真
こちらも認識せず。

結果として、斜めからの写真③で顔が認識されなくなりました。どうやら、両目が見えるか見えないかが認識されるか否かのラインのようです。斜めを向いた場合の年齢のばらつきはあるものの、それでもプラスマイナス3以内に収まっています。

顔を認識する条件を知っておけば、今後利用する際にも参考にできるかもしれませんね。

マスクを着用してみるとどうなるか?

顔認証でいつも話題になるのが、マスクをつけてると認証してくれない……という話。

普段からかぜ予防のためにマスクをしている人もそれなりに多いので、どうにか認証してほしいもの。そこで、マスクを着用していても顔を認識できるのか、検証してみました。


まずはマスクなし。こちらはもちろん認識できます。年齢は、実年齢+2歳の差。


マスクありでも認識できています。マスクをしていた方が実年齢に近づきましたね。


こちらの写真は、両目は見えていても認識できていないよう。

結果として8枚試してみたところ、内3枚は顔を認識することができました。また、驚くことに、マスクをしている写真は、それを顔と認識しつつ、かなりの精度でマスクをしていることまで認識していました。

"accessories": [
        {
          "type": "mask",
          "confidence": 0.99
        ...

2枚目の写真での判定。なんと99%と、ほぼ断定しています。

意地悪な写真でも実験してみたので精度は低く出ましたが、マスクをしている人まで認識してくれると応用の幅は広がりそう。

顔を認識しつつ、マスクをしていることも認識→風邪薬をレコメンドする、なんてことができそうですね。

顔からわかる情報は無限大。まだまだいろいろな活用方法がありそう

ここまでFace APIの機能を試してきましたが、まだまだ活用できることがありそうです。

具体的には……

  • POSレジで顧客の自動分類
  • 通行人の属性に合わせた広告表示
  • 不審者の探知
  • 写真の自動タグ付け

などの応用が考えられます。出退勤なども顔認識でできれば、日常業務ももっと楽になりますよね。

今後もAI技術の進化とともに、できることは増えていくでしょう。
私たちが考えなければならないのは、AIをうまく活用してなにを解決したいか?なにを生み出したいのかという本質的な部分。

このようなAPIが、それに気づかせてくれる一助になればうれしいですね。

Face API