ANDROID THINGS
MACHINE LEARNING
E MÁQUINAS
DE DOCES
Alvaro Viebrantz
aviebrantz.com.br
@alvaroviebrantz
medium.com/@alvaroviebrantz
1
Alvaro Viebrantz
DevMT e GDGCuiabá
Fullstack developer
aviebrantz.com.br // @alvaroviebrantz
medium.com/@alvaroviebrantz
2
Agenda de eventos
meetup.com/devmatogrosso
meetup.com/gdgcuiaba
Chat e Fórum - slack.devmt.com.br
3
38anos
Computadores Primitivos Computadores Pessoais
4
15anos
Computadores Pessoais Internet
5
12anos
Internet Smartphones / Nuvem / Mobile
6
“The more advanced we become
the faster we become at
advancing”
"Marco Annunziata: Welcome to the Age of the Industrial Internet"
7
Nossa noção de sucesso mudou…
8
http://press.spotify.com/us/category/pictures/
9
4.7
bilhões de
página
A Web é gigante hoje
Era do
Zetabyte*
* 1000 Exabytes
36.000
anos
de video
em hd
Últimos
20anos
http://www.livescience.com/54094-how-big-is-the-internet.html
10
11
A Web é gigante hojeComputação Ubiqua
12
13
É uma extensão da plataforma
Android para IoT e dispositivos
embarcados.
14
Android Things
Android SDK Android
Studio
Play Services Firebase Cloud
Platform
Mesmo ecossistema do Android
15
Todo poder dos serviços do Google
Android Things Dev Preview
Você pode iniciar com um Raspberry Pi 3
16
Produção em escala
Google Managed
BSP
SoM
Architecture
Módulos pré-certificados (SoM - System On Module)
17
Telas são opcionais
Considere alternativas
de UI
Arquitetura do sistema Android
Muito pode ser aproveitado para IoT
Arquitetura Android Things
Basicamente remoção de APIs de telefonia, games e uma
experiência sem login
Dispositivos mais poderosos e seguros na ponta
Processamento local mais pesado
21
Cameras

Gateways

HVAC Control

Smart Meters
Point of Sale

Inventory Control

Interactive Ads

Vending Machines
Security Systems

Smart Doorbells

Routers

Energy Monitors
Asset Tracking

Fleet Management

Driver Assist

