画像認識で感情はわかる?(Cloud Vision API)
- 機械学習
- 深層学習
- 画像解析
私たちでもGoogleの画像解析技術が導入できるCloud Vision API。今回は「表情や喜怒哀楽」を機械学習がどれだけ理解してくれるか、様々な画像で試してみました。
APIの持つfaceAnnotations情報
人物の顔が写っている写真を検出すると、Cloud Vision APIは「faceAnnotations」というオブジェクト(データの固まり)を返してくれます。
しかしたまに人物の顔が大きく写っていてもfaceAnnotations情報が返ってこないことがあり、そうなると喜怒哀楽も検出できないことになります。
そしてこのfaceAnnotations情報の中に、「怒っている」「頭になにかかぶっている」「楽しんでいる」「悲しんでいる」「驚いている」といった感情を検出した結果が内包されているカタチになります。
期待していた結果とはある意味面白く裏切ってくれる結果もあり、おもしろかったです。
評価値はLikelihoodの5段階
faceAnnotations情報の中にある感情のパラメーターは「Likelihood」という5段階の評価値を持っています。(実際にはUNKNOWN含めて6種類になります)
5段階のレベルは、可能性が高いほうから「VERY_LIKELY」「LIKELY」「POSSIBLE」「UNLIKELY」「VERY_UNLIKELY」という評価で、例えば楽しんでいる感情を知らせるパラメーターが「joyLikelihood: VERY_LIKELY」と返してきた場合、非常に楽しんでいる結果で、「surpriseLikelihood: VERY_UNLIKELY」と返してきた場合、全く驚いていないという結果になります。
ただ、UNが付くか付かないかで意味が大きく違うのに気づきにくいので、星印を付けてブラウザで結果が視覚的に判断しやすいようにデザインしてみました。星の5段階評価でVERY_LIKELYに近づくほど星が多くなります。
あと、帰ってくる情報が英語のため日本語にしてみようと思ったんですが、中には変な日本語の組み合わせが表示されてしまいましたがその点ご了承ください。
信頼度
faceAnnotations情報の中にdetectionConfidenceというパラメーターがあり、どれだけ信憑性があるのか機械が推測した数値を返してくれます。パーセンテージで表示してみました。
楽しんでる?
女性が微笑んでいるように見える写真、パラメーターを見るとjoyLikelihood(楽しんでいる)がかろうじてUNLIKELY、可能性は低いほうですが、まあそんなに間違った結果じゃなさそうに思えました。
こちらの写真ではheadwearLikelihoodを検出したようです。これは帽子などかぶりものを意味するようで、フードも帽子とは異なりますがまとめてheadwearと定義しているように推察されます。
信頼度は非常に高い99%、そうとう自信がおありのようで。
こちらの女性はjoyLikelihoodがVERY_LIKELY。星5つです。
こちらも自信のほどは99%、確かに分かりやすく笑顔ですね。
笑っている男性、こちらもjoyLikelihoodがVERY_LIKELYです。75%ですが、大笑いはしていない印象ですが楽しそうにしている様子です。
両手を広げて全身でジャンプしている女性、顔のアップではなく、背景まで大きく収まっている構図も、感情を評価するようです。身体のポーズからして楽しそうなのですが、もしかして顔の表情だけでなく身体全体からも楽しそうと評価している可能性ってないかな?なんて邪推してしまいます。
かぶりものを検出
こちらの女性はバンダナっぽいものをかぶっています。帽子だけとは限らないようですね。
顔がはっきり写っていてもfaceAnnotationsが返ってこない例
帽子をかぶっているのでheadwearLikelihoodを期待していたのですが、faceAnnotationsそのものが検出されませんでした。よって喜怒哀楽が判断できませんでした。
こちらの女性の笑顔が素敵なのですが、faceAnnotationsそのものが検出されませんでした。草に一部隠れているからとか推察しましたがこれはちょっと残念な気が。。
こちらの男性もfaceAnnotations未検出、確かに手で半分顔が隠れているのでこれは仕方ないか。
驚いてる?
評価の高さとしては中間のPOSSIBLEが検出されました。
ただ、みんな現実的にこんな驚き方ってしないですね、特に日本では。そういう意味ではこのポーズは「驚き」という分かりやすいポーズなのかもしれません。97%と高め。
さきほどより、こちらのほうが驚き度が大きく評価されたようです。グリーンバックは関係あるのでしょうか?
怒ってる?
指差して「おいっ、お前!」と言われそうな緊張感が高い表情ですが、怒りをしめすパラメーターangerLikelihoodがPOSSIBLEと評価されています。指は関係あるのでしょうか?
怒っているようにも見えますが、吠えているようにも見えます。
ある意味楽しんでいるときもこういう表情でますよね?どちらかというと熱中して楽しんでいるとき。さすがにかぶりものはしていないように見えますが、頭部の輪郭と背景の境界が分かりにくい気がします。
明らかに違うという印象を受けた結果
悲しみのパラメーター、sorrowLikelihoodを期待していたのですが、どうも機械では楽しんでいると評価しています。
確かに赤ちゃんは悲しくて泣いているわけではないことがありますので、ある意味悲しみを検出するのは大人より難しいのでは?なんて思ってしまいました。信頼度は堂々の99%です。
sorrowLikelihoodを期待していたのですが、こちらの結果は全てVERY_UNLIKELY。無感情ということでしょうか。
なかなか「悲しみ」の感情を検出してくれない、だったら涙を流しているという分かりやすい要素があればと思いましたが、結果はこちらもVERY_UNLIKELYと評価されました。
「悲しみ」がなかなか出ません。
これは難しい、私の印象としては「泣き笑い」でもなさそうです。
ただ口元だけを見るともうちょっとで笑っているように見えなくもないのですが、みけんが笑っていない、という難しい判断なんでしょう。機械学習がさらに進むと違った結果を出すかもしれません。
これはおもしろい結果です、かぶりものの可能性を示しました。おかっぱのヘアスタイルを帽子と認識したのでしょうか?
楽しんでいるようには見えないです。
かなり大泣きしているようにも見えますが、71%で楽しんでいると評価。
でも、こういった「大きな表情」は割りと楽しんでいると評価されやすいのかな?と思ったりします。
まとめと雑感、「悲しみ」がむずかしい
「悲しみ」を何十枚も試してみてUNLIKELYを検出した写真が一度もなかったので、よほど大げさな表情でまた試してみたいと思います。
おそらくこうやってどんどん学習して精度が上がっていくんだろうな、とこの先に期待します。
「楽しんでいる」に関してはかなり広く評価する(しすぎ)のも印象的でした。ちょっと緩すぎる気もしなくもないですが。
さて、ツクロアのデザイン・ラボ。先週に引き続き2週に渡ってCloud Vision APIを試してみました。
例えば本人確認の写真を送信するフォームなどクライアントワークでも経験していますが、危険性のある画像がいたずらで投稿されたときの問題解決もデザインのひとつだと考えています。という熱を語るのもほどほどに、ツクロアもおかげ様で4期目に突入しました。
5月からは新体制でデザイン・ラボを展開していく予定ですので、どうぞお楽しみに!
クレジット
今回以下の写真を使わせていただきました。ありがとうございます。
Some rights reserved by carianoff
Some rights reserved by Jonathan Kos-Read
Some rights reserved by Joi
https://pixabay.com/photo-332278/
https://pixabay.com/photo-200311/
https://pixabay.com/photo-513529/
https://pixabay.com/photo-483051/
https://pixabay.com/photo-211505/
https://pixabay.com/photo-274175/
https://pixabay.com/photo-443390/
https://pixabay.com/photo-594519/
https://pixabay.com/photo-1192479/
https://pixabay.com/photo-517555/
https://pixabay.com/photo-652552/
https://www.pakutaso.com/20150848217post-5854.html
http://www.photo-ac.com/main/detail/254737
デモ
今回用のデモをつくってみました、お試しください。(2016年6月くらいまで)