Como desenvolver projetos de internet das coisas utilizando a nova plataforma do Google para isso que é o Android Things e também adicionar funcionalidades de Machine Learning aos seus projetos de forma mais facilitada.
3. 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
Ideal para dispositivos poderosos e inteligentes na
ponta e que precisam de segurança.
12. Problemas : (
● Developer Preview
● Ainda está no começo
● Algumas APIs ainda não funcionam
○ Até a última versão não tinha Bluetooth
○ Permissões estão bastante bugadas
15. Componentes
Entradas e saidas básicas
LEDs - Emitem luzes visíveis quando uma
corrente passa por ele
Botões - Permitem que a eletricidade flua entre
as duas extremidades dos contatos
16. Digital
Entradas e saidas
Serial - Série de 1s e 0s digitais que
representam algum padrão de comunicação
Digital - Valores binários de sinais de voltagem,
sendo o valor 1 se estiver próximo de Vcc e 0 se
estiver perto do terra.
17. Analógico
Entradas e saidas
Leitura Analógica - Voltagem proporcional a
condição física medida.
PWM - Valores binários de sinais de voltagem
em uma determinada frequência que “parecem”
ter uma saída analógica
18. Resistores
Reduz o fluxo de corrente
Lei de Ohm - A corrente que passa entre dois
condutores é diretamente proporcional a
voltagem entre os dois pontos .
V = I * R
V é voltagem
I é a corrente
R é a resistência
33. Como você pode iniciar com Machine Learning?
Três caminhos, com diferentes complexidades:
(1) Usar a Cloud ou a Mobile API (Vision, Natural Language,
etc.)
(2) Usar um arquitetura existente e retreinar ela ou fazer um
ajuste fino para o seu conjunto de dados
(3) Desenvolver o seu próprio modelo para resolver novos
problemas
Mais
flexível,
mas
requer
maior
esforço
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
37. Uso da API: Detectar objetos em uma imagem
Imagem Itens
Detectados
Vision API
Criar uma
requisição
JSON com a
imagem
Processar
o JSON da
resposta
Chamar a
API REST1 2 3
38. Cloud Natural Language API
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
39. Cloud Speech API
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, AMR, PCMU and linear-16.
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
41. 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
43. Googly Eyes Android App
Video credit Google
1. Create a face detector for facial landmarks (e.g., eyes)
3. For each face, draw the eyes
FaceDetector detector = new FaceDetector.Builder()
.setLandmarkType(FaceDetector.ALL_LANDMARKS)
.build();
SparseArray<Face> faces = detector.detect(image);
for (int i = 0; i < faces.size(); ++i) {
Face face = faces.valueAt(i);
for (Landmark landmark : face.getLandmarks()) {
// Draw eyes
2. Detect faces in the image
46. Detecção de código de
barras
1D barcodes
EAN-13/8
UPC-A/E
Code-39/93/128
ITF
Codabar
2D barcodes
QR Code
Data Matrix
PDF-417
AZTEC
UPC
DataMatrix
QR Code
PDF 417
Video and image credit Google
51. Escalar S = 42
Vetor V = [1, 2, 3, 4]
Matriz M = [[1, 0],[0, 1]]
Cubo ...
Vetor n-dimensional, onde n = [0, 1, 2, 3, ...]
52. Grafo de fluxo de dados
A computação é definida com um grafo acíclico dirigido
para otimizar uma função objetivo
● Grafo é definido em uma linguagem de nível alto
(Python)
● Grafo é compilado e otimizado
● Grafo é executado nos dispositivos disponíveis (CPU,
GPU)
● Dados (tensores) fluem através do grafo
68. Pi Camera - Exatamente igual ao Android Padrão
The Power of
Android
=
69. dependencies {
compile ’com.google.api-client:google-api-client-android:...'
compile ’com.google.apis:google-api-services-vision:...'
}
Vision API
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()
70. Vision API
// 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()