你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

复制和备份“自定义视觉”项目

创建并训练“自定义视觉”项目后,你可能会想要将项目复制到另一个资源。 如果你的应用或业务依赖于“自定义视觉”项目,我们建议你将模型复制到另一个区域中的另一个“自定义视觉”帐户。 这样一来,如果发生区域性服务中断,便可在项目复制到的区域中访问项目。

ExportProjectImportProject API 允许将项目从一个“自定义视觉”帐户复制到其他帐户,从而实现这种场景。 本指南演示如何将这些 REST API 与 cURL 配合使用。 还可以使用 HTTP 请求服务(例如 Visual Studio Code 的 REST 客户端)发出请求。

提示

有关使用 Python 客户端库的此方案示例,请参阅 GitHub 上的移动自定义视觉项目存储库。

提示

如果要将自定义视觉项目移动到 Azure AI 视觉图像分析 4.0,请参阅迁移指南。 若要比较这两个服务,请参阅“比较”页面

先决条件

  • 两个 Azure AI 自定义视觉资源。 如果你没有这些资源,请转到 Azure 门户并创建一个新的“自定义视觉”资源
  • “自定义视觉”资源的训练密钥和终结点 URL。 可以在 Azure 门户上资源的“概述”选项卡中找到这些值。
  • 一个已创建的“自定义视觉”项目。 有关如何执行此操作的说明,请参阅生成分类器

过程概述

复制项目的过程包括以下步骤:

  1. 首先,获取源帐户中你想要复制的项目的 ID。
  2. 然后,使用该项目 ID 和源帐户的训练密钥调用 ExportProject API。 你将获得一个临时令牌字符串。
  3. 然后,使用该令牌字符串和目标帐户的训练密钥调用 ImportProject API。 然后,该项目将在目标帐户下列出。

获取项目 ID

首先,调用 GetProjects 以查看现有“自定义视觉”项目及其 ID 的列表。 使用源帐户的训练密钥和终结点。

curl -v -X GET "{endpoint}/customvision/v3.3/Training/projects"
-H "Training-key: {training key}"

你将收到一个 200\OK 响应,该响应的正文中包含项目及其元数据的列表。 "id" 值是要为后续步骤复制的字符串。

[
  {
    "id": "00000000-0000-0000-0000-000000000000",
    "name": "string",
    "description": "string",
    "settings": {
      "domainId": "00000000-0000-0000-0000-000000000000",
      "classificationType": "Multiclass",
      "targetExportPlatforms": [
        "CoreML"
      ],
      "useNegativeSet": true,
      "detectionParameters": "string",
      "imageProcessingSettings": {
        "augmentationMethods": {}
      }
    },
    "created": "string",
    "lastModified": "string",
    "thumbnailUri": "string",
    "drModeEnabled": true,
    "status": "Succeeded"
  }
]

导出项目

使用项目 ID 与源训练密钥和终结点调用 ExportProject

curl -v -X GET "{endpoint}/customvision/v3.3/Training/projects/{projectId}/export"
-H "Training-key: {training key}"

你将收到一个 200/OK 响应,其中包含有关已导出项目的元数据和一个引用字符串 "token"。 复制令牌的值。

{
  "iterationCount": 0,
  "imageCount": 0,
  "tagCount": 0,
  "regionCount": 0,
  "estimatedImportTimeInMS": 0,
  "token": "string"
}

提示

如果在导入项目时收到“无效令牌”错误,则可能是令牌 URL 字符串未进行 web 编码。 你可以使用 URL 编码器对令牌进行编码。

导入项目

使用目标训练密钥和终结点以及引用令牌来调用 ImportProject 。 还可以在新帐户中为你的项目命名。

curl -v -G -X POST "{endpoint}/customvision/v3.3/Training/projects/import"
--data-urlencode "token={token}" --data-urlencode "name={name}"
-H "Training-key: {training key}" -H "Content-Length: 0"

你将收到一个 200/OK 响应,其中包含有关新导入的项目的元数据。

{
  "id": "00000000-0000-0000-0000-000000000000",
  "name": "string",
  "description": "string",
  "settings": {
    "domainId": "00000000-0000-0000-0000-000000000000",
    "classificationType": "Multiclass",
    "targetExportPlatforms": [
      "CoreML"
    ],
    "useNegativeSet": true,
    "detectionParameters": "string",
    "imageProcessingSettings": {
      "augmentationMethods": {}
    }
  },
  "created": "string",
  "lastModified": "string",
  "thumbnailUri": "string",
  "drModeEnabled": true,
  "status": "Succeeded"
}

后续步骤

在本指南中,你已学习如何在“自定义视觉”资源之间复制和移动项目。 接下来请浏览 API 参考文档,以了解“自定义视觉”的其他作用。