Google Cloud Visionがしゅごい

画像認識を提供するAPIを探していたら思った以上に[Cloud Vision API](https://cloud.google.com/vision/?hl=ja) がしゅごかったので共有



# 第1問

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

![wasabi.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/330514/7005b989-a414-354c-8740-04bfc3de456b.jpeg)

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

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

APIを試すだけであれば、[ここ](https://cloud.google.com/vision/?hl=ja#vision-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

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

<img width="937" alt="スクリーンショット 2019-09-11 16.46.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/330514/1fc2a0e2-4370-7978-d763-2c32e6fc62cf.png">


しゅごい
さすがGoogle

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

# 第2問

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

これ何でしょう？

![71e13hpfzuL._SL1156_.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/330514/50d5d8d0-0e78-a385-432d-b291a38393cb.jpeg)



```
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` ということで付箋だと言い張ってますが、どうでしょうか？

<img width="820" alt="スクリーンショット 2019-09-11 17.08.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/330514/d2bf0d4f-1ebe-4b7a-5b46-86b4a2159d3b.png">

しゅばらしいですね

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

# 仕組み

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

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

# 注意点

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

## 利用金額

この機能は利用料金が結構お高めです。
詳細は[Vision API の料金](https://cloud.google.com/vision/?hl=ja#vision-api-_3)を参考にしていただきたいですが

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

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


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

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

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


![IMG_20190911_174741.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/330514/fd45098d-111b-c02a-0b15-bd6e7300f4d0.jpeg)

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`コマンドかな？と思うのでそのコマンドも記載しておきます

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

```console
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://...)
```

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


```console
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](https://cloud.google.com/vision/docs/internet-detection?hl=ja)


# 参考

[Vision AI | ML から画像情報を引き出す  |  Cloud Vision API  |  Google Cloud](https://cloud.google.com/vision/?hl=ja)