Изменение модели с помощью программных средств

Все параметры экспорта, доступные на веб-сайте Пользовательское визуальное распознавание, также доступны программным способом через клиентские библиотеки. Вы можете использовать клиентские библиотеки, чтобы полностью автоматизировать процесс переобучения и обновления итерации модели, используемой на локальном устройстве.

В этом руководство показано, как экспортировать модель в файл ONNX с помощью пакета SDK для Python.

Создание клиента обучения

Для экспорта итерации модели необходим объект 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.

Вызов метода экспорта

Вызовите метод export_iteration.

  • Укажите идентификатор проекта и идентификатор итерации модели, которую требуется экспортировать.
  • Параметр platform указывает платформу, на которую выполняется экспорт. Допустимые значения — CoreML, TensorFlow, DockerFile, ONNX, VAIDK и OpenVino.
  • Параметр flavor указывает формат экспортируемой модели. Допустимые значения — Linux, Windows, ONNX10, ONNX12, ARM, TensorFlowNormal и TensorFlowLite.
  • Параметр raw дает возможность получить необработанный ответ 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)

Следующие шаги

Интегрируйте экспортированную модель в приложение, изучив одну из следующих статей или примеров: