Google VisionAPIの使用方法

最近、私はコンピューターがどのように見て、聞いて、感じて、嗅いで、味わうことができるかを取り上げました。コードが「見る」ことができる方法の1つは、Google VisionAPIを使用することです。Google Vision APIは、コードをGoogleの画像認識機能に接続します。Google画像検索はimages.google.comへの一種のAPI / RESTインターフェースと考えることができますが、類似した画像を表示するだけではありません。

Google Visionは、あなたが猫か人間か、そして顔の部分を検出できます。それは、あなたがポーズをとっているのか、それともグーグルセーフサーチにとってうまくいかないことをしているのかを検出しようとします。それはあなたが幸せか悲しいかを検出しようとさえします。

Google VisionAPIの設定

Google Vision APIを使用するには、Google ComputeEngineアカウントにサインアップする必要があります。GCEは無料で試すことができますが、サインアップするにはクレジットカードが必要です。そこからプロジェクトを選択します(ただし、サインアップしたばかりの場合は、[マイファーストプロジェクト]が選択されます)。次に、左側のメニューからAPIキーを取得します。

ここでは、コマンドラインツールCurlで使用できる単純なAPIキーを使用しています(必要に応じて、REST APIを呼び出すことができる別のツールを使用できます)。

生成されたキーをテキストファイルまたはバッファのどこかに保存し(これからは参照しYOUR_KEYます)、プロジェクトでAPIを有効にします(このURLに移動して[APIを有効にする]をクリックします)。

次の画面からプロジェクトを選択します。

これで準備が整いました。このテキストをgoogle_vision.jsonというファイルに貼り付けます。

{"requests":[{"image":{"source":{"imageUri": "//upload.wikimedia.org/wikipedia/commons/9/9b/Gustav_chocolate.jpg"}}、 "features":[ {"type": "TYPE_UNSPECIFIED"、 "maxResults":50}、{"type": "LANDMARK_DETECTION"、 "maxResults":50}、{"type": "FACE_DETECTION"、 "maxResults":50}、{" type ":" LOGO_DETECTION "、" maxResults ":50}、{" type ":" LABEL_DETECTION "、" maxResults ":50}、{" type ":" TEXT_DETECTION "、"maxResults":50}、{"type": "SAFE_SEARCH_DETECTION"、 "maxResults":50}、{"type": "IMAGE_PROPERTIES"、 "maxResults":50}、{"type": "CROP_HINTS"、 "maxResults ":50}、{" type ":" WEB_DETECTION "、" maxResults ":50}]}]}{"type": "WEB_DETECTION"、 "maxResults":50}]}]}{"type": "WEB_DETECTION"、 "maxResults":50}]}]}

このJSONリクエストは、Google Vision APIに、解析する画像と有効にする検出機能を指示します。私はそれらのほとんどを50件まで行っただけです。

Curlを使用します。

curl -v -s -H "Content-Type:application / json" //vision.googleapis.com/v1/images:annotate?key=YOUR_KEY --data-binary @ google_vision.json>結果 

Google VisionAPIの応答を見る

* vision.googleapis.com(74.125.196.95)ポート443(#0)に接続* TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256を使用したTLS1.2接続*サーバー証明書:*。googleapis.com *サーバー証明書:Google Internet Authority G3 *サーバー証明書:GlobalSign> POST / v1 / images:annotate?key = YOUR_KEY HTTP / 1.1>ホスト:vision.googleapis.com>ユーザーエージェント:curl / 7.43.0>承認:* / *>コンテンツタイプ:application / json>コンテンツ長:2252 >期待:100-続行> * 100-続行を待機中} [2252バイトのデータ] *完全にアップロードされて正常<HTTP / 1.1 200 OK <コンテンツタイプ:application / json; charset = UTF-8 <Vary:X-Origin <Vary:Referer <Date:Tue、24 Apr 2018 18:26:10 GMT <Server:ESF <Cache-Control:private <X-XSS-Protection:1; mode = block <X-Frame-Options:SAMEORIGIN <X-Content-Type-Options:nosniff <Alt-Svc:hq = ":443"; ma = 2592000; quic = 51303433; quic = 51303432; quic = 51303431; quic = 51303339; quic = 51303335、quic = ":443"; ma = 2592000; v = "43,42,41,39,35" <Accept-Ranges:none <Vary:Origin、Accept-Encoding <Transfer-Encoding:chunked <{[905 bytes data] *ホストvision.googleapisへの接続#0。 comはそのまま残しました

次のようなものが表示されます。

結果を見ると、次のことがわかります。

{"responses":[{"labelAnnotations":[{"mid": "/ m / 01yrx"、 "description": "cat"、 "score":0.99524164、 "topicality":0.99524164}、{"mid": "/ m / 035qhg"、 "description": "fauna"、 "score":0.93651986、 "topicality":0.93651986}、{"mid": "/ m / 04rky"、 "description": "mammal"、 "score ":0.92701304、"トピック性 ":0.92701304}、{"中 ":" / m / 07k6w8 "、"説明 ":"中小規模の猫 "、"スコア ":0.92587274、"トピック性 ":0.92587274}、{"ミッド ":" / m / 0307l "、"説明 ":"猫のような哺乳類 "、"スコア ":0.9215815、"トピック性 ":0.9215815}、{"ミッド ":" / m / 09686 "、"説明 ":"脊椎動物 "、"スコア ":0.90370363、"トピック性":0.90370363}、{" mid ":" / m / 01l7qd "、" description ":"ひげ "、"スコア ":0.86890864、"トピック性 ":0.86890864…説明」:「ひげ」、「スコア」:0.86890864、「トピック性」:0.86890864…説明」:「ひげ」、「スコア」:0.86890864、「トピック性」:0.86890864…

Googleは、あなたが猫の写真を提供したことを知っています。ひげも見つかりました!

それでは、もっと大きな哺乳類を試してみましょう。リクエストのURLをTwitterのプロフィール写真に置き換えて、もう一度実行してください。2014年のタイ旅行で象に襲われた写真があります。

結果には、私の顔の特徴の場所が含まれます。

… "landmarks":[{"type": "LEFT_EYE"、 "position":{"x":114.420876、 "y":252.82072、 "z":-0.00017215312}}、{"type": "RIGHT_EYE"、 "position":{"x":193.82027、 "y":259.787、 "z":-4.495486}}、{"type": "LEFT_OF_LEFT_EYEBROW"、 "position":{"x":95.38249、 "y": 234.60289、 "z":11.487803}}、…

Googleは、顔の特徴ほど感情を判断するのが得意ではありません。

"rollAngle":5.7688847、 "panAngle":-3.3820703、 "joyLikelihood": "UNLIKELY"、 "sorrowLikelihood": "VERY_UNLIKELY"、 "angerLikelihood": "UNLIKELY"、 "surpriseLikelihood": "VERY_UNLIKELY"、 "underExposedLike VERY_UNLIKELY "、" blurredLikelihood ":" VERY_UNLIKELY "、" headwearLikelihood ":" VERY_UNLIKELY "

キスを期待していなかったので、間違いなく驚きました(象と一緒に自分撮りを目指していただけです)。象の鼻のキスは乱雑で少しぬるぬるしているので、写真は「うんざり」と組み合わされた少しの喜びを示しているかもしれません。

グーグルビジョンはまた、写真と私について他のいくつかのことに気づきました:

{"mid": "/ m / 0jyfg"、 "description": "メガネ"、 "スコア":0.7390568、 "トピック性":0.7390568}、{"mid": "/ m / 08g_yr"、 "説明": "テンプル」、「スコア」:0.7100323、「トピック性」:0.7100323}、{「ミッド」:「/ m / 05mqq3」、「説明」:「鼻」、「スコア」:0.65698373、「トピック性」:0.65698373}、{ "mid": "/ m / 07j7r"、 "description": "tree"、 "score":0.6460454、 "topicality":0.6460454}、{"mid": "/ m / 019nj4"、 "description": "smile "、"スコア ":0.60378826、"トピック性 ":0.60378826}、{"中間 ":" / m / 01j3sz "、"説明 ":"笑い "、「スコア」:0.51390797、「トピック性」:0.51390797}]…

グーグルは象の鼻を認識しました!また、私が笑っていて、笑っていることにも気づきました。スコアが低いほど信頼性が低いことを示していますが、Google VisionAPIが気付いたのは良いことです。

… "safeSearchAnnotation":{"adult": "VERY_UNLIKELY"、 "spoof": "POSSIBLE"、 "medical": "VERY_UNLIKELY"、 "violence": "UNLIKELY"、 "racy": "UNLIKELY"}…

グーグルはこれがプラトニックなキス以上のものであるとは信じておらず、私が象に傷つけられていないことを認識しています。

これとは別に、応答には一致する画像や類似の画像などがあります。トピックの関連付けもあります。たとえば、「Xennials」の記事について一度ツイートしたところ、今ではそれに関連付けられています。

Google Vision APIはどのように役立ちますか?

Whether you’re working in security or retail, being able to figure out what something is from an image can be fundamentally helpful. Whether you’re trying to figure out what cat breed you have or who this customer is or whether Google thinks a columnist is influential in a topic, the Google Vision API can help. Note that Google’s terms only allow this API to be used in personal computing applications. Still whether you’re adoring data in a search application or checking whether user submitted content is racy or not, Google Vision might be just what you need.

While I used the version of the API that uses public URIs, you can also post raw binary or Google Cloud Storage file locations using different permutations.

著者のメモ:Lucidworksの同僚であるRoy Kiesler感謝します。彼の研究は、この記事に貢献しました。