O TensorFlow Lite para microcontroladores foi desenvolvido para executar modelos de machine learning em microcontroladores e outros dispositivos usando apenas alguns kilobytes de memória. O ambiente de execução principal cabe em 16 KB em um Arm Cortex M3 e pode executar muitos modelos básicos. Ele não requer suporte a sistemas operacionais, bibliotecas C ou C++ padrão nem a alocação de memória dinâmica.
Por que os microcontroladores são importantes
Os microcontroladores normalmente são dispositivos de computação pequenos e de baixa potência incorporados a hardware que exige computação básica. Ao levar machine learning a microcontroladores, podemos impulsionar a inteligência de bilhões de dispositivos que usamos em nossas vidas, incluindo dispositivos domésticos e dispositivos de Internet das Coisas, sem depender de hardware de Internet caro nem de conexões confiáveis, que geralmente estão sujeitas a restrições de largura de banda e energia e resultam em alta latência. Isso também ajuda a preservar a privacidade, já que nenhum dado deixa o dispositivo. 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.
Plataformas compatíveis
O TensorFlow Lite para microcontroladores é escrito em C++ 11 e requer uma plataforma de 32 bits. Ele foi testado extensivamente com muitos processadores baseados na arquitetura Arm Cortex-M Series e foi portado a outras arquiteturas, incluindo ESP32. O framework está disponível como uma biblioteca Arduino. Ele também pode gerar projetos para ambientes de desenvolvimento, como o Mbed. Ele é de código aberto e pode ser incluído em qualquer projeto C++ 11.
As seguintes placas de desenvolvimento são compatíveis:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- Kit de descoberta STM32F746
- Adafruit EdgeBadge
- Kit Adafruit do TensorFlow Lite para microcontroladores
- Circuito Adafruit Playground Bluefruit
- Espressif ESP32-DevKitC
- Espressif ESP-EYE
- Wio Terminal: ATSAMD51
- Himax WE-I Plus EVB Endpoint AI Development Board
- Synopsys DesignWare ARC EM Software Development Platform
- Sony Spresense
Explore os exemplos
Cada aplicativo de exemplo está no
GitHub
e tem um arquivo README.md
que explica como ele pode ser implantado nas plataformas
compatíveis. Alguns exemplos também têm tutoriais completos que usam uma plataforma específica,
conforme mostrado abaixo:
- Hello World: demonstra os conceitos básicos absolutos do uso do TensorFlow Lite para microcontroladores.
- Microfone: captura o áudio com um microfone para detectar as palavras "sim" e "não".
- Chave magnética: captura dados do acelerômetro para classificar três gestos físicos diferentes.
- Detecção de pessoa: captura dados da câmera com um sensor de imagem para detectar a presença ou a ausência de uma pessoa.
Fluxo de trabalho
As etapas a seguir são necessárias para implantar e executar um modelo do TensorFlow em um microcontrolador:
- Treine um modelo:
- Gere um modelo pequeno do TensorFlow que se ajuste ao dispositivo de destino e contenha operações compatíveis.
- Converta em um modelo do TensorFlow Lite usando o conversor do TensorFlow Lite.
- Converta em uma matriz de bytes C usando ferramentas padrão para armazená-la em uma memória de programa somente leitura no dispositivo.
- Execute inferência no dispositivo usando a biblioteca C++ e processe os resultados.
Limitações
O TensorFlow Lite para microcontroladores foi projetado para as restrições específicas do desenvolvimento de microcontroladores. Se você estiver trabalhando em dispositivos mais potentes (por exemplo, um dispositivo Linux incorporado como o Raspberry Pi), o framework padrão do TensorFlow Lite pode ser mais fácil de integrar.
As seguintes limitações devem ser consideradas:
- Suporte para um subconjunto limitado de operations do TensorFlow
- Suporte para um conjunto limitado de dispositivos
- API C++ de baixo nível que requer gerenciamento manual da memória
- O treinamento no dispositivo não é compatível
Próximas etapas
- Leia os primeiros passos com microcontroladores para testar o aplicativo de exemplo e aprender a usar a API.
- Entenda a biblioteca C++ para aprender a usá-la no seu próprio projeto.
- Crie e converta modelos para saber mais sobre o treinamento e a conversão de modelos para implantação em microcontroladores.