SlideShare uma empresa Scribd logo
MACHINE LEARNING EM IOT
COM TENSORFLOW
Alvaro Viebrantz
Google Developer Expert for IoT and Product Engineer at Leverege
aviebrantz.com
@alvaroviebrantz
IoT + ML ?
Tensorflow
para IoT
Projetos
práticos
O que vamos ver hoje ?
Internet das Coisas
Dispositivos IoT
Apesar de contar, na maioria das vezes não estamos falando disso
• Celulares
• Carros inteligentes
• Roteadores/Gateways
• Raspberry Pi’s e afins
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
Edge Devices
Performance otimizada para Machine Learning
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
www.arm.com/company/news/2020/02/record-shipments-of-arm-based-chips-in-previous-quarter
Dispositivos IoT
Bastante limitados em memoria, cpu e uso de bateria
CPU Memory Flash Connectivity GPIO Arch
Power
Consumption
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 32 bit
Cortex M3
8mA 3uA $2.3
Nordic
nrf52840
64 Mhz 256 Kb 1 MiB
Ble/Zigbee/
Thread
36
ARM 32 bit
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
Outros Edge Devices
Performance melhor para machine learning também em micro controladores
Sipeed Maix Bit Sparkfun Edge
IoT + Machine Learning
Faz sentido ?
Banda de Rede
Privacidade
Latência
Custos
Mais casos de uso
IoT + Machine Learning
Monitoramento de ativos indoor
Dados bastante ruidosos e volumosos
Comportamento de animais
Padrões de movimento - Internet of Cows/Cattle or Internet of Horses
Problemas ambientais
Animais em extinção, queimadas e desflorestamento
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
Segurança e Proteção
Detectar mascaras e possíveis acidentes no trabalho
O que o TensorFlow
oferece para IoT ?
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 ⭐
Modelos Pré treinados
Podem ser usados sem muitas alterações
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
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
Digital Signal Processing - DSP
Instruções otimizadas para cálculos complexos em Micro Controladores
• “GPU” para micro controladores
• Instruções especializadas para determinadas tarefas
Falar é fácil
Vamos ver na prática
ATENÇÃO
EU NÃO SOU NENHUM EXPERT
EM MACHINE LEARNING
Mas talvez essa seja a MELHOR
parte desses projetos
Monitoramento indoor usando
cameras como sensores
33
Arquitetura de Rede Local
34
ESP32 Cam Raspberry Pi 3
10$
35$
Podemos testar localmente using a ferramenta dns-sd
35
• http://indoor-camera-ec5d.local/jpg
• http://indoor-camera-60d8.local/jpg
Encontrando cameras locais
36
Baixar imagens, classificar
e enviar classes para a Nuvem
38
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
bit.ly/gcloud-iot-edge
Artigo descrevendo tudo que mostrei até agora
E se eu pudesse rastrear meus gatos em casa ?
Eu amo gatos
Primeira tentativa
Treinando um modelo customizado
Transfer Learning
Usando modelos pré treinados para treinar novos modelos com datasets menores
Construindo o dataset
Geralmente a parte mais dificil de qualquer projeto de ML
BAIXA ACURÁCIA NO MEU MODELO
😭😿
Usando o mesmo dataset
Treinar modelo de classificação
Train a classification model
Using the same dataset
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
50
Found a cat Found Jam
51
Found a cat Found Berry
52
Found two catsFound Jam
Found Muffin
Found Berry
Raquete de Tênis
Inteligente 🎾
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
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
56
nrf52840 Dongle Particle Xenon
10$ 20$
MPU6050
1$
57
58
59
Capturas dos dados
Captura via Web Bluetooth e envia para a platforma Edge Impulse
60
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 😍
62
63
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
65
Links e Referências
• Projetos
• github.com/alvarowolfx/gcloud-iot-edge-tensorflow
• github.com/alvarowolfx/tinyml-smart-tennis-sensor
• Links
• edgeimpulse.com
• www.tensorflow.org/lite/microcontrollers
• 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
OBRIGADO!
AVIEBRANTZ.COM
Alvaro Viebrantz
Google Developer Expert for IoT and Product Engineer at Leverege
aviebrantz.com
@alvaroviebrantz

Mais conteúdo relacionado

Mais procurados

