Custom Vision 4 Mobile
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 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.
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 👷
- Cargamos las imágenes y generamos las etiquetas (16 por etiqueta)
- Entrenamos y generamos el modelo de plataforma
- Descargamos el modelo
- 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.
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.
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