Predictive Service
Contagem de pessoas na fila
Processamento de imagens e envio apenas de informação relevante
22
Machine Learning
“Smart Devices”
“Coisas que pensam”
e
23
Na prática
O que é machine learning ?
24
Na prática
O que é machine learning ?
25
Na prática
O que é machine learning ?
26
Novo problema ?
Comece do zero :(
27
Machine Learning
Aprendizado de máquina
Reconhecer padrões
em dados de treinamento
Aplica padrões reconhecidos
em dados desconhecidos
Regressão ou classificação
dos dados
Ajuste do modelo
28
Machine Learning
Aprendizado de máquina
Supervisionado Não-supervisionado Por Reforço
Tipos de aprendizado
29
Aprendizado Supervisionado
Os dados de treinamento são classificados
Classificação e
Regressão
Redes Neurais Árvores de Decisão
30
31
Aprendizado Supervisionado
Aprendizado Não-Supervisionado
Agrupar dados por similaridade
K-Means
Agrupamento e
exploração
32
Aprendizado por reforço
Expõe agente ao ambiente com primitivas básicas
Q-Learning
Tentativa/Erro vs
Recompensa
33
• Usar a Cloud ou a Mobile API (Vision,
Natural Language, etc.)
• Usar um arquitetura existente e re-treinar
ela ou fazer um ajuste fino para o seu
conjunto de dados
• Desenvolver o seu próprio modelo para
resolver novos problemas
Mais
flexível,
mas requer
maior
esforço
Como você pode iniciar com Machine Learning?
Três caminhos, com diferentes complexidades:
34
Cloud 

Natural Language
Cloud 

Speech
Cloud 

Vision
Cloud Machine Learning APIs
Veja, Ouça e Entenda o mundo
35
Faces
Faces, marcações faciais,
emoções
OCR
Ler e extrair texto, com
suporte para > 10 linguagens
Classificação
Detectar entidades de mobília a
meios de transporte
Logos
Identificar logos de produtos
Marcos e Propriedades
da imagem
Busca Segura
Detectar conteúdo explícito - adulto,
violência, médicas e fraudes
Cloud Vision API
36
Reconhecimento de imagens
Extrair frases, identificar partes
da fala e criar uma árvore de
dependências para cada
sentença.
Identificar entidades e
classificá-las por tipos, como
pessoa, organização local,
evento, produto e media.
Entender o sentimento
dominante do bloco de texto.
Análise de Sintaxe Reconhecimento de entidades
Análise de sentimentos
37
Cloud Natural Language API
Reconhecimento de linguagem natural
Automatic Speech Recognition
(ASR) powered by deep learning
neural networking to power your
applications like voice search or
speech transcription.
Recognizes over 80
languages and
variants with an
extensive
vocabulary.
Returns partial
recognition results
immediately, as they
become available.
Filter inappropriate
content in text
results.
Audio input can be captured by an
application’s microphone or sent from a
pre-recorded audio file. Multiple audio file
formats are supported, including FLAC,
Handles noisy audio from
many environments without
requiring additional noise
cancellation.
Audio files can be uploaded in
the request and, in future
releases, integrated with
Google Cloud Storage.
Automatic Speech Recognition Global Vocabulary
Inappropriate Content
Filtering
Streaming
Recognition
Real-time or Buffered Audio Support Noisy Audio Handling Integrated API
38
Cloud Speech API
Reconhecimento de áudio e voz
Face API
faces, marcações faciais, olhos
abertos, sorrisos
Barcode API
Códigos de barra 1D e
2D
Text API
Alfabeto latino /
estrutura
Common Mobile Vision API
Suporte para detecção e rastreio de imagens e vídeos no dispositivo
Mobile Vision API
Provendo visão para aplicações diretamente no dispositivo
39
Combinado Visão e Tradução
40
• Funções especificas para
Deep Learning
• Para pesquisa e produção
• Licença Apache 2.0
41
TensorFlow
Biblioteca de machine learning Open source
Raspberry PiDatacentersSeu laptop Android iOS
42
Portável e Escalável
Rode em qualquer lugar
43
Reconhecimento de Imagens
Modelo Inception V3 - Modelo desenvolvido pelo Google
https://research.googleblog.com/2016/03/train-your-own-image-classifier-with.html
Fire Salamander
Golden Retriever
Dalmatian
44
Transferência de conhecimento
Utilizar modelos já prontas e/ou re-treinar com novos dados
Inception V3 - Classifica imagens

Modelo desenvolvido pelo Google
45
Transferência de conhecimento
MobileNets - Modelos de visão computacional
https://research.googleblog.com/2017/06/mobilenets-open-source-models-for.html
46
Transferência de conhecimento
Tensorflow Object Detection API - Treine com seus dados e
aproveite um modelo já treinado para detectar objetos
https://cloud.google.com/blog/big-data/2017/06/training-an-object-detector-using-cloud-
machine-learning-engine
Projetos e Aplicações
47
Classificação de Pepinos
Tensorflow rodando local no dispositivo embarcado
48
https://cloud.google.com/blog/big-data/2016/08/how-a-japanese-
cucumber-farmer-is-using-deep-learning-and-tensorflow
Irrigação inteligente
Aprender a irrigar corretamente utilizando sensores de umidade do
solo, controle de irrigação e técnicas de aprendizado por reforço
49
Apple Siri
Reconhecimento de voz
Entender e identificar entidades
50
A.I. Candy Dispenser
Máquina de doces inteligente
Android
Things
Cloud 

Vision
51
A.I. Candy Dispenser
Máquina de doces inteligente
Cloud 

Vision
52
Android Things
Tira uma foto
Classifica foto
Libera doces
ou
A.I. Candy Dispenser
Máquina de doces inteligente
53
A.I. Candy Dispenser
Na mídia 🎉
https://blog.hackster.io/
hacksters-handpicked-projects-of-
the-week-e2403bdf387a
http://www.htxt.co.za/2017/06/07/
this-ai-candy-dispenser-swaps-
pictures-for-sweets/ 54
https://www.raspberrypi.org/
blog/android-things-candy-
dispenser/
Construindo um app Android Things
Construindo um app Android Things
Android Studio 3.0 Preview tem suporte ao Android Things
dependencies {
provided 'com.google.android.things:androidthings:...'
}
<application ...>
<uses-library android:name="com.google.android.things"/>
<activity ...>
...
<!-- Launch activity automatically on boot -->
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.IOT_LAUNCHER"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
</application>
Home Activity
GPIO
PWM
I2C
SPI
UART
Input
Sensors
GPS
Peripheral
Driver
Library
Peripheral I/O
User Drivers
Peripheral I/O
Como se comunicar como o hardware
GPIO
PWM
I2C
SPI
UART
Peripheral I/O
Peripheral I/O
Comunicação mais baixo nível
class CandyMachine(gpio: String): AutoCloseable{
private val CANDY_TIMEOUT = 3*1000L
private var mCandyPin: Gpio? = null
private var mCandiesTimer: CountDownTimer? = null

init{
val service = PeripheralManagerService()
mCandyPin = service.openGpio(gpio)
mCandyPin?.setDirection(
Gpio.DIRECTION_OUT_INITIALLY_LOW)
mCandyPin?.setActiveType(Gpio.ACTIVE_HIGH)
}
}
Peripheral I/O - GPIO
Comunicação mais baixo nível
fun giveCandies() {
mCandyPin?.value = true
mCandiesTimer?.cancel()
mCandiesTimer = object: CountDownTimer(
CANDY_TIMEOUT, CANDY_TIMEOUT) {
override fun onTick(remainingMillis: Long) {}
override fun onFinish() {
mCandyPin?.value = false
}
)
mCandiesTimer?.start()
}
Peripheral I/O - GPIO
Comunicação mais baixo nível
GPIO
PWM
I2C
SPI
UART
Input
Sensors
GPS
Peripheral I/O
User Drivers
User Drivers
Abstração para módulos de hardware
dependencies {
compile 'com.google.android.things.contrib:driver-button:...'
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mButton = Button(BUTTON_PIN,
Button.LogicState.PRESSED_WHEN_LOW)
mButton?.setOnButtonEventListener(mButtonEventListener)
updateGameState(WAITING_PLAYER)
}
User Drivers
Leitura do botão utilizando um driver
val mButtonEventListener = { _: Button, pressed: Boolean ->
Log.d(TAG, "Button is pressed: " + pressed)
if(pressed){
when(mGameState){
WAITING_PLAYER -> {
updateGameState(WAITING_PHOTO)
}
WAITING_PHOTO -> {
updateGameState(ANALYZING_PHOTO)
}
WAITING_RECLAIM_PRIZE -> {
mCandyMachine?.giveCandies()
updateGameState(WAITING_PLAYER)
}
}
}
}
User Drivers
Leitura do botão utilizando um driver
dependencies {
compile nz.geek.android.things:things-drivers:...'
}
mDisplay = Display(LCD_I2C_BUS)
mDisplay?.clear()
mDisplay?.print(1, "A.I. Candy Dispenser")
mDisplay?.printCenter(2, "")
mDisplay?.printCenter(3, "Press the
Button")
mDisplay?.printCenter(4, "To start")
User Drivers
Display 20x4 Serial i2C
The Power of
Android
=
Pi Camera
Exatamente igual ao Android Padrão
dependencies {
compile ’com.google.api-client:google-api-client-android:...'
compile ’com.google.apis:google-api-services-vision:...'
}
fun annotateImage(imageBytes: ByteArray): Map<String, Float>{
// Construct the Vision API instance
val httpTransport = AndroidHttp.newCompatibleTransport()
val jsonFactory = GsonFactory.getDefaultInstance()
val initializer = VisionRequestInitializer(CLOUD_VISION_API_KEY)
val vision = Vision.Builder(httpTransport, jsonFactory, null)
.setApplicationName("AI Candy Dispenser")
.setVisionRequestInitializer(initializer)
.build()
Vision API
API bastante simplificada
// Create the image request
val imageRequest = AnnotateImageRequest()
val image = Image()
image.encodeContent(imageBytes)
imageRequest.image = image
// Add the features we want
val labelDetection = Feature()
labelDetection.type = "LABEL_DETECTION"
labelDetection.maxResults = 10
imageRequest.features = listOf(labelDetection)
// Batch and execute the request
val requestBatch = BatchAnnotateImagesRequest()
requestBatch.requests = listOf(imageRequest)
val response = vision.images()
.annotate(requestBatch)
.setDisableGZipContent(true)
.execute()
Vision API
dependencies {
compile 'org.tensorflow:tensorflow-android:1.2.0-preview'
}
val IMAGE_SIZE = 224

private val IMAGE_MEAN = 117

private val LABELS_FILE = “imagenet_comp_graph_label_strings.txt"

val MODEL_FILE = "file:///android_asset/tensorflow_inception_graph.pb"

val NUM_CLASSES = 1008



private val mInferenceInterface: TensorFlowInferenceInterface

private val mLabels: List<String>
init {

mInferenceInterface = TensorFlowInferenceInterface(ctx.assets, MODEL_FILE)

mLabels = readLabels(ctx)

mInvertedIndex = readInvertedIndex(ctx)



mCroppedBitmap = Bitmap.createBitmap(IMAGE_SIZE, IMAGE_SIZE,

Bitmap.Config.ARGB_8888)

}
TensorFlow
InceptionV3 rodando no Android
fun annotateImage(imageBytes: ByteArray): Map<String, Float> {

val image = BitmapFactory.decodeByteArray(imageBytes,0,imageBytes.size)

this.cropAndRescaleBitmap(image, mCroppedBitmap)

val pixels = this.getPixels(mCroppedBitmap)



// Feed the pixels of the image into the TensorFlow Neural Network

mInferenceInterface.feed(INPUT_NAME, pixels, *NETWORK_STRUCTURE)



// Run the TensorFlow Neural Network with the provided input

mInferenceInterface.run(OUTPUT_NAMES)



// Extract the output from the neural network back into an array of
confidence per category

val outputs = FloatArray(NUM_CLASSES)

mInferenceInterface.fetch(OUTPUT_NAME, outputs)



// Get the results with the highest confidence and map them to their labels

return this.getBestResults(outputs, this.mLabels)

}
TensorFlow
InceptionV3 rodando no Android
Open Source - Máquina de Doces Inteligente
https://github.com/alvarowolfx/ai-candy-dispenser
71
https://www.hackster.io/alvarowolfx/android-things-a-i-candy-
dispenser-a47e74
Projetos - Monitor Energia AndroidThings
https://github.com/riggaroo/android-things-electricity-monitor
72
Projetos - Piano distribuido
https://riggaroo.co.za/android-things-building-distributed-piano/
73
Codelab - Estação Meteorológica AndroidThings
https://codelabs.developers.google.com/codelabs/androidthings-weatherstation
74
Codelab - Android Things Image Classifier
https://codelabs.developers.google.com/codelabs/androidthings-classifier
Codelab - Face Detection with Mobile Vision API
https://codelabs.developers.google.com/codelabs/face-detection
Codelab - Cloud Function + Cloud Vision API
https://codelabs.developers.google.com/codelabs/firebase-cloud-functions
DUVIDAS ?
Alvaro Viebrantz
aviebrantz.com.br
@alvaroviebrantz
medium.com/@alvaroviebrantz
78
Links úteis
• https://cloud.google.com/vision/
• https://cloud.google.com/products/
• https://developers.google.com/assistant/sdk/
• https://developer.android.com/things/
• https://iot.google.com
• https://www.tensorflow.org
• https://developer.amazon.com
• https://www.youtube.com/user/GoogleDevelopers/videos
• https://www.hackster.io/alvarowolfx/android-things-a-i-candy-dispenser-a47e74
79
Referência
• https://www.slideshare.net/andrecurvello/internet-das-coisas-do-sensor-nuvem-e-
voc
• https://www.youtube.com/watch?v=ETWhOWvqH5E
• https://www.youtube.com/watch?v=0JWGFMtDDy0
80

Mais conteúdo relacionado

PDF
Internet das Coisas com Android things e Machine Learning
PDF
Internet das coisas, machine learnign e maquinas de doces
PDF
Android things, Inteligência Artificial e Máquinas de Doces - Android Dev Con...
DOCX
Academia do Arquiteto Globalcode
PPT
Java, Internet das Coisas, Things API e Arquiteturas de Inovação
PDF
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
PDF
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDK
PDF
Minicurso "Jogos Multiplataforma com Javascript"
Internet das Coisas com Android things e Machine Learning
Internet das coisas, machine learnign e maquinas de doces
Android things, Inteligência Artificial e Máquinas de Doces - Android Dev Con...
Academia do Arquiteto Globalcode
Java, Internet das Coisas, Things API e Arquiteturas de Inovação
Desenvolvendo Aplicações Livres em Java - João Avelino Bellomo Filho
TDC2016SP - Evoluindo aplicações mobile com o Google VR SDK
Minicurso "Jogos Multiplataforma com Javascript"

Semelhante a Android things, machine learning e maquinas de doces (20)

PPTX
Microsoft research e inovação
PPTX
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
PDF
Open Source: Ferramentas Gratuitas Incríveis
PPTX
Microsoft opensource
 
PPTX
Microsoft opensource
 
PPTX
Como construir uma boa realidade aumentada
PPTX
AI, Machine Learning e BigData aplicado aos E-commerces
PPTX
Machine Learning Black Boxes
PPTX
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
PDF
Descomplicando o Android
PPTX
Guia para o Profissional Android
PPTX
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
PDF
Desenvolvimento de Aplicativos Móveis Multiplataforma
PDF
TDCSP2019 - Trilha: Computação Cognitiva - Palestra: Serviços cognitivos de V...
PDF
Curso Básico Android - Aula 01
PDF
DevOps... O caminho! - Monitoramento de aplicações com App Insights
PPTX
Visão Geral De Desenvolvimento Web Sre 2012
PDF
Internet das coisas - Conectando seus dispositivos à nuvem de forma inteligente
PPTX
As melhores práticas de desenvolvimento de software em fábrica de software
PDF
Desenvolvimento Android: Aula 01
Microsoft research e inovação
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Open Source: Ferramentas Gratuitas Incríveis
Microsoft opensource
 
Microsoft opensource
 
Como construir uma boa realidade aumentada
AI, Machine Learning e BigData aplicado aos E-commerces
Machine Learning Black Boxes
TDC2016SP - Machine Learning Black Boxes - Terceirizando o Trabalho Duro
Descomplicando o Android
Guia para o Profissional Android
Construindo Aplicativos móveis conectados com Xamarin e Azure Mobile Services
Desenvolvimento de Aplicativos Móveis Multiplataforma
TDCSP2019 - Trilha: Computação Cognitiva - Palestra: Serviços cognitivos de V...
Curso Básico Android - Aula 01
DevOps... O caminho! - Monitoramento de aplicações com App Insights
Visão Geral De Desenvolvimento Web Sre 2012
Internet das coisas - Conectando seus dispositivos à nuvem de forma inteligente
As melhores práticas de desenvolvimento de software em fábrica de software
Desenvolvimento Android: Aula 01
Anúncio

Mais de Alvaro Viebrantz (20)

PDF
Construindo Apps/Projetos com Generative AI
PDF
Minha jornada na ciência da computação- do diploma ao Google
PDF
BigQuery Performance Improvements Storage API
PDF
End to End IoT projects with Zephyr.pdf
PDF
Carreira de Desenvolvimento
PDF
Construindo aplicações Cloud Native em Go
PDF
Prototipação em hackathons
PDF
Building REST APIs using gRPC and Go
PDF
TinyML - IoT e Machine Learning
PDF
O que projetos de IoT precisam ?
PDF
Ambiente de CI/CD com Google Cloud
PDF
Big Query - Escalabilidade Infinita para os seus Dados
PDF
Rodando uma API Com Django Rest Framework no Google Cloud
PDF
Edge computing na prática com IoT, Machine Learning e Google Cloud
PDF
Edge computing in practice using IoT, Tensorflow and Google Cloud
PDF
Iniciando com LoRa, The Things Network e Google Cloud
PDF
Construindo projetos para o Google Assistant - I/O 2019 Recap São Paulo
PDF
Edge computing na prática com IoT, Machine Learning e Google Cloud
PDF
Construindo projetos com Google Assistant e IoT
PDF
Explorando Go em Ambiente Embarcado
Construindo Apps/Projetos com Generative AI
Minha jornada na ciência da computação- do diploma ao Google
BigQuery Performance Improvements Storage API
End to End IoT projects with Zephyr.pdf
Carreira de Desenvolvimento
Construindo aplicações Cloud Native em Go
Prototipação em hackathons
Building REST APIs using gRPC and Go
TinyML - IoT e Machine Learning
O que projetos de IoT precisam ?
Ambiente de CI/CD com Google Cloud
Big Query - Escalabilidade Infinita para os seus Dados
Rodando uma API Com Django Rest Framework no Google Cloud
Edge computing na prática com IoT, Machine Learning e Google Cloud
Edge computing in practice using IoT, Tensorflow and Google Cloud
Iniciando com LoRa, The Things Network e Google Cloud
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
Construindo projetos com Google Assistant e IoT
Explorando Go em Ambiente Embarcado
Anúncio

Último (20)

PPT
Apresentacao Do Trabalho de Inteligencia
PPTX
AULA 1.pptx GESTÃO DE OPERAÇÕES INDUSTRIAIS
PDF
POO - Aula 05 - Herança - Generalização e Especialização.pdf
PDF
Integração da produção com o SAP Extended Warehouse Management, EWM130 Col26
PDF
T-pico 1.pdfnsjabdkaksbbsuendnijsbshajanzk
PPTX
Legislação aeronautica na aviação civil Brasileira
PPTX
Politicas-de-Seguranca-Privacidade-e-Cookies.pptx
PDF
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf
PDF
POO - Aula 03 - Membros Estáticos e Construtores.pdf
PPTX
Formação aaaaaaaaadsdsfg er rsgrsgesf efsfsefsf e LEEI.pptx
DOCX
20250828_Perfis Profissionais em ServiceNow Um Guia Detalhado.docx
PPTX
Do código à carreira: O Profissional de TI que o mercado realmente quer - com...
PPTX
RCSOFTdfsdfrvadfvdfvargfvevevrervevqer.pptx
PPTX
Modelo para Qualificação de Mestrado - Tecnologia da Informação
PDF
Personalização de tópicos adicionais no SAP Extended Warehouse Management, EW...
PDF
pdfcoffee.com_metalografia-25-pdf-free.pdf
PDF
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
PPTX
Panorama da aviação civil brasileira ANAC
PDF
Administração de qualidade no SAP Extended Warehouse Management, EWM140 Col26
PPTX
Introdução a Computação em Nuvem-parte2-T2
Apresentacao Do Trabalho de Inteligencia
AULA 1.pptx GESTÃO DE OPERAÇÕES INDUSTRIAIS
POO - Aula 05 - Herança - Generalização e Especialização.pdf
Integração da produção com o SAP Extended Warehouse Management, EWM130 Col26
T-pico 1.pdfnsjabdkaksbbsuendnijsbshajanzk
Legislação aeronautica na aviação civil Brasileira
Politicas-de-Seguranca-Privacidade-e-Cookies.pptx
Metodologia Scrumban-XP - Um Guia Rápido (MrSomebody19).pdf
POO - Aula 03 - Membros Estáticos e Construtores.pdf
Formação aaaaaaaaadsdsfg er rsgrsgesf efsfsefsf e LEEI.pptx
20250828_Perfis Profissionais em ServiceNow Um Guia Detalhado.docx
Do código à carreira: O Profissional de TI que o mercado realmente quer - com...
RCSOFTdfsdfrvadfvdfvargfvevevrervevqer.pptx
Modelo para Qualificação de Mestrado - Tecnologia da Informação
Personalização de tópicos adicionais no SAP Extended Warehouse Management, EW...
pdfcoffee.com_metalografia-25-pdf-free.pdf
Visão geral da SAP, SAP01 Col18, Introdução sistema SAP,
Panorama da aviação civil brasileira ANAC
Administração de qualidade no SAP Extended Warehouse Management, EWM140 Col26
Introdução a Computação em Nuvem-parte2-T2

Android things, machine learning e maquinas de doces

  • 1. ANDROID THINGS MACHINE LEARNING E MÁQUINAS DE DOCES Alvaro Viebrantz aviebrantz.com.br @alvaroviebrantz medium.com/@alvaroviebrantz 1
  • 2. Alvaro Viebrantz DevMT e GDGCuiabá Fullstack developer aviebrantz.com.br // @alvaroviebrantz medium.com/@alvaroviebrantz 2
  • 6. 12anos Internet Smartphones / Nuvem / Mobile 6
  • 7. “The more advanced we become the faster we become at advancing” "Marco Annunziata: Welcome to the Age of the Industrial Internet" 7
  • 8. Nossa noção de sucesso mudou… 8
  • 10. 4.7 bilhões de página A Web é gigante hoje Era do Zetabyte* * 1000 Exabytes 36.000 anos de video em hd Últimos 20anos http://www.livescience.com/54094-how-big-is-the-internet.html 10
  • 11. 11
  • 12. A Web é gigante hojeComputação Ubiqua 12
  • 13. 13
  • 14. É uma extensão da plataforma Android para IoT e dispositivos embarcados. 14 Android Things
  • 15. Android SDK Android Studio Play Services Firebase Cloud Platform Mesmo ecossistema do Android 15 Todo poder dos serviços do Google
  • 16. Android Things Dev Preview Você pode iniciar com um Raspberry Pi 3 16
  • 17. Produção em escala Google Managed BSP SoM Architecture Módulos pré-certificados (SoM - System On Module) 17
  • 18. Telas são opcionais Considere alternativas de UI
  • 19. Arquitetura do sistema Android Muito pode ser aproveitado para IoT
  • 20. Arquitetura Android Things Basicamente remoção de APIs de telefonia, games e uma experiência sem login
  • 21. Dispositivos mais poderosos e seguros na ponta Processamento local mais pesado 21 Cameras
 Gateways
 HVAC Control
 Smart Meters Point of Sale
 Inventory Control
 Interactive Ads
 Vending Machines Security Systems
 Smart Doorbells
 Routers
 Energy Monitors Asset Tracking
 Fleet Management
 Driver Assist
 Predictive Service
  • 22. Contagem de pessoas na fila Processamento de imagens e envio apenas de informação relevante 22
  • 24. Na prática O que é machine learning ? 24
  • 25. Na prática O que é machine learning ? 25
  • 26. Na prática O que é machine learning ? 26
  • 27. Novo problema ? Comece do zero :( 27
  • 28. Machine Learning Aprendizado de máquina Reconhecer padrões em dados de treinamento Aplica padrões reconhecidos em dados desconhecidos Regressão ou classificação dos dados Ajuste do modelo 28
  • 29. Machine Learning Aprendizado de máquina Supervisionado Não-supervisionado Por Reforço Tipos de aprendizado 29
  • 30. Aprendizado Supervisionado Os dados de treinamento são classificados Classificação e Regressão Redes Neurais Árvores de Decisão 30
  • 32. Aprendizado Não-Supervisionado Agrupar dados por similaridade K-Means Agrupamento e exploração 32
  • 33. Aprendizado por reforço Expõe agente ao ambiente com primitivas básicas Q-Learning Tentativa/Erro vs Recompensa 33
  • 34. • Usar a Cloud ou a Mobile API (Vision, Natural Language, etc.) • Usar um arquitetura existente e re-treinar ela ou fazer um ajuste fino para o seu conjunto de dados • Desenvolver o seu próprio modelo para resolver novos problemas Mais flexível, mas requer maior esforço Como você pode iniciar com Machine Learning? Três caminhos, com diferentes complexidades: 34
  • 35. Cloud 
 Natural Language Cloud 
 Speech Cloud 
 Vision Cloud Machine Learning APIs Veja, Ouça e Entenda o mundo 35
  • 36. Faces Faces, marcações faciais, emoções OCR Ler e extrair texto, com suporte para > 10 linguagens Classificação Detectar entidades de mobília a meios de transporte Logos Identificar logos de produtos Marcos e Propriedades da imagem Busca Segura Detectar conteúdo explícito - adulto, violência, médicas e fraudes Cloud Vision API 36 Reconhecimento de imagens
  • 37. Extrair frases, identificar partes da fala e criar uma árvore de dependências para cada sentença. Identificar entidades e classificá-las por tipos, como pessoa, organização local, evento, produto e media. Entender o sentimento dominante do bloco de texto. Análise de Sintaxe Reconhecimento de entidades Análise de sentimentos 37 Cloud Natural Language API Reconhecimento de linguagem natural
  • 38. Automatic Speech Recognition (ASR) powered by deep learning neural networking to power your applications like voice search or speech transcription. Recognizes over 80 languages and variants with an extensive vocabulary. Returns partial recognition results immediately, as they become available. Filter inappropriate content in text results. Audio input can be captured by an application’s microphone or sent from a pre-recorded audio file. Multiple audio file formats are supported, including FLAC, Handles noisy audio from many environments without requiring additional noise cancellation. Audio files can be uploaded in the request and, in future releases, integrated with Google Cloud Storage. Automatic Speech Recognition Global Vocabulary Inappropriate Content Filtering Streaming Recognition Real-time or Buffered Audio Support Noisy Audio Handling Integrated API 38 Cloud Speech API Reconhecimento de áudio e voz
  • 39. Face API faces, marcações faciais, olhos abertos, sorrisos Barcode API Códigos de barra 1D e 2D Text API Alfabeto latino / estrutura Common Mobile Vision API Suporte para detecção e rastreio de imagens e vídeos no dispositivo Mobile Vision API Provendo visão para aplicações diretamente no dispositivo 39
  • 40. Combinado Visão e Tradução 40
  • 41. • Funções especificas para Deep Learning • Para pesquisa e produção • Licença Apache 2.0 41 TensorFlow Biblioteca de machine learning Open source
  • 42. Raspberry PiDatacentersSeu laptop Android iOS 42 Portável e Escalável Rode em qualquer lugar
  • 43. 43 Reconhecimento de Imagens Modelo Inception V3 - Modelo desenvolvido pelo Google https://research.googleblog.com/2016/03/train-your-own-image-classifier-with.html Fire Salamander Golden Retriever Dalmatian
  • 44. 44 Transferência de conhecimento Utilizar modelos já prontas e/ou re-treinar com novos dados Inception V3 - Classifica imagens
 Modelo desenvolvido pelo Google
  • 45. 45 Transferência de conhecimento MobileNets - Modelos de visão computacional https://research.googleblog.com/2017/06/mobilenets-open-source-models-for.html
  • 46. 46 Transferência de conhecimento Tensorflow Object Detection API - Treine com seus dados e aproveite um modelo já treinado para detectar objetos https://cloud.google.com/blog/big-data/2017/06/training-an-object-detector-using-cloud- machine-learning-engine
  • 48. Classificação de Pepinos Tensorflow rodando local no dispositivo embarcado 48 https://cloud.google.com/blog/big-data/2016/08/how-a-japanese- cucumber-farmer-is-using-deep-learning-and-tensorflow
  • 49. Irrigação inteligente Aprender a irrigar corretamente utilizando sensores de umidade do solo, controle de irrigação e técnicas de aprendizado por reforço 49
  • 50. Apple Siri Reconhecimento de voz Entender e identificar entidades 50
  • 51. A.I. Candy Dispenser Máquina de doces inteligente Android Things Cloud 
 Vision 51
  • 52. A.I. Candy Dispenser Máquina de doces inteligente Cloud 
 Vision 52 Android Things Tira uma foto Classifica foto Libera doces ou
  • 53. A.I. Candy Dispenser Máquina de doces inteligente 53
  • 54. A.I. Candy Dispenser Na mídia 🎉 https://blog.hackster.io/ hacksters-handpicked-projects-of- the-week-e2403bdf387a http://www.htxt.co.za/2017/06/07/ this-ai-candy-dispenser-swaps- pictures-for-sweets/ 54 https://www.raspberrypi.org/ blog/android-things-candy- dispenser/
  • 55. Construindo um app Android Things
  • 56. Construindo um app Android Things Android Studio 3.0 Preview tem suporte ao Android Things
  • 57. dependencies { provided 'com.google.android.things:androidthings:...' } <application ...> <uses-library android:name="com.google.android.things"/> <activity ...> ... <!-- Launch activity automatically on boot --> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.IOT_LAUNCHER"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> </application> Home Activity
  • 60. class CandyMachine(gpio: String): AutoCloseable{ private val CANDY_TIMEOUT = 3*1000L private var mCandyPin: Gpio? = null private var mCandiesTimer: CountDownTimer? = null
 init{ val service = PeripheralManagerService() mCandyPin = service.openGpio(gpio) mCandyPin?.setDirection( Gpio.DIRECTION_OUT_INITIALLY_LOW) mCandyPin?.setActiveType(Gpio.ACTIVE_HIGH) } } Peripheral I/O - GPIO Comunicação mais baixo nível
  • 61. fun giveCandies() { mCandyPin?.value = true mCandiesTimer?.cancel() mCandiesTimer = object: CountDownTimer( CANDY_TIMEOUT, CANDY_TIMEOUT) { override fun onTick(remainingMillis: Long) {} override fun onFinish() { mCandyPin?.value = false } ) mCandiesTimer?.start() } Peripheral I/O - GPIO Comunicação mais baixo nível
  • 62. GPIO PWM I2C SPI UART Input Sensors GPS Peripheral I/O User Drivers User Drivers Abstração para módulos de hardware
  • 63. dependencies { compile 'com.google.android.things.contrib:driver-button:...' } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mButton = Button(BUTTON_PIN, Button.LogicState.PRESSED_WHEN_LOW) mButton?.setOnButtonEventListener(mButtonEventListener) updateGameState(WAITING_PLAYER) } User Drivers Leitura do botão utilizando um driver
  • 64. val mButtonEventListener = { _: Button, pressed: Boolean -> Log.d(TAG, "Button is pressed: " + pressed) if(pressed){ when(mGameState){ WAITING_PLAYER -> { updateGameState(WAITING_PHOTO) } WAITING_PHOTO -> { updateGameState(ANALYZING_PHOTO) } WAITING_RECLAIM_PRIZE -> { mCandyMachine?.giveCandies() updateGameState(WAITING_PLAYER) } } } } User Drivers Leitura do botão utilizando um driver
  • 65. dependencies { compile nz.geek.android.things:things-drivers:...' } mDisplay = Display(LCD_I2C_BUS) mDisplay?.clear() mDisplay?.print(1, "A.I. Candy Dispenser") mDisplay?.printCenter(2, "") mDisplay?.printCenter(3, "Press the Button") mDisplay?.printCenter(4, "To start") User Drivers Display 20x4 Serial i2C
  • 66. The Power of Android = Pi Camera Exatamente igual ao Android Padrão
  • 67. dependencies { compile ’com.google.api-client:google-api-client-android:...' compile ’com.google.apis:google-api-services-vision:...' } fun annotateImage(imageBytes: ByteArray): Map<String, Float>{ // Construct the Vision API instance val httpTransport = AndroidHttp.newCompatibleTransport() val jsonFactory = GsonFactory.getDefaultInstance() val initializer = VisionRequestInitializer(CLOUD_VISION_API_KEY) val vision = Vision.Builder(httpTransport, jsonFactory, null) .setApplicationName("AI Candy Dispenser") .setVisionRequestInitializer(initializer) .build() Vision API API bastante simplificada
  • 68. // Create the image request val imageRequest = AnnotateImageRequest() val image = Image() image.encodeContent(imageBytes) imageRequest.image = image // Add the features we want val labelDetection = Feature() labelDetection.type = "LABEL_DETECTION" labelDetection.maxResults = 10 imageRequest.features = listOf(labelDetection) // Batch and execute the request val requestBatch = BatchAnnotateImagesRequest() requestBatch.requests = listOf(imageRequest) val response = vision.images() .annotate(requestBatch) .setDisableGZipContent(true) .execute() Vision API
  • 69. dependencies { compile 'org.tensorflow:tensorflow-android:1.2.0-preview' } val IMAGE_SIZE = 224
 private val IMAGE_MEAN = 117
 private val LABELS_FILE = “imagenet_comp_graph_label_strings.txt"
 val MODEL_FILE = "file:///android_asset/tensorflow_inception_graph.pb"
 val NUM_CLASSES = 1008
 
 private val mInferenceInterface: TensorFlowInferenceInterface
 private val mLabels: List<String> init {
 mInferenceInterface = TensorFlowInferenceInterface(ctx.assets, MODEL_FILE)
 mLabels = readLabels(ctx)
 mInvertedIndex = readInvertedIndex(ctx)
 
 mCroppedBitmap = Bitmap.createBitmap(IMAGE_SIZE, IMAGE_SIZE,
 Bitmap.Config.ARGB_8888)
 } TensorFlow InceptionV3 rodando no Android
  • 70. fun annotateImage(imageBytes: ByteArray): Map<String, Float> {
 val image = BitmapFactory.decodeByteArray(imageBytes,0,imageBytes.size)
 this.cropAndRescaleBitmap(image, mCroppedBitmap)
 val pixels = this.getPixels(mCroppedBitmap)
 
 // Feed the pixels of the image into the TensorFlow Neural Network
 mInferenceInterface.feed(INPUT_NAME, pixels, *NETWORK_STRUCTURE)
 
 // Run the TensorFlow Neural Network with the provided input
 mInferenceInterface.run(OUTPUT_NAMES)
 
 // Extract the output from the neural network back into an array of confidence per category
 val outputs = FloatArray(NUM_CLASSES)
 mInferenceInterface.fetch(OUTPUT_NAME, outputs)
 
 // Get the results with the highest confidence and map them to their labels
 return this.getBestResults(outputs, this.mLabels)
 } TensorFlow InceptionV3 rodando no Android
  • 71. Open Source - Máquina de Doces Inteligente https://github.com/alvarowolfx/ai-candy-dispenser 71 https://www.hackster.io/alvarowolfx/android-things-a-i-candy- dispenser-a47e74
  • 72. Projetos - Monitor Energia AndroidThings https://github.com/riggaroo/android-things-electricity-monitor 72
  • 73. Projetos - Piano distribuido https://riggaroo.co.za/android-things-building-distributed-piano/ 73
  • 74. Codelab - Estação Meteorológica AndroidThings https://codelabs.developers.google.com/codelabs/androidthings-weatherstation 74
  • 75. Codelab - Android Things Image Classifier https://codelabs.developers.google.com/codelabs/androidthings-classifier
  • 76. Codelab - Face Detection with Mobile Vision API https://codelabs.developers.google.com/codelabs/face-detection
  • 77. Codelab - Cloud Function + Cloud Vision API https://codelabs.developers.google.com/codelabs/firebase-cloud-functions
  • 79. Links úteis • https://cloud.google.com/vision/ • https://cloud.google.com/products/ • https://developers.google.com/assistant/sdk/ • https://developer.android.com/things/ • https://iot.google.com • https://www.tensorflow.org • https://developer.amazon.com • https://www.youtube.com/user/GoogleDevelopers/videos • https://www.hackster.io/alvarowolfx/android-things-a-i-candy-dispenser-a47e74 79