Inside FastEnum
Inside FastEnumInside FastEnum
Inside FastEnum
Takaaki Suzuki
 
Androidの新ビルドシステム
Androidの新ビルドシステムAndroidの新ビルドシステム
Androidの新ビルドシステム
l_b__
 
Introdução ao owasp zap aula-01
Introdução ao owasp zap   aula-01 Introdução ao owasp zap   aula-01
Introdução ao owasp zap aula-01
prof-claudio
 
Raspberry Pi 3 - Arquitetura e Organização de Computadores I
Raspberry Pi 3 - Arquitetura e Organização de Computadores IRaspberry Pi 3 - Arquitetura e Organização de Computadores I
Raspberry Pi 3 - Arquitetura e Organização de Computadores I
Edwildson Coelho Rodrigues
 
Livre blanc docker
Livre blanc docker Livre blanc docker
Livre blanc docker
JEAN-GUILLAUME DUJARDIN
 
ワタナベ難読化シェル芸
ワタナベ難読化シェル芸ワタナベ難読化シェル芸
ワタナベ難読化シェル芸
xztaityozx
 
Microcontroller from basic_to_advanced
Microcontroller from basic_to_advancedMicrocontroller from basic_to_advanced
Microcontroller from basic_to_advanced
Imran Sheikh
 
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
DeNA
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
torisoup
 
超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk
超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk
超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk
Netwalker lab kapper
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
 
MEMORIJE
MEMORIJEMEMORIJE
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
Ryousei Takano
 
Using or not using magic onion
Using or not using magic onionUsing or not using magic onion
Using or not using magic onion
Goichi Shinohara
 
Dave Gilbert - KVM and QEMU
Dave Gilbert - KVM and QEMUDave Gilbert - KVM and QEMU
Dave Gilbert - KVM and QEMU
Danny Abukalam
 
Conhecendo os componentes de hardware
Conhecendo os componentes de hardwareConhecendo os componentes de hardware
Conhecendo os componentes de hardware
Clayton de Almeida Souza
 
建築不動産|UE4を活用した建築ビジュアライゼーション・プレゼンテーション多角提案のススメ | UNREAL FEST EXTREME 2020 WINTER
建築不動産|UE4を活用した建築ビジュアライゼーション・プレゼンテーション多角提案のススメ | UNREAL FEST EXTREME 2020 WINTER建築不動産|UE4を活用した建築ビジュアライゼーション・プレゼンテーション多角提案のススメ | UNREAL FEST EXTREME 2020 WINTER
建築不動産|UE4を活用した建築ビジュアライゼーション・プレゼンテーション多角提案のススメ | UNREAL FEST EXTREME 2020 WINTER
エピック・ゲームズ・ジャパン Epic Games Japan
 
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunityUnityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
torisoup
 

Mais procurados (20)

Inside FastEnum
Inside FastEnumInside FastEnum
Inside FastEnum
 
Androidの新ビルドシステム
Androidの新ビルドシステムAndroidの新ビルドシステム
Androidの新ビルドシステム
 
Introdução ao owasp zap aula-01
Introdução ao owasp zap   aula-01 Introdução ao owasp zap   aula-01
Introdução ao owasp zap aula-01
 
Raspberry Pi 3 - Arquitetura e Organização de Computadores I
Raspberry Pi 3 - Arquitetura e Organização de Computadores IRaspberry Pi 3 - Arquitetura e Organização de Computadores I
Raspberry Pi 3 - Arquitetura e Organização de Computadores I
 
Livre blanc docker
Livre blanc docker Livre blanc docker
Livre blanc docker
 
ワタナベ難読化シェル芸
ワタナベ難読化シェル芸ワタナベ難読化シェル芸
ワタナベ難読化シェル芸
 
Racunarstvo u-oblaku
Racunarstvo u-oblakuRacunarstvo u-oblaku
Racunarstvo u-oblaku
 
Microcontroller from basic_to_advanced
Microcontroller from basic_to_advancedMicrocontroller from basic_to_advanced
Microcontroller from basic_to_advanced
 
Unity WebSocket
Unity WebSocketUnity WebSocket
Unity WebSocket
 
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
IoTと業務システムをつなぐgRPC/RESTサービスの開発と運用
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk
超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk
超激安WinタブレットにLinux、*BSDを入れて 賢く経済的にリサイクルしよう in OSC東京2018 #osc18tk
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
 
MEMORIJE
MEMORIJEMEMORIJE
MEMORIJE
 
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
HPCユーザが知っておきたいTCP/IPの話 ~クラスタ・グリッド環境の落とし穴~
 
Using or not using magic onion
Using or not using magic onionUsing or not using magic onion
Using or not using magic onion
 
Dave Gilbert - KVM and QEMU
Dave Gilbert - KVM and QEMUDave Gilbert - KVM and QEMU
Dave Gilbert - KVM and QEMU
 
Conhecendo os componentes de hardware
Conhecendo os componentes de hardwareConhecendo os componentes de hardware
Conhecendo os componentes de hardware
 
建築不動産|UE4を活用した建築ビジュアライゼーション・プレゼンテーション多角提案のススメ | UNREAL FEST EXTREME 2020 WINTER
建築不動産|UE4を活用した建築ビジュアライゼーション・プレゼンテーション多角提案のススメ | UNREAL FEST EXTREME 2020 WINTER建築不動産|UE4を活用した建築ビジュアライゼーション・プレゼンテーション多角提案のススメ | UNREAL FEST EXTREME 2020 WINTER
建築不動産|UE4を活用した建築ビジュアライゼーション・プレゼンテーション多角提案のススメ | UNREAL FEST EXTREME 2020 WINTER
 
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunityUnityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
 

Semelhante a TinyML - IoT e Machine Learning

A evolução do Arduino: dos 8 aos 32-bits
A evolução do Arduino: dos 8 aos 32-bitsA evolução do Arduino: dos 8 aos 32-bits
A evolução do Arduino: dos 8 aos 32-bits
Eronides Neto
 
Facilitando a vida com Raspberry Pi e Arduino
Facilitando a vida com Raspberry Pi e ArduinoFacilitando a vida com Raspberry Pi e Arduino
Facilitando a vida com Raspberry Pi e Arduino
Thiago Da Silva
 
Introdução a Sistemas Embarcados com Arduino - mini-curso
Introdução a Sistemas Embarcados com Arduino - mini-cursoIntrodução a Sistemas Embarcados com Arduino - mini-curso
Introdução a Sistemas Embarcados com Arduino - mini-curso
Felipe Martins
 
Micropython - Python para microcontroladores
Micropython - Python para microcontroladoresMicropython - Python para microcontroladores
Micropython - Python para microcontroladores
Fabio Souza
 
Se você é .NET, você é NETDUINO - TDC 2013 - Porto Alegre
Se você é .NET, você é NETDUINO - TDC 2013 - Porto AlegreSe você é .NET, você é NETDUINO - TDC 2013 - Porto Alegre
Se você é .NET, você é NETDUINO - TDC 2013 - Porto Alegre
Marcio Martins
 
Internet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentosInternet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentos
Douglas Esteves
 
Internet das coisas
Internet das coisasInternet das coisas
Internet das coisas
Rogerio Alencar Filho
 
Palestra campus party - julho 2015
Palestra   campus party - julho 2015Palestra   campus party - julho 2015
Palestra campus party - julho 2015
Murilo Pontes
 
Existe um mundo lá fora esperando para ser controlado: Delphi Mobile + Arduino
Existe um mundo lá fora esperando para ser controlado: Delphi Mobile + ArduinoExiste um mundo lá fora esperando para ser controlado: Delphi Mobile + Arduino
Existe um mundo lá fora esperando para ser controlado: Delphi Mobile + Arduino
Vic Fernandes
 
Webinar – Desenvolvendo projetos com a Thunderboard EFR32BG22
Webinar – Desenvolvendo projetos com a Thunderboard EFR32BG22Webinar – Desenvolvendo projetos com a Thunderboard EFR32BG22
Webinar – Desenvolvendo projetos com a Thunderboard EFR32BG22
Embarcados
 
Webinar: Redes Mesh para Monitoramento e Controle de Sensores
Webinar: Redes Mesh para Monitoramento e Controle de SensoresWebinar: Redes Mesh para Monitoramento e Controle de Sensores
Webinar: Redes Mesh para Monitoramento e Controle de Sensores
Embarcados
 
A Internet das coisas e a programação de micro controladores
A Internet das coisas e a programação de micro controladoresA Internet das coisas e a programação de micro controladores
A Internet das coisas e a programação de micro controladores
Igor Kondrasovas
 
Desenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das CoisasDesenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das Coisas
Marco Antonio Maciel
 
Introdução a platadormas embarcadas
Introdução a platadormas embarcadasIntrodução a platadormas embarcadas
Introdução a platadormas embarcadas
Felipe Meganha
 
Soluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseSoluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e Firebase
Alvaro Viebrantz
 
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
André Curvello
 
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Alvaro Viebrantz
 
TDC2018SP | Trilha JavaScript - Criando solucoes de IoT usando Javascript de ...
TDC2018SP | Trilha JavaScript - Criando solucoes de IoT usando Javascript de ...TDC2018SP | Trilha JavaScript - Criando solucoes de IoT usando Javascript de ...
TDC2018SP | Trilha JavaScript - Criando solucoes de IoT usando Javascript de ...
tdc-globalcode
 
IoT – Internet of Things. Do Básico ao Hello World!
IoT – Internet of Things. Do Básico ao Hello World!IoT – Internet of Things. Do Básico ao Hello World!
IoT – Internet of Things. Do Básico ao Hello World!
Rodolfo Cruz
 

Semelhante a TinyML - IoT e Machine Learning (20)

A evolução do Arduino: dos 8 aos 32-bits
A evolução do Arduino: dos 8 aos 32-bitsA evolução do Arduino: dos 8 aos 32-bits
A evolução do Arduino: dos 8 aos 32-bits
 
Facilitando a vida com Raspberry Pi e Arduino
Facilitando a vida com Raspberry Pi e ArduinoFacilitando a vida com Raspberry Pi e Arduino
Facilitando a vida com Raspberry Pi e Arduino
 
Introdução a Sistemas Embarcados com Arduino - mini-curso
Introdução a Sistemas Embarcados com Arduino - mini-cursoIntrodução a Sistemas Embarcados com Arduino - mini-curso
Introdução a Sistemas Embarcados com Arduino - mini-curso
 
Micropython - Python para microcontroladores
Micropython - Python para microcontroladoresMicropython - Python para microcontroladores
Micropython - Python para microcontroladores
 
Se você é .NET, você é NETDUINO - TDC 2013 - Porto Alegre
Se você é .NET, você é NETDUINO - TDC 2013 - Porto AlegreSe você é .NET, você é NETDUINO - TDC 2013 - Porto Alegre
Se você é .NET, você é NETDUINO - TDC 2013 - Porto Alegre
 
Internet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentosInternet das coisas, conhecendo plataformas de desenvolvimentos
Internet das coisas, conhecendo plataformas de desenvolvimentos
 
Tw 9850 201
Tw 9850 201Tw 9850 201
Tw 9850 201
 
Internet das coisas
Internet das coisasInternet das coisas
Internet das coisas
 
Palestra campus party - julho 2015
Palestra   campus party - julho 2015Palestra   campus party - julho 2015
Palestra campus party - julho 2015
 
Existe um mundo lá fora esperando para ser controlado: Delphi Mobile + Arduino
Existe um mundo lá fora esperando para ser controlado: Delphi Mobile + ArduinoExiste um mundo lá fora esperando para ser controlado: Delphi Mobile + Arduino
Existe um mundo lá fora esperando para ser controlado: Delphi Mobile + Arduino
 
Webinar – Desenvolvendo projetos com a Thunderboard EFR32BG22
Webinar – Desenvolvendo projetos com a Thunderboard EFR32BG22Webinar – Desenvolvendo projetos com a Thunderboard EFR32BG22
Webinar – Desenvolvendo projetos com a Thunderboard EFR32BG22
 
Webinar: Redes Mesh para Monitoramento e Controle de Sensores
Webinar: Redes Mesh para Monitoramento e Controle de SensoresWebinar: Redes Mesh para Monitoramento e Controle de Sensores
Webinar: Redes Mesh para Monitoramento e Controle de Sensores
 
A Internet das coisas e a programação de micro controladores
A Internet das coisas e a programação de micro controladoresA Internet das coisas e a programação de micro controladores
A Internet das coisas e a programação de micro controladores
 
Desenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das CoisasDesenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das Coisas
 
Introdução a platadormas embarcadas
Introdução a platadormas embarcadasIntrodução a platadormas embarcadas
Introdução a platadormas embarcadas
 
Soluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e FirebaseSoluções de IoT usando Google Cloud e Firebase
Soluções de IoT usando Google Cloud e Firebase
 
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
Dispositivos IoT com FPGAs - Alto poder de processamento para crescentes dema...
 
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
Criando soluções de IoT usando Javascript de Ponta a Ponta: do Hardware até a...
 
TDC2018SP | Trilha JavaScript - Criando solucoes de IoT usando Javascript de ...
TDC2018SP | Trilha JavaScript - Criando solucoes de IoT usando Javascript de ...TDC2018SP | Trilha JavaScript - Criando solucoes de IoT usando Javascript de ...
TDC2018SP | Trilha JavaScript - Criando solucoes de IoT usando Javascript de ...
 
IoT – Internet of Things. Do Básico ao Hello World!
IoT – Internet of Things. Do Básico ao Hello World!IoT – Internet of Things. Do Básico ao Hello World!
IoT – Internet of Things. Do Básico ao Hello World!
 

Mais de Alvaro Viebrantz

BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
Alvaro Viebrantz
 
End to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdfEnd to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdf
Alvaro Viebrantz
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
Alvaro Viebrantz
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
Alvaro Viebrantz
 
Prototipação em hackathons
Prototipação em hackathonsPrototipação em hackathons
Prototipação em hackathons
Alvaro Viebrantz
 
Building REST APIs using gRPC and Go
Building REST APIs using gRPC and GoBuilding REST APIs using gRPC and Go
Building REST APIs using gRPC and Go
Alvaro Viebrantz
 
O que projetos de IoT precisam ?
O que projetos de IoT precisam ?O que projetos de IoT precisam ?
O que projetos de IoT precisam ?
Alvaro Viebrantz
 
Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google Cloud
Alvaro Viebrantz
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus Dados
Alvaro Viebrantz
 
Rodando uma API Com Django Rest Framework no Google Cloud
Rodando uma API Com Django Rest Framework  no Google CloudRodando uma API Com Django Rest Framework  no Google Cloud
Rodando uma API Com Django Rest Framework no Google Cloud
Alvaro Viebrantz
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google Cloud
Alvaro Viebrantz
 
Edge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google CloudEdge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google Cloud
Alvaro Viebrantz
 
Iniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google CloudIniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google Cloud
Alvaro Viebrantz
 
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São PauloConstruindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Alvaro Viebrantz
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google Cloud
Alvaro Viebrantz
 
Construindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoTConstruindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoT
Alvaro Viebrantz
 
Explorando Go em Ambiente Embarcado
Explorando Go em Ambiente EmbarcadoExplorando Go em Ambiente Embarcado
Explorando Go em Ambiente Embarcado
Alvaro Viebrantz
 
Soluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google CloudSoluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google Cloud
Alvaro Viebrantz
 
Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Alvaro Viebrantz
 
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018
Alvaro Viebrantz
 

Mais de Alvaro Viebrantz (20)

BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage API
 
End to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdfEnd to End IoT projects with Zephyr.pdf
End to End IoT projects with Zephyr.pdf
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Construindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em GoConstruindo aplicações Cloud Native em Go
Construindo aplicações Cloud Native em Go
 
Prototipação em hackathons
Prototipação em hackathonsPrototipação em hackathons
Prototipação em hackathons
 
Building REST APIs using gRPC and Go
Building REST APIs using gRPC and GoBuilding REST APIs using gRPC and Go
Building REST APIs using gRPC and Go
 
O que projetos de IoT precisam ?
O que projetos de IoT precisam ?O que projetos de IoT precisam ?
O que projetos de IoT precisam ?
 
Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google Cloud
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus Dados
 
Rodando uma API Com Django Rest Framework no Google Cloud
Rodando uma API Com Django Rest Framework  no Google CloudRodando uma API Com Django Rest Framework  no Google Cloud
Rodando uma API Com Django Rest Framework no Google Cloud
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google Cloud
 
Edge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google CloudEdge computing in practice using IoT, Tensorflow and Google Cloud
Edge computing in practice using IoT, Tensorflow and Google Cloud
 
Iniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google CloudIniciando com LoRa, The Things Network e Google Cloud
Iniciando com LoRa, The Things Network e Google Cloud
 
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São PauloConstruindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
 
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google CloudEdge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing na prática com IoT, Machine Learning e Google Cloud
 
Construindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoTConstruindo projetos com Google Assistant e IoT
Construindo projetos com Google Assistant e IoT
 
Explorando Go em Ambiente Embarcado
Explorando Go em Ambiente EmbarcadoExplorando Go em Ambiente Embarcado
Explorando Go em Ambiente Embarcado
 
Soluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google CloudSoluções de IoT usando Arduino e Google Cloud
Soluções de IoT usando Arduino e Google Cloud
 
Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018Arquitetura de IoT na prática com Google Cloud - Join Community 2018
Arquitetura de IoT na prática com Google Cloud - Join Community 2018
 
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018
Codelab - Google Cloud IoT Core e MongooseOS - I/O Extended Cuiabá 2018
 

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
  • 6. Edge Devices Performance otimizada para Machine Learning
  • 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
  • 9. Dispositivos IoT Bastante limitados em memoria, cpu e uso de bateria CPU Memory Flash Connectivity GPIO Arch Power Consumption 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 32 bit Cortex M3 8mA 3uA $2.3 Nordic nrf52840 64 Mhz 256 Kb 1 MiB Ble/Zigbee/ Thread 36 ARM 32 bit 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
  • 10. Outros Edge Devices Performance melhor para machine learning também em micro controladores Sipeed Maix Bit Sparkfun Edge
  • 11. IoT + Machine Learning Faz sentido ?
  • 16. Mais casos de uso IoT + Machine Learning
  • 17. Monitoramento de ativos indoor Dados bastante ruidosos e volumosos
  • 18. Comportamento de animais Padrões de movimento - Internet of Cows/Cattle or Internet of Horses
  • 19. Problemas ambientais Animais em extinção, queimadas e desflorestamento
  • 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
  • 21. Segurança e Proteção Detectar mascaras e possíveis acidentes no trabalho
  • 22. O que o TensorFlow oferece para IoT ?
  • 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 ⭐
  • 24. Modelos Pré treinados Podem ser usados sem muitas alterações
  • 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
  • 28. Falar é fácil Vamos ver na prática
  • 29. ATENÇÃO EU NÃO SOU NENHUM EXPERT EM MACHINE LEARNING
  • 30. Mas talvez essa seja a MELHOR parte desses projetos
  • 32.
  • 34. 34 ESP32 Cam Raspberry Pi 3 10$ 35$
  • 35. Podemos testar localmente using a ferramenta dns-sd 35 • http://indoor-camera-ec5d.local/jpg • http://indoor-camera-60d8.local/jpg Encontrando cameras locais
  • 36. 36
  • 37. Baixar imagens, classificar e enviar classes para a Nuvem
  • 38. 38
  • 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
  • 41. E se eu pudesse rastrear meus gatos em casa ? Eu amo gatos
  • 42. Primeira tentativa Treinando um modelo customizado
  • 43. Transfer Learning Usando modelos pré treinados para treinar novos modelos com datasets menores
  • 44. Construindo o dataset Geralmente a parte mais dificil de qualquer projeto de ML
  • 45. BAIXA ACURÁCIA NO MEU MODELO 😭😿
  • 46. Usando o mesmo dataset Treinar modelo de classificação
  • 47. Train a classification model Using the same dataset
  • 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
  • 49.
  • 50. 50 Found a cat Found Jam
  • 51. 51 Found a cat Found Berry
  • 52. 52 Found two catsFound Jam Found Muffin Found Berry
  • 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
  • 56. 56 nrf52840 Dongle Particle Xenon 10$ 20$ MPU6050 1$
  • 57. 57
  • 58. 58
  • 59. 59 Capturas dos dados Captura via Web Bluetooth e envia para a platforma Edge Impulse
  • 60. 60
  • 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 😍
  • 62. 62
  • 63. 63
  • 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
  • 65. 65 Links e Referências • Projetos • github.com/alvarowolfx/gcloud-iot-edge-tensorflow • github.com/alvarowolfx/tinyml-smart-tennis-sensor • Links • edgeimpulse.com • www.tensorflow.org/lite/microcontrollers • 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
  • 66. OBRIGADO! AVIEBRANTZ.COM Alvaro Viebrantz Google Developer Expert for IoT and Product Engineer at Leverege aviebrantz.com @alvaroviebrantz