创建(训练)模型后,您可以使用 batchPredict
方法为一批图片创建异步预测请求。batchPredict
方法会根据模型识别的对象向图片应用注释。
自定义模型的最长使用期限为 18 个月。该时间期限过后,您必须创建并训练新的模型,才能继续为内容添加注释。
批量预测
您可以使用 batchPredict
命令请求对图片进行注释(预测)。batchPredict
命令接受存储在您的 Google Cloud Storage 位置的 CSV 文件作为输入,该文件包含要添加注释的图片的路径。每行都指定指向 Google Cloud Storage 中的一张图片的单独路径。例如:
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:有效的位置标识符。目前,您必须使用以下值:
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 方法和网址:
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,具体取决于成功预测的图片和注释的总数。
单个图片及其所有注释将仅列出一次,并且其注释绝不会被拆分到多个文件中。
在每个 JSONL 文件中,每行都将包含一个 proto 的 JSON 表示法,其中封装了图片的 "ID" : "<id_value>",并后跟零个或多个已填充 imageObjectDetection
详细信息的 AnnotationPayload
proto(称为 annotations)。
示例 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 方法和网址:
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 参考文档。