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


Классификация изображений с помощью ML.NET и Windows Machine Learning

Image classification flow

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

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

Если у вас уже есть модель, но вы хотите научиться создавать приложения WinML с нуля, воспользуйтесь подробным учебником по созданию приложений WinML.

Если же вас интересует готовое решение с приложением WinML, просто клонируйте файл решения и сразу переходите к тестированию.

Сценарий

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

Предварительные требования для обучения модели

Для создания и обучения модели вы будете использовать ML.NET Model Buider в Visual Studio.

  • Для работы с ML.NET Model Builder потребуется версия Visual Studio 2019 16.6.1 или более поздняя. Visual Studio можно получить здесь.
  • Для обучения модели в ML.NET Model Builder с применением рабочей области Azure ML вам потребуется учетная запись Azure. Если вы еще не работали с Azure, зарегистрируйтесь и получите бесплатную учетную запись Azure.

Примечание.

Вам захотелось узнать больше о возможностях регистрации в Azure и бесплатных учетных записях Azure? Ознакомьтесь со сведениями о создании учетной записи Azure.

ML.NET Model Builder — это интуитивно понятное графическое расширение Visual Studio для создания, обучения и развертывания пользовательских моделей машинного обучения. Оно использует автоматизированное машинное обучение (AutoML) для проверки нескольких разных алгоритмов и параметров машинного обучения, выбирая из них наиболее подходящий для вашего сценария.

ML.NET Model Builder устанавливается вместе с Visual Studio 16.6.1 и более поздних версий при установке любых рабочих нагрузок .NET. Убедитесь, что в установщике рядом с компонентом ML.NET Model Builder установлен флажок, когда вы устанавливаете или изменяете Visual Studio. Чтобы проверить, есть ли в вашей установке VS компоненты ML.NET Model Builder, откройте раздел "Расширения" и щелкните "Управление расширениями". Введите в строку поиска Model Builder и изучите результаты поиска по расширениям.

Model builder extension

ML.NET Model Builder сейчас предоставляется в ознакомительной версии. Поэтому для использования этого инструмента откройте в Visual Studio раздел "Средства > Параметры > Среда > Предварительные версии функций" и включите ML.NET Model Builder.

Enable the model builder extension

Примечание.

Вам нужно больше информации о средстве ML.NET Model Builder и поддерживаемых им сценариях? Обратитесь к документации по Model Builder.

Предварительные требования для развертывания приложения Windows ML

Чтобы создать и развернуть приложение Windows ML, вам потребуется следующее:

  • Windows 10 версии 1809 (сборка 17763) или выше. Номер версии сборки можно выяснить, запустив winver через интерфейс "Выполнить" (вызывается сочетанием клавиш (Windows logo key + R)).
  • Windows SDK для сборки 17763 или более поздней версии. Пакет SDK можно получить здесь.
  • Visual Studio 2019 версии 16.6.1 или выше. Visual Studio можно получить здесь.
  • Расширение Visual Studio "Генератор кода Windows ML" (mlgen). Скачайте его для VS 2019.
  • Если вы решили создать приложение UWP, включите в Visual Studio рабочую нагрузку "Разработка приложений для универсальной платформы Windows".
  • Также необходимо включить на компьютере режим разработчика.

Примечание.

API-интерфейсы Windows ML встроены в последние версии Windows 10 (1809 или более поздней версии) и Windows Server 2019. Если целевая платформа является более ранней версией Windows, вы можете перенести приложение WinML в распространяемый пакет NuGet (Windows 8.1 или более поздней версии).

Подготовка данных

Модели машинного обучения необходимо обучить на существующих данных. В этом учебнике вы примените набор данных с изображениями еды из Kaggle Open Datasets. Этот набор данных распространяется на условиях общедоступной лицензии.

Важно!

Чтобы использовать этот набор данных, необходимо соблюдать условия использования сайта Kaggle и лицензии, которая прилагается к набору данных Food-11. Корпорация Майкрософт не предоставляет никаких гарантий или рекомендаций в отношении этого сайта и этого набора данных.

Этот набор данных разделен на три сегмента (для оценки, обучения и проверки), которые в общей сложности включают 16643 изображения еды, сгруппированные по 11 категориям. Изображения в этом наборе разделены на несколько папок с разными категориями, что позволяет упростить процесс обучения модели.

Полный набор данных можно скачать здесь. Обратите внимание, что общий размер набора данных составляет около 1 ГБ, а для скачивания может потребоваться создание учетной записи на сайте Kaggle.

Food image dataset

При желании вы можете использовать любой другой набор данных с изображениями аналогичного типа. Мы рекомендуем включить в начальный обучающий набор не менее 30 изображений для каждого тега. Также вам потребуются несколько дополнительных изображений для тестирования обученной модели.

Также убедитесь, что все изображения для обучения соответствуют следующим критериям:

  • формат JPG, PNG, BMP или GIF;
  • размер не более 6 МБ (4 МБ для изображений при прогнозировании);
  • не менее 256 пикселей по короткой стороне (служба "Пользовательское визуальное распознавание" автоматически увеличивает изображения меньшего размера).

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

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