Создание приложения классификации изображений реального времени

Завершено

Микроконтроллер (например, Azure Sphere) — это устройство, работающее с ограниченными ресурсами. Необходимо адаптировать модель для запуска на микроконтроллере, в данном случае в Azure Sphere. Модель должна иметь очень небольшой размер и быть предварительно обучена и оптимизирована для использования входных данных.

При обучении модели вы получаете обученные веса и параметры для модели глубокого обучения. Чтобы запустить эту модель глубокого обучения в Azure Sphere, необходимо квантовать веса и параметры для преобразования из 32-разрядных чисел с плавающей запятой в 8-разрядные или 16-разрядные фиксированные данные. Квантование — это ключевой шаг для развертывания модели в Azure Sphere (в микроконтроллере). Квантование для глубокого обучения — это процесс аппроксимации нейронной сети, использующей числа с плавающей запятой, до нейронной сети с небольшими значениями этих чисел. Это значительно сокращает требования к памяти и снижает затраты на вычислительные мощности, связанные с использованием нейронных сетей.

В этом модуле вы будете работать с моделью классификации изображений CIFAR10. Ваша модель обучена с помощью Caffe Framework. Весовые коэффициенты и параметр квантованы в 8-битные целые числа с плавающей запятой. Вы добавите эти квантованные весовые коэффициенты и параметры модели CIFAR10 в свой пример проекта. Кроме того, вы добавите в пример проекта библиотеку CMSIS-NN, чтобы воспользоваться преимуществами возможностей микроконтроллера. Библиотека CMSIS-NN оптимизирована для сверточных нейронных сетей (CNN).

В этом уроке используются следующие компоненты.

  • Репозиторий классификации образов Майкрософт: он содержит приложение классификации образов в режиме реального времени, работающее в Azure Sphere.

  • CMSIS-NN — это библиотека программного обеспечения, коллекция оптимизированных функций нейронных сетей для микроконтроллеров ядра Cortex-M. Она разработана для повышения производительности и сокращения объема памяти нейронных сетей в ядрах процессоров Cortex-M. Она позволяет передавать нейронные сети и машинное обучение в конечный узел приложений Центра Интернета вещей. Находится в папке проекта.

    Она содержит функции, реализующие популярные типы уровней нейронной сети, такие как свертка, глубоко разделяемая свертка, полносвязное подключение, опрос и активация. С помощью служебных функций библиотеки можно также создавать более сложные модули нейронных сетей, такие как LSTM и GRU.

  • arm_nn_examplescifar10_weights.h: квантизованные весы и смещение. Находится в папке проекта.

  • arm_nn_examplescifar10_parameter.h: квантизованные смещения, значения сдвигов. Находится в папке проекта.

На этом уроке вам предстоит выполнить перечисленные ниже действия.

  1. Клонирование примера репозитория классификации изображений Майкрософт для получения квантованных весовых коэффициентов, параметров и библиотеки CMSIS-NN.
  2. Изменение и обновление исходного кода приложения классификации изображений, которое вы только что создали.

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