API ITかあさん

ITかあさん

GoogleCloudVisionAPIの画像認識APIを5分で遊ぶ

GoogleCloudVisionAPIの画像認識APIを5分で遊ぶ

GoogleCloudVisionはGoogle製のお手軽な画像認識のAPIです。
画像を指定すると、その画像が一体どのような画像なのかを認識してくれます。


たとえばこんなカンジの先日食べた牛カツの写真。


アップロードすると食べ物、フライ、といったカンジにどんな画像なのかレスポンスを返してくれるAPIです

どんな情報が返却されるかは下記リンクより直接画像をアップロードすることで試すことができます。

さっそくGoogleCloudVisionAPIを使ってみる

GoogleCloudのダッシュボードからAPIとサービスを選びます

APIリストから今回のGoogleCloudVisionAPIを選びます。

あとは手順に従って追加するだけ。すぐにキーを発行してもらえます。


GoogleCloudPlatformsからGoogleCloudVisionAPIの利用を追加します。設定が完了するとキーが発行されるので発行されたキーをコピーします。

利用するにはGoogleCloudに登録済のGoogleアカウントが必要です

なお、APIのキーはGoogleCloudVisionAPI専用のキー発行もできるし、GoogleCloudPlatformsから使えるAPIすべてに対して共通のキーでもOKのです。

さっそくAPIを叩いてみる

キーさえそろえばAPIを叩く準備は整いました。

試しに最近飼い始めた犬さんの画像から、何の画像なのかラベルを抽出したいと思います

APIのアクセス

https://vision.googleapis.com/v1/images:annotate?key=YourKey

json

APIを叩くにはAPIのURLの最後に自分のキーをパラメータとしてセット、データはjson形式で渡します。
画像の渡し方はbase64 エンコード文字列、Google Cloud Storage URI, HTTPまたはHTTPSでアクセス可能な画像URLです。
詳しくはこちらのドキュメントをご確認ください

{
  "requests": [
    {
      "image": {
        "source": {
          "imageUri": "http://www.kaasan.info/..../IMG_4348-e1522818735397.jpg"
        }
      },
      "features": [
        {
          "type": "LABEL_DETECTION"
        }
      ]
    }
  ]
}

レスポンス

戻りはこんなカンジでかえってきます。スコアが高い順に「どんな画像なのか」を認識してラベルを返してくれるようです。

{
  "responses": [
    {
      "labelAnnotations": [
        {
          "mid": "/m/0kpmf",
          "description": "dog breed",
          "score": 0.93450874,
          "topicality": 0.93450874
        },
        {
          "mid": "/m/0bt9lr",
          "description": "dog",
          "score": 0.9185607,
          "topicality": 0.9185607
        },
        {
          "mid": "/m/02xl47d",
          "description": "dog breed group",
          "score": 0.9120572,
          "topicality": 0.9120572
        },
        {
          "mid": "/m/01z5f",
          "description": "dog like mammal",
          "score": 0.8630419,
          "topicality": 0.8630419
        },
        {
          "mid": "/m/05mqq3",
          "description": "snout",
          "score": 0.7132316,
          "topicality": 0.7132316
        },
        {
          "mid": "/m/01z0mh",
          "description": "norwegian lundehund",
          "score": 0.632862,
          "topicality": 0.632862
        },
        {
          "mid": "/m/0cqg0t",
          "description": "akita",
          "score": 0.5387146,
          "topicality": 0.5387146
        }
      ]
    }
  ]
}
なお、90%以上犬ですが、70%の確率で snout 鼻面と認識されました。

もちろんラベル以外にも色合い、いかがわしい画像ではないか、などの認識してくれます。
さらに詳しい情報やAPIの叩き方、フィールドについては入門ガイドを読むといいですよ

入門ガイド