IoT

Запуск Mobilenet на микроконтроллерах STM32

Интернет вещей стал реальностью. Сегодня крупные компании через свои онлайн-платформы предлагают десятки облачных сервисов для разработки и хранения данных. Но технологии и решения, используемые для создания IoT-устройств имеют значительные ограничения, и главное из них - организация ее питания. Поэтому организация питания становится важнейшей задачей при разработке IoT-устройств, постоянно находящихся в активном состоянии. Чтобы преодолеть этот барьер, IoT-устройства должны «умнеть».
655
В избранное

Интернет вещей стал реальностью. Сегодня крупные компании через свои онлайн-платформы предлагают десятки облачных сервисов для разработки и хранения данных. С другой стороны, технологии и решения, используемые для создания IoT-устройств, имеют значительные ограничения. Например, если Вы захотите разместить беспроводную камеру перед воротами своего дома, то перед Вами возникнут проблемы с организацией ее питания: поблизости может не оказаться розетки, а батарейное питание становится не очень удобным, так как при эксплуатации придется часто менять батарейки из-за быстрого разряда при потоковой передаче видео. Таким образом, организация питания становится важнейшей задачей при разработке IoT-устройств, постоянно находящихся в активном состоянии.

Чтобы преодолеть этот барьер, IoT-устройства должны «умнеть». Необходимо, чтобы они вели себя как независимые вычислительные ячейки и самостоятельно выполняли обработку получаемых данных, тем самым снижая объем передаваемого траффика и уменьшая энергопотребление.

Разработку энергоэффективных умных решений, использующих алгоритмы Глубоко Обучения Deep Learning (DL), можно проводить двумя способами:

  1. Отталкиваться от аппаратного обеспечения. В таком случае необходимо ответить на вопросы: Какая модель глубокого обучения наилучшим образом соответствует ресурсам нашего устройства и требованиям энергопотребления? Как организовать максимально эффективную работу модели? Можем ли мы откорректировать модель с учетом используемой архитектуры, не снижая показателей точности?
  2. Вести разработку на основе выбранной модели DL. Тогда следует ответить на вопрос: Можем ли мы улучшить архитектуру устройства для повышения эффективности при работе с заданной моделью DL?

Мы считаем, что ни один из этих подходов не является единственно верным. Напротив, планомерное движение по двум направлениям приводит к наилучшему результату. В статье мы опишем, как с помощью библиотеки CMSIS-NN можно реализовать модели глубокого обучения (уже обученные и оптимизированные с точки зрения энергоэффективности) на микроконтроллере STM32H7. Наш код доступен онлайн.

Энергоэффективное глубокое обучение во встраиваемых системах

Компания Google, зная об описанных выше ограничениях, предлагает новые инструменты, позволяющие встраивать современные модели глубокого обучения не только в мощные и дорогие графические процессоры, но и в относительно маломощные микроконтроллеры IoT-устройств. Сейчас можно наблюдать два основных направления развития:

  • Топология сети имеет значение. Почему бы не уменьшить модель, чтобы сократить количество параметров и операций MAC? Несмотря на то, что этот процесс может выглядеть как черная магия, опыт Mobilenet показал, что это вполне реальный путь, обеспечивающий лучший компромисс между размером модели и показателями точности распознавания.
  • Tensorflow Lite в настоящее время является хорошо известным инструментом для сжатия существующих моделей с целью уменьшения объема памяти и ускорения вычислений. Речь, например, идет о переводе моделей к использованию 8-битных данных с фиксированной точкой. Расплатой за сжатие становится «специальный» процесс переобучения, необходимый для достижения того же уровня точности, что и у исходной несжатой модели.

Точность распознавания сжатых 8-разрядных версий Mobilenet оказалась на уровне базовых моделей, использующих данные с плавающей запятой. Эти сжатые версии в настоящее время используются для задач классификации или в качестве основы для структур распознавания объектов (TF Lite на Raspberry).

MobileNet на микроконтроллере ARM Cortex-M7

Чего нам не хватает для запуска сжатых моделей DL на устройствах с ограниченным энергопотреблением? Компания ARM попыталась решить вопрос, выпустив библиотеку CMSIS NN для процессорных ядер Cortex-M. К сожалению, библиотека не отслеживает последние функции сжатия и квантования моделей DL. Фактически, эффективный процесс квантования включает в себя линейное квантование в асимметричном диапазоне. Допустим, весовые параметры сверточного слоя квантованы внутри диапазона [a, b], где a> 0 и b <0, тогда квантованное значение определяется по формуле, изображенной на рисунке 1.

Определение квантованного значения

Рис. 1. Определение квантованного значения

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

Асимметричная свертка между входами q1 и q2

Рис. 2. Асимметричная свертка между входами q1 и q2

Легко заметить, что теперь 8-битные сверточные ядра должны выполнять смещенную операцию свертки, за которой следует операция масштабирования (и сжатия). Мы предоставляем эти новые сверточные ядра в нашем расширении CMSIS-NN.

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

Инновационные архитектурные решения могут сыграть здесь ключевую роль (вы помните про второй подход, озвученный в начале статьи?). Однако при попытке реализовать MobileNet на микроконтроллере ST32H7 придется столкнуться с ограниченным объемом встроенной памяти (2 МБ флэш-памяти + 512 КБ L2 SRAM). В данном случае простейшим решением будет использование памяти R/ W L2 для хранения временных слоев активации (как входных, так и выходных) и флэш-памяти для хранения параметров сети.

Следующий вопрос: какой тип MobileNet соответствует этим ограничениям (рис. 3)?

Требования к памяти для реализации сетей mobilenet на микроконтроллере STM32H7

