Node.js
JSON
コンピュータビジョン
GoogleCloudVsion
CloudVisionAPI

Google Cloud Vision APIで自宅の住所を特定できるのか!?

More than 3 years have passed since last update.

2016年2月からGoogle Cloud Vision APIが提供され、

Googleの画像認識技術が誰でも使えるようになりました!

なんと、写真にうつってる住所も特定できちゃうらしい!

て事は… 僕の自宅も!?さっそく実験してみました。


Google Cloud Vision APIについて

Googleの画像認識技術です。

画像をAPIに渡すと、何か写っているのかを説明してくれます。


6つのモードがある!

Google Cloud Vision APIには、下記6つのモードがあります。


1.Label

物体検知です。単純に「何か写っているのか」を検知します。


2.Face

「ここに顔がある・どんな表情をしているか」を検知します。


3.Text

写っている文字をテキスト起こししてくれます。


3.Landmark

「建物名・住所」を検知します。


4.Logo

「どこの企業のロゴなのか」を検知します。


5.Safe

「有害コンテンツであるかどうか」を検知します。

adult,spoof,medical,violence の4項目で判定してくれます。


簡単に試せるプログラムをつくった!

今回、ドラッグ&ドロップをするだけで

簡単にCloud Vision APIを試せるプログラム
を作りました

(URLはYouTube動画で紹介しています)

【Googleの技術で自宅を特定できるのか!?】Google_Cloud_Vision_APIでやってみた♪_-_YouTube_🔊 のコピー.jpg

【Googleの技術で自宅を特定できるのか!?】Google_Cloud_Vision_APIでやってみた♪_-_YouTube_🔊.jpg

【Googleの技術で自宅を特定できるのか!?】Google_Cloud_Vision_APIでやってみた♪_-_YouTube_🔊 2.jpg

上記画像は Label(物体検知) を試している様子です!

ちゃんと food, spaghetti, dish と出ていますね!


Landmarkで実験開始〜〜!!

さて、今回の実験と要となるのは、Landmarkモードです!

こちらの認識精度も、非常に優秀です!

まず、小手調べに「国会議事堂」を試しました。

PAK85_kokkaisyoumenmidori20140905_TP_V1.jpg

(写真:「ぱくたそ」)

【Googleの技術で自宅を特定できるのか!?】Google_Cloud_Vision_APIでやってみた♪_-_YouTube_🔊 2.jpg

画像をドラッグ&ドロップ!

【Googleの技術で自宅を特定できるのか!?】Google_Cloud_Vision_APIでやってみた♪_-_YouTube_🔊.jpg

出ました!

【Googleの技術で自宅を特定できるのか!?】Google_Cloud_Vision_APIでやってみた♪_-_YouTube_🔊 3.jpg

ちゃんと「Natial Diet Building」と出ています!

【Googleの技術で自宅を特定できるのか!?】Google_Cloud_Vision_APIでやってみた♪_-_YouTube_🔊 4.jpg

なんと緯度・軽度も出ています…!

その緯度・軽度をGoogleMapに入力すると…

【Googleの技術で自宅を特定できるのか!?】Google_Cloud_Vision_APIでやってみた♪_-_YouTube_🔊 5.jpg

ちゃんと国会議事堂が出てくる!

【Googleの技術で自宅を特定できるのか!?】Google_Cloud_Vision_APIでやってみた♪_-_YouTube_🔊 6.jpg

マイナーそうな建物ではどうでしょう?

【Googleの技術で自宅を特定できるのか!?】Google_Cloud_Vision_APIでやってみた♪_-_YouTube_🔊 7.jpg

特定できた!!


ならば、自宅も特定できるのか!?

さぁ、いよいよ本題です!

【Googleの技術で自宅を特定できるのか!?】Google_Cloud_Vision_APIでやってみた♪_-_YouTube.jpg

結果は……





【Googleの技術で自宅を特定できるのか!?】Google_Cloud_Vision_APIでやってみた♪_-_YouTube 2.jpg

できませんでした(;´Д`)

その他にも色んな建物を試してみるが、

何も結果は得られず…

やはりある程度、有名な建物でないとダメなようですね。。

(全貌はYouTube動画で)


APIの使い方

APIの使い方は簡単です。

JSONをPOSTしてあげるだけ!

ただし、画像ファイルはbase64の文字列にする必要があります。


例 (Node.js)

    var reuestOption = {

uri: 'https://vision.googleapis.com/v1/images:annotate?key=YOUR_BROWSER_API_KEY',
headers: {
'Content-Type': 'application/json'
},
json: {
"requests": [
{
"image": {
"content": BASE64_STRING
},
"features": [
{
"type": TYPE,
"maxResults": 5
}
]
}
]
}
};
request.post(reuestOption, function (error, response, body) {
if (!error && response.statusCode == 200) {
res.json(body);
} else {
res.status(200).json({
status: 'err',
body: body
})
}
});

typeには、下記のうち1つを文字列で入れてあげます。


  • LABEL_DETECTION

  • FACE_DETECTION

  • TEXT_DETECTION

  • LANDMARK_DETECTION

  • LOGO_DETECTION

  • SAFE_SEARCH_DETECTION


base64への変換

今回、base64への変換はフロント側で行いました。

画像をドラッグ&ドロップした直後、すぐに変換が行われます。

FileReaderAPIでFileオブジェクトをreadAsDataURL(f)してあげると、

DataURL型の文字列になります。

不要な部分をreader.result.split(',')[1];等で削って、

base64だけ取り出します。

あとは、それをJSONに入れてPOSTしてあげるだけ!


出力結果

結果はJSON形式で返ってきます。

今回のプログラムでは、見づらいため json.humon.js を使用しました。

見づらいJSONをtableに変換してくれます!


プログラムを公開しています。ぜひ試してみてください!

プログラムを実際に試してみたい方は、

動画ページの詳細にリンクがありますので、ぜひご覧ください!

それでは♪

thumnail_sozai 3.jpg

★★YouTube動画はこちらから再生!★★

参考:

Cloud Vision APIの画像認識精度を試してみた | mediba Creator × Engineer Blog