Разработка модели классификации изображений в Azure Sphere

Завершено

Перед вами была поставлена задача разработать систему, способную обнаруживать оленей на изображениях. Решение должно работать в автономном режиме в неблагоприятных условиях. Для выполнения этого требования вы реализуете модель нейронной сети, осуществляющую классификацию изображений в реальном времени в Azure Sphere (ядре MT3620 Cortex-M4) с помощью библиотеки CMSIS-NN ARM. Микроконтроллер — это компактная встроенная система интегральной схемы, предназначенная для создания решения для определенной операции. Стандартный микроконтроллер сочетает в одной микросхеме функции процессора и периферийных устройств ввода-вывода, содержит ОЗУ.

Azure Sphere — это защищенная высокоуровневая платформа приложений со встроенными функциями взаимодействия и защиты для устройств, подключенных к Интернету. Она состоит из защищенного, подключенного, кроссоверного микроконтроллера (MCU), пользовательской высокоуровневой операционной системы на базе Linux (OS), а также облачной службы безопасности, которая обеспечивает непрерывную возобновляемую защиту.

В микроконтроллере Azure Sphere функции обработки в режиме реального времени интегрированы с возможностью запуска высокоуровневой операционной системы. Микроконтроллер Azure Sphere вместе со своей с операционной системой и платформой приложений позволяет создавать защищенные, подключенные к Интернету устройства, которые можно удаленно обновлять, контролировать, отслеживать и обслуживать. Благодаря такому устройству, как Azure Sphere, для выполнения задач машинного обучения в режиме реального времени на устройствах IoT Edge не требуется использовать высокотехнологичный компьютер или облачные вычислительные ресурсы. Их можно быстро и эффективно реализовывать на внедренных устройствах.

В этом модуле используется плата Azure Sphere MT3620. Обратите внимание, что вы не используете камеру для обнаружения изображений. Вы будете отправлять пользовательские изображения в проект и запустите проект для обнаружения изображения (в данном случае изображения оленя).

Вы будете использовать набор данных CIFAR-10, обученный с помощью Caffe. На этом уроке вы узнаете, как развернуть модель на устройстве, работающем с ограниченным объемом ресурсов, таком как микроконтроллер. Вам потребуется дополнительный шаг квантования, так как на устройстве с ограниченным объемом ресурсов можно развернуть модель небольшого размера. Модель должна быть обучена и квантована с 32 до 8 бит. Квантование — это важное действие для развертывания модели на устройстве Azure Sphere. Квантование не повышает точность модели. Главным образом оно уменьшает размер модели путем преобразования 32-разрядной модели с плавающей запятой в 8-разрядную модель с фиксированной запятой. Этот шаг оказывает минимальное влияние на точность, но позволяет получить модель, размер которой поддерживается на микроконтроллере. Так как весовые коэффициенты будут иметь фиксированные значения после обучения, вы будете знать их минимальное и максимальное значения. Они квантуются или дискретизируются до 256 уровней с помощью своих диапазонов. Кроме того, квантование улучшает общую производительность вычислений. После завершения квантования необходимо преобразовать формат модели в формат C. В этом случае модель можно будет развернуть в Azure Sphere.

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

Вы будете использовать следующие компоненты:

  • Azure Sphere MT3620 Board: MT3620 является первым сертифицированным MCU в Azure Sphere. Сертифицированные Azure Sphere микроконтроллеры — это новый класс защищенных подключенных микроконтроллеров.

  • Набор данных CIFAR-10 состоит из 60 000 цветных изображений размером 32 x 32 цвета в 10 классах. См. справочную документацию по CIFAR.

  • Нейронная сеть: мы используем 3-слой обученную сверточная нейронная сеть.

  • Библиотека CMSIS-NN — коллекция эффективных ядер нейронной сети, разработанная для повышения производительности и сокращения объема памяти нейронных сетей в ядрах процессоров Cortex-M. См. справочную документацию по ARM.

  • Приложение Hello World в режиме реального времени: это пример приложения, который вы адаптируете. Он демонстрирует, как создать пример приложения для ядер с поддержкой реального времени на устройстве Azure Sphere с помощью Visual Studio Code.

Итак, вы измените существующий проект приложения реального времени Hello World. В этом модуле вы клонируете пример репозитория, измените конфигурацию и обновите исходный код. Вы также добавите в пример проекта библиотеку CMSIS-NN и вызовете функции библиотеки, которые будут использоваться в проекте. При запуске проекта код обработает входное изображение и выведет выходные данные в эмуляторе терминала.