Varinha mágica de IA com o TensorFlow Lite para microcontroladores e Arduino

1. Introdução

O que você vai criar

Neste codelab, vamos aprender a usar o TensorFlow Lite para microcontroladores e executar um modelo de aprendizado profundo no Arduino Nano 33 BLE. O usuário transforma o microcontrolador em uma "varinha mágica" digital para acenar e lançar vários feitiços. À medida que o usuário move a varinha, esses dados complexos e multidimensionais do sensor, que seriam incompreensíveis para um humano, são transmitidos como entrada para o modelo, que gera uma classificação simples que nos alerta se um dos vários movimentos ocorreu.

9208eb1207211349.gif

Machine learning em microcontroladores

O aprendizado de máquina pode ser usado para criar ferramentas inteligentes que facilitam a vida dos usuários, como o Google Assistente. Mas, muitas vezes, essas experiências exigem muita computação ou recursos que podem incluir um servidor de nuvem ou um computador desktop. No entanto, agora é possível executar a inferência de machine learning em hardware pequeno e de baixa potência, como microcontroladores.

Os microcontroladores são extremamente comuns, baratos, exigem pouquíssima energia e são muito confiáveis. Eles fazem parte de todos os tipos de dispositivos domésticos, como eletrodomésticos, carros e brinquedos. Na verdade, cerca de 30 bilhões de dispositivos alimentados por microcontroladores são produzidos a cada ano.

1914a419dfacf0b5.jpeg

Ao trazer o aprendizado de máquina para microcontroladores minúsculos, podemos aumentar a inteligência de bilhões de dispositivos que usamos em nossas vidas, sem depender de hardware caro ou conexões de Internet confiáveis. Imagine dispositivos inteligentes que podem se adaptar à sua rotina diária, sensores industriais inteligentes que entendem a diferença entre problemas e operações normais, e brinquedos mágicos que ajudam as crianças a aprender de maneira divertida e agradável.

TensorFlow Lite para microcontroladores (software)

864114d0c2b4c919.png

O TensorFlow é o framework de machine learning de código aberto do Google para treinar e executar modelos. O TensorFlow Lite é um framework de software, uma versão otimizada do TensorFlow, projetada para executar modelos do TensorFlow em dispositivos pequenos e relativamente de baixa potência, como smartphones.

O TensorFlow Lite para microcontroladores é um framework de software, uma versão otimizada do TensorFlow, projetada para executar modelos do TensorFlow em hardware pequeno e de baixa potência, como microcontroladores. Ele obedece às restrições exigidas nesses ambientes incorporados, ou seja, tem um tamanho binário pequeno, não requer suporte a sistemas operacionais, bibliotecas C ou C++ padrão nem alocação de memória dinâmica etc.

Arduino Nano 33 BLE (hardware)

bcd452d4d660efa9.jpeg

O Arduino é uma plataforma de código aberto muito usada para criar projetos eletrônicos. Ele consiste em:

  1. Uma placa de circuito programável física (geralmente um microcontrolador), como o Arduino Nano 33 BLE usado neste codelab.
  2. A IDE (ambiente de desenvolvimento integrado) do Arduino, um software usado para escrever e fazer upload de código de computador para a placa física.

O Arduino Nano 33 BLE é uma plataforma baseada em microcontrolador: um pequeno computador em uma única placa de circuito. Ele tem um processador, memória e hardware de E/S que permitem enviar e receber sinais digitais para outros dispositivos. Ao contrário de um computador, um microcontrolador não é potente e geralmente não executa um sistema operacional. Em vez disso, eles têm processadores pequenos, pouca memória e os programas que você escreve são executados diretamente no hardware. Mas, como são projetados para serem o mais simples possível, um microcontrolador pode usar muito pouca energia.

O que você aprenderá

  • Configure o microcontrolador Arduino Nano 33 BLE e transforme-o em uma "varinha mágica" digital.
  • Configure a IDE do Arduino e instale as bibliotecas necessárias.
  • Implantar o programa no dispositivo
  • Faça vários feitiços acenando com a varinha mágica e confira as previsões

O que é necessário

2. Configurar o microcontrolador Arduino

Desembale o Arduino

Retire o dispositivo da caixa e puxe-o para fora da espuma de embalagem. Ele é condutor e pode causar problemas.

6ed84a651c871a58.jpeg

Conecte ao laptop

  • Conecte o cabo micro USB ao conector no chip.
  • Conecte a outra extremidade do cabo a um conector USB no laptop.
  • O LED inferior esquerdo do Arduino (superior esquerdo na imagem abaixo) precisa acender.

c6936696f9659104.jpeg

Conheça o fluxo de trabalho

99852afbed7e78b0.png

