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のダース・ベイダー.
これも顔判別不能.やはり顔のパーツが重要なのかもしれない.
まとめ
微妙に人じゃない顔もかなり判別できることが分かりました!
肌の色は全く関係ないようなので、仮装した顔なども判別できそうですね.
性別はそこそこいけてそうですが、年齢はかなりアバウトな感じです.
(実際、外見年齢と実年齢に差があることはけっこうあるし、正解データと印象が一致しないのは仕方がないでしょう)
最後に特別枠として「レオン」のナタリー・ポートマンを.
今も昔も最高に綺麗な女優さんですね.
以上です.