A junção das áreas de Machine Learning em ambiente embarcado/IoT tem crescido bastante, sendo atualmente chamada de TinyML. Já temos modelos robustos e pequenos o suficientes para rodar até mesmo em micro controladores com 16kb de memória. Nessa palestra vou mostrar as diferentes formas de se trazer modelos de Machine Learning para ambiente embarcado usando o ecossistema do Tensorflow.
Arquitetura de Internet das Coisas usando Google Cloud
TinyML - IoT e Machine Learning
1. MACHINE LEARNING EM IOT
COM TENSORFLOW
Alvaro Viebrantz
Google Developer Expert for IoT and Product Engineer at Leverege
aviebrantz.com
@alvaroviebrantz
2. IoT + ML ?
Tensorflow
para IoT
Projetos
práticos
O que vamos ver hoje ?
4. Dispositivos IoT
Apesar de contar, na maioria das vezes não estamos falando disso
• Celulares
• Carros inteligentes
• Roteadores/Gateways
• Raspberry Pi’s e afins
5. Dispositivos IoT
Essa classe de dispositivos são bem mais poderosos
CPU Cores Memory Storage
Power
Consumption
Usage under Load Price
Raspberry
Pi 3
1.2 Ghz 4 1 GB Up to 32 GB 6W / 400 mA @idle 700 mA @load $35
Pixel 4a 2.2 Ghz 8 6 GB Up to 128 GB 5W / 80mA @idle 900 mA @load $350
Google
Nest Mini
1.4 Ghz 4 512 MB 4 GB 2W / 150 mA @idle 210 mA @load $50
NVIDIA
Drive PX2
1.4 Ghz
8 CPU
4 GPU
16 GB Up to 128 GB 60 W / 16 A @idle 50 A @load $800
7. Dispositivos IoT
Bastante limitados em memoria, cpu e uso de bateria
• Dispositivos bem menores e mais baratos
• Lampadas, Sensores de porta, Fechaduras Smart, Termostatos
• Smartwatches e Fitness bands
• Rastreadores em geral - GPS, rede celular, LoRa, etc
• Assistentes pessoais - Alexa/Google Assistant
• Na maioria das vezes, não tem sistema operacional nenhum
20. Manutenção preditiva
Padrões de vibração em motores
github.com/ShawnHymel/tinyml-example-anomaly-detection
• Detectar anomalias no funcionamento de um
equipamento
• Projeto usando um ESP32 + Accelerometro
• Diferentes modelos testados rodando no
embarcado
• Auto Encoder
• Mahalanobis Distance
• github.com/ShawnHymel/tinyml-example-
anomaly-detection
23. TensorFlow Lite
Mobile e Internet das Coisas
• Plataformas
• Android e iOS
• Linux Embarcado
• Web com TensorFlowJS
• Backend/Delegate
• CPU
• GPU WebGL / OpenCL / Open GL
• iOS Core ML / Metal
• Web Assembly
• Edge TPU ⭐
25. TensorFlow Lite Micro
Micro-controladores e dispositivos com 16kb de ram ou mais
• Arquiteturas
• Arm Cortex-M e CMSIS DSP
• XTensa - ESP32
• Biblioteca em C/C++
• Demos
• Detecção de hotwords - Sim/Não
• Varinha mágica - Detecta diferentes movimentos
• Deteção de Pessoas com Camera
• Conjuntos de instruções limitado
• www.tensorflow.org/lite/microcontrollers/build_convert#operation_support
26. Relembrando alguns devices
Varios tem suporte ao TensorFlow Lite Micro
CPU Memory Flash Connectivity GPIO Arch
Power
Consump
tion
Deep
Sleep
Price
ATMega
328p
16 Mhz 2 Kb 32 Kb None 24
AVR RISC 8
bit
40mA 6uA $1.7
STM32
“Blue Pill”
72 Mhz 20 Kb 64 kb None 32
ARM Cortex
M3
8mA 3uA $2.3
Nordic
nrf52840
64 Mhz 256 Kb 1 MiB
Ble/Zigbee/
Thread
36
ARM Cortex
M4F
16mA 2uA $3
ESP 32
160 Mhz
Dual Core
512 Kb
Up to
16MiB
Wifi/Ble 36
XTensa
32 bit
200mA 10uA $3
27. Digital Signal Processing - DSP
Instruções otimizadas para cálculos complexos em Micro Controladores
• “GPU” para micro controladores
• Instruções especializadas para determinadas tarefas
39. 39
Meu Computador Raspberry Pi 3
TensorFlow.js
Core
8 seconds
per frame
45 seconds
per frame
TensorFlow.js
Node
200 milliseconds
per frame
1 second
per frame
Dica - Use tfjs-node ou tfjs-node-gpu se possível
Performance
48. Melhor dos dois mundos
Detect
Objects using
CocoSSD
Filtrar
gatos e
cortar as
imagens
Classificar
com modelo
customizado
Usar um modelo pré treinado para detecção de objetos primeiro e depois o modelo
customizado
54. 54
Inspirações
Outros projetos de TinyML com Tensorflow
blog.arduino.cc/2019/10/15/get-started-with-machine-learning-on-arduino/
medium.com/@devdevcharlie/play-street-fighter-with-body-movements-using-arduino-and-tensorflow-js-6b0e4734e118
55. 55
Raquete Inteligente
Classificar os diferentes movimentos do tênis - Backhand, forehand e serve
• Capturar dados de movimento
• Acelerômetro e Giroscopio
• Captura via Bluetooth
• Janelas de 1 segundo de captura
• 60*6 pontos por segundo ( 16ms de intervalo ) = 360 de entrada
• Treinar modelo para classificar os movimentos
• Analise espectral dos dados de movimento
• Classificador com Redes Neurais
• Exportar modelo TFLite pra ser usado com TF Lite Micro
61. 61
Exportando o modelo
SDK da Edge Impulse usa Tensorflow Micro + DSP
• Analise espectral usa DSP
• Classificador usa
TensorFlow Micro
• Estatísticas final do
Modelo
• 4kb de RAM e 28k de
Flash 😍
64. 64
Próximos passos
Melhorar o modelo e compartilhar os dados
• Capturar mais dados
• Serve/Saques
• Diferentes pessoas, alturas, estilos de jogo
• Capturar dados em jogo/treino
• Disponibilizar o dataset
• Treinar modelo apenas com TensorFlow
• O quanto o processamento DSP faz diferença ? ( provavelmente
muita )
• Usar com ESP32 - Mais acessível no Brasil