Custom Vision 4 Mobile

Angel Pérez
5 min readMar 24, 2021

--

En esta ocasión no habrá DevOps 😅, pero tenderemos algo Super bueno con IA y Android, para esto usaremos Azure.. Pero primero y como es costumbre, Foundations are Imporant!

La inteligencia artificial no viene a sustituir, viene a reforzar.

La inteligencia artificial ha venido a revolucionar muchas cosas de la industria relacionada a procesos que arrojen datos y podamos utilizar el output para poder ejecutar muchas cosas, como toma de decisiones, identificación de métricas y parámetros.

Hay muchas herramientas que esta tecnología nos brinda, pero es importante y principalmente, nuestro trabajo, encontrar un método super creativo y practico para poder dar soluciones a estos problemas.

IA On Creative Mode

Principios para incorporar IA

Una de las cosas mas controversiales para el tema de la inteligencia artificial, déjenme comentarles que existe un conjunto de reglas que debemos de seguir al diseñar sistemas que incorporen estas tecnologías en sus procedimientos, y la nombraremos como IA Responsable:

  • Equidad.
  • Confiabilidad y seguridad.
  • Privacidad y seguridad.
  • Inclusión.
  • Transparencia.
  • Responsabilidad.

He colocado un enlace para que puedan explorar y profundizar sobre el tema, sin embargo, quiero remarcar que nuestras implementaciones deben de ser confiables y sobre todo con procesos responsables, seguras y transparentes.

Custom Vision API

Bueno bueno, contexto contexto..

Para este post, utilizaremos Azure como nuestro proveedor del motor de Vision Services, para lo que no utilizaremos un servicio tradicional, que tenemos pre-entrenado, para esta ocasión estaremos empleando un servicio muy especial que conocemos como Custom Vision.

Esto nos permitirá incorporar nuestros propios objetos para poder entrenar a nuestro modelo, esto nos dará un resultado muy especifico y centrado en nuestros componentes particulares.

  • Esto en que nos ayuda?
  • Bien puedo usar un modelo genérico y emplearlo en mi solución.

La principal diferencia, es que nos permitirá generar un modelo que funcione en optimas condiciones y resultados para nuestra solución en particular.

Déjenme ponerles un ejemplo: “Con nuestra aplicación puedes detectar problemas de plagas en tus plantas

Y es un modelo particular, ya que uno genérico, no sabrá como se ven las plantas afectados por plagas, sabrían únicamente que es una planta.

Siempre obtendremos mejores resultados, cuando la solución hace fit con el problema (Principios de IA Responsable).

Ok, pongamos manos a la obra!

Preparando los servicios en Azure

Necesitaremos nuestra cuenta de Azure y nuestra bella y poderosísima suscripción para poder crear nuestros servicios (Aun así usemos el Free Tier 😉).

  • Crearemos un grupo de recursos
  • Crearemos un recurso Custom Vision
  • Vamos al sitio de Custom Vision, para crear y entrenar nuestro modelo 👷
Agregare las configuraciones en este caso, ya que si lo queremos optimizado para mobile, debemos utilizar un tipo de modelo compatible con TensorFlow y CoreML (Android e iOS respectivamente)
  • Cargamos las imágenes y generamos las etiquetas (16 por etiqueta)
Generamos el tagging e identificamos al objeto para el entrenamiento de todas las imágenes
  • Entrenamos y generamos el modelo de plataforma
Para incrementar la precisión del modelo, debemos entrenar con un conjunto de imágenes, nítidas y opacas, con al menos 32 elementos por tag, para poder generar un sistema de inferencias con precisión mas cercana a 100% (99.999999%)
  • Descargamos el modelo
Son nuestras opciones, ahora bien, depende del entorno es la opción que utilizaremos.
  • Tomemos cafecito para celebrar el entrenamiento y descarga exitosa ☕️

Implementando en Android

Ha llegado el momento de desplegar esto, para esto creamos un proyecto nuevo en android e insertamos las dependencias que utilizaremos (Que será el entorno de ejecución de TF para object detection y nuestro Custom Vision API) usando Gradle.

implementation 'org.tensorflow:tensorflow-lite:+'
implementation 'ai.customvision.android:inference-tensorflow-lite-libcpp:+@aar'

OJO: Utilizaremos la cámara, entonces preparemos una aplicación que lance la cámara y muestre el feed continuo en el flujo, si podemos separar por Bitmaps estaría super cool.

Feed básico de cámara

Cuando terminemos la sincronización, únicamente necesitaremos nuestro modelo embebido en la aplicación mediante la carpeta de assets para poder usarlo.

Ojo, TFLite tiene un problema de ejecución en versiones modernas de Android, para poder utilizar el modelo generado con Custom Vision, hace falta un Custom Class para el Clasificador/Detector de objetos, principalmente en el constructor para manejar el objeto con el flujo.

Y el método detector de objetos, que simplemente lo convertimos en un ForEach loop.

Esto hará que nuestro modelo sea compatible y todo fluya.

Y ahora simplemente desplegamos y observamos el resultado.

Urra encontramos un Tyranitar!!!

Lo hicimos 😎

Bueno, mucho bla bla bla, aquí esta el repo (Fork Free): Repo Custom Vision

Es todo por este post, mas adelante veremos otros métodos para integrar IA en nuestras apps y sistemas, disfruten, exploren y lo mas importante creen innovación.

Keep Coding, Keep Reading

Angel

--

--

Angel Pérez
Angel Pérez

Written by Angel Pérez

Lead Software Engineer at NuBank

No responses yet