Criar apps mais inteligentes com o aprendizado de máquina

O aprendizado de máquina (ML) é uma técnica de programação que concede ao seu app a capacidade de aprender e melhorar automaticamente a partir de experiências, sem ser explicitamente programado para isso. Isso é indicado principalmente para apps que utilizam dados não estruturados, como imagens e texto, ou problemas com uma grande quantidade de parâmetros, como a previsão do time vencedor de uma partida.

O Android é compatível com uma ampla variedade de ferramentas e métodos de aprendizado de máquina. Seja você um desenvolvedor do Android experiente ou iniciante, aqui estão alguns recursos de ML que ajudarão a atingir os melhores resultados.

Principais áreas de desenvolvimento de ML

Como desenvolvedor Android, você se concentrará na inferência e na implantação de modelos de ML. Dependendo das suas circunstâncias, você também poderá ser envolvido na criação e no treinamento de modelos.

Design para aprendizado de máquina

Assim como outras tecnologias, a aplicação do aprendizado de máquina como uma solução exige que os gerentes de produto, designers e desenvolvedores trabalhem juntos para definir metas de produto, design, versão e iteração. O Google produziu dois guias nessa área:

  • O People + AI Guidebook (em inglês) mostra as práticas recomendadas para que sua equipe tome decisões sobre produtos de IA centrados no ser humano.
  • A especificação The Material Design for Machine Learning (em inglês) contém uma coleção de diretrizes e padrões de design para recursos de aprendizado de máquina, como detecção de objetos e leitura de código de barras.

Criar e treinar um modelo

O aprendizado de máquina requer um modelo treinado para executar uma tarefa específica, como fazer uma previsão, classificar ou reconhecer alguma entrada. Você pode selecionar (e possivelmente personalizar) um modelo existente ou criar a partir do zero. A criação e o treinamento de modelos podem ser feitos em uma máquina de desenvolvimento ou por meio da infraestrutura em nuvem.

Explorar modelos pré-treinados

Modelos pré-treinados estão disponíveis no ML Kit e no Google Cloud. Leia mais sobre eles na próxima seção.

Como criar os próprios modelos com o TensorFlow

Para uma experiência prática de desenvolvimento mais profunda, use estes recursos do TensorFlow:

Inferência

Inferência é o processo de usar um modelo de aprendizado de máquina que já foi treinado para executar uma tarefa específica.

Uma decisão importante que você enfrentará como desenvolvedor do Android é se a inferência será executada no dispositivo ou se usará um serviço em nuvem acessado remotamente. Estes são alguns dos fatores que você precisa levar em conta ao tomar essa decisão:

Inferência no dispositivoInferência baseada em nuvem
Latência Uma latência menor melhora a experiência em tempo real Comunicação assíncrona e largura de banda disponível podem afetar a latência
Recursos Os recursos específicos do dispositivo, como capacidade de processamento e armazenamento, podem limitar o desempenho Recursos baseados em nuvem são mais potentes, e o armazenamento é mais amplo
Off-line/On-line A capacidade de operar off-line é uma vantagem para a execução com infraestrutura de rede deficiente ou inexistente É necessário ter uma conexão de rede
Custo Uso da bateria, tempo de download do modelo para usuários finais Largura de banda da transferência de dados para usuários finais, custos de computação para desenvolvedores
Privacidade Os dados do usuário nunca saem do dispositivo Os dados podem deixar o dispositivo. Outras precauções podem ser necessárias

A tabela a seguir mostra as opções de desenvolvimento disponíveis para cada tipo de inferência:

Inferência no dispositivoInferência na nuvem

Kit de ML

Google Cloud

Treine o próprio modelo de visão personalizado no Google Cloud e execute o resultado no Android e em outros dispositivos de borda:

TensorFlow Lite

O TensorFlow Lite pode ser usado para disponibilizar um modelo treinado como uma solução no dispositivo:

Kit de ML

APIs do Google Cloud

Implantação

Implantação é o processo de empacotamento e atualização do seu modelo para uso no Android ao realizar inferências no dispositivo. Há três opções disponíveis:

Empacotar o modelo de ML com seu app Android
Seu modelo será implantado com o app como qualquer outro recurso. A atualização do modelo exigirá que o app também seja atualizado. Existem duas maneiras de empacotar o modelo de ML com seu app:
Disponibilizar o modelo em tempo de execução
Isso permite que você atualize seu modelo independentemente do app, além de facilitar a realização do teste A/B. É possível exibir o modelo personalizado usando a função dos modelos personalizados do Kit de ML ou hospedar o download do modelo com a própria infraestrutura.
Uma combinação das opções anteriores
Não é incomum os desenvolvedores empacotarem uma versão inicial do modelo com o app Android para que o usuário não precise aguardar o download enquanto atualiza para uma nova versão.

Para modelos pré-treinados específicos do Kit de ML, isto é, reconhecimento de texto e leitura de código de barras, os desenvolvedores podem usar o modelo compartilhado oferecido pelo Google Play Services, o que resulta em APKs menores.

Histórias de desenvolvedores

Transformar o impossível em realidade

A inclusão de ML no seu app Android traz uma nova maneira de criar aplicativos que antes apresentavam várias condições de dificuldade de funcionamento (como leitura confiável de código de barras) ou que não eram sequer possíveis, por exemplo, detecção de imagem e sentimento de texto.

Lose It!

Lose It! é um app de monitoramento de calorias para perda de peso. Ele ajuda a perder peso registrando tudo o que você come. Assim é possível saber quantas calorias você ingeriu. O Lose It! usa a API de reconhecimento de texto do Kit de ML para ler etiquetas de informações nutricionais e extrair dados quando os usuários inserem um novo alimento que ainda não estava na biblioteca.

PlantVillage

O PlantVillage ajuda os agricultores a detectar doenças em plantações de mandioca. A Universidade Estadual da Pensilvânia e o Instituto Internacional de Agricultura Tropical usam modelos personalizados do TensorFlow em execução off-line em dispositivos móveis para ajudar os agricultores a detectar sinais precoces de doença nas plantas.

Fishbrain

O app Fishbrain oferece mapas locais de pesca e previsões do tempo, além de conectar milhões de pescadores. O Fishbrain usa o modelo personalizado do Kit de ML para disponibilizar modelos atualizados do TensorFlow Lite.