Google Cloud Visionがしゅごい


画像認識を提供するAPIを探していたら思った以上にCloud Vision API がしゅごかったので共有

第1問

まず手始めにこれなんでしょう?

簡単ですね。チューブわさびです。ちなみに私は素麵はわさび派です。

ではこの画像をCloud Vision APIで分類してみましょう。

APIを試すだけであれば、ここからお試しできます。
実装の必要もなくWeb上のサービスとして使えるのでまずはこれがオススメです。

さて、気になる結果は

Highlighter 0.8138
Office Supplies 0.583
Pen 0.5529
Permanent marker 0.5331
Casey Japanese Momen-tofu Sticky Small size(japan Import) 0.3519
Fluorescence 0.2985
Marker pen 0.2944
Product 0.2887
Sakura Color Products Corporation 0.2816
Eraser 0.2728
Zebra 0.2519
Gift 0.2331
Color 0.2238

Highlighter 0.8138 で蛍光ペンがトップという結果になりましたwww
バグってますねwww

ということで、正解を見てみます

しゅごい
さすがGoogle

騙された人はいいねボタンを押してください

第2問

第1問でなんとなく雰囲気わかったと思いますが続いて2問目です

これ何でしょう?

Post-it Note 1.0614
Casey Japanese Momen-tofu Sticky Small size(japan Import) 0.7351
Office Supplies 0.5435
Paper 0.4638
Tofu 0.4041
ジオデザイン 付箋 板付かみぼこ 白 KFWT-01 0.3624
Notebook 0.3257
Memo 0.3207
Food 0.3035
ビバリー 付箋 よりどりふせん トイストーリー FS-003 0.29
Bị vong lục 0.2858

Post-it Note 1.0614 ということで付箋だと言い張ってますが、どうでしょうか?

しゅばらしいですね

はっきり言って人間でもぱっと見わからないんですがどうなっているんでしょうか?

仕組み

ミスリード的な書き方をしてしまいましたが、これは通常の画像認識ではなくWebDetectionという機能を使っています。
内部のことは全くわからないので仕組みと言えるレベルではないんですが、使っているのはGoogleの画像検索の機能のようです。
画像から読み取れる情報を取得しているのではなく、Web上から画像検索で一致した情報を元にしているので、見た目ではわかりにくい画像でも正確に情報を取得できたわけですね。

ネット上にある画像を分類したい、という用途では最強では?
さすがGoogle

注意点

ものすごい機能なんですが注意点もあります

利用金額

この機能は利用料金が結構お高めです。
詳細はVision API の料金を参考にしていただきたいですが

ラベル検出(いわゆる通常の画像認識)は $1.50 / 1000枚という金額ですが、このWebDetectionの機能は$3.5 / 1000枚 ということで倍以上しますね
それでもしゅごいのに変わりないですが

そこまで多くの画像を扱うことはないということであれば、一ヶ月に1000枚までは無料枠があるので、そこに収まるのであれば無料で使えます。

自分で撮った写真には効果が薄い

当然ですが、画像検索をして一致する画像を見つけることで高精度な情報を撮っているので、自分で撮った写真に対して行ってもここまでの効果は得られません。
自分が作ったネタ商品を正しく分類することはまず無理でしょう

ただし、商品画像をスマホで撮ってAPIに放り込むと、ちゃんと認識してくれました。

Amazonの商品ページを映したディスプレイをスマホで撮影してAPIにかけるという無駄なことをしてみましたが、ちゃんとPost-it Noteとして認識しています。なんか暗くなってたり画質落ちてるはずなのにやっぱりしゅごい

Post-it Note 1.092
Casey Japanese Momen-tofu Sticky Small size(japan Import) 0.7109
Office Supplies 0.7027
便条 0.6509
Paper 0.5991
Tofu 0.4988
Product 0.4453
ジオデザイン 付箋 板付かみぼこ 白 KFWT-01 0.3963

gcloudコマンドでの実行

プログラム的に使う場合で一番お手軽なのはgcloudコマンドかな?と思うのでそのコマンドも記載しておきます

ヘルプによると以下のコマンドとのことです

gcloud ml vision detect-web IMAGE_PATH

IMAGE_PATHについてですが

     IMAGE_PATH
        Path to the image to be analyzed. This can be either a local path or a
        URL. If you provide a local file, the contents will be sent directly to
        Google Cloud Vision. If you provide a URL, it must be in Google Cloud
        Storage format (gs://bucket/object) or an HTTP URL (http://... or
        https://...)

とのことなので、色々いけるみたいです

gcloud ml vision detect-web ./image.png # ローカルの画像ファイルもいける
gcloud ml vision detect-web http://*****.com/image.png # URLもいける
gcloud ml vision detect-web gs://bucket/object # Cloud Storage上のオブジェクトもいける

真面目に使うとなると組み込む形になりますがチュートリアルが用意されていました
pythonでやる際のチュートリアルは以下を参照ください
ウェブ検出のチュートリアル  |  Cloud Vision API ドキュメント  |  Google Cloud

参考

Vision AI | ML から画像情報を引き出す  |  Cloud Vision API  |  Google Cloud