Inteligencia Artificial de Azure con Power Apps: Reconocimiento Facial - Business Central

Breaking

lunes, 19 de abril de 2021

Inteligencia Artificial de Azure con Power Apps: Reconocimiento Facial

 nivel: developer

La inteligencia artificial (AI) parece que está en boca de todos últimamente y como no, aquí estamos para que veas que la cosa no es tan complicada, al menos para empezar.  El pasado sábado 16 de abril, impartí una sesión en el Global Azure 2021 donde hablaba de una aplicación de Check in online donde puedes comparar una foto con el documento de identidad usando los servicios cognitivos de Azure.  Puedes verla pinchando aquí.

Servicios cognitivos de Azure



¿Y eso que es?  Pues es la forma de usar Inteligencia Artificial, sin tener tener muchos conocimientos de la materia.  No tienes que crear ni entrenar un modelo (enseñarle que es lo que tiene que reconocer).  Azure de lo da ya preparado y empaquetado para llegar y usar.  En una entrada anterior, ya expliqué como usar un servicio de traducción desde Business Central . Son servicios a los que se accede mediante una API con contraseña y pasándole los parametros adecuados.  Azure los procesa y nos devuelve el resultado.

Microsoft ofrece diversos servicios:

Hoy vamos a probar un servicio de "Computer Vision", en especial uno llamado "Face" que como su nombre indica, analiza caras y permite compararlas.

Servicios cognitivos "Face"



Para instalarlo, accederemos a nuestro portal de azure y después a servicios cognitivos.  Una vez allí buscamos en el marketplace el servicio en cuestión "Face".



La configuración es muy sencilla, puesto que simplemente nos solicita la suscripción, el grupo de recursos, la región, el nombre que le queremos dar y finalmente la tarifa.  


Recordad que Azure suministra la tarifa gratuita con 20 llamadas por minuto y 30.000 llamadas al mes.  Si tus requisitos son mayores, deberás de comprobar la tarifa que mejor se adapta a tus necesidades.

Una vez configurada y creada, en la sección de Administración del recurso tenemos las claves y el punto de acceso.  ¿Que significa esto?

Clave 1 y Clave 2:   Las contraseñas que podemos usar en nuestras llamadas API.  Podemos usar cualquiera de las dos individualmente.

Extremo o punto de acceso:  Dirección web de nuestro servicio.  Es decir, la URL de la llamada de la API.


Uso del reconocimiento facial mediante API en Postman

Una vez configurado, podemos llamar a nuestra API desde Postman.  La documentación de la API la puedes encontrar aquí.

Yo voy a usar dos funciones, aunque existen más: Detect y Verify

Detect:  Te permite enviar una imagen (bien mediante una URL o bien mediante datos binarios) y te devuelve diferentes atributos (si lleva gafas, si lleva maquillaje, barba, bigote...) y unos parámetros de la cara como la distancia entre los ojos, que luego se pueden usar para comparar caras.  


Además te devuelve un FaceID, que es el identificador de esa cara.


Verify:  Te permite introducir dos FaceID y te devuelve la probabilidad de que sean de la misma persona.



Con ambas funciones, necesitaremos añadir dos cabeceras:  Como le vamos a mandar la información (JSON o binario) y una de las dos claves suministradas por Azure:



Seguridad.  Según nos indica la documentación, Microsoft no almacena las imágenes.  Solamente los atributos y el faceID.  Además disponemos de un parámetro que permite indicar el tiempo que permanecerá dicha información viva (faceIdTimeToLive).

Aplicación con PowerApps y PowerAutomate

Como lo que realmente me gusta es poner en marcha proyectos reales y no teóricos, me propuse hacer una aplicación con PowerApps que permitiese hacer una comparación entre un documento de identidad y una foto, para verificar en un autocheck-in de un hotel, si el huesped se corresponde a la fotografía del documento.

Para ello me basé en una aplicación de check-in que preparé para otra sesión de Global Power Platform Bootcamp 2021 Mallorca, en la que usaba Power Apps y las tablas virtuales de Business Central para hacer el autocheckin (puedes verla aquí).  En este caso le añado la funcionalidad de integrar los servicios cognitivos para el reconocimiento facial.  Es decir, usando la potencia del ecosistema Microsoft: PowerApps - Power Automate - Business Central y Azure.



Mi PowerApp, introduciendo el número de reserva te permite recuperar o añadir los datos del huésped en Business Central mediante las tablas virtuales:


Además ahora la añadimos la imagen y la comparamos con el documento.  Es cierto que podríamos usar AI Builder para hacer cosas de este tipo, pero hay que recordar que es un servicio Premium por lo que habrá usuarios que no puedan permitírselo.

En este caso, lo que hago es cargar la imagen del pasaporte, que podrá ser escaneada o tomada con el correspondiente control de PowerApps y luego la foto del huesped.   Usando el servicio previamente configurado y probado en Postman, compararemos las dos imágenes y nos muestra la probabilidad de que sean iguales:


Como llamar a la API desde PowerApps.  

En PowerApp disponemos de un control que permite ejecutar un Flujo de Power Automate, por lo que será este último el que haga la llamada a la API.


Para ello crearé un nuevo Flujo que se desencadenará desde PowerApps:


El primer paso, hará la llamada a la API por HTTP, introduciendo los mismos parámetros que incluíamos en Postman y con la diferencia de que el cuerpo, vendrá desde PowerApps:

El siguiente paso será el análisis del JSON que voy a recibir.  Para facilitar su diseño, copio desde Postman la respuesta en "generar desde la muestra":


Finalmente analizamos la respuesta:


Este botón de Power Automate, lo llamo cuando cargo la foto:


La sentencia "BotóndePowerApps:2".RUN es la que llama al flujo de identificación, generando el cuerpo mediante la instrucción concatenate:

"{ "url" : gallery2.selected.foto }", teniendo en cuenta que gallery2.selected.foto contiene la URL de la foto que mandaremos al servicio Face.

Las respuesta, que será el FaceID, la guardo en la variable "respuesta" y a su vez en el control textInput que tenemos debajo de cada foto.  

Repetimos el mismo proceso para capturar el segundo FaceID, de la foto del huésped.

El contenido de estos dos textInputs serán los que utilicemos para hacer la llamada al segundo botón de Power AutomateComparaCaras


Este segundo botón de Power Automate está configurado igual que el anterior, simplemente cambiando la url con la función concreta "Verify" y actualizando el JSON de respuesta.  Una vez que la prueba de Postman funciona, convertirlo a un Flujo y llamarlo desde PowerApps es muy sencillo.

El resultado de la llamada lo guardo en una variable "verifica" y con ella actualizo la etiqueta para determinar si son iguales y con qué probabilidad:


Conclusión

Microsoft nos ayuda con los servicios cognitivos para que el uso de la Inteligencia Artificial no sea tan complicado.  También podemos comprobar la potencia que nos da la PowerPlatform para que con muy, muy poco código, podamos hacer aplicaciones realmente interesantes.

¿Has probado algún servicio cognitivo?  ¿Para qué aplicación práctica? Más allá de ver si la cara está alegre o no, los servicios cognitivos pueden ser muy útiles en aplicaciones del mundo real.  Ponme en los comentarios tus impresiones o tus ideas de aplicación.














No hay comentarios: