Criando um app de reconhecimento de imagem com o Firebase ML Kit

Vinícius Oliveira
Ciclic Techblog
Published in
3 min readMay 28, 2018

Na Google I/O desse ano,o Firebase ganhou uma nova ferramenta poderosa chamada ML Kit. Basicamente, o ML Kit é um conjunto de apis que possibilitam levar o poder do machine learning para seu aplicativo Android ou iOS sem muito esforço. Ok, mas o quê essas apis possibilitam?

  • Detecção de rostos
  • Leitura de códigos de barras
  • Identificação de imagens (Essa aqui que iremos brincar 😉)
  • Reconhecimento de pontos de referência
  • Reconhecimento de texto

Legal, né? Mas hoje iremos falar apenas do reconhecimento de imagens ☝️

E como funciona o reconhecimento de imagens?

Ao passar uma imagem para o ML Kit, utilizando o reconhecimento de imagens, você obtém uma lista de todas as entidades encontradas tais como: pessoas, objetos, lugares, atividades(dançando, comendo, etc)… Cada item encontrado possui uma pontuação que indica sua confiabilidade.

Você pode fazer isso de duas maneiras: dispositivo ou na nuvem. E qual a diferença? No dispositivo, você não precisa de uma conexão com a internet, totalmente gratuito ,mas fica limitado na detecção de aproximadamente 400 labels. Já na nuvem, você utiliza Cloud Vision API e consegue detectar mais de 10.000 labels e é gratuito até 1000 utilizações por mês.

Bom, isso foi uma breve introdução de como funciona o ML KIT e sua api de reconhecimento de imagem, agora vamos realmente ao que interessa…SHOW ME THE CODE.

🙌🏻 Adicione o Firebase em seu projeto.

  • Não sabe como adicionar o Firebase em seu projeto? Dá uma olhada aqui. Logo sem seguida, adicione as depêndencias do ml vision em seu build.gradle.

📷 Use um Bitmap.

  • Para realizar a chamada a api de reconhecimento de imagem, você irá precisar de um objeto do tipo Bitmap. Com esse objeto que represente sua imagem a ser analisada, faça a chamada da api da seguinte maneira:
  • O detector retorna uma lista de objetos do tipo FirebaseVisionLabel e ele é composto por três atributos: label,confidence e entityId. Label é como se fosse uma descrição do objeto encontrado na imagem, confidence é a pontuação que indica a confiabilidade de acerto e entityId, é o id que representa aquela entidade.

Vale lembrar, que o trecho de código acima realiza essa operação on-device, para utilizar o modo na nuvem, basta mudar o visionLabelDetector para visionCloudLabelDetector.

Muito simples, né? Em menos de 10 linhas conseguimos adicionar algo bem legal ao nosso app e que abre um leque de features que podem ser implementadas sem muito esforço. Para dar um help, criei um pequeno sample 🙌 😍

Foto capturada no exemplo
Resultado das entidades encontradas

O exemplo completo está disponível no meu github e pode ser baixado aqui.

--

--