DataSpider でやり残したこと(不真面目)-その3

ここまでのおさらい

「アイドル顔判定器(仮)」の作成も大詰め。Microsoft Face API を使って学習させるところまでできたので、あとは実際に画像を送信して AI にどのアイドルグループに属するか判断してもらいましょう。

愛理ちゃんでやってみる

改めて、愛理ちゃんの画像を送ってみます。 Face API では Face - Identify という API でどの登録済み Person に類似度が高いか判断してくれるのですが、Identify に送るためには FaceId というものが必要となります。そのため、まず Face - Detect で FaceId を取得して、その後に Face - Identify を使って結果を取得します。

まずはこちらが Face - Detect。json で URL を渡すか octet-stream で直接ファイルを渡すこともできます。

curl -v -X POST "https://westus.api.cognitive.microsoft.com/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes={string}" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: {subscription key}"

結果がこちら。この ca6d25e2-e68d-4c6b-a273-6bf416b27f0b というのがいま送った画像の FaceId になります。

[{"faceId":"ca6d25e2-e68d-4c6b-a273-6bf416b27f0b","faceRectangle":{"top":109,"left":243,"width":141,"height":141}}]

この Face Id を使って Face - Identify に送るといよいよやりたかったことが実現できます。

curl -v -X POST "https://westus.api.cognitive.microsoft.com/face/v1.0/identify" -H "Content-Type: application/json" -H "Ocp-Apim-Subscription-Key: {subscription key}"

Detect - Identify の流れを DataSpider のスクリプトで組むとこんな感じですね。

どれどれ、結果を見てみましょう。

[{"faceId":"e9f1ae5f-cef7-4e82-ad7d-33f3c2350d44","candidates":[{"personId":"16e0a696-ffcc-4b9f-a51f-f96571231a59","confidence":0.55153}]}]

この personId(16e0a696-ffcc-4b9f-a51f-f96571231a59)は その 2 で person を作成したときに生成されたものでしてその時のログを確認してみます。

  • ハロプロ:52f8b199-812c-457f-8976-c2e84969da8a

  • AKB 48 :6ea1ef83-0940-4fc3-a9b1-a9294d4b26dc

  • 乃木坂46:16e0a696-ffcc-4b9f-a51f-f96571231a59

愛理が乃木坂46 と判定されている・・・。

confidence(信頼度)が 0.55153 と低いですし、やはり学習が足りなかったかもしれませんね。 画像集めるのはめんどくさいのでやりたくないのですが、仕方ないので学習させましょう。

学習方法 - 1

すでに「指定したフォルダ内の画像を Person に Add する」という機能は作っているので、あとは DataSpider のファイルトリガーという機能を使って、そのフォルダにファイルが置かれたら自動的にそのスクリプトを実行するように仕掛けておきます。

DataSpider の歴史の中でハロプロというディレクトリが作られたのは史上初かもしれませんね。ハロプロ最高!

f:id:dsstsukky:20190326235937j:plain

学習方法 - 2

しかし、ここで気づきました。DataSpider は私の業務用 PC にインストールされており、上記の方法だと業務用 PC でアイドルの画像を集めることとなり、あと数日で会社を辞めるとはいえこれは非常によろしくない!

ということで私物のスマホで画像を集めて学習させる方法を考えました。仕組みとしては kintone で画像と一緒に所属グループを登録すると Webhook で通知を受け取った DataSpider がその画像を取得して PersonGroup Person - Add の API を叩いて学習させてくれます。また、画像をファイルとして渡すモードとで画像の URL を渡すモードを作って切り替えるようにしました。(フィールドの表示・非表示の切替は gusuku Customine でやりました)

使用イメージ

f:id:dsstsukky:20190326193805g:plain

DataSpider のスクリプト

f:id:dsstsukky:20190326234910j:plain

f:id:dsstsukky:20190326234922j:plain

ここまで来たらあとは頑張って画像を集めて学習あるのみですね!

最後に

そんなこんなでハロプロ画像を中心に学習させていたところ、ついにその時が来ました!

f:id:dsstsukky:20190326203941j:plain

まだ confidence は 0.55686 と低めですが、愛理ちゃんが無事ハロプロ顔と認定されました。

最後の最後に本当に頭のおかしいものを作りましたが、大好きなものを組み合わせて楽しめたので大満足でです。

これからも DataSpider と 鈴木愛理ちゃんと築山をよろしくお願いします。