创建自定义模型的方法,是使用准备好的数据集对其进行训练。AutoML Vision API 使用数据集中的图片来训练和测试模型并评估其性能。您可以查看结果、根据需要调整训练数据集,并使用改进的数据集训练新模型。
训练模型可能需要几个小时才能完成。借助 AutoML Vision API,您可以检查训练的状态。
训练模型
如果您有一个包含一组带注释、边界框和标签的固定训练图片的数据集,您就可以创建和训练自定义模型了。
网页界面
打开 AutoML Vision Object Detection 界面。
数据集页面显示当前项目的可用数据集。
选择要用于训练自定义模型的数据集。
准备好数据集后,选择训练标签页和训练新模型按钮。
这将打开一个训练新模型侧边窗口,其中包含训练选项。
在定义模型部分,指定模型名称(或接受默认名称)。如果尚未指定模型类型,请选择 radio_button_checked 云托管作为模型类型。选择训练 Edge 模型后,选择继续。
在接下来的模型优化选项部分,选择所需的优化条件:radio_button_checked 准确率较高 (Higher accuracy) 或预测速度较快 (Faster prediction)。选择优化规范后,再选择继续。
在接下来的设置节点时预算部分,指定所需的节点预算。
默认情况下,对于大多数数据集来说,24 节点时足以训练模型。此建议值是使模型完全收敛的估算值。但是,您可以选择其他数值。对于对象检测,至少需要 20 节点时。对于图片分类,至少需要 8 节点时。
在此部分,您还可以选择 check_box 训练完成后将模型部署到 1 个节点,以便在训练后自动部署模型。否则,您必须在训练完成后手动部署模型。
选择开始训练以开始训练模型。
训练模型可能需要几个小时才能完成。模型训练成功后,您用于 Google Cloud Platform 项目的电子邮件地址会收到一封邮件。
REST
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的 GCP 项目 ID。
- dataset-id:您的数据集的 ID。此 ID 是数据集名称的最后一个元素。例如:
- 数据集名称:
projects/project-id/locations/location-id/datasets/3104518874390609379
- 数据集 ID:
3104518874390609379
- 数据集名称:
- display-name:您选择的字符串显示名。
字段特定注意事项:
imageObjectDetectionModelMetadata.modelType
- 表示如何优化模型的两个可用选项之一:cloud-low-latency-1
- 针对延迟时间优化训练。cloud-high-accuracy-1
- 针对准确率优化训练。imageObjectDetectionModelMetadata.trainBudgetMilliNodeHours
- 创建此模型的训练预算,以毫节点时表示(此字段中的值 1000 表示 1 个节点时)。实际的trainCostMilliNodeHours
将等于或小于此值。如果进一步的模型训练不再提供任何改进,则训练将停止,而不使用全部预算,并且stopReason
将为MODEL_CONVERGED
。注意:node_hour = actual_hour * number_of_nodes_involved。
对于模型类型
cloud-high-accuracy-1
(默认类型)和cloud-low-latency-1
,训练预算必须介于 2 万到 200 万毫节点时之间(包括 2 万和 200 万毫节点时)。默认值为 216000,代表实际用时一天。
HTTP 方法和网址:
POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models
请求 JSON 正文:
{ "displayName": "DISPLAY_NAME", "datasetId": "DATASET_ID", "imageObjectDetectionModelMetadata": { "modelType": "cloud-low-latency-1", "trainBudgetMilliNodeHours": "216000" } }
如需发送请求,请选择以下方式之一:
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/us-central1/models"
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/us-central1/models" | Select-Object -Expand Content
您应该会看到类似如下所示的输出。可以使用操作 ID(本例中为 IOD3074819451447675546
)来获取任务的状态。如需查看示例,请参阅处理长时间运行的操作。
{ "name": "projects/PROJECT_ID/locations/us-central1/operations/IOD3074819451447675546", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-07-26T21:10:18.338846Z", "updateTime": "2019-07-26T21:10:18.338846Z", "createModelDetails": {} } }
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 参考文档。
列出操作
使用以下代码示例列出项目的操作并过滤结果。
REST
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的 GCP 项目 ID。
HTTP 方法和网址:
GET https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations
如需发送请求,请选择以下方式之一:
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"
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" | Select-Object -Expand Content
您看到的输出会因您请求的操作而异。
您还可以使用选择查询参数(operationId
、done
和 worksOn
)过滤返回的操作。例如,如需返回已完成运行的操作列表,请修改网址:
GET https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations?filter="done=true"
Go
在试用此示例之前,请按照 API 与参考文档 > 客户端库页面上与此编程语言对应的设置说明进行操作。
Java
在试用此示例之前,请按照 API 与参考文档 > 客户端库页面上与此编程语言对应的设置说明进行操作。
Node.js
在试用此示例之前,请按照 API 与参考文档 > 客户端库页面上与此编程语言对应的设置说明进行操作。
Python
在试用此示例之前,请按照 API 与参考文档 > 客户端库页面上与此编程语言对应的设置说明进行操作。
其他语言
C#: 请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 版 AutoML Vision Object Detection 参考文档。
PHP: 请按照客户端库页面上的 PHP 设置说明操作,然后访问 PHP 版 AutoML Vision Object Detection 参考文档。
Ruby 版: 请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 版 AutoML Vision Object Detection 参考文档。
处理长时间运行的操作
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 参考文档。
取消操作
您可以使用操作 ID 取消导入任务或训练任务。
REST
在试用此示例之前,请按照客户端库页面中与此编程语言对应的设置说明执行操作。
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的 GCP 项目 ID。
- operation-id:您的操作的 ID。此 ID 是操作名称的最后一个元素。例如:
- 操作名称:
projects/project-id/locations/location-id/operations/IOD5281059901324392598
- 操作 ID:
IOD5281059901324392598
- 操作名称:
HTTP 方法和网址:
POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID:cancel
如需发送请求,请选择以下方式之一:
curl
执行以下命令:
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 "" \
"https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID:cancel"
PowerShell
执行以下命令:
$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred"; "x-goog-user-project" = "project-id" }
Invoke-WebRequest `
-Method POST `
-Headers $headers `
-Uri "https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/operations/OPERATION_ID:cancel" | Select-Object -Expand Content
{}
获取模型的相关信息
使用以下代码示例获取有关特定的训练后模型的信息。您可以使用此请求返回的信息来修改模式或发送预测请求。
REST
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的 GCP 项目 ID。
- model-id:您的模型的 ID(从创建模型时返回的响应中获取)。此 ID 是模型名称的最后一个元素。
例如:
- 模型名称:
projects/project-id/locations/location-id/models/IOD4412217016962778756
- 模型 ID:
IOD4412217016962778756
- 模型名称:
HTTP 方法和网址:
GET https://automl.googleapis.com/v1/projects/project-id/locations/us-central1/models/model-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/models/model-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/models/model-id" | Select-Object -Expand Content
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/project-id/locations/us-central1/models/model-id", "displayName": "display-name", "datasetId": "dataset-id", "createTime": "2019-07-26T21:10:18.338846Z", "deploymentState": "UNDEPLOYED", "updateTime": "2019-07-26T22:28:57.464076Z", "imageObjectDetectionModelMetadata": { "modelType": "cloud-low-latency-1", "nodeQps": 1.2987012987012987, "stopReason": "MODEL_CONVERGED", "trainBudgetMilliNodeHours": "216000", "trainCostMilliNodeHours": "8230" } }
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 参考文档。