Рис. 3. Требования к памяти для реализации сетей mobilenet на микроконтроллере STM32H7

Каждая точка на графике представляет модель Mobilenet с определенным размером ввода (128, 160, 192, 224) и множителем ширины (0,25, 0,5, 0,75, 1,0). По оси X откладывается требуемый объем памяти для хранения слоев активации. По оси X откладывается требуемый объем памяти для хранения весовых коэффициентов. Красный прямоугольник соответствует ограничениям памяти STM32H7. Как видно, не все модели «помещаются» в доступном объеме памяти микроконтроллера.

Итак, мы загрузили 8-битную сжатую модель Mobilnet 160_0.25 из TensorFlow и портировали ее в STM32H7 с помощью нашей расширенной библиотеки. Результат: задача классификации по 1000 классам занимает 165 мс (65 миллионов циклов при рабочей частоте 400 МГц). Для получения дополнительной информации вы можете обратиться к нашему проекту на GitHub.

Производитель: STMicroelectronics
Наименование
Производитель
Описание Корпус/
Изображение
Цена, руб. Наличие
STM32H743ZIT6
STM32H743ZIT6
STMicroelectronics
Арт.: 2237123 ИНФО PDF AN RD RND DT
Доступно: 45 шт. 1410,00
ARM Microcontrollers - MCU High-performance and DSP with DP-FPU, ARM Cortex-M7 MCU with 2MBytes Flash, 1MB RAM, 400 MHz CPU, Art Accelerator, L1 cache, external memory interface, large set of peripherals
STM32H743ZIT6 1410,00 от 3 шт. 1210,00 от 6 шт. 1090,00 от 13 шт. 1010,00 от 34 шт. 958,00
45 шт.
(на складе)
STM32H743IIT6
STMicroelectronics
Арт.: 2263994 PDF AN RD RND DT
Доступно: 41 шт. 1540,00
ARM Microcontrollers - MCU High-performance and DSP with DP-FPU, ARM Cortex-M7 MCU with 2MBytes Flash, 1MB RAM, 400 MHz CPU, Art Accelerator, L1 cache, external memory interface, large set of peripherals
STM32H743IIT6 1540,00 от 3 шт. 1320,00 от 6 шт. 1190,00 от 12 шт. 1100,00 от 31 шт. 1040,00
41 шт.
(на складе)
STM32H743VIT6
STM32H743VIT6
STMicroelectronics
Арт.: 2302623 ИНФО PDF AN RD RND DT
Доступно: 51 шт. 1240,00
ARM Microcontrollers - MCU High-performance and DSP with DP-FPU, ARM Cortex-M7 MCU with 2MBytes Flash, 1MB RAM, 400 MHz CPU, Art Accelerator, L1 cache, external memory interface, large set of peripherals
STM32H743VIT6 1240,00 от 4 шт. 1060,00 от 7 шт. 954,00 от 15 шт. 883,00 от 39 шт. 839,00
51 шт.
(на складе)
STM32H743BIT6
STM32H743BIT6
STMicroelectronics
Арт.: 2573394 ИНФО PDF AN RD RND DT
Доступно: 61 шт. 1550,00
ARM Microcontrollers - MCU High-performance and DSP with DP-FPU, ARM Cortex-M7 MCU with 2MBytes Flash, 1MB RAM, 400 MHz CPU, Art Accelerator, L1 cache, external memory interface, large set of peripherals
STM32H743BIT6 1550,00 от 3 шт. 1320,00 от 6 шт. 1190,00 от 12 шт. 1100,00 от 31 шт. 1050,00
61 шт.
(на складе)
STM32H743XIH6
STM32H743XIH6
STMicroelectronics
Арт.: 2609718 PDF AN RD DT
Доступно: 28 шт. 2240,00
ARM Microcontrollers - MCU High-performance and DSP with DP-FPU, ARM Cortex-M7 MCU with 2MBytes Flash, 1MB RAM, 400 MHz CPU, Art Accelerator, L1 cache, external memory interface, large set of peripherals
STM32H743XIH6 2240,00 от 2 шт. 1920,00 от 4 шт. 1730,00 от 9 шт. 1600,00 от 20 шт. 1520,00
28 шт.
(на складе)
STM32H743IIK6
STM32H743IIK6
STMicroelectronics
Арт.: 2609785 PDF AN RD DT
Доступно: 31 шт. от 1 шт. от 2005,47
Выбрать
условия
поставки
ARM Microcontrollers - MCU
STM32H743IIK6 от 1 шт. от 2005,47
31 шт.
(под заказ)
Выбрать
условия
поставки
STM32H743VIH6
STM32H743VIH6
STMicroelectronics
Арт.: 2728934 ИНФО AN RD DT
Доступно: 66 шт. от 348 шт. от 958,49
Выбрать
условия
поставки
STM32H743VIH6 - Микроконтроллеры ARM High-performance and DSP with DP-FPU, ARM Cortex-M7 MCU with 2MBytes Flash, 1MB RAM, 400 MHz CPU, Art Accelerator, L1 cache, external memory interface, large set of peripherals
STM32H743VIH6 от 348 шт. от 958,49
66 шт.
(под заказ)
Выбрать
условия
поставки
STM32H750VBT6
STM32H750VBT6
STMicroelectronics
Арт.: 2783563 AN RD DT
Доступно: 60 шт. от 10 шт. от 1191,96
Выбрать
условия
поставки
MCU, 32BIT, 400MHZ, LQFP-100
STM32H750VBT6 от 10 шт. от 1191,96
60 шт.
(под заказ)
Выбрать
условия
поставки

Сравнение позиций

  • ()