创建自定义模型的方法,是使用准备好的数据集对其进行训练。AutoML API 使用数据集中的条目来训练、测试模型并评估其性能。您可以查看结果、根据需要调整训练数据集,并使用改进后的数据集训练新的模型。
训练模型可能需要几个小时才能完成。借助 AutoML API,您可以检查训练的状态。
每次开始训练时,AutoML Vision 都会创建新模型,因此您的项目可能包含大量模型。您可以获取项目中模型的列表并删除不再需要的模型。或者,您也可以使用 Cloud AutoML Vision 界面来列出和删除通过 AutoML API 创建且不再需要的模型。
模型基于 Google 最先进的研究。您的模型将采用 TF Lite 软件包的形式。如需详细了解如何使用 TensorFlow Lite SDK 集成 TensorFlow Lite 模型,请点击此处针对 iOS 和 Android 的相应链接。
训练 Edge 模型
如果您有一个包含一组带标签的固定训练项的数据集,就可以创建和训练自定义 Edge 模型了。
其他语言
C#: 请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 版 AutoML Vision 参考文档。
PHP: 请按照客户端库页面上的 PHP 设置说明操作,然后访问 PHP 版 AutoML Vision 参考文档。
Ruby 版: 请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 版 AutoML Vision 参考文档。
TensorFlow Serving 和 TF Lite 模型
训练时,您可以根据具体使用场景选择所需的 Edge 模型类型:
- 低延时 (
mobile-low-latency-1
) - 通用目的 (
mobile-versatile-1
) - 更高预测质量 (
mobile-high-accuracy-1
)
网页界面
-
打开 Vision Dashboard。
数据集页面显示当前项目的可用数据集。
- 选择要用于训练自定义模型的数据集。
-
准备好数据集后,选择训练标签页和训练新模型按钮。
此操作会打开包含训练选项的训练新模型侧边窗口。
- 在定义模型训练部分中,更改模型名称(或使用默认值)并选择 radio_button_checkedEdge 作为模型类型。选择训练 Edge 模型后,选择继续。
-
在接下来的模型优化选项部分中,选择所需的优化条件:radio_button_checked较高准确率 (Higher accuracy)、最佳权衡 (Best tradeoff) 或较快预测速度 (Faster prediction)。选择优化规范后,再选择继续。
-
在接下来的设置节点时预算部分中,使用建议的节点时预算或指定其他值。
默认情况下,对于大多数数据集来说,24 节点时足以训练模型。此建议值是使模型完全收敛的估算值。但是,您可以选择其他数值。图像分类的最小节点时为 8。对于 Object Detection,此最小值为 20。
-
选择开始训练以开始训练模型。
训练模型可能需要几个小时才能完成。模型训练成功后,您用于 Google Cloud Platform 项目的电子邮件地址会收到一封邮件。
REST
在训练 Edge 模型时,您可以在 modelType
字段中指定三个不同的值,具体取决于您的模型需求:
mobile-low-latency-1
表示低延时mobile-versatile-1
表示通用目的mobile-high-accuracy-1
表示较高预测质量
在使用任何请求数据之前,请先进行以下替换:
- project-id:您的 GCP 项目 ID。
- display-name:您选择的字符串显示名。
- dataset-id:您的数据集的 ID。此 ID 是数据集名称的最后一个元素。例如:
- 数据集名称:
projects/project-id/locations/location-id/datasets/3104518874390609379
- 数据集 ID:
3104518874390609379
- 数据集名称:
HTTP 方法和网址:
POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models
请求 JSON 正文:
{ "displayName": "DISPLAY_NAME", "datasetId": "DATASET_ID", "imageClassificationModelMetadata": { "trainBudget": "1", "modelType": "mobile-low-latency-1" } }
如需发送请求,请选择以下方式之一:
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(本例中为 ICN2106290444865378475
)来获取任务的状态。如需查看示例,请参阅处理长时间运行的操作。
{ "name": "projects/PROJECT_ID/locations/us-central1/operations/ICN2106290444865378475", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-10-30T20:06:08.253243Z", "updateTime": "2019-10-30T20:06:08.253243Z", "createModelDetails": {} } }
Go
在试用此示例之前,请按照客户端库页面中与此编程语言对应的设置说明执行操作。
Java
在试用此示例之前,请按照客户端库页面中与此编程语言对应的设置说明执行操作。
Node.js
在试用此示例之前,请按照客户端库页面中与此编程语言对应的设置说明执行操作。
Python
在试用此示例之前,请按照客户端库页面中与此编程语言对应的设置说明执行操作。
列出操作状态
使用以下代码示例列出项目的操作并过滤结果。
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
在试用此示例之前,请按照 API 与参考文档 > 客户端库页面上与此编程语言对应的设置说明进行操作。
Java
在试用此示例之前,请按照 API 与参考文档 > 客户端库页面上与此编程语言对应的设置说明进行操作。
Node.js
在试用此示例之前,请按照 API 与参考文档 > 客户端库页面上与此编程语言对应的设置说明进行操作。
Python
在试用此示例之前,请按照 API 与参考文档 > 客户端库页面上与此编程语言对应的设置说明进行操作。
其他语言
C#: 请按照客户端库页面上的 C# 设置说明操作,然后访问 .NET 版 AutoML Vision 参考文档。
PHP: 请按照客户端库页面上的 PHP 设置说明操作,然后访问 PHP 版 AutoML Vision 参考文档。
Ruby 版: 请按照客户端库页面上的 Ruby 设置说明操作,然后访问 Ruby 版 AutoML Vision 参考文档。
取消操作
您可以使用操作 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-10-30T20:06:08.253243Z", "deploymentState": "UNDEPLOYED", "updateTime": "2019-10-30T20:54:50.472328Z", "imageClassificationModelMetadata": { "trainBudget": "1", "modelType": "mobile-low-latency-1", "nodeQps": 3.2 } }
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 参考文档。
可恢复训练
您现在可以暂停并在后续恢复大型数据集(包含一千张以上的图片)的自定义模型训练。暂停模型训练不是涉及暂停按钮的人工处置措施,而是用户将节点时预算设置为指定时间,例如 2 小时。达到该时间后,无论模型状态如何,训练都会自动停止。
后续训练具有以下限制:
- 基本模型时间限制 - 您只能对最近 14 天内训练过的模型恢复训练;在请求发出 14 天之前创建的基本模型不符合后续训练的条件。
- 不可修改标签 - 如果您更改基本模型数据集中的标签,则后续训练将失败。
- 无法保证更好的性能 - 对模型进行后续训练并不能保证获得更好的模型性能。
网页界面
在试用此示例之前,请按照客户端库页面中与此编程语言对应的设置说明执行操作。
-
打开 AutoML Vision UI。
数据集页面显示当前项目的可用数据集。
选择要用于训练自定义模型的数据集。
所选数据集的显示名会显示在标题栏中,该页面还会列出数据集中的各个训练项及其标签。
查看完数据集后,选择标题栏正下方的训练标签页。
如果您以前训练过模型,则它们将显示在此标签页的列表中。
如果可以对某个模型进行可恢复的训练,则该训练将在查看完整评估选项旁显示为一个选项。
选择恢复训练,对适用模型恢复训练。
与训练原始模型类似,选择继续训练将打开“训练新模型”侧边窗口。在定义模型部分中,您可以更改新模型的名称。您还将看到用于训练此模型的基本模型的名称。
定义好模型后,选择继续以转到下一部分。
在下面的设置节点时预算部分中,指定节点时预算。与初始模型训练类似,此预算受价格结构和配额限制的约束。
指定训练预算后,选择开始训练。完成可恢复的训练后,您会收到一封电子邮件。
REST
在使用任何请求数据之前,请先进行以下替换:
- base-model-id:基本(现有)模型的 ID。新模型基于这个基本模型创建。以下新模型规范必须与基本模型匹配:
- 项目
- 位置
-
modelType
*
* 即使新模型请求中省略了这个字段,系统也会检查基本和新的
modelType
。 - project-id:您的 GCP 项目 ID。
- display-name:您选择的字符串显示名。
- dataset-id:您的数据集的 ID。此 ID 是数据集名称的最后一个元素。例如:
- 数据集名称:
projects/project-id/locations/location-id/datasets/3104518874390609379
- 数据集 ID:
3104518874390609379
- 数据集名称:
HTTP 方法和网址:
POST https://automl.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/models
请求 JSON 正文:
{ "baseModelId": BASE_MODEL_ID, "displayName": "DISPLAY_NAME", "datasetId": "DATASET_ID", "imageClassificationModelMetadata": { "trainBudget": "1", "modelType": "mobile-low-latency-1" } }
如需发送请求,请选择以下方式之一:
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(本例中为 ICN2106290444865378475
)来获取任务的状态。如需查看示例,请参阅处理长时间运行的操作。
{ "name": "projects/PROJECT_ID/locations/us-central1/operations/ICN2106290444865378475", "metadata": { "@type": "type.googleapis.com/google.cloud.automl.v1.OperationMetadata", "createTime": "2019-10-30T20:06:08.253243Z", "updateTime": "2019-10-30T20:06:08.253243Z", "createModelDetails": {} } }