Como mostrado no diagrama acima, o intérprete do TFLite no Arduino executa inferências periodicamente no modelo. O modelo usa os dados processados do acelerômetro como entrada e gera uma previsão que sugere o gesto mais provável. Além disso, uma saída desejada seria impressa e os LEDs certos acenderiam.

3. Configurar o ambiente de desenvolvimento integrado do Arduino

1. Faça o download da IDE do Arduino

Para implantar o programa no microcontrolador Arduino, usamos a IDE do Arduino.

Depois de fazer o download, instale e abra a IDE do Arduino clicando no aplicativo cujo ícone é assim: 75717f13527f36b9.png

A página de destino inicial seria aberta da seguinte forma:

933c91e6e1997c61.png

2. Configurar o Board Manager

  1. No menu do Arduino, selecione Tools -> Board: "Arduino .." —> Boards Manager.
  2. Pesquise "Arduino Nano 33 BLE" e instale o Arduino nRF528x Boards (Mbed OS). Isso garante que o microcontrolador Arduino Nano 33 BLE seja compatível com a IDE do Arduino. 817c63346152eda9.png
  1. No menu do Arduino, selecione Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE".

9357691e1a1348eb.png

  1. Por fim, verifique se a placa selecionada é "Arduino Nano 33 BLE" no canto inferior direito da IDE.

aa08706bb84fa9b2.png

3. Configurar a porta

No menu do Arduino, selecione Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE). Você verá algo como:

8c25990d0c6fb6f8.png

4. Verificar a conexão do quadro

No menu do Arduino, selecione Tools -> Get Board Info. Você verá algo como:

ccd8f5305be6cf59.png

4. Instalar bibliotecas

1. Biblioteca do TensorFlow Arduino

Essa biblioteca contém todos os exemplos do TensorFlow Lite para microcontroladores, incluindo o código-fonte da varinha mágica necessário para este codelab.

  1. No menu do Arduino, selecione Sketch -> Include Library -> Add .ZIP Library....
  2. Adicione a biblioteca do TensorFlow Arduino .zip que você baixou.

2. LSM9DS1 Arduino Library

Essa biblioteca permite ler os valores do acelerômetro, do magnetômetro e do giroscópio da IMU LSM9DS1 no Arduino Nano 33 BLE Sense.

  1. No menu do Arduino, selecione Sketch -> Include -> Manage Libraries....
  2. Pesquise e instale o "Arduino_LSM9DS1". ac2f78a737c5f233.png

5. Carregar e criar o exemplo

1. Carregar o exemplo

No menu do Arduino, selecione File -> Examples -> Arduino_TensorFlowLite -> magic_wand para carregar o código de exemplo.

de349f2d3cb49b98.png

Isso vai carregar o código-fonte da varinha mágica.

cda8c35a597b0798.png

2. Criar o exemplo

Clique no botão Upload na janela do esboço.

71cb1474d5e14669.png

Depois de alguns minutos, um texto vermelho vai indicar que a atualização foi concluída. Durante o upload, o LED direito deve piscar e depois ficar apagado.

3df1d0858c6e40a4.png

6. Demonstração

No momento, a varinha mágica detecta três gestos, conforme mostrado abaixo: 99a607da66af9fc8.png

  1. Asa: comece no canto superior esquerdo e trace cuidadosamente a letra "W" por dois segundos.
  2. Toque: comece na posição vertical e mova a varinha em um círculo no sentido horário por um segundo.
  3. Inclinação: comece segurando a varinha para cima, com os LEDs voltados para você. Mova a varinha para baixo em uma inclinação para a esquerda e depois horizontalmente para a direita por um segundo.

A imagem a seguir demonstra dois gestos. Primeiro, uma inclinação e depois uma asa (use isso como referência para sua demonstração).

9208eb1207211349.gif

Para executar a demonstração, siga as instruções abaixo:

  1. Com o USB conectado, selecione Tools -> Serial Monitor no menu do Arduino. Inicialmente, ela vai abrir uma tela em branco sem saída.

38e8d53652eb28f2.png

  1. Mova o microcontrolador Arduino para traçar cada uma das formas acima com cuidado e verifique se o monitor serial detecta o gesto.

60b8a0017bcae419.png

  1. Na saída do monitor serial, notamos que a varinha mágica detectou todas as formas. O LED à direita também vai acender.

7. Próximas etapas

Parabéns! Você criou sua primeira "varinha mágica" que reconhece gestos em um microcontrolador Arduino.

Esperamos que você tenha gostado desta breve introdução ao desenvolvimento com o TensorFlow Lite para microcontroladores. A ideia de aprendizado profundo em microcontroladores é nova e interessante. Recomendamos que você teste essa tecnologia.

Documentos de referência

647c3ef0dc103804.png

Agradecemos a atenção e divirta-se criando!