Моделът PyTorch на езика на знаците се внедрява на tinyML устройства без усилие

Интересувате ли се да направите устройство за $20 интелигентно, като стартирате модел за задълбочено обучение с размер 97KB за откриване на жестове на езика на знаците? Това устройство може да бъде изключително полезно за ням човек, за да може да съобщава критични фрази на хора, които не разбират жестомимичен език.

Създадох набора от данни, като записах ~200 точки от данни на жест. Захрани набора от данни към модел на PyTorch и постигна 99,3% точност в caInvas notebook. Обученият модел е компилиран с deepSea compiler. Компилираната библиотека от deepSea беше интегрирана в приложение. Полученият двоичен файл беше флашнат на Arduino Nano платка с помощта на Arduino IDE. Гледайте този процес в действие.

Технически подробности

Изпълнението на модели за дълбоко обучение в такива малки устройства е предизвикателство по две причини. Първо, устройствата tinyML като Arduino Nano 33 са с доста ограничени ресурси по отношение на цикли на процесора, RAM, място за съхранение и т.н. Второ, времената за изпълнение за популярни рамки за ML не са налични на тези устройства tinyML. TF Lite Micro има реализация, но липсва поддръжка за много оператори като RNN, LSTM и т.н.

Компилаторът „deepSea“ на AITS приема модел за дълбоко обучение във формат Keras, TensorFlow protobuf или ONNX. Той създава пакет, който включва C++ библиотеката, необходимите заглавни файлове и readme, който показва как да използвате библиотеката. Компилаторът deepSea е оптимизиран за tinyML устройства с ARM, Xtensa и много други HW архитектури.

Приложението Arduino е достъпно тук.

След като следвате инструкциите, предоставени по-долу в раздела за настройка на софтуера, и създадете библиотеката deepSea от платформата cAInvas, моля, следвайте инструкциите на github за това как да поставите библиотеката така, че Arduino IDE да намери библиотеката asl_imu.a за връзка към вашето приложение.

Използван хардуер:

  • Arduino Nano 33 BLE Sense с глави — предпочитайте един с глави, така че да не се налага да правите запояване и т.н.
  • USB-A към micro-USB кабел

Използван софтуер:

  • cAInvas — Платформа за разработка от край до край на tinyML от AITS
  • deepSea — ML компилатор на AITS за конвертиране на модели в C++ std11 библиотека
  • Arduino IDE — IDE за програмиране на Arduino и други tinyML устройства
  • Библиотека Arduino LSM9DS1 — Библиотека за четене на сензори на Arduino Nano 33 BLE Sense

Настройка на софтуера:

  • Изтеглете и инсталирайте Arduino IDE
  • Инсталирайте поддържащи библиотеки за Arduino Nano 33 BLE Sense — линк
  • Инсталирайте библиотеката Arduino_LSM9DS1 в Arduino IDE, като преминете през менюто, както следва: Sketch → Include Library → Manage Libraries. Потърсете LSM9DS1 и инсталирайте Arduino_LSM9DS1 v1.1.0 или по-нова версия.

Референции:

  1. Безплатна регистрация в caInvas
  2. ASL разпознаване с TinyML устройства, използващи cAInvas
  3. Примерен бележник на PyTorch за откриване на ASL в PyTorch
  4. Ускоряване на предварително обучени модели за дълбоко обучение на микроконтролери
  5. Задълбочено обучение с компилатор deepC DNN — част 1
  6. Дълбоко обучение с deepC DNN компилатор — част 2
  7. Поддръжка на Arduino Nano 33 в Arduino IDE
  8. „Откриване на хора на Arduino Nano“