Googleが、画像認識API Cloud Visionを公開しました。
一方でこんなツイートを見かけました。
GODIVAのチョコが家にあるんだけどお父さんが「味噌汁じゃん」って言い出してから味噌汁にしか見えない pic.twitter.com/Ezlo2LeePv
— ねっちマン® (@kazynnr) 2016年2月14日
なるほど、確かにこれは味噌汁っぽい…じゃあCloud Visionに認識させたらどうなるのか試してみました。
手順
Google Cloud Platformに登録する
登録後30日までは無料とのことなので、登録してみました。
チュートリアルに従ってAPIの有効化とブラウザキーを作成
今のところ英語のチュートリアルしかありませんが、作業は簡単です。新規プロジェクトを作って、認証情報としてブラウザー鍵を生成するだけです。
リクエストjsonを作る
API呼び出しのためのjsonを作成します。直接jsonをエディタで作成しても良いですが、Google APIs Explorerを使うと割と楽です。
画像ファイルをbase64化する
jsonに画像ファイルの中身をbase64でエンコードして指定する必要があるので、GNU coreutilsのbase64コマンドを使って生成しましょう。
できあがったrequest.jsonはかなり大きくなるのでここには直接張りませんが、gistに自分が作成したものを置いてあります。
リクエストを送信する
wgetでもcurlでもなんでも良いですが、生成したリクエストをhttpsで送信します。私はチュートリアルに習ってcurlを使いました。
#!/bin/sh
curl -v -k -s -H "Content-Type: application/json" https://vision.googleapis.com/v1/images:annotate?key="$1" \
--data-binary @request.json
結果を見る
curlの標準出力にjsonとして結果が返ってきます。2/19日次点で私が得られた結果を以下に示します。
{
"responses": [
{
"labelAnnotations": [
{
"mid": "/m/02q08p0",
"description": "dish",
"score": 0.95707446
},
{
"mid": "/m/02wbm",
"description": "food",
"score": 0.83514553
},
{
"mid": "/m/0krfg",
"description": "meal",
"score": 0.75944263
},
{
"mid": "/m/0271t",
"description": "drink",
"score": 0.571712
},
{
"mid": "/m/07xgrh",
"description": "ingredient",
"score": 0.5617367
},
{
"mid": "/m/0270h",
"description": "dessert",
"score": 0.55429626
},
{
"mid": "/m/0hz4q",
"description": "breakfast",
"score": 0.54153788
},
{
"mid": "/m/06l8d",
"description": "restaurant",
"score": 0.50432992
}
]
}
]
}
考察
もっとも上位のスコアで返したのはdishでした。以下food, meal, drinkと続きます。food+drinkはそれとなく味噌汁っぽい気がします。その次の次にdessertを返しているので、チョコレートかも?という判断もしていそうです。
今実行すると、また違う結果が返ってくるかもしれません。
注意
- APIの呼び出し回数制限に気を付けましょう
- ブラウザ鍵は認証としては非常に弱いので、取り扱いに気を付けましょう