ストリーミング処理に加えて、データから情報を取得する方法としてバッチ処理を選択することもできます。この非ストリーミング処理モードを使用すると、他のメディアタイプをサポートするアプリケーションを構築できます。
選択したモデルを使用して、Cloud Storage に保存されている画像ファイルをバッチ処理できます。 出力は Cloud Storage に保存されます。
サポートされているモデル
次のモデルはバッチ処理をサポートしています。
- タグ認識ツール
- 商品認識
サポートされるデータタイプ
このページでは、次のタイプのデータをバッチ処理する方法について説明します。
- 画像データ
始める前に
- この
ページで説明するバッチ処理でサポートされているモデルと
サポートされているデータタイプを確認します。
- 商品認識 モデルを使用する場合は、バッチ処理用の商品
認識モデルを作成するときに使用する
CatalogとProductRecognitionIndexを作成します。または、使用する既存の商品認識インデックスまたは商品認識モデルを特定します。 - タグ認識ツール モデルを使用する場合は、 タグ認識ツールモデルガイドを使用してモデルを作成します。
- 商品認識 モデルを使用する場合は、バッチ処理用の商品
認識モデルを作成するときに使用する
- バッチ 処理の入力と出力用に 1 つ以上の Cloud Storage バケットを作成します。
- サポートされているファイルを見つけて、 処理する Cloud Storage 入力バケットにアップロードします。
ユーザー ジャーニー
画像データをバッチ処理する一般的な手順は次のとおりです。
Gemini Enterprise Agent Platform Vision API を有効にします。
サポートされているプロセッサ(商品認識またはタグ認識ツール)を作成します。
アプリケーションを作成します。
入力: Cloud Storage で処理するファイルを指定するユニバーサル入力ノードを追加します。
処理: モデルノードを追加します。
出力: 処理されたデータが Cloud Storage に保存される場所を指定する出力ストレージ ノードを追加します。
アプリのバッチ インスタンスを作成します。各インスタンスは Cloud Storage バケットの入力ロケーションに対応します。
アプリとアプリ インスタンスをデプロイします。
バッチ処理インスタンスが完了したら、Cloud Storage に保存されている出力を確認します。
画像をバッチ処理する
バッチ処理リクエストを送信する手順は、モデルによって異なります。ターゲット モデルの手順に沿って画像をバッチ処理します。
商品認識モデル
次のサンプルを使用して、商品認識モデルで画像をバッチ処理します。
コンソール
コンソールで画像バッチ処理リクエストを作成します。 Google Cloud
新しいアプリケーションを作成する
Gemini Enterprise Agent Platform Vision ダッシュボードの [アプリケーション] タブを開きます。
[Create] ボタンをクリックします。
アプリ名を入力し、リージョンを選択します。
[続行] をクリックします。
お支払い方法を選択します。従量課金制 と月額課金の違いについては、料金ページをご覧ください。
[作成] をクリックします。
バッチ処理の入力を指定する
グラフアプリビルダー ページで、[ユニバーサル入力] ノードをクリックします。
サイドの [ユニバーサル入力] ペインで、[入力ソースを選択] をクリックします。
[**入力ソースを選択**] ページで、 [**バッチ予測**] を選択します。
[続行] をクリックします。
[ソース] ペインのロケーション ピッカー フィールドで [参照] をクリックして、Cloud Storage 内のファイルの場所を指定します。
省略可。ソースを追加するには、[アイテムを追加] をクリックして、前の手順を繰り返します。
[送信] をクリックします。
モデルを追加する
グラフアプリビルダー ページの [特殊モデル] セクションで、[商品認識] モデルノードをクリックします。
[商品認識] ペインで、[モデルを選択] をクリックします。
[**既存の商品認識モデルを選択**] を選択します。
新しいモデルまたはインデックスを作成する必要がある場合は、対応するオプションを選択してリソースを作成します。
リストからモデルを選択します。
[選択] をクリックします。
省略可。[信頼度しきい値] を変更します。
[設定を適用] をクリックします。
出力先を追加する
グラフアプリビルダー ページの [出力] セクションで、[Cloud Storage] モデルノードをクリックします。
[Cloud Storage] ペインで [参照] をクリックして、Cloud Storage でバッチ予測の出力先を選択します。
アプリケーションをデプロイする
- グラフアプリビルダー ページで、 [Deploy] をクリックします。
REST とコマンドライン
画像バッチ処理リクエストを送信する手順は次のとおりです。
projects.locations.processors.createメソッドを使用して、商品認識モデルを作成します。このリクエストには、
CatalogリソースとProductRecognitionIndexリソースへの参照が含まれています。CatalogとProductRecognitionIndexリソースの作成については、商品認識モデルガイドをご覧ください。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/processors?processor_id=product-recognition-model1 \ -d '{ "display_name": "DISPLAY_NAME", "model_type": PRODUCT_RECOGNIZER, "custom_processor_source_info": { "source_type": PRODUCT_RECOGNIZER, "product_recognizer_artifact": { "retail_product_recognition_index":"projects/PROJECT_ID/locations/LOCATION_ID/retailCatalogs/CATALOG_ID/retailProductRecognitionIndexes/INDEX_ID", } } }'新しく作成した商品認識モデルを使用してアプリケーションを作成します。 このリクエストでは、
projects.locations.applications.createメソッドを使用します。リクエストの本文 (
app.json):{ "applicationConfigs": { "nodes": [ { "displayName": "Universal Input", "name": "universal-input-0", "processor": "builtin:universal-input" }, { "displayName": "Product Recognition", "name": "product-recognition", "nodeConfig": { "product_recognizer_config": { "recognition_confidence_threshold": 0.75 } }, "parents": [ { "parentNode": "universal-input-0" } ], "processor": "projects/PROJECT_ID/locations/LOCATION_ID/processors/product-recognition-model1" }, { "displayName": "Storage output", "name": "gcs-output", "nodeConfig": { "gcs_output_config": { "gcs_path":"gs://product_recognizer_app_output" } }, "parents": [ { "parentNode": "product-recognition" } ], "processor": "builtin:gcs-output" } ] } }リクエスト:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @app.json \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications?application_id=product-recognition-app'projects.locations.applications.createApplicationInstancesメソッドを使用して、アプリケーションのインスタンスを作成します。リクエストの本文 (
instances.json):{ "applicationInstances": [ { "instance": { "instanceType": "BATCH_PREDICTION", "inputResources": [ { "consumerNode": "universal-input-0", "dataType": "IMAGE", "inputResource": "gs://product_recognition_input" } ] }, "instanceId": "instance1" }, { "instance": { "instanceType":"BATCH_PREDICTION", "inputResources": [ { "consumerNode": "universal-input-0", "dataType": "IMAGE", "inputResource": "gs://product_recognition_input2" } ] }, "instanceId": "instance2" } ] }リクエスト:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @instances.json \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/product-recognition-app:createApplicationInstances'アプリケーションをデプロイします。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{}' \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/product-recognition-app:deploy'アプリ インスタンスを取得します。この情報から、バッチ処理が完了したタイミングを確認できます。
特に、
stateフィールドには、処理が 完了したタイミングが"state": "FINISHED"と表示されます。インスタンスが完了すると、変更できなくなります。projects.locations.applications.instances.listメソッド を使用して、インスタンスを追跡できます。同様に、このリストからインスタンスを削除するには、 theprojects.locations.applications.deleteApplicationInstancesメソッドを使用します。リクエスト:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/product-recognition-app/instances'レスポンスの例:
{ "instances": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/applications/product-recognition-app/instances/instance1", "createTime": "2023-03-30T18:30:51.991004265Z", "inputResources": [ { "inputResource": "gs://product_recognition_input", "consumerNode": "universal-input-0", "dataType": "IMAGE" } ], "outputResources": [ { "outputResource": "gs://product_recognition_output/instance1", "producerNode": "product-recognition", "autogen": true } ], "updateTime": "2023-04-18T04:58:18.592092259Z", "state": "FINISHED", "instanceType": "BATCH_PREDICTION" } }
タグ認識ツールモデル
次のサンプルを使用して、タグ認識ツールモデルで画像をバッチ処理します。
REST とコマンドライン
画像バッチ処理リクエストを送信する手順は次のとおりです。
projects.locations.processors.createメソッドを使用して、タグ認識ツールモデルを作成します。これには、Vertex AI プラットフォーム(
vertex_model)でホストされている元のモデルのリソース名を指定する必要があります。curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/processors?processor_id=tag-recognition-model1 \ -d '{ "display_name": "DISPLAY_NAME", "model_type": TAG_RECOGNIZER, "custom_processor_source_info": { "source_type": VERTEX_AUTOML, "vertex_model": "projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID" } }'新しく作成したタグ認識ツールモデルを使用してアプリケーションを作成します。 このリクエストでは、
projects.locations.applications.createメソッドを使用します。リクエストの本文 (
app.json):{ "applicationConfigs": { "nodes": [ { "displayName": "Universal Input", "name": "universal-input-0", "processor": "builtin:universal-input" }, { "displayName": "Tag Recognition", "name": "tag-recognition", "nodeConfig": { "tag_recognizer_config": { "tag_parsing_config": { "entity_parsing_configs": [ { "entity_class": "price", "regex": "\\$\\d+\\.\\d{2}", "entity_matching_strategy": "MAX_OVERLAP_AREA" } ] }, "entity_detection_confidence_threshold": 0.0 } }, "parents": [ { "parentNode": "universal-input-0" } ], "processor": "projects/PROJECT_ID/locations/LOCATION_ID/processors/tag-recognition-model1" }, { "displayName": "Storage output", "name": "gcs-output", "nodeConfig": { "gcs_output_config": { "gcs_path": "gs://tag_recognizer_app_output" } }, "parents": [ { "parentNode": "tag-recognition" } ], "processor": "builtin:gcs-output" } ] } }リクエスト:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @app.json \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications?application_id=tag-recognition-app'projects.locations.applications.createApplicationInstancesメソッドを使用して、アプリケーションのインスタンスを作成します。リクエストの本文 (
instances.json):{ "applicationInstances": [ { "instance": { "instanceType": "BATCH_PREDICTION", "inputResources": [ { "consumerNode": "universal-input-0", "dataType": "IMAGE", "inputResource": "gs://tag_recognition_input" } ] }, "instanceId": "instance1" }, { "instance": { "instanceType":"BATCH_PREDICTION", "inputResources": [ { "consumerNode": "universal-input-0", "dataType": "IMAGE", "inputResource": "gs://tag_recognition_input2" } ] }, "instanceId": "instance2" } ] }リクエスト:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d @instances.json \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/tag-recognition-app:createApplicationInstances'アプリケーションをデプロイします。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{}' \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/tag-recognition-app:deploy'アプリ インスタンスを取得します。この情報から、バッチ処理が完了したタイミングを確認できます。
特に、
stateフィールドには、処理が 完了したタイミングが"state": "FINISHED"と表示されます。インスタンスが完了すると、変更できなくなります。projects.locations.applications.instances.listメソッド を使用して、インスタンスを追跡できます。同様に、このリストからインスタンスを削除するには、 theprojects.locations.applications.deleteApplicationInstancesメソッドを使用します。リクエスト:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ 'https://visionai.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/LOCATION_ID/applications/tag-recognition-app/instances'レスポンスの例:
{ "instances": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/applications/tag-recognition-app/instances/instance1", "createTime": "2023-03-30T18:30:51.991004265Z", "inputResources": [ { "inputResource": "gs://tag_recognition_input", "consumerNode": "universal-input-0", "dataType": "IMAGE" } ], "outputResources": [ { "outputResource": "gs://tag_recognition_output/instance1", "producerNode": "tag-recognition", "autogen": true } ], "updateTime": "2023-04-18T04:58:18.592092259Z", "state": "FINISHED", "instanceType": "BATCH_PREDICTION" } }