Волшебная палочка AI с TensorFlow Lite для микроконтроллеров и Arduino

1. Введение

Что ты построишь

В этой лабораторной работе мы научимся использовать TensorFlow Lite For Microcontrollers для запуска модели глубокого обучения на Arduino Nano 33 BLE . Микроконтроллер превращается пользователем в цифровую «волшебную палочку», позволяющую взмахивать руками и произносить различные заклинания. Когда пользователь перемещает палочку, эти сложные, многомерные данные датчиков, которые были бы непостижимы для человека, передаются в качестве входных данных в модель, которая выводит простую классификацию, которая предупреждает нас, если произошло одно из нескольких движений.

9208eb1207211349.gif

Машинное обучение на микроконтроллерах

Машинное обучение можно использовать для создания интеллектуальных инструментов, упрощающих жизнь пользователей, таких как Google Assistant . Но зачастую эти процессы требуют большого количества вычислений или ресурсов, включая мощный облачный сервер или настольный компьютер. Однако теперь можно выполнять выводы машинного обучения на крошечном маломощном оборудовании, таком как микроконтроллеры.

Микроконтроллеры чрезвычайно распространены, дешевы, требуют очень мало энергии и очень надежны. Они являются частью всех видов бытовых устройств: бытовой техники, автомобилей и игрушек. Фактически, ежегодно производится около 30 миллиардов устройств на базе микроконтроллеров.

1914a419dfacf0b5.jpeg

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

TensorFlow Lite для микроконтроллеров (программное обеспечение)

864114d0c2b4c919.png

TensorFlow — это платформа машинного обучения Google с открытым исходным кодом для обучения и запуска моделей. TensorFlow Lite — это программная платформа, оптимизированная версия TensorFlow, предназначенная для запуска моделей TensorFlow на небольших, относительно маломощных устройствах, таких как мобильные телефоны.

TensorFlow Lite для микроконтроллеров — это программная платформа, оптимизированная версия TensorFlow, предназначенная для запуска моделей тензорного потока на крошечном маломощном оборудовании, таком как микроконтроллеры. Он соответствует ограничениям, необходимым для этих встроенных сред, т. е. имеет небольшой двоичный размер, не требует поддержки операционной системы, каких-либо стандартных библиотек C или C++, динамического выделения памяти и т. д.

Arduino Nano 33 BLE (Аппаратное обеспечение)

bcd452d4d660efa9.jpeg

Arduino — популярная платформа с открытым исходным кодом, используемая для создания электронных проектов. Это состоит из:

  1. Физическая программируемая плата (часто микроконтроллер), такая как Arduino Nano 33 BLE, используемая в этой лаборатории.
  2. Arduino IDE (интегрированная среда разработки), программное обеспечение, которое используется для записи и загрузки компьютерного кода на физическую плату.

Arduino Nano 33 BLE — это платформа на базе микроконтроллера: крошечный компьютер на одной плате. Он имеет процессор, память и аппаратное обеспечение ввода-вывода, которое позволяет ему отправлять и получать цифровые сигналы на другие устройства. В отличие от компьютера, микроконтроллер не является мощным и обычно не поддерживает операционную систему. Вместо этого у них маленькие процессоры, мало памяти, а программы, которые вы пишете, запускаются непосредственно на оборудовании. Но поскольку они спроектированы максимально простыми, микроконтроллер может потреблять очень мало энергии.

Что ты будешь делать

  • Настройте микроконтроллер Arduino Nano 33 BLE и превратите его в цифровую «волшебную палочку»
  • Настройте Arduino IDE и установите необходимые библиотеки.
  • Разверните программу на устройстве
  • Произносите разнообразные заклинания, взмахнув волшебной палочкой, и просматривайте предсказания.

Что вам понадобится

  • Ноутбук с Linux, MacOS или Windows
  • Arduino Nano BLE Sense 33 (без разъемов)
  • Кабель Micro USB (если у вас ноутбук с USB-C, вместо этого приобретите кабель USB-C — Micro USB )
  • (по желанию) Палка длиной около 12 дюймов (30 см).
  • (по желанию) Клейкая лента

2. Настройте микроконтроллер Arduino.

Распакуйте Arduino

Достаньте его из коробки и вытащите из упаковочной пены. Он проводит ток и в противном случае может вызвать проблемы!

6ed84a651c871a58.jpeg

Подключите его к ноутбуку

  • Подключите кабель MicroUSB к разъему на чипе.
  • Подключите другой конец кабеля к USB-разъему ноутбука.
  • Нижний левый светодиод на Arduino (слева вверху на изображении ниже) должен загореться.

