チェックポイント
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
Cloud Vision API で画像内のラベル、顔、ランドマークを検出する
GSP037
概要
Cloud Vision API は、画像を分析し情報を抽出できるクラウドベースのサービスです。画像内の物体、顔、テキストの検出に利用できます。Cloud Vision API を使用すると、高度な ML モデルをシンプルな REST API にカプセル化し、画像の内容を把握できます。
このラボでは、Cloud Vision API に画像を送り、物体、顔、ランドマークを検出します。
学習内容
- Cloud Vision API リクエストを作成し、
curl
で API を呼び出す - API のラベル、顔、ランドマークの検出メソッドを使用する
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。 左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。 -
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}} [ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}} [ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。 -
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
出力:
出力例:
gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
タスク 1. API キーを作成する
curl
を使用して Vision API にリクエストを送信するため、リクエスト URL に含める API キーを生成する必要があります。
-
API キーを作成するには、Cloud コンソールのナビゲーション メニューで、[API とサービス] > [認証情報] を選択します。
-
[認証情報を作成] をクリックし、[API キー] を選択します。
- 次に、生成したキーをコピーして [閉じる] をクリックします。
下の [進行状況を確認] をクリックして、ラボの進行状況を確認します。
次に、リクエストごとに API キーの値を挿入しなくて済むようにするために、環境変数にキーを保存します。
- Cloud Shell で次のコマンドを実行して、プロジェクト ID を環境変数として設定します。
タスク 2. 画像を Cloud Storage バケットにアップロードする
画像検出のために Cloud Vision API に画像を送信する方法は 2 つあります。base64 でエンコードされた画像文字列を API に送信する方法と、Cloud Storage に保存されたファイルの URL を渡す方法です。
ここでは Cloud Storage の URL を使用します。最初のステップは、画像を保存するための Cloud Storage バケットを作成することです。
-
ナビゲーション メニューから、[Cloud Storage] > [バケット] を選択します。[バケット] の隣にある [作成] をクリックします。
-
バケットに
- バケットという一意の名前を付けます。 -
バケットに名前を付けたら、[オブジェクトへのアクセスを制御する方法を選択する] をクリックします。
-
[このバケットに対する公開アクセス禁止を適用する] をオフにして、[きめ細かい管理] を選択します。
バケットに関するその他の設定は、デフォルトのままで問題ありません。
- [作成] をクリックします。
画像をバケットにアップロードする
- 次のドーナツの画像を右クリックし、[名前を付けて画像を保存] をクリックして、donuts.png という名前でパソコンに保存します。
- 先ほど作成したバケットに移動して、[ファイルをアップロード] をクリックし、donuts.png を選択します。
バケットにこのファイルが表示されます。
次に、この画像を公開する必要があります。
- 画像のその他アイコン(3 つの点)をクリックし、[アクセス権の編集] を選択します。
-
[エントリを追加] をクリックし、以下を入力します。
- エンティティ: 公開
- 名前: allUsers
- アクセス権: 読み取り
-
[保存] をクリックします。
これで、ファイルをバケットに保存できました。次は Cloud Vision API リクエストを作成し、このドーナツの画像の URL を渡します。
下の [進行状況を確認] をクリックして、ラボの進行状況を確認します。
タスク 3. リクエストを作成する
Cloud Shell で request.json
ファイルを作成します。
- Cloud Shell のコードエディタを使用するか(Cloud Shell リボンの鉛筆アイコンをクリック)、
または、コマンドライン エディタ(nano
、vim
、emacs
)を使用して、request.json
ファイルを作成します。
- そのファイルに次のコードを入力するか貼り付けます。
my-bucket-name
の部分は、先ほど作成したストレージ バケットの名前に置き換えてください。
- ファイルを保存します。
タスク 4. ラベル検出
最初に使用する Cloud Vision API の機能は、ラベル検出です。このメソッドは、画像に含まれるラベル(単語)のリストを返します。
-
curl
を使用して Cloud Vision API を呼び出します。
次のようなレスポンスが表示されます。
API は、ドーナツの種類をシュガー ドーナツと特定することができました。分析がうまくいったようです。Vision API で検出されたラベルごとに、次のような結果が返されます。
-
description
: アイテムの名前と説明。 -
score
: 説明と画像の内容がどの程度一致しているかの信頼度を示す 0~1 の数字。 -
mid
: Google のナレッジグラフのアイテムのmid
に対応する値。Knowledge Graph API を呼び出すときにmid
を使用すると、アイテムに関する詳細情報を取得できます。
タスク 5. ウェブ検出
Cloud Vision API を使うと、画像の内容に関するラベルを取得できます。また、特定の画像の詳細情報をインターネットで検索することもできます。API の WebDetection メソッドを使用することで、以下のようなさまざまな興味深いデータを取得できます。
- 画像に含まれるエンティティのリスト(類似画像を含むページのコンテンツに基づく)
- ウェブ上で見つかった完全一致画像と部分一致画像の URL、およびそれらの画像を含むページの URL
- 画像を使用した検索などで得られた、類似画像の URL
ウェブ検出を試してみましょう。同じベニエの画像を使用して request.json
ファイルの 1 行を変更します(まったく異なる画像を使用することもできます)。
-
request.json
ファイルを編集します。features リストの type をLABEL_DETECTION
からWEB_DETECTION
に変更します。request.json
は次のようになります。
-
ファイルを保存します。
-
これを Cloud Vision API に送信するには、先ほどと同じように
curl
コマンドを使用します(Cloud Shell で上矢印を押すだけです)。
- 次は、
webEntities
で始まるレスポンスを見てみましょう。以下は、この画像が返したエンティティの一部です。
この画像は Cloud ML API の多くのプレゼンテーションで使用されているため、API は「Machine learning」や「Google Cloud Platform」といったエンティティを検出しました。
fullMatchingImages
、partialMatchingImages
、pagesWithMatchingImages
の下の URL を調べると、多くの URL がこのラボサイトを参照していることがわかります。
ベニエの他の画像で、まったく同じではないものを探しているとします。その場合は、API レスポンスの visuallySimilarImages
部分が役に立ちます。次のような視覚的に類似した画像が検出されます。
これらの URL にアクセスすれば、類似の画像を確認できます。
ベニエが食べたくなりますね。これは、Google 画像検索の画像による検索と似ています。
Cloud Vision を使用すると、使いやすい REST API で画像検索機能にアクセスし、それをアプリケーションに統合できます。
タスク 6. 顔検出
次に、Vision API の顔の検出メソッドについて説明します。
顔の検出メソッドは、画像内で検出された顔に関するデータを返します。返されるデータには、顔の感情や画像内での位置などが含まれます。
新しい画像をアップロードする
このメソッドを使用するには、顔を含む新しい画像を Cloud Storage バケットにアップロードします。
- 次の画像を右クリックし、[名前を付けて画像を保存] をクリックして、selfie.png という名前でパソコンに保存します。
- 次に、先ほどと同じ方法で画像を Cloud Storage バケットにアップロードし、公開します。
下の [進行状況を確認] をクリックして、ラボの進行状況を確認します。
リクエスト ファイルを更新する
- 次に、
request.json
ファイルを以下のように更新します。新しい画像の URL が追加され、ラベル検出ではなく顔検出とランドマーク検出が使用されています。my-bucket-name の部分は、Cloud Storage バケットの名前に置き換えてください。
- ファイルを保存します。
Vision API を呼び出してレスポンスを解析する
- これで、先ほどと同じ
curl
コマンドを使用して Vision API を呼び出す準備ができました。
- レスポンスの
faceAnnotations
オブジェクトを確認すると、画像内に見つかったそれぞれの顔(この場合は 3 つ)に関して、API がオブジェクトを 1 つ返していることがわかります。以下は、レスポンスの一部を抜粋したものです。
-
boundingPoly
は、画像内の顔の周囲の x 座標と y 座標を示します。 -
fdBoundingPoly
は顔の肌部分にフォーカスした、boundingPoly
よりも小さなボックスです。 -
landmarks
は、それぞれの顔の特徴を表すオブジェクトの配列です(聞き慣れないものも含まれているかもしれません)。この値から、ランドマークの種類と、その特徴の 3 次元の位置(x, y, z 座標)がわかります。z 座標は奥行きを示しています。残りの値からは、喜びや悲しみ、怒り、驚きの感情の尤度など、顔に関する詳細情報がわかります。
上記のレスポンスは、画像で最も奥に立っている人物についてのものです。彼はおどけた表情をしていますが、それが joyLikelihood
の LIKELY
という値に表れています。
タスク 7. ランドマーク アノテーション
ランドマークの検出メソッドを使うと、一般的および不明瞭なランドマークを識別できます。ランドマークの名前、その緯度と経度の座標、ランドマークが識別された画像内の位置が返されます。
新しい画像をアップロードする
このメソッドを使用するには、Cloud Storage バケットに新しい画像をアップロードします。
- 次の画像を右クリックし、[名前を付けて画像を保存] をクリックして、city.png という名前でパソコンに保存します。
引用: 聖ワシリイ大聖堂、モスクワ、ロシア(2017 年 12 月 15 日)、撮影 Nikolay Vorobyev、無料メディア リポジトリ Unsplash より。https://unsplash.com/photos/jaH3QF46gAY から取得。このファイルは、Unsplash ライセンスの下で使用を許諾されています。
- 次に、先ほどと同じ方法で画像を Cloud Storage バケットにアップロードし、公開します。
下の [進行状況を確認] をクリックして、ラボの進行状況を確認します。
リクエスト ファイルを更新する
- 次に、
request.json
ファイルを以下のように更新します。新しい画像の URL が追加され、ランドマーク検出が使用されています。my-bucket-name の部分は、Cloud Storage バケットの名前に置き換えてください。
Vision API を呼び出してレスポンスを解析する
- これで、先ほどと同じ
curl
コマンドを使用して Vision API を呼び出す準備ができました。
- 次にレスポンスの
landmarkAnnotations
の部分を見てみましょう。
Cloud Vision API は、写真が撮影された場所を特定し、その場所の座標(ロシア、モスクワの赤の広場にある聖ワシリイ大聖堂)を示すことができました。
このレスポンスに含まれる値は、上記の labelAnnotations
のレスポンスに似ています。
-
mid
: ランドマークの値。 -
description
: ランドマークの名前。 -
score
: 信頼度。 -
boundingPoly
: ランドマークが特定された画像内の領域。 -
locations
キー: 画像の緯度と経度の座標。
タスク 8. オブジェクト ローカライズ
Vision API は、オブジェクト ローカライズを使用して、画像内の複数のオブジェクトを検出および抽出できます。オブジェクト ローカライズにより、画像内のオブジェクトが識別され、オブジェクトごとに LocalizedObjectAnnotation が指定されます。LocalizedObjectAnnotation
ごとに、オブジェクトに関する情報、オブジェクトの位置、画像内でオブジェクトがある領域の四角い境界線が識別されます。
オブジェクト ローカライズでは、画像内で目立っているオブジェクトと、それほど目立たないオブジェクトの両方が識別されます。
オブジェクト情報は英語でのみ返されます。Cloud Translation を使うと、英語のラベルをさまざまな言語に翻訳できます。
このメソッドを使用するには、インターネット上の既存の画像を使い、request.json
ファイルを更新します。
リクエスト ファイルを更新する
- 次に、
request.json
ファイルを以下のように更新します。新しい画像の URL が追加され、オブジェクト ローカライズが使用されています。
Vision API を呼び出してレスポンスを解析する
- これで、先ほどと同じ
curl
コマンドを使用して Vision API を呼び出す準備ができました。
- 次にレスポンスの
localizedObjectAnnotations
の部分を見てみましょう。
ご覧のように、Vision API はこの写真に自転車と自転車の車輪が写っていることを認識できました。このレスポンスに含まれる値は、上記の labelAnnotations
のレスポンスに似ています。オブジェクトの mid
、name
(名前)、score
(信頼度)のほか、boundingPoly
はオブジェクトが識別された画像の領域を示しています。
さらに、boundingPoly
には normalizedVertices
キーがあり、画像内のオブジェクトの座標を示しています。これらの座標は 0 から 1 の範囲で正規化され、0 は画像の左上、1 は画像の右下を表します。
これで、Vision API を使って画像を分析し、画像内のオブジェクトに関する情報を抽出することができました。
タスク 9. その他の Vision API メソッドを確認する
Vision API のラベル、顔、ランドマークの検出とオブジェクト ローカライズのメソッドを見てきましたが、他にもまだ取り上げていないメソッドが 3 つあります。それらについて詳しくは、メソッド: images.annotate のドキュメントをご確認ください。
- ロゴの検出: 画像に含まれる一般的なロゴとその位置を特定します。
- セーフサーチ検出: 画像に露骨な表現を含むコンテンツが含まれているかどうかを判断します。このメソッドは、ユーザー作成コンテンツを扱うアプリケーションで役立ちます。アダルト、医療、暴力、なりすましの 4 つの要素に基づいて画像をフィルタします。
- テキスト検出: OCR を実行して画像からテキストを抽出します。画像に含まれているテキストの言語を識別することもできます。
お疲れさまでした
このラボでは、Vision API を使って画像を分析する方法について学びました。API にさまざまな画像の Cloud Storage の URL を渡すことで、API によって画像内で見つかったラベル、顔、ランドマーク、オブジェクトが返されました。この他に、API に base64 でエンコードされた画像文字列を渡すことも可能です。これは、データベースやメモリに保存されている画像を分析する場合に便利です。
クエストを完了する
このセルフペース ラボは、「Integrate with Machine Learning APIs」クエストと「Intro to ML: Image Processing」クエストの一部です。クエストとは学習プログラムを構成する一連のラボのことで、修了するとその成果が認められてバッジが贈られます。バッジは公開して、オンライン レジュメやソーシャル メディア アカウントにリンクできます。このラボの修了後、このラボが含まれるクエストに登録すれば、すぐにクレジットを受け取ることができます。受講可能なすべてのクエストについては、Google Cloud Skills Boost カタログをご覧ください。
次のラボを受講する
以下の Machine Learning API のラボもお試しください。
次のステップと詳細情報
- ドキュメントで Cloud Vision API のチュートリアルを確認する
- GitHub でお好きな言語の Cloud Vision API サンプルを見つける
- Natural Language API によるエンティティと感情分析のラボを確認する
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2023 年 10 月 6 日
ラボの最終テスト日: 2023 年 10 月 13 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。