モデルを作成(トレーニング)した後、batchPredict
メソッドを使用すると、複数の画像の予測を一括で行う非同期リクエストを送信できます。batchPredict
メソッドは、モデルで指定されたオブジェクトに基づいて画像にアノテーションを適用します。
カスタムモデルの最大寿命は 18 か月です。この時間が経過した後もアノテーションの適用を継続するには、新しいモデルを作成し、トレーニングする必要があります。
バッチ予測
画像のアノテーション(予測)をリクエストするには、batchPredict
コマンドを実行します。batchPredict
コマンドは、Google Cloud Storage のロケーションに格納され、アノテーションを付ける画像のパスを含む CSV ファイルを入力として使用します。1 つの行に、Google Cloud Storage にある 1 つの画像のパスを指定します。例:
batch_prediction.csv
:
gs://my-cloud-storage-bucket/prediction_files/image1.jpg gs://my-cloud-storage-bucket/prediction_files/image2.jpg gs://my-cloud-storage-bucket/prediction_files/image3.jpg gs://my-cloud-storage-bucket/prediction_files/image4.jpg gs://my-cloud-storage-bucket/prediction_files/image5.jpg gs://my-cloud-storage-bucket/prediction_files/image6.png
CSV ファイルに指定されている画像の数によっては、バッチ予測タスクの完了に時間がかかることがあります。少数の画像でバッチ予測を行う場合でも、最低で 30 分はかかります。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: GCP プロジェクト ID
- location-id: 有効なロケーション ID。現在のところ、次の値を使用する必要があります。
us-central1
- model-id: モデルを作成したときにレスポンスで返されたモデルの ID。この ID は、モデルの名前の最後の要素です。例:
- モデル名:
projects/project-id/locations/location-id/models/IOD4412217016962778756
- モデル ID:
IOD4412217016962778756
- モデル名:
- input-storage-path: Google Cloud Storage に保存されている CSV ファイルへのパス。リクエスト元のユーザーには、少なくともバケットに対する読み取り権限が必要です。
- output-storage-bucket: 出力ファイルを保存する Google Cloud Storage バケット/ディレクトリ(形式:
gs://bucket/directory/
)。リクエスト元のユーザーには、バケットへの書き込み権限が必要です。
フィールド固有の考慮事項:
params.score_threshold
- 0.0~1.0 の値。スコアがこの値以上の結果のみが返されます。
HTTP メソッドと URL:
POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID:batchPredict
リクエストの本文(JSON):
{ "inputConfig": { "gcsSource": { "inputUris": [ "INPUT_STORAGE_PATH" ] } }, "outputConfig": { "gcsDestination": { "outputUriPrefix": "OUTPUT_STORAGE_BUCKET" } }, "params": { "score_threshold": "0.0" } }
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID:batchPredict"
PowerShell
リクエスト本文を request.json
という名前のファイルに保存して、次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/models/MODEL_ID:batchPredict" | Select-Object -Expand Content
出力は次のようになります。
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/IOD926615623331479552", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-06-19T21:28:35.302067Z", "updateTime": "2019-06-19T21:28:35.302067Z", "batchPredictDetails": { "inputConfig": { "gcsSource": { "inputUris": [ "INPUT_STORAGE_PATH" ] } } } } }
タスクのステータスは、オペレーション ID(この場合は IOD926615623331479552
)を使用して取得できます。例については、長時間実行オペレーションによる作業をご覧ください。
オペレーションが完了すると、state
が DONE
となり、指定した Google Cloud Storage ファイルに結果が書き込まれます。
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/IOD926615623331479552", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-06-19T21:28:35.302067Z", "updateTime": "2019-06-19T21:57:18.310033Z", "batchPredictDetails": { "inputConfig": { "gcsSource": { "inputUris": [ "INPUT_STORAGE_PATH" ] } }, "outputInfo": { "gcsOutputDirectory": "gs://STORAGE_BUCKET_VCM/SUBDIRECTORY/prediction-8370559933346329705-YYYY-MM-DDThh:mm:ss.sssZ" } } }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.automl.v1.BatchPredictResult" } }
サンプル出力ファイルについては、以下の JSONL 出力ファイルをご覧ください。
Java
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
Node.js
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
Python
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
その他の言語
C#: クライアント ライブラリ ページの C# の設定手順を行ってから、.NET 用の AutoML Vision Object Detection リファレンス ドキュメントをご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順を行ってから、PHP 用の AutoML Vision Object Detection リファレンス ドキュメントをご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順を行ってから、Ruby 用の AutoML Vision Object Detection リファレンス ドキュメントをご覧ください。
JSONL 出力ファイル
バッチ予測タスクが完了すると、コマンドに指定した Google Cloud Storage のロケーションに予測の出力が保存されます。
出力先のストレージ(選択したオブジェクト プレフィックス付き)に、ファイルimage_object_detection_1.jsonl
、image_object_detection_2.jsonl
、...、image_object_detection_N.jsonl
が作成されます。N は正常に予測された画像とアノテーションの総数です。
1 つの画像は、すべてのアノテーションとともに 1 回だけリストに出力されます。1 つの画像のアノテーションが複数のファイルにまたがることはありません。
各 JSONL ファイルでは、1 行に 1 つの proto の JSON 表現が含まれます。この proto は画像の "ID" : "<id_value>" をラップし、その後に 0 個以上の AnnotationPayload
proto(アノテーション)が続き、imageObjectDetection
の詳細が示されます。
JSONL ファイルの例(2 行のファイル アノテーションを含む単一の .jsonl ファイル):
image_object_detection_0.jsonl
長時間実行オペレーションによる作業
REST
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: GCP プロジェクト ID
- operation-id: オペレーションの IDこの ID は、オペレーションの名前の最後の要素です。例:
- オペレーション名:
projects/project-id/locations/location-id/operations/IOD5281059901324392598
- オペレーション ID:
IOD5281059901324392598
- オペレーション名:
HTTP メソッドと URL:
GET https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID
リクエストを送信するには、次のいずれかのオプションを選択します。
curl
次のコマンドを実行します。
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: project-id" \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID"
PowerShell
次のコマンドを実行します。
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method GET `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID" | Select-Object -Expand Content
{ "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2018-10-29T15:56:29.176485Z", "updateTime": "2018-10-29T16:10:41.326614Z", "importDataDetails": {} }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
完了したモデル作成オペレーションの場合、出力は次のようになります。
{ "name": "projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-07-22T18:35:06.881193Z", "updateTime": "2019-07-22T19:58:44.972235Z", "createModelDetails": {} }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.automl.v1.Model", "name": "projects/PROJECT_ID/locations/us-central1/models/MODEL_ID" } }
Go
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
Java
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
Node.js
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
Python
このサンプルを試す前に、クライアント ライブラリ ページを参照して、この言語の設定手順を完了してください。
その他の言語
C#: クライアント ライブラリ ページの C# の設定手順を行ってから、.NET 用の AutoML Vision Object Detection リファレンス ドキュメントをご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順を行ってから、PHP 用の AutoML Vision Object Detection リファレンス ドキュメントをご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順を行ってから、Ruby 用の AutoML Vision Object Detection リファレンス ドキュメントをご覧ください。