Create an API Key

進行状況を確認

/ 25

Upload an Image to a Cloud Storage bucket

進行状況を確認

/ 25

Upload an image for Face Detection to your bucket

進行状況を確認

/ 25

Upload an image for Landmark Annotation to your bucket

進行状況を確認

/ 25

このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。

GSP037

Google Cloud セルフペース ラボ

概要

Cloud Vision API は、画像を分析し情報を抽出できるクラウドベースのサービスであり、画像内の物体、顔、テキストの検出に利用できます。高度な ML モデルがシンプルな REST API にカプセル化した形で提供され、これを使って画像の内容を把握できます。

このラボでは、Cloud Vision API に画像を送信し、物体、顔、ランドマークが検出されることを確認します。

目標

このラボでは、次のタスクの実行方法について学びます。

  • Cloud Vision API リクエストを作成し、curl で API を呼び出す
  • API のラベル、顔、ランドマークの検出メソッドを使用する

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは、Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、下記が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モード(推奨)またはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生しないようにすることができます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: このラボでは、受講者アカウントのみを使用してください。別の Google Cloud アカウントを使用すると、そのアカウントに料金が発生する可能性があります。

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるダイアログでお支払い方法を選択してください。 右側の [ラボの設定とアクセス] パネルには、以下が表示されます。

    • [Google Cloud コンソールを開く] ボタン
    • このラボで使用する一時的な認証情報(ユーザー名とパスワード)
    • このラボを行うために必要なその他の情報(ある場合)

    ラボのタイマーはページの上部に表示され、残り時間が示されます。

  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。

    ラボでリソースがスピンアップし、別のタブで [ログイン] ページが表示されます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。

    注: [アカウントの選択] ダイアログが表示された場合は、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。

    {{{user_0.username | "Username"}}}

    [ラボの設定とアクセス] パネルでもユーザー名を確認できます。

  4. [次へ] をクリックします。

  5. 以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。

    {{{user_0.password | "Password"}}}

    [ラボの設定とアクセス] パネルでもパスワードを確認できます。

  6. [次へ] をクリックします。

    重要: ラボで指定された認証情報を使用する必要があります。ご自身の Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  7. その後のページはクリックして先に進みます。

    • 利用規約に同意します。
    • 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルには登録しないでください。

しばらくすると、このタブで Google Cloud コンソールが開きます。

注: Google Cloud のプロダクトやサービスにアクセスするには、ナビゲーション メニューをクリックするか、[検索] フィールドにサービス名またはプロダクト名を入力します。 ナビゲーション メニューのアイコンと検索フィールド

Cloud Shell をアクティブにする

Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。

  1. Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン 「Cloud Shell をアクティブにする」アイコン をクリックします。

  2. ウィンドウで次の操作を行います。

    • Cloud Shell 情報ウィンドウで操作を進めます。
    • Cloud Shell が認証情報を使用して Google Cloud API を呼び出すことを承認します。

