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

以编程方式导出模型

自定义视觉网站上提供的所有导出选项也可以通过客户端库以编程方式提供。 可能需要使用客户端库,以便完全自动执行重新训练和更新在本地设备上使用的模型迭代的过程。

本指南演示如何使用 Python SDK 将模型导出到 ONNX 文件。

创建训练客户端

需要使用 CustomVisionTrainingClient 对象来导出模型迭代。 为自定义视觉训练资源 Azure 终结点和密钥创建变量,并用其创建客户端对象。

ENDPOINT = "PASTE_YOUR_CUSTOM_VISION_TRAINING_ENDPOINT_HERE"
training_key = "PASTE_YOUR_CUSTOM_VISION_TRAINING_KEY_HERE"

credentials = ApiKeyCredentials(in_headers={"Training-key": training_key})
trainer = CustomVisionTrainingClient(ENDPOINT, credentials)

重要

请务必在完成后将密钥从代码中删除,同时切勿公开发布这些密钥。 对于生产环境,请考虑使用安全的方法来存储和访问凭据。 有关详细信息,请参阅 Azure AI 服务安全性一文

调用导出方法

调用 export_iteration 方法。

  • 提供要导出模型的项目 ID、迭代 ID。
  • “平台”参数指定导出到的平台:允许的值为 CoreMLTensorFlowDockerFileONNXVAIDKOpenVino
  • “风格”参数指定导出模型的格式:允许的值为 LinuxWindowsONNX10ONNX12ARMTensorFlowNormalTensorFlowLite
  • “原始”参数提供用于检索原始 JSON 响应以及对象模型响应的选项。
project_id = "PASTE_YOUR_PROJECT_ID"
iteration_id = "PASTE_YOUR_ITERATION_ID"
platform = "ONNX"
flavor = "ONNX10"
export = trainer.export_iteration(project_id, iteration_id, platform, flavor, raw=False)

有关详情,请参阅 export_iteration 方法。

重要

如果已导出特定迭代,则无法再次调用 export_iteration 方法。 相反,请跳到 get_exports 方法调用,以获取指向现有导出模型的链接。

下载导出的模型

接下来,你将调用 get_exports 方法来检查导出操作的状态。 操作将以异步方式运行,因此你应轮询此方法,直到操作完成。 完成此程序后,你可以检索 URI,将模型迭代下载到设备。

while (export.status == "Exporting"):
    print ("Waiting 10 seconds...")
    time.sleep(10)
    exports = trainer.get_exports(project_id, iteration_id)
    # Locate the export for this iteration and check its status  
    for e in exports:
        if e.platform == export.platform and e.flavor == export.flavor:
            export = e
            break
    print("Export status is: ", export.status)

有关详情,请参阅 get_exports 方法。

然后,你可以通过编程方式将导出的模型下载到设备上的某个位置。

if export.status == "Done":
    # Success, now we can download it
    export_file = requests.get(export.download_uri)
    with open("export.zip", "wb") as file:
        file.write(export_file.content)

后续步骤

浏览以下文章或示例之一,将导出的模型集成到应用程序中: