Поделиться через


Обучение модели с помощью ML.NET

В предыдущей части этого руководства описаны предварительные условия, которые нужно выполнить перед созданием собственных приложения и модели Windows Machine Learning, а также показано, как скачать требуемый набор изображений. На этом этапе мы с помощью ML.NET Model Builder преобразуем этот набор изображений в модель классификации изображений.

Создание проекта

  1. Откройте Visual Studio и выберите "Создать новый проект".

Create a new project for the Model Builder

  1. На панели поиска введите .NET, укажите C# в качестве языка и консоль в качестве платформы, а затем выберите шаблон проекта "Консольное приложение (.NET Core)".

Create a new .NET project

  1. В окне настроек сделайте следующее:
  • Присвойте проекту имя. В нашем примере он называется MLNETTraining.
  • Выберите расположение для проекта.
  • Убедитесь, что флажок Place solution and project in the same directory снят.
  • Щелкните create, чтобы создать проект.

Configure your new project

Настройка Model Builder

Затем вы добавите в проект Model Builder.

  1. В обозревателе решений щелкните правой кнопкой мыши проект MLNETTraining и выберите Add > Machine Learning.

Add machine learning to your project

Это действие открывает ML.NET Model Builder в новом закрепленном окне инструментов Visual Studio. Model Builder поможет вам создать модель машинного обучения.

List of model builder scenarios

Прежде всего нужно выбрать подходящий сценарий. Не все сценарии поддерживают формат ONNX.

Если обучающая среда — это облако Azure, модели создаются в формате ONNX, чтобы приложение Windows ML могло работать с ними без преобразования. Но если вы решите обучить модель машинного обучения на локальном компьютере, такая модель будет создана в формате ML.NET.

  • Локальное обучение на ЦП поддерживается для всех сценариев, за исключением обнаружения объектов.
  • Локальное обучение на графическом процессоре поддерживается для классификации изображений.
  • Обучение в Azure поддерживается для классификации изображений и обнаружения объектов.

В этом руководстве описано, как обучить модель классификации изображений в обучающей среде Azure. Полученная модель будет сохранена в формате ONNX. Для выполнения обучения потребуется учетная запись Azure.

  1. Выберите сценарий классификации изображений.

  2. Выберите "Настроить рабочее пространство", чтобы настроить обучающую среду Azure.

Set up your Azure workspace

В верхнем правом углу выполните вход в учетную запись, с которой связана ваша подписка Azure. В меню ниже сделайте следующее:

  • Выберите нужную подписку.
  • Выберите или создайте новое рабочее пространство Machine Learning.
  • Выберите или создайте новый вычислительный ресурс.
  • Присвойте рабочему пространству имя ImageClassificationMLNET.

Configure your Azure workspace

Важно!

Если вы не можете создать рабочее пространство Machine Learning из Model Builder, сделайте это вручную на портале Azure, как описано ниже. В противном случае можно перейти к шагу 4.

В учетной записи Azure выберите "Создание ресурса":

Available Azure resources

В поле поиска введите Machine Learning для поиска.

Search for Machine Learning in the Azure resource list

Щелкните "Создать", чтобы создать новое рабочее пространство Machine Learning.

The Azure Machine Learning resource

Чтобы создать новое рабочее пространство, вам нужно предоставить имя подписки, создать или выбрать группу ресурсов, присвоить имя рабочему пространству и определить все обязательные параметры (регион, учетная запись хранения и т. д.).

Set up your Azure ML workspace

Завершив настройку рабочего пространства и создав новую обучающую среду в ML.NET, переходите к следующему шагу.

The ML.NET training environment

Дождитесь, пока завершится развертывание служб машинного обучения.

Теперь пора добавить данные в Model Builder.

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

Add data to your ML model

Итак, все готово для обучения.

Обучение модели

Model Builder оценивает множество моделей с использованием разных алгоритмов и параметров, чтобы выбрать из них наиболее эффективную.

  1. Щелкните "Далее" и "Начать обучение", чтобы запустить процесс. Первым делом ML.NET Model Builder отправит данные в Azure, а затем подготовит рабочее пространство и запустит процесс обучения.

Train your Machine Learning model

Когда обучение завершится, вы увидите сводку с результатами обучения.

Successful model training

Наилучшая точность — это точность наилучшей модели, определенной Model Builder. Точность зависит от того, насколько правильный прогноз был сделан моделью на основе тестовых данных. В нашем примере модель может спрогнозировать правильный результат с достоверностью 95,42 %.

Оценка результатов

  1. Переходите к следующему шагу для оценки результатов обучения.

  2. Выберите изображение из оценивающей папки набора данных и изучите прогноз.

Model evaluation results

Добавление модели в решение

ML.NET Model Builder может автоматически добавить в решение и модель машинного обучения, и проекты для обучения и использования этой модели.

  1. Перейдите на шаг использования в процессе обучения и щелкните "Добавить в решение". Это действие добавляет созданную модель в папку решения.

Add your model to your solution

В Обозревателе решений вы увидите файлы кода, созданные Model Builder, в том числе модель bestModel.onnx в формате ONNX.

Your model displayed in the solution explorer

Модель обучена в облачной среде Azure, поэтому используется формат ONNX.

Обзор модели.

  1. Щелкните файл bestModel.onnx правой кнопкой мыши и выберите "Открыть содержащую папку".

  2. Откройте файл модели в программе Netron.

  3. Щелкните узел input1, чтобы открыть свойства модели.

Exploring the properties of your model

Как видите, в качестве входных данных модель принимает тензор (многомерный массив), состоящий из 32-разрядных чисел с плавающей запятой, а в качестве выходных данных возвращает тензор с плавающей запятой. Модель создана таким образом, что она возвращает не строковое значение спрогнозированной метки, а массив, состоящий из трех чисел, каждое из которых соответствует метке типа продукта. Вам нужно будет извлечь эти значения, чтобы отобразить правильный прогноз в приложении Windows ML.

Метка 1 Метка 2 Метка 3
0 1 2
Dessert суп Vegetable-Fruit

Дальнейшие действия

Итак, вы обучили модель машинного обучения и можете переходить к этапу развертывания модели в приложении UWP с помощью Windows Machine Learning.