« Microsoft Cognitive ServicesのEmotion APIを使ってみた (サンプルをビルドする編)(追記あり) | トップページ | 我が家におけるWindows Home Server興亡記 »

2016年4月 2日 (土)

Microsoft Cognitive ServicesのEmotion APIを使ってみた (使って色々思いを馳せた編)

前回のMicrosoft Cognitive ServicesのEmotion APIを使ってみた (サンプルをビルドする編)の続き。 画像からの感情読み取りに興味をそそられた私が、 様々な画像をEmotion APIにかけて、はるかなるディープラーニングに思いを馳せる回。

まずは、サンプル

まずは、サービス側が用意しているサンプル画像を読み込ませてみます。 サンプルアプリの左のペインで、"Detect emotion using a URL"を選択します。 デフォルトでサンプル画像へのURLが設定されていますので、そのまま"Detect"をクリック。

サンプル画像の解析結果

三人分の顔が認識され、それぞれから検出した感情値(Emotion score)が表示されます。 右のペインには、各人の顔とそこから検出した感情値のうち、上位二つが表示されています。 下のペインには詳細が出ます。この画像で見えている部分は子供の分の結果ですね。 お子さん、NeutralよりSurprise成分の方がありそうな気がするが。

ふむ。

自分の写真

次に、自分の写真を読み込ませてみました。 左のペインで、"Detect emotion using a stream"を選択し、 PC内の自分のドヤ顔写真をアップロードします。

アプリのステータスバーを見ると、 "Microsoft will receive the images you upload and may use them to improve Face API and related services. By submitting an image, you confirm you have consent from everyone in it." とあります。 画像ファイルを直接アップロードする場合は、機能改善に使われる可能性があるということで、 私のドヤ顔が改善上の大論点になる可能性もあるわけですね。 いいけど。

で、結果。 キャプチャ画像は出しませんが、

  • Happiness:0.274908
  • Contempt:0.028495

だそうです。

「表面上おとなしく暮らしているが、心の底では世界を呪っており、押そうとしたバスの降車ブザーを先に押されたことをきっかけに世界を滅ぼそうと決意する確率が83%」 みたいな結果が出たらどうしようかと思いましたが、 そもそも単純な選択肢しかありません。 ニュアンスが正確に一致するか微妙だけど、日本語訳をつけるとこんな感じ?

  • Anger (怒り)
  • Contempt (軽蔑)
  • Disgust (むかつき)
  • Fear (恐れ)
  • Happiness (喜び)
  • Neutral (ふつう)
  • Sadness (悲しみ)
  • Surprise (驚き)

また、 このAPIは画像から表面的に読み取れるものを読み取っているだけですね。 当たり前か。 画像から本心が読めるようになると、大変なことになります。 というか、保護しなければならない機微情報だろう、それ。 スマホで顔をキャプチャされながら、 「冷蔵庫にあったプリンを食べたのはあなたですか?」 とか詰め寄られる未来を考えると、けっこうピンチ。

いや、表面上の感情を読み取るレベルでも、 なにか間違いがあれば危険ですね。 独裁者の前で感極まった表情で拍手している写真を解析してみて、 なにかの間違いで"Anger"と"Contempt"が上位に来ちゃったら、 粛清ものです。 命にかかわる重大インシデントです。

人間側が特性と使いどころを考えて使わないと、 えらいことになりそうですね。 (まあ、技術一般そうだと言えばそうなんだけど)

キハ65

ということで、 この場ではこの先、 技術を平和利用することにして、 実在の人でないものを解析してみます。

機械学習による画像認識といえば、 去年、友利奈緒判定botで友利奈緒な鉄道車両を探してみたという話がありました。 それにたいへん感銘を受けたことを突然思い出したので、 いきなりですがキハ65の画像URLを突っ込ませていただきます。 よろしくお願いいたします。

キハ65画像の解析結果

画像出典: Wikipedia 「国鉄キハ65形気動車」から、 http://upload.wikimedia.org/wikipedia/commons/thumb/2/2e/JNR_kiha65_1.jpg/800px-JNR_kiha65_1.jpg

"No emotion is detected. This might be due to: (略) no faces are in the images (略)"

そうですか。

感情値を算出する前に、 人の顔を検出しなければならないので、 まずそこをクリアしなければ先へ進めない訳ですね。

一松さん

次はまあアニメキャラでしょう。 友利奈緒でもいいんだけど、 ここで今絶賛腐り中の次女に聞いてみましょう。

質問: 推し松は?

回答: 一松

なるほど。

一松画像の解析結果

画像出典: Wikipedia 「TVアニメ「おそ松さん」公式サイト」から、 キャラクター紹介の一松

"No emotion is detected."

うーん。

池上遼一絵

単純化されている絵は難しいのかも。 じゃあ、リアルな絵ではどうでしょうか。 Amazonから池上遼一先生の絵の表紙で、 顔が大きく描かれているものをみつくろって解析してみます。

池上遼一絵の解析結果

画像出典: Amazonの「信長1 桶狭間の戦い (MF文庫 10-4)」から、 表紙絵画像

認識されました。すばらしい。 "Anger"と"Sadness"です。渋い。

その他色々やってみて

池上遼一先生の絵は、結構認識されます。白黒の絵でもいけます。 一方、画風を似せているといわれる「魁!!クロマティ高校」とかはあまり認識されません。 「北斗の拳」は認識されたりされなかったり。

そんなに多くのサンプルを調べたわけではありませんが、 感触としては、 立体感が読み取れるかどうかが結構重要であるように思えます。 立体感も、 記号的な表現ではだめで、「影」っぽいものが具体的に読み取れるかどうかが重要なんじゃないかな。

要するに、現状では、記号的な表現にはあまり対応していないようです。 まあ、看板の絵とかにいちいち反応していたらうるさいだけだし、 とか思いつつ、 一方人間は、看板の絵だと理解しつつ、 その絵の表情を読み取ることができるよなあ、 そういえば、 子供が赤ん坊の頃など思い出すと、 けっこう小さいときから記号的な表現を認識できていたような気がするなあ、 とか考え、 わしらの頭の中ではどのような特徴量が構成されているのだろうか、 などと思いを馳せるわけです(とりあえず馳せるだけだけど)。

で、一番知りたいのは、 これらのAPIの奥で、 どのようにディープラーニングが用いられているかです。 どの量に着目してどういうモデルを組んで、 どういう学習をさせ、 どの程度の結果に落とし込んでいるのか。 なんで結果をこの(※)八種の感情にしたのか。 さすがにそういうのはまだ秘密なのかなあ。

※ 数を書き間違えていたのを修正。(2016/04/03 00:04)

« Microsoft Cognitive ServicesのEmotion APIを使ってみた (サンプルをビルドする編)(追記あり) | トップページ | 我が家におけるWindows Home Server興亡記 »

その他」カテゴリの記事

作業記録」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/595179/63430244

この記事へのトラックバック一覧です: Microsoft Cognitive ServicesのEmotion APIを使ってみた (使って色々思いを馳せた編):

« Microsoft Cognitive ServicesのEmotion APIを使ってみた (サンプルをビルドする編)(追記あり) | トップページ | 我が家におけるWindows Home Server興亡記 »