SlideShare a Scribd company logo
1 of 66
Download to read offline
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

More Related Content

What's hot

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-cursoFelipe Martins
 
Cheat Sheet
Cheat SheetCheat Sheet
Cheat SheetPerforce
 
Informática Básica - Aula 06 - Utilitários e Ferramentas do Sistema
Informática Básica - Aula 06 - Utilitários e Ferramentas do SistemaInformática Básica - Aula 06 - Utilitários e Ferramentas do Sistema
Informática Básica - Aula 06 - Utilitários e Ferramentas do SistemaJoeldson Costa Damasceno
 
Histórico e-evolução-dos-computadores-mbr1
Histórico e-evolução-dos-computadores-mbr1Histórico e-evolução-dos-computadores-mbr1
Histórico e-evolução-dos-computadores-mbr1Fernanda Firmino
 
Aula 05 - Como funciona o Computador
Aula 05 - Como funciona o ComputadorAula 05 - Como funciona o Computador
Aula 05 - Como funciona o ComputadorSuzana Viana Mota
 
Manutenção preventiva
Manutenção preventivaManutenção preventiva
Manutenção preventivaKaren Carvalho
 
Aula 10 - Adição no Sistema Binário
Aula 10 - Adição no Sistema BinárioAula 10 - Adição no Sistema Binário
Aula 10 - Adição no Sistema BinárioSuzana Viana Mota
 
Aula 13 - Algoritmos de Escalonamento
Aula 13 - Algoritmos de Escalonamento Aula 13 - Algoritmos de Escalonamento
Aula 13 - Algoritmos de Escalonamento camila_seixas
 
Persuasiune+intr o+singura+propozitie
Persuasiune+intr o+singura+propozitiePersuasiune+intr o+singura+propozitie
Persuasiune+intr o+singura+propozitieMarius Mocanu
 
Informática Básica - Planilha Eletronica - Microsoft Excel 2010
Informática Básica - Planilha Eletronica - Microsoft Excel 2010Informática Básica - Planilha Eletronica - Microsoft Excel 2010
Informática Básica - Planilha Eletronica - Microsoft Excel 2010Joeldson Costa Damasceno
 
Aprenda a instalar o windows 10 no virtual box
Aprenda a instalar o windows 10 no virtual boxAprenda a instalar o windows 10 no virtual box
Aprenda a instalar o windows 10 no virtual boxJulio Filho
 
Aula 02 introudção a computação
Aula 02 introudção a computaçãoAula 02 introudção a computação
Aula 02 introudção a computaçãoMatheus Brito
 

What's hot (20)

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
 
Aula 12 - Processador
Aula 12 - ProcessadorAula 12 - Processador
Aula 12 - Processador
 
Fontes
FontesFontes
Fontes
 
Cheat Sheet
Cheat SheetCheat Sheet
Cheat Sheet
 
Aula 1 lpa
Aula 1   lpaAula 1   lpa
Aula 1 lpa
 
Informática Básica - Aula 06 - Utilitários e Ferramentas do Sistema
Informática Básica - Aula 06 - Utilitários e Ferramentas do SistemaInformática Básica - Aula 06 - Utilitários e Ferramentas do Sistema
Informática Básica - Aula 06 - Utilitários e Ferramentas do Sistema
 
Modelo de von neumann
Modelo de von neumannModelo de von neumann
Modelo de von neumann
 
Microprocessadores
MicroprocessadoresMicroprocessadores
Microprocessadores
 
Histórico e-evolução-dos-computadores-mbr1
Histórico e-evolução-dos-computadores-mbr1Histórico e-evolução-dos-computadores-mbr1
Histórico e-evolução-dos-computadores-mbr1
 
Aula 05 - Como funciona o Computador
Aula 05 - Como funciona o ComputadorAula 05 - Como funciona o Computador
Aula 05 - Como funciona o Computador
 
Introdução a computação
Introdução a computaçãoIntrodução a computação
Introdução a computação
 
Construcao de Algoritmos - Aula 06
Construcao de Algoritmos - Aula 06Construcao de Algoritmos - Aula 06
Construcao de Algoritmos - Aula 06
 