接続した時点で認証が完了しており、プロジェクトに各自の Project_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

  1. (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
  1. [承認] をクリックします。

出力:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project

出力:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注: Google Cloud における gcloud ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。

タスク 1. API キーを作成する

このタスクでは、curl を使用して Vision API にリクエストを送信する準備として、リクエスト URL に含める API キーを生成します。

  1. API キーを作成するには、Cloud コンソールのナビゲーション メニューで、[API とサービス] > [認証情報] を選択します。

  2. [認証情報の作成] をクリックし、[API キー] を選択します。

[API キー] オプションが表示される認証情報の作成ページ

  1. [API キーの作成] サイドパネルが表示されたら、[このキーを使用してアクセスできる API] でプルダウン メニュー(API の選択)をクリックします。

  2. Cloud Vision API を検索するか、スクロールして見つけ、チェックボックスをオンにします。

  3. [OK] をクリックします。

  4. [作成] をクリックします。

  5. 生成された API キーをコピーし、[閉じる] をクリックします。

下の [進行状況を確認] をクリックして、ラボの進捗状況を確認します。

API キーを作成する

次に、リクエストごとに API キーの値を挿入しなくて済むように、環境変数にキーを保存します。

  1. 次のコマンドのプレースホルダ テキストを、コピーした API キーに置き換えます。その後、Cloud Shell でコマンドを実行し、値を環境変数として設定します。
export API_KEY=<YOUR_API_KEY>

タスク 2. Cloud Storage バケットに画像をアップロードする

画像検出のために Cloud Vision API に画像を送信する方法は 2 つあります。base64 でエンコードされた画像文字列を API に送信する方法と、Cloud Storage に保存されたファイルの URL を渡す方法です。

このラボでは、Cloud Storage の URL を使用する方法を採用します。最初のステップは、画像を保存するための Cloud Storage バケットを作成することです。

  1. ナビゲーション メニューで、[Cloud Storage] > [バケット] を選択します。[バケット] の隣にある [作成] をクリックします。

  2. バケットに -bucket という一意の名前を付けます。

  3. バケットに名前を付けたら、[オブジェクトへのアクセスを制御する方法を選択する] をクリックします。

  4. [このバケットに対する公開アクセス禁止を適用する] チェックボックスをオフにして、[きめ細かい管理] ラジオボタンをオンにします。

バケットに関するその他の設定は、デフォルトのままで問題ありません。

  1. [作成] をクリックします。

画像をバケットにアップロードする

  1. 次のドーナツの画像を右クリックし、[名前を付けて画像を保存] をクリックして、donuts.png という名前でパソコンに保存します。

ドーナツ

  1. 先ほど作成したバケットに移動し、[アップロード] > [ファイルをアップロード] をクリックして donuts.png を選択し、[開く] をクリックします。

[ファイルをアップロード] がハイライトされたバケットの詳細ページ

バケットにこのファイルが表示されます。

次に、この画像を公開する必要があります。

  1. 画像のその他アイコン(3 つの点)をクリックし、[アクセス権の編集] を選択します。

その他のオプション メニューが展開され、ハイライトされた権限の編集オプション

  1. [エントリを追加] をクリックし、以下を入力します。

    • エンティティ: 公開
    • 名前: allUsers
    • アクセス権: 読み取り
  2. [保存] をクリックします。

これで、ファイルをバケットに保存できました。次は Cloud Vision API リクエストを作成し、このドーナツの画像の URL を渡します。

下の [進行状況を確認] をクリックして、ラボの進捗状況を確認します。

画像をバケットにアップロードする

タスク 3. リクエストを作成する

Cloud Shell のホーム ディレクトリに request.json ファイルを作成します。

  1. Cloud Shell のコードエディタ(Cloud Shell リボンの鉛筆アイコン)、

[エディタを開く] ボタン

またはコマンドライン エディタ(nanovimemacs)を使用して、request.json ファイルを作成します。

  1. request.json ファイルに次のコードを貼り付けます。
{ "requests": [ { "image": { "source": { "gcsImageUri": "gs://{{{project_0.project_id | PROJECT_ID}}}-bucket/donuts.png" } }, "features": [ { "type": "LABEL_DETECTION", "maxResults": 10 } ] } ] }
  1. ファイルを保存します。

Cloud Shell IDE で Gemini Code Assist を有効にする

Cloud Shell などの統合開発環境(IDE)で Gemini Code Assist を使用して、コードに関するガイダンスを受けたり、コードの問題を解決したりできます。使用を開始する前に、Gemini Code Assist を有効にする必要があります。

  1. Cloud Shell で、次のコマンドを使用して Gemini for Google Cloud API を有効にします。
gcloud services enable cloudaicompanion.googleapis.com
  1. Cloud Shell ツールバーの [エディタを開く] をクリックします。
注: Cloud Shell エディタを開くには、Cloud Shell ツールバーの [エディタを開く] をクリックします。必要に応じて、[エディタを開く] または [ターミナルを開く] をクリックして、Cloud Shell とコードエディタを切り替えることができます。
  1. 画面下部のステータスバーで [Cloud Code - No Project] をクリックします。

  2. 指示に従ってプラグインを承認します。プロジェクトが自動的に選択されない場合は、[Google Cloud プロジェクトを選択する] をクリックして を選択します。

  3. ステータスバーの Cloud Code ステータス メッセージに Google Cloud プロジェクト()が表示されていることを確認します。

タスク 4. ラベル検出を実行する

最初に、Cloud Vision API のラベル検出機能について見てみましょう。ここで使用するメソッドは、画像に含まれるラベル(単語)のリストを返します。

  1. Cloud Shell ターミナルで次の curl コマンドを実行して Cloud Vision API を呼び出し、レスポンスを label_detection.json ファイルに保存します。
curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json https://vision.googleapis.com/v1/images:annotate?key=${API_KEY} -o label_detection.json && cat label_detection.json

次のようなレスポンスが表示されます。

出力:

{ "responses": [ { "labelAnnotations": [ { "mid": "/m/01dk8s", "description": "Powdered sugar", "score": 0.9861496, "topicality": 0.9861496 }, { "mid": "/m/01wydv", "description": "Beignet", "score": 0.9565117, "topicality": 0.9565117 }, { "mid": "/m/02wbm", "description": "Food", "score": 0.9424965, "topicality": 0.9424965 }, { "mid": "/m/0hnyx", "description": "Pastry", "score": 0.8173416, "topicality": 0.8173416 }, { "mid": "/m/02q08p0", "description": "Dish", "score": 0.8076026, "topicality": 0.8076026 }, { "mid": "/m/01ykh", "description": "Cuisine", "score": 0.79036003, "topicality": 0.79036003 }, { "mid": "/m/03nsjgy", "description": "Kourabiedes", "score": 0.77726763, "topicality": 0.77726763 }, { "mid": "/m/06gd3r", "description": "Angel wings", "score": 0.73792106, "topicality": 0.73792106 }, { "mid": "/m/06x4c", "description": "Sugar", "score": 0.71921736, "topicality": 0.71921736 }, { "mid": "/m/01zl9v", "description": "Zeppole", "score": 0.7111677, "topicality": 0.7111677 } ] } ] }

API は、ドーナツの種類をシュガー ドーナツと特定することができました。分析がうまくいったようです。Vision API で検出されたラベルごとに、次のような結果が返されます。

  • description: アイテムの名前と説明。
  • score: 説明と画像の内容がどの程度一致しているかの信頼度を示す 0~1 の数字。
  • mid: Google のナレッジグラフとナレッジパネルについてのページのアイテムの mid に対応する値。Knowledge Graph API を呼び出すときに mid を使用すると、アイテムに関する詳細情報を取得できます。
  1. Cloud Shell エディタで、label_detection.json に移動します。この操作により、エディタの右上隅に Gemini Code Assist: Smart Actions アイコンが表示され、Gemini Code Assist が有効になります。

コンテキストの切り替えを最小限に抑えながら生産性を向上させるため、Gemini Code Assist では、AI によるスマート アクションをコードエディタに直接備えています。このセクションでは、Gemini Code Assist に Cloud Vision API のレスポンスをチームメンバーに説明してもらうことにします。

  1. Gemini Code Assist: Smart Actions アイコン Gemini Code Assist: Smart Actions をクリックし、[Explain this] を選択します。

  2. Gemini Code Assist は、「Explain this」というプロンプトが事前入力されたチャットペインを開きます。Code Assist チャットのインライン テキスト ボックスで、事前入力されたプロンプトを次のプロンプトに置き換えて、[送信] をクリックします。

You are a Machine Learning Engineer at Cymbal AI. A new team member needs help understanding this Cloud Vision API response. Explain the label_detection.json file in detail. Break down its key components and their function within the JSON code. For the suggested improvements, don't make any changes to the file's content.

label_detection.json コードの Cloud Vision API レスポンスに関する詳細な説明が Gemini Code Assist のチャットに表示されます。

タスク 5. ウェブ検出を実行する

Cloud Vision API を使うと、画像の内容に関するラベルを取得できます。また、特定の画像の詳細情報をインターネットで検索することもできます。API の WebDetection メソッドを使用することで、以下のようなさまざまな興味深いデータを取得できます。

  • 画像に含まれるエンティティのリスト(類似画像を含むページのコンテンツに基づく)
  • ウェブ上で見つかった完全一致画像と部分一致画像の URL、およびそれらの画像を含むページの URL
  • 画像を使用した検索などで得られた、類似画像の URL

ウェブ検出を試してみましょう。同じベニエ(ドーナツ)の画像を使用して request.json ファイルの 1 行を変更します(まったく異なる画像を使用することもできます)。

  1. Cloud Shell エディタで、これまでと同じディレクトリ内にある request.json を開きます。

  2. ツールバーの Gemini Code Assist: Smart Actions アイコン Gemini Code Assist をクリックします。

コードの詳細な説明を提供するだけでなく、Gemini Code Assist の AI による機能を利用して、コードエディタで直接コードを変更できます。ここでは、Gemini Code Assist を使用して request.json ファイルの内容を編集することにします。

  1. request.json ファイルを編集するには、ツールバーから開いた Gemini Code Assist インライン テキスト フィールドに次のプロンプトを貼り付けます。
In the request.json file, update the features list, change type from LABEL_DETECTION to WEB_DETECTION.
  1. Gemini Code Assist にこのプロンプトに応じたコード変更を指示するには、Enter キーを押します。

  2. [Gemini Diff] ビューにプロンプトが表示されたら、[Accept] をクリックします。

request.json ファイルの内容は次のようになります。

{ "requests": [ { "image": { "source": { "gcsImageUri": "gs://{{{project_0.project_id | PROJECT_ID}}}-bucket/donuts.png" } }, "features": [ { "type": "WEB_DETECTION", "maxResults": 10 } ] } ] }
  1. Cloud Shell ターミナルで、次の curl コマンドを実行して Cloud Vision API を呼び出します。
curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json https://vision.googleapis.com/v1/images:annotate?key=${API_KEY}
  1. 次は、webEntities で始まるレスポンスを見てみましょう。以下は、この画像が返したエンティティの一部です。
{ "responses": [ { "webDetection": { "webEntities": [ { "entityId": "/m/0z5n", "score": 0.8868, "description": "Application programming interface" }, { "entityId": "/m/07kg1sq", "score": 0.3139, "description": "Encapsulation" }, { "entityId": "/m/0105pbj4", "score": 0.2713, "description": "Google Cloud Platform" }, { "entityId": "/m/01hyh_", "score": 0.2594, "description": "Machine learning" }, ... ]

この画像は Cloud ML API の多くのプレゼンテーションで使用されているため、API は「Machine learning」や「Google Cloud Platform」といったエンティティを検出しました。

fullMatchingImagespartialMatchingImagespagesWithMatchingImages の下の URL を調べると、多くの URL がこのラボサイトを参照していることがわかります。

前のものとは少しだけ異なるベニエの画像を探しているとします。その場合は、API レスポンスの visuallySimilarImages 部分が役に立ちます。次のような視覚的に類似した画像が検出されます。

"visuallySimilarImages": [ { "url": "https://media.istockphoto.com/photos/cafe-du-monde-picture-id1063530570?k=6&m=1063530570&s=612x612&w=0&h=b74EYAjlfxMw8G-G_6BW-6ltP9Y2UFQ3TjZopN-pigI=" }, { "url": "https://s3-media2.fl.yelpcdn.com/bphoto/oid0KchdCqlSqZzpznCEoA/o.jpg" }, { "url": "https://s3-media1.fl.yelpcdn.com/bphoto/mgAhrlLFvXe0IkT5UMOUlw/348s.jpg" }, ... ]

これらの URL にアクセスすれば、類似の画像を確認できます。

シュガーベニエの画像 1

シュガーベニエの画像 2

シュガーベニエの画像 3

これは、Google 画像検索の画像による検索と似ています。

Cloud Vision を使用すると、使いやすい REST API で画像検索機能にアクセスし、それをアプリケーションに統合できます。

タスク 6. 顔検出を実行する

次に、Vision API の顔検出メソッドについて説明します。

顔検出メソッドは、画像内で検出された顔に関するデータを返します。返されるデータには、顔に表れている感情や、画像内での顔の位置などが含まれます。

新しい画像をアップロードする

このメソッドを使用するには、顔を含む新しい画像を Cloud Storage バケットにアップロードします。

  1. 次の画像を右クリックして [名前を付けて画像を保存] をクリックし、selfie.png という名前でパソコンに保存します。

他にも 2 人自撮りしている人が写った自撮り写真

  1. 次に、先ほどと同じ方法で画像を Cloud Storage バケットにアップロードして公開します。

下の [進行状況を確認] をクリックして、ラボの進捗状況を確認します。

顔検出に使う画像をバケットにアップロードする

リクエスト ファイルを更新する

  1. Cloud Shell エディタで、これまでと同じディレクトリ内にある request.json を開きます。

  2. ツールバーの Gemini Code Assist: Smart Actions アイコン Gemini Code Assist をクリックします。

  3. request.json ファイルの更新を支援するために、ツールバーから開いた Gemini Code Assist インライン テキスト フィールドに次のプロンプトを貼り付けます。

Update the JSON file request.json to achieve three specific changes: * Update the gcsImageUri value from donuts.png to selfie.png. * Replace the existing features array with two new feature types: FACE_DETECTION and LANDMARK_DETECTION. * Don't want maxResults result.
  1. Gemini Code Assist にこのプロンプトに応じたコード変更を指示するには、Enter キーを押します。

  2. [Gemini Diff] ビューにプロンプトが表示されたら、[Accept] をクリックします。

更新されたリクエスト ファイルは次のようになります。

{ "requests": [ { "image": { "source": { "gcsImageUri": "gs://{{{project_0.project_id | PROJECT_ID}}}-bucket/selfie.png" } }, "features": [ { "type": "FACE_DETECTION" }, { "type": "LANDMARK_DETECTION" } ] } ] }

Vision API を呼び出してレスポンスを解析する

  1. Cloud Shell ターミナルで、次の curl コマンドを実行して Cloud Vision API を呼び出します。
curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json https://vision.googleapis.com/v1/images:annotate?key=${API_KEY}
  1. レスポンスの faceAnnotations オブジェクトを確認すると、画像内に見つかったそれぞれの顔(この場合 3 つ)に対して、API がオブジェクトを 1 つずつ返していることがわかります。以下は、レスポンスの一部を抜粋したものです。
{ "faceAnnotations": [ { "boundingPoly": { "vertices": [ { "x": 669, "y": 324 }, ... ] }, "fdBoundingPoly": { ... }, "landmarks": [ { "type": "LEFT_EYE", "position": { "x": 692.05646, "y": 372.95868, "z": -0.00025268539 } }, ... ], "rollAngle": 0.21619819, "panAngle": -23.027969, "tiltAngle": -1.5531756, "detectionConfidence": 0.72354823, "landmarkingConfidence": 0.20047489, "joyLikelihood": "LIKELY", "sorrowLikelihood": "VERY_UNLIKELY", "angerLikelihood": "VERY_UNLIKELY", "surpriseLikelihood": "VERY_UNLIKELY", "underExposedLikelihood": "VERY_UNLIKELY", "blurredLikelihood": "VERY_UNLIKELY", "headwearLikelihood": "VERY_LIKELY" } ... } }
  • boundingPoly は、画像内の顔の周囲の x 座標と y 座標を示します。
  • fdBoundingPoly は顔の肌部分にフォーカスした、boundingPoly よりも小さなボックスです。
  • landmarks は、それぞれの顔の特徴を表すオブジェクトの配列です(聞き慣れないものも含まれているかもしれません)。この値から、ランドマークの種類と、その特徴の 3 次元の位置(x, y, z 座標)がわかります。z 座標は奥行きを示しています。残りの値からは、喜びや悲しみ、怒り、驚きの感情が表れている可能性など、顔に関する詳細情報がわかります。

上記のレスポンスは、画像で最も奥に立っている人物についてのものです。彼はおどけた表情をしていますが、それが joyLikelihoodLIKELY という値に表れています。

タスク 7. ランドマーク アノテーションを実行する

ランドマークの検出メソッドを使うと、知名度を問わずさまざまなランドマークを識別できます。ランドマークの名前、その緯度と経度の座標、ランドマークが識別された画像内の位置が返されます。

新しい画像をアップロードする

このメソッドを使用するには、Cloud Storage バケットに新しい画像をアップロードします。

  1. 次の画像を右クリックして [名前を付けて画像を保存] をクリックし、city.png という名前でパソコンに保存します。

都市の画像

引用: ロシア、モスクワの聖ワシリイ大聖堂(2019 年 12 月 19 日)、撮影 Adrien Wodey、無料メディア リポジトリ Unsplash より。https://unsplash.com/photos/multicolored-dome-temple-yjyWCNx0J1U から取得。このファイルは、Unsplash ライセンスの下で使用を許諾されています。

  1. 次に、先ほどと同じ方法で画像を Cloud Storage バケットにアップロードして公開します。

下の [進行状況を確認] をクリックして、ラボの進捗状況を確認します。

ランドマーク アノテーションに使う画像をバケットにアップロードする

リクエスト ファイルを更新する

  • 次に、request.json ファイルを以下のように更新します。新しい画像の URL が追加され、ランドマーク検出が使用されています。
{ "requests": [ { "image": { "source": { "gcsImageUri": "gs://{{{project_0.project_id | PROJECT_ID}}}-bucket/city.png" } }, "features": [ { "type": "LANDMARK_DETECTION", "maxResults": 10 } ] } ] }

Vision API を呼び出してレスポンスを解析する

  1. Cloud Shell ターミナルで、次の curl コマンドを実行して Cloud Vision API を呼び出します。
curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json https://vision.googleapis.com/v1/images:annotate?key=${API_KEY}
  1. 次にレスポンスの landmarkAnnotations の部分を見てみましょう。
"landmarkAnnotations": [ { "mid": "/m/0hm_7", "description": "Red Square", "score": 0.8557956, "boundingPoly": { "vertices": [ {}, { "x": 503 }, { "x": 503, "y": 650 }, { "y": 650 } ] }, "locations": [ { "latLng": { "latitude": 55.753930299999993, "longitude": 37.620794999999994 } ...

Cloud Vision API は、写真が撮影された場所を特定し、その場所の座標(ロシア、モスクワの赤の広場にある聖ワシリイ大聖堂)を示すことができました。

このレスポンスに含まれる値は、上記の labelAnnotations のレスポンスに似ています。

  • mid: ランドマークの値。
  • description: ランドマークの名前。
  • score: 信頼度。
  • boundingPoly: ランドマークが特定された画像内の領域。
  • locations キー: 画像の緯度と経度の座標。

タスク 8. オブジェクト ローカライズを実行する

Vision API は、オブジェクト ローカライズを使用して、画像内の複数のオブジェクトを検出および抽出できます。オブジェクト ローカライズにより、画像内のオブジェクトが識別され、オブジェクトごとに LocalizedObjectAnnotation が指定されます。LocalizedObjectAnnotation ごとに、オブジェクトに関する情報、オブジェクトの位置、画像内でオブジェクトがある領域の四角い境界線が識別されます。

オブジェクト ローカライズでは、画像内で目立っているオブジェクトと、それほど目立たないオブジェクトの両方が識別されます。

オブジェクト情報は英語でのみ返されます。Cloud Translation を使うと、英語のラベルをさまざまな言語に翻訳できます。

このメソッドを使用するには、インターネット上の既存の画像を使い、request.json ファイルを更新します。

リクエスト ファイルを更新する

  • 次に、request.json ファイルを以下のように更新します。新しい画像の URL が追加され、オブジェクト ローカライズが使用されています。
{ "requests": [ { "image": { "source": { "imageUri": "https://cloud.google.com/vision/docs/images/bicycle_example.png" } }, "features": [ { "maxResults": 10, "type": "OBJECT_LOCALIZATION" } ] } ] }

Vision API を呼び出してレスポンスを解析する

  1. Cloud Shell ターミナルで、次の curl コマンドを実行して Cloud Vision API を呼び出します。
curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json https://vision.googleapis.com/v1/images:annotate?key=${API_KEY}
  1. 次にレスポンスの localizedObjectAnnotations の部分を見てみましょう。
{ "responses": [ { "localizedObjectAnnotations": [ { "mid": "/m/01bqk0", "name": "Bicycle wheel", "score": 0.89648587, "boundingPoly": { "normalizedVertices": [ { "x": 0.32076266, "y": 0.78941387 }, { "x": 0.43812272, "y": 0.78941387 }, { "x": 0.43812272, "y": 0.97331065 }, { "x": 0.32076266, "y": 0.97331065 } ] } }, { "mid": "/m/0199g", "name": "Bicycle", "score": 0.886761, "boundingPoly": { "normalizedVertices": [ { "x": 0.312, "y": 0.6616471 }, { "x": 0.638353, "y": 0.6616471 }, { "x": 0.638353, "y": 0.9705882 }, { "x": 0.312, "y": 0.9705882 } ] } }, ...

ご覧のように、Vision API はこの写真に自転車と自転車の車輪が写っていることを認識できました。このレスポンスに含まれる値は、上記の labelAnnotations のレスポンスに似ています。オブジェクトの midname(名前)、score(信頼度)のほか、boundingPoly はオブジェクトが識別された画像の領域を示しています。

さらに、boundingPoly には normalizedVertices キーがあり、画像内のオブジェクトの座標を示しています。これらの座標は 0 から 1 の範囲で正規化され、0 は画像の左上、1 は画像の右下を表します。

これで、Vision API を使って画像を分析し、画像内のオブジェクトに関する情報を抽出することができました。

タスク 9. その他の Vision API メソッドを確認する

Vision API のラベル、顔、ランドマークの検出とオブジェクト ローカライズのメソッドを見てきましたが、他にもまだ取り上げていないメソッドが 3 つあります。それらについて詳しくは、メソッド: images.annotate のドキュメントをご確認ください。

  • ロゴの検出: 画像に含まれる一般的なロゴとその位置を特定します。
  • セーフサーチ検出: 画像に露骨な表現を含むコンテンツが含まれているかどうかを判断します。このメソッドは、ユーザー作成コンテンツを扱うアプリケーションで役立ちます。アダルト、医療、暴力、なりすましの 4 つの要素に基づいて画像をフィルタします。
  • テキスト検出: OCR を実行して画像からテキストを抽出します。画像に含まれているテキストの言語を識別することもできます。

お疲れさまでした

このラボでは、Vision API を使って画像を分析する方法について学びました。さまざまな画像の Cloud Storage の URL を API に渡すことで、画像内で見つかったラベル、顔、ランドマーク、オブジェクトが返されました。この他に、API に base64 でエンコードされた画像文字列を渡すことも可能です。これは、データベースやメモリに保存されている画像を分析する場合に便利です。

次のステップと詳細情報

Google Cloud トレーニングと認定資格

Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。

マニュアルの最終更新日: 2026 年 6 月 2 日

ラボの最終テスト日: 2026 年 6 月 2 日

Copyright 2026 Google LLC. All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。