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 a fim de executar um modelo de aprendizado profundo no BLE Arduino Nano 33. O microcontrolador é transformado em uma "varinha mágica" digital pelo usuário acenar e lançar vários feitiços. Conforme o usuário move a varinha, esses dados complexos e multidimensionais do sensor, que seriam inescrutáveis para um ser humano, são transmitidos como uma entrada para o modelo, o que gera uma classificação simples que nos alerta caso tenha ocorrido um dos vários movimentos.

9208eb1207211349.gif

Machine learning em microcontroladores

O machine learning pode ser usado para criar ferramentas inteligentes que tornam como o Google Assistente. No entanto, essas experiências costumam exigir muita computação ou recursos, como um servidor de nuvem potente ou um desktop. No entanto, agora é possível realizar inferências de machine learning em hardwares minúsculos e de baixa potência, como microcontroladores.

Microcontroladores são extremamente comuns, baratos, requerem muito pouca energia e são muito confiáveis. Eles são parte de todos os tipos de dispositivos domésticos: eletrodomésticos, carros e brinquedos. Na verdade, cerca de 30 bilhões de dispositivos com microcontroladores são produzidos todos os anos.

1914a419dfacf0b5.jpeg

Ao levar 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 eletrodomésticos inteligentes que se adaptam à sua rotina diária, sensores industriais inteligentes que entendem a diferença entre problemas e operação normal e brinquedos mágicos que podem ajudar as crianças a aprender de forma divertida e divertida.

TensorFlow Lite para microcontroladores (software)

864114d0c2b4c919.png

O TensorFlow é o framework de machine learning de código aberto do Google para treinamento e execução de modelos. O TensorFlow Lite é um framework de software, uma versão otimizada do TensorFlow, destinada à execução de 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, destinada a executar modelos do TensorFlow em hardware pequeno e de baixa potência, como microcontroladores. Ele segue as restrições exigidas nesses ambientes incorporados, ou seja, tem um tamanho binário pequeno, não precisa de suporte a sistemas operacionais, bibliotecas C ou C++ padrão, alocação de memória dinâmica etc.

Arduino Nano 33 BLE (hardware)

bcd452d4d660efa9.jpeg

O Arduino é uma plataforma popular de código aberto usada para a criação de projetos eletrônicos. Ela consiste em:

  1. Uma placa de circuito programável física (geralmente um microcontrolador), como o Arduino Nano 33 BLE usado neste codelab.
  2. O ambiente de desenvolvimento integrado (IDE, na sigla em inglês) do Arduino, 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 microcontroladores: um computador pequeno em uma única placa de circuito. Ele tem processador, memória e hardware de E/S que permitem enviar e receber sinais digitais para outros dispositivos. Ao contrário de um computador, os microcontroladores não têm potência e geralmente não executam um sistema operacional. Em vez disso, elas têm processadores pequenos, sem muita memória, e os programas que você escreve são executados diretamente no hardware. No entanto, como eles foram projetados para ser o mais simples possível, um microcontrolador pode usar pouquíssima energia.

O que você aprenderá

O que é necessário

2. Configurar o microcontrolador Arduino

Descompactar o Arduino

Retire o item da caixa e retire da espuma da embalagem. Ela é condutora e, caso contrário, pode causar problemas!

6ed84a651c871a58.jpeg

Conecte ao seu laptop

  • Conecte o cabo microUSB à entrada do chip.
  • Conecte a outra extremidade do cabo a uma entrada USB no laptop.
  • O LED inferior esquerdo do Arduino (canto superior esquerdo na imagem abaixo) acenderá.

c6936696f9659104.jpeg

Conhecer o fluxo de trabalho

99852afbed7e78b0.png

Como mostrado no diagrama acima, o intérprete do TFLite no Arduino executa periodicamente a inferência no modelo. O modelo usa os dados processados do acelerômetro como entrada e gera uma previsão que sugere o gesto que provavelmente ocorreu. Além disso, a saída esperada é exibida, e os LEDs corretos acendem.

3. Configurar o ambiente de desenvolvimento integrado do Arduino

1. Faça o download do ambiente de desenvolvimento integrado do Arduino

Para implantar o programa no microcontrolador Arduino, usamos o ambiente de desenvolvimento integrado do Arduino.

Depois de fazer o download, instale e abra o ambiente de desenvolvimento integrado do Arduino clicando no aplicativo com o seguinte ícone: 75717f13527f36b9.png

A página de destino inicial abriria da seguinte forma:

933c91e6e1997c61.png

2. configurar o administrador do Conselho

  1. No menu do Arduino, selecione Tools -> Board: "Arduino .." —> Boards Manager
  2. Pesquise "Arduino Nano 33 BLE" e instale Arduino nRF528x Boards (Mbed OS). Isso garante que o microcontrolador Arduino Nano 33 BLE seja compatível com o ambiente de desenvolvimento integrado 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 do 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 da placa

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

ccd8f5305be6cf59.png

4. Instalar bibliotecas

1. biblioteca Arduino do TensorFlow

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 Arduino do TensorFlow .zip que você transferiu por download.

2. LSM9DS1 Biblioteca Arduino

Essa biblioteca permite que você leia 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 app "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 exemplo de código.

de349f2d3cb49b98.png

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

cda8c35a597b0798.png

2. Criar o exemplo

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

71cb1474d5e14669.png

Depois de alguns minutos, você verá um texto em vermelho indicando que o flash terminou. Durante o upload, o LED direito pisca e escurece no final.

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 com cuidado a letra "W". por dois segundos.
  2. Anel: comece na vertical, mova a varinha em um círculo no sentido horário por um segundo.
  3. Inclinação: comece segurando a varinha voltada para cima, com os LEDs na sua direção. Mova a varinha para baixo em uma inclinação à esquerda e depois horizontalmente para a direita por um segundo.

A imagem abaixo demonstra dois gestos. Primeiro, uma Pista e depois uma Wing (use-a 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, ele 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 ver 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! Você também notará que o LED direito acende.

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 do aprendizado profundo em microcontroladores é nova e empolgante, e recomendamos que você saia e experimente.

Documentos de referência

647c3ef0dc103804.png

Obrigado e divirta-se criando!