Обучение модели с помощью ML.NET
В предыдущей части этого руководства описаны предварительные условия, которые нужно выполнить перед созданием собственных приложения и модели Windows Machine Learning, а также показано, как скачать требуемый набор изображений. На этом этапе мы с помощью ML.NET Model Builder преобразуем этот набор изображений в модель классификации изображений.
Создание проекта
- Откройте Visual Studio и выберите "Создать новый проект".
- На панели поиска введите .NET, укажите C# в качестве языка и консоль в качестве платформы, а затем выберите шаблон проекта "Консольное приложение (.NET Core)".
- В окне настроек сделайте следующее:
- Присвойте проекту имя. В нашем примере он называется MLNETTraining.
- Выберите расположение для проекта.
- Убедитесь, что флажок
Place solution and project in the same directory
снят. - Щелкните
create
, чтобы создать проект.
Настройка Model Builder
Затем вы добавите в проект Model Builder.
- В обозревателе решений щелкните правой кнопкой мыши проект MLNETTraining и выберите
Add > Machine Learning
.
Это действие открывает ML.NET Model Builder в новом закрепленном окне инструментов Visual Studio. Model Builder поможет вам создать модель машинного обучения.
Прежде всего нужно выбрать подходящий сценарий. Не все сценарии поддерживают формат ONNX.
Если обучающая среда — это облако Azure, модели создаются в формате ONNX, чтобы приложение Windows ML могло работать с ними без преобразования. Но если вы решите обучить модель машинного обучения на локальном компьютере, такая модель будет создана в формате ML.NET.
- Локальное обучение на ЦП поддерживается для всех сценариев, за исключением обнаружения объектов.
- Локальное обучение на графическом процессоре поддерживается для классификации изображений.
- Обучение в Azure поддерживается для классификации изображений и обнаружения объектов.
В этом руководстве описано, как обучить модель классификации изображений в обучающей среде Azure. Полученная модель будет сохранена в формате ONNX. Для выполнения обучения потребуется учетная запись Azure.
Выберите сценарий классификации изображений.
Выберите "Настроить рабочее пространство", чтобы настроить обучающую среду Azure.
В верхнем правом углу выполните вход в учетную запись, с которой связана ваша подписка Azure. В меню ниже сделайте следующее:
- Выберите нужную подписку.
- Выберите или создайте новое рабочее пространство Machine Learning.
- Выберите или создайте новый вычислительный ресурс.
- Присвойте рабочему пространству имя ImageClassificationMLNET.
Важно!
Если вы не можете создать рабочее пространство Machine Learning из Model Builder, сделайте это вручную на портале Azure, как описано ниже. В противном случае можно перейти к шагу 4.
В учетной записи Azure выберите "Создание ресурса":
В поле поиска введите Machine Learning для поиска.
Щелкните "Создать", чтобы создать новое рабочее пространство Machine Learning.
Чтобы создать новое рабочее пространство, вам нужно предоставить имя подписки, создать или выбрать группу ресурсов, присвоить имя рабочему пространству и определить все обязательные параметры (регион, учетная запись хранения и т. д.).
Завершив настройку рабочего пространства и создав новую обучающую среду в ML.NET, переходите к следующему шагу.
Дождитесь, пока завершится развертывание служб машинного обучения.
Теперь пора добавить данные в Model Builder.
- Перейдите к расположению с набором данных с изображениями и выберите обучающую папку с соответствующими категориями продуктов. В этом руководстве описано, как обучить модель распознавать десерты, супы и фрукты, поэтому в папке набора данных вам потребуются только эти категории.
Итак, все готово для обучения.
Обучение модели
Model Builder оценивает множество моделей с использованием разных алгоритмов и параметров, чтобы выбрать из них наиболее эффективную.
- Щелкните "Далее" и "Начать обучение", чтобы запустить процесс. Первым делом ML.NET Model Builder отправит данные в Azure, а затем подготовит рабочее пространство и запустит процесс обучения.
Когда обучение завершится, вы увидите сводку с результатами обучения.
Наилучшая точность — это точность наилучшей модели, определенной Model Builder. Точность зависит от того, насколько правильный прогноз был сделан моделью на основе тестовых данных. В нашем примере модель может спрогнозировать правильный результат с достоверностью 95,42 %.
Оценка результатов
Переходите к следующему шагу для оценки результатов обучения.
Выберите изображение из оценивающей папки набора данных и изучите прогноз.
Добавление модели в решение
ML.NET Model Builder может автоматически добавить в решение и модель машинного обучения, и проекты для обучения и использования этой модели.
- Перейдите на шаг использования в процессе обучения и щелкните "Добавить в решение". Это действие добавляет созданную модель в папку решения.
В Обозревателе решений вы увидите файлы кода, созданные Model Builder, в том числе модель bestModel.onnx в формате ONNX.
Модель обучена в облачной среде Azure, поэтому используется формат ONNX.
Обзор модели.
Щелкните файл bestModel.onnx правой кнопкой мыши и выберите "Открыть содержащую папку".
Откройте файл модели в программе Netron.
Щелкните узел input1, чтобы открыть свойства модели.
Как видите, в качестве входных данных модель принимает тензор (многомерный массив), состоящий из 32-разрядных чисел с плавающей запятой, а в качестве выходных данных возвращает тензор с плавающей запятой. Модель создана таким образом, что она возвращает не строковое значение спрогнозированной метки, а массив, состоящий из трех чисел, каждое из которых соответствует метке типа продукта. Вам нужно будет извлечь эти значения, чтобы отобразить правильный прогноз в приложении Windows ML.
Метка 1 | Метка 2 | Метка 3 |
---|---|---|
0 | 1 | 2 |
Dessert | суп | Vegetable-Fruit |
Дальнейшие действия
Итак, вы обучили модель машинного обучения и можете переходить к этапу развертывания модели в приложении UWP с помощью Windows Machine Learning.