c6936696f9659104.jpeg

Ознакомьтесь с рабочим процессом

99852afbed7e78b0.png

Как показано на схеме выше, интерпретатор TFLite на Arduino периодически выполняет логический вывод модели. Модель использует обработанные данные акселерометра в качестве входных данных и выдает прогноз, который предполагает наиболее вероятный жест. Далее будет распечатан желаемый результат и загорятся нужные светодиоды.

3. Настройте Arduino IDE.

1. Загрузите Arduino IDE.

Чтобы развернуть программу на микроконтроллере Arduino, мы используем Arduino IDE.

После его скачивания установите и откройте Arduino IDE, нажав на приложение, значок которого выглядит следующим образом: 75717f13527f36b9.png

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

933c91e6e1997c61.png

2. Настройте менеджер досок.

  1. В меню Arduino выберите Tools -> Board: "Arduino .." —> Boards Manager
  2. Найдите "Arduino Nano 33 BLE" и установите Arduino nRF528x Boards (Mbed OS) . Это гарантирует, что наш микроконтроллер Arduino Nano 33 BLE поддерживается Arduino IDE. 817c63346152eda9.png
  1. В меню Arduino выберите Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"

9357691e1a1348eb.png

  1. Наконец, убедитесь, что выбранная вами плата — «Arduino Nano 33 BLE» в правом нижнем углу IDE.

аа08706bb84fa9b2.png

3. Настройте порт

В меню Arduino выберите Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE) . Вы должны увидеть что-то похожее на это:

8c25990d0c6fb6f8.png

4. Проверьте подключение платы.

В меню Arduino выберите Tools -> Get Board Info . Вы должны увидеть что-то похожее на это:

ccd8f5305be6cf59.png

4. Установите библиотеки

1. Библиотека TensorFlow Arduino

Эта библиотека содержит все примеры TensorFlow Lite для микроконтроллеров, включая исходный код «волшебной палочки», необходимый для этой лаборатории кода.

  1. В меню Arduino выберите Sketch -> Include Library -> Add .ZIP Library...
  2. Добавьте загруженную библиотеку TensorFlow Arduino .zip .

2. Библиотека Arduino LSM9DS1.

Эта библиотека позволяет вам считывать значения акселерометра, магнитометра и гироскопа из IMU LSM9DS1 на вашем Arduino Nano 33 BLE Sense.

  1. В меню Arduino выберите Sketch -> Include -> Manage Libraries...
  2. Найдите и установите "Arduino_LSM9DS1" . ac2f78a737c5f233.png

5. Загрузите и соберите пример

1. Загрузите пример

В меню Arduino выберите File -> Examples -> Arduino_TensorFlowLite -> magic_wand чтобы загрузить пример кода.

de349f2d3cb49b98.png

Это загрузит исходный код волшебной палочки.

cda8c35a597b0798.png

2. Создайте пример

Нажмите кнопку Upload в окне эскиза.

71cb1474d5e14669.png

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

3df1d0858c6e40a4.png

6. Демо

Волшебная палочка в настоящее время может распознавать 3 жеста, как показано ниже: 99a607da66af9fc8.png

  1. Крыло : начните с верхнего левого угла и аккуратно обведите букву «W» в течение двух секунд.
  2. Кольцо : начните вертикально, перемещайте палочку по кругу по часовой стрелке в течение одной секунды.
  3. Наклон : для начала держите зонд вверх, светодиодами к себе. Переместите палочку вниз под наклоном влево, а затем горизонтально вправо на одну секунду.

На следующем изображении показаны два жеста. Сначала наклон, а затем крыло (используйте это как образец для своей демонстрации).

9208eb1207211349.gif

Чтобы запустить демо-версию, следуйте инструкциям, приведенным ниже:

  1. Подключив USB, выберите Tools -> Serial Monitor в меню Arduino. Первоначально откроется пустой экран без вывода.

38e8d53652eb28f2.png

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

60b8a0017bcae419.png

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

7. Следующие шаги

Поздравляем, вы успешно создали свою первую «волшебную палочку» с распознаванием жестов на микроконтроллере Arduino!

Мы надеемся, что вам понравилось это краткое введение в разработку микроконтроллеров с помощью TensorFlow Lite. Идея глубокого обучения микроконтроллеров нова и интересна, и мы призываем вас экспериментировать!

Справочная документация

647c3ef0dc103804.png

Спасибо и приятного вам строительства!