COPYRIGHT © SONICJAM ALL RIGHTS RESERVED.
2017
16
OCT
CATEGORY:
深掘りWORKS
すげぇぞ!Google Vision API!
おはこんばんちは!!SONICJAM福岡支社ディレクターの堀田です。

先日公開した診断系コンテンツのお仕事で、Googleが提供しているGoogle Cloud Platformの内の『Cloud Vision API』を利用したんですが...
もうホントにあれですね。
Googleの言葉を借りるならば、クラウドの「未来」が、もうはじまっている。ですよ。

ユーザーが自分の"顔写真"をアップするといくつかの診断結果に振り分けられるシンプルな仕様なんですが、表向きでは伝わりにくいVision APIの働きっぷりや、診断のアルゴリズムを開発した苦労話があったりするので、そのあたりを深掘りしていきたいと思います!



1.Cloud Vision APIとは?


詳しくはコチラを見てもらえればわかるんですが、ささっとお伝えすると"画像から情報を抽出して数値化する"APIです。
学習型人工知能エンジンが、画像データからロゴや文字だけではなく人間の顔やランドマークを検出したり、その画像がアダルト / 暴力的コンテンツであるかまでを検出できます。
診断コンテンツでは、その中の『顔検出』という機能を利用しました。

顔検出機能では、画像に含まれる複数の人物の顔を検出して、目や鼻などの顔のパーツをポイントにしてその座標数値を返してくれます。
さらに感情や帽子の着用といった属性も識別してくれます。(精度は不明)

そして利用料金が思ってたより高くないのもポイントです。
弊社は開発実績がある分、開発コストもだいぶお安いはずです!




2.APIで取得できる顔のパーツ


実際にはどのような顔のパーツを検出してくれるのか?
ぱくたそで見つけた、かわいこちゃんの画像で解説していきます。

kawaikochan.png

この画像をVison APIにリクエストすると...

kawaikochan_2.png

このように顔のポイントを検出して、画像に対してのポイント位置の座標値を返してくれます。
ちなみにPerfumeのかしゆか氏みたいに、がっつり前髪で眉毛が隠れてる人物写真でも、人工知能が眉毛のポイントを導き出してくれるので、「ああ、かしゆかっておでこ出したらこういう眉毛してるんやぁ。」というちょっとエッチな楽しみ方もできます!(非公認)

実際に返ってくる値の名称が、どのポイントを指しているのかを以下のように資料化することで、開発がスムーズになるだけではなく、アルゴリズムの開発にも役立ちました。

kawaikochan_3.jpg



3.フロントエンド用のAPI開発


Vision APIでは、あくまでも検出した顔のポイントの座標値しか返してくれませんので、診断コンテンツ用に別途システム開発が必要になります。フロントサイドで全て計算する方法もありましたが、今回はサーバサイドで振り分け処理まで行い、診断結果をフロントエンドに返すようなAPI開発を行いました。

まずは、先に挙げた資料をもとに、どのポイントを使って診断するかを決めていきました。
例えば...
・両目の距離(LEFT_EYE_RIGHT_CORNERとRITHT_EYE_LEFT_CORNERの距離)
・鼻の長さ(FOREHEAD_GLABELLAからNOSE_TIPまでの距離)
・つり目度(EYE_LEFT_CONERとEYE_RIGHT_CONERの傾き具合)
と言ったように、一般的な特徴に置換して、その特徴を数値化するような計算式を作りました。

注意しなければならないのが、Vision APIで返してくれる座標値はあくまでも画像に対する座標値であって、顔の傾きは一切無視されているという点です。
つまり、ちょっと小首をかしげた写真で素直に計算すると、どちらか一方だけがつり目になってしまったりと、正確な顔の特徴が導き出せなくなります。
そこで、画像に対してではなく、顔の輪郭点をつなぎ合わせた四角形に対してという回転の計算処理を加えました。



4.アルゴリズム開発


制作した診断コンテンツでは、30を超えるパターンの結果を返しています。より納得度の高い診断にするために、大きなカテゴリへの振り分けと、さらに細かい振り分けを行う第二段階での処理をすることにしました。

まず、実際に画像をVision APIにリクエストして返ってきた座標値情報に対して、先ほどの一般的な特徴に置換した計算式で各特徴を数値化する簡易システムを、Googleスプレッドシートを使って開発しました。

次に、一般的なイメージを大事にしたかったので、診断結果のイメージに近いタレントをひたすらピックアップしました。
そして先ほどのスプレッドシートを使って、そのタレントの写真をいくつもVison APIで解析し、診断結果ごとの特徴を見つける作業をはじめました。

「◯◯っぽい」ってイメージは思ってたより的を射ていて、意外にも特徴が如実に数値として表れました。その数値を参考に、分岐のアルゴリズムを作りました。

2つめの振り分けは、「眉毛のまっすぐ度」を利用しました。性格診断という位置づけにしたかったので、結構メジャーだと思われる「眉毛」による性格診断を採用しています。

しかし...!ここからが長い長いトンネルでした。。。
このアルゴリズムを反映して、実際にタレントやスタッフの写真を診断にかけてみるのですが、なかなか納得感のいく診断結果にならなかったり、振り分けに偏りが出てしまい、分岐ポイントの数値の微調整を繰り返しまくりました。

分岐はこんな感じ。

exel.png


公開ギリギリになり、ようやく納得感を保ちつつ全てのパターンにバランス良く振り分けができるようになり、無事ローンチに至りました。



5.最後に


開発を担当したエンジニアも、Vision APIの開発のしやすさを絶賛していました。
CLOUD APIなので、大きなエンジンシステムをサーバに設置する必要がないのも大きなメリットですね。
最近ではMicrosoftからも同じようなAPIがリリースされています。
こちらは性別なども検出してくれる様で、プロモーションの幅がさらに広がりそうです。

Webだけではなく、イベントなどでのインタラクションコンテンツにもマッチしそうですね!
SONICJAMでは、こういった最新のクラウドAPIを使った企画立案とサイト制作を得意としておりますので是非是非是非ご相談ください!!


それではみなさんアディオス〜

CATEGORY

×
CATEGORY
COPYRIGHT © SONICJAM ALL RIGHTS RESERVED.