Manutenção preventiva
Manutenção preventivaManutenção preventiva
Manutenção preventiva
 
Aula 10 - Adição no Sistema Binário
Aula 10 - Adição no Sistema BinárioAula 10 - Adição no Sistema Binário
Aula 10 - Adição no Sistema Binário
 
Aula 13 - Algoritmos de Escalonamento
Aula 13 - Algoritmos de Escalonamento Aula 13 - Algoritmos de Escalonamento
Aula 13 - Algoritmos de Escalonamento
 
Persuasiune+intr o+singura+propozitie
Persuasiune+intr o+singura+propozitiePersuasiune+intr o+singura+propozitie
Persuasiune+intr o+singura+propozitie
 
Informática Básica - Planilha Eletronica - Microsoft Excel 2010
Informática Básica - Planilha Eletronica - Microsoft Excel 2010Informática Básica - Planilha Eletronica - Microsoft Excel 2010
Informática Básica - Planilha Eletronica - Microsoft Excel 2010
 
Aprenda a instalar o windows 10 no virtual box
Aprenda a instalar o windows 10 no virtual boxAprenda a instalar o windows 10 no virtual box
Aprenda a instalar o windows 10 no virtual box
 
Aula 02 introudção a computação
Aula 02 introudção a computaçãoAula 02 introudção a computação
Aula 02 introudção a computação
 
INTEL vs AMD
INTEL vs AMDINTEL vs AMD
INTEL vs AMD
 

Similar to 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-bitsEronides 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 ArduinoThiago Da Silva
 
Micropython - Python para microcontroladores
Micropython - Python para microcontroladoresMicropython - Python para microcontroladores
Micropython - Python para microcontroladoresFabio 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 AlegreMarcio 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 desenvolvimentosDouglas Esteves
 
Palestra campus party - julho 2015
Palestra   campus party - julho 2015Palestra   campus party - julho 2015
Palestra campus party - julho 2015Murilo 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 + ArduinoVic 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 EFR32BG22Embarcados
 
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 SensoresEmbarcados
 
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 controladoresIgor Kondrasovas
 
Desenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das CoisasDesenvolvendo Produtos para Internet das Coisas
Desenvolvendo Produtos para Internet das CoisasMarco Antonio Maciel
 
Introdução a platadormas embarcadas
Introdução a platadormas embarcadasIntrodução a platadormas embarcadas
Introdução a platadormas embarcadasFelipe 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 FirebaseAlvaro 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
 
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 CloudAlvaro Viebrantz
 

Similar to 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
 
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!
 
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
 

More from Alvaro Viebrantz

BigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIBigQuery Performance Improvements Storage API
BigQuery Performance Improvements Storage APIAlvaro 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.pdfAlvaro Viebrantz
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de DesenvolvimentoAlvaro 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 GoAlvaro Viebrantz
 
Prototipação em hackathons
Prototipação em hackathonsPrototipação em hackathons
Prototipação em hackathonsAlvaro 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 GoAlvaro 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 CloudAlvaro 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 DadosAlvaro 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 CloudAlvaro 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 CloudAlvaro 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 CloudAlvaro 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 PauloAlvaro 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 CloudAlvaro 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 IoTAlvaro Viebrantz
 
Explorando Go em Ambiente Embarcado
Explorando Go em Ambiente EmbarcadoExplorando Go em Ambiente Embarcado
Explorando Go em Ambiente EmbarcadoAlvaro 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 CloudAlvaro 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 2018Alvaro 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á 2018Alvaro Viebrantz
 
Arquitetura de Internet das Coisas usando Google Cloud
Arquitetura de Internet das Coisas usando Google CloudArquitetura de Internet das Coisas usando Google Cloud
Arquitetura de Internet das Coisas usando Google CloudAlvaro Viebrantz
 

More from 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 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
 
Arquitetura de Internet das Coisas usando Google Cloud
Arquitetura de Internet das Coisas usando Google CloudArquitetura de Internet das Coisas usando Google Cloud
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
  • 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