Watson Visual Recognition の Detect Faces はどこまで分かる!? スターウォーズのキャラを判別してみた!!

1月初旬に Watson Developer Cloud .NET Standard SDK v1.3.0 のリリース記事を書きました.

WPF では以下のバグで使えない状態だったのですが、耳よりな情報がアップデートされていたのでそれを試してみることに.

Issue では以下のような解決策が示されていましたが、私の環境では Wdc.System.Net.Http.Formatting.NetStandard と System.Net.Http を最新版までアップデートすることで動くようになりました(ver 1.0.7 と ver 4.3.3).

Finally I solved this problem by
1. installing Wdc.System.Net.Http.Formatting.NetStandard nuget package
2. downgrade System.Net.Http version 4.1.0 to 4.0.0
This worked for me..

いずれ正式な Fix 版が出るとして、しばらくはこれで難を凌げそうです.

 

せっかく動くようになったので今回は SDK を使ってちょっとした実験をしてみたいと思います.
実験の対象は Watson Visual Recognition の Detect Faces です.

今回はこの Detect Faces でスター・ウォーズのキャラクターをどこまで顔認識できるか試してみます!

 

実装コード

今回は以下の構成で実装しました.

  • WPF アプリケーション
  • .NET Framework 4.7

まずは前準備として NuGet パッケージをインストールします.
『Watson Developer Cloud』で検索すると SKD にリストが表示されます.その中から IBM.WatsonDeveloperCloud.VisualRecognition.v3 をインストールします.

そしてバグ回避のために以下の2つのパッケージを最新版までアップデート.

これで Visual Recognition を使う準備ができました.

 

以下、実装コードです.
Watson API を SDK が上手くラップしてくれているので使うのに難はないはずです.

DetectFaces の結果で取得できるのは画像上のピクセル座標なので、ピクセル座標をウィンドウ上の DIP 座標に変換する必要がありますが、そこは省略しています(多少座標がズレるけど許してください).

 

実験結果

【注】座標が微妙にずれているのは WPF 上の実装不備の問題で、API の欠陥ではありません.大事なことなので2回言いました.

まずはエピソード2のオビワン.
男性、35~44歳.年齢もだいたい合ってそうです.

同じくらいの年齢のクワイガンはどうか.
男性、35~44歳.個人的にはオビワンより少しだけ老けて見えるかと思いますが、年齢も同じ結果.

エピソード3のパドメ.
女性、~17歳.Min の値が出ませんでした.17歳は若すぎる判定だと思いますが、実際美人すぎて実年齢わからないですよね.

シニア枠.
エピソード3のパルパティーン最高議長.
男性、65~歳.今度は Max の値が出ないパターン.この人もナイスジェントルでかっこいい.

そろそろ実験の領域に入っていきます.
エピソード3のシディアス卿.
性別不明(女性0%)、18~24歳.これでも顔判別してくれるんですね.
性別はともかく、年齢は何が特徴量として効いているのか気になるところ.シワかと思いましたがこの結果を見ると違いそうですね.

ギリギリ人間枠.
エピソード1のダース・モール.
性別不明(女性0%)、35~44歳.肌の色関係ないんだ!?という驚愕.
目があって鼻があって…というパーツで判別している可能性が高そうですね.

人型の人間じゃない枠.
エピソード3のマスター・ヨーダ.
性別不明(女性0%)、45~54歳.微妙に外見年齢が合ってそうな感じ.
これを顔判別できるのはなかなか強い.

ならこれもいけるやろ!ということでロボット枠その1.
エピソード3のグリーヴァス将軍.
顔判別不能.目があるのでいけるかなと思いましたが、これは顔判別できませんでした.

ロボット枠その2.
エピソード3のダース・ベイダー.
これも顔判別不能.やはり顔のパーツが重要なのかもしれない.

 

まとめ

微妙に人じゃない顔もかなり判別できることが分かりました!
肌の色は全く関係ないようなので、仮装した顔なども判別できそうですね.

性別はそこそこいけてそうですが、年齢はかなりアバウトな感じです.
(実際、外見年齢と実年齢に差があることはけっこうあるし、正解データと印象が一致しないのは仕方がないでしょう)

最後に特別枠として「レオン」のナタリー・ポートマンを.
今も昔も最高に綺麗な女優さんですね.

 

以上です.