viernes, 22 de julio de 2016

Xamarin y Microsoft Cognitive Services

Ahoj!

Hace unos días tuve el honor de participar en la reunión Nativo o Cross Platform?, he ahi el dilema... organizado por la comunidad de Xamarin Students Mexico en la que participan Vicente Guzmán y Antonio Feregrino entre otros compañeros, con una sesión vía Skype titulada Detectando Emociones con Microsoft Cognitive Services y Xamarin.


Esta charla se dividió en 3 partes. Primero, platiqué sobre lo que son los Servicios Cognitivos de Microsoft, que en esencia son APIs que te permiten agregar Inteligencia Artificial a tus aplicaciones de cualquier tipo (consola, móviles, web, formularios, etc) de una manera muy sencilla, pues simplemente hay que llamar al API, utilizar sus métodos enviando los parámetros requeridos y procesar la salida.


Una de las ventajas para los desarrolladores es que no necesitas tener conocimientos avanzados sobre inteligencia artificial para hacer uso de esta plataforma. Por decirlo de alguna manera, Microsoft ya hizo el trabajo "rudo" y nos facilita la vida a los desarrolladores para centrarnos en darle vida a nuestras ideas.



Microsoft Cognitive Services ofrece soluciones en 5 áreas: Visión, Habla, Lenguaje, Conocimiento y Búsqueda. Cada área tiene ofrece varios servicios interesantes. Por ejemplo, el de Visión trabaja principalmente con reconocimiento facial para identificar emociones en una imagen o video.


¡Lo mejor de todo es que puedes probar gratis el servicio! Obviamente hay limitaciones en el número de peticiones que puedes hacer por hora o por día, pero no es nada que te detenga para al menos intentar hacer una aplicación ;-)


La segunda parte de la sesión se centró en el Emotion API, el cual te permite identificar el estado de ánimo de una persona a partir de un stream (flujo), que puede ser una imagen o video. Mediante reconocimiento facial, se analiza la expresión mostrada en cada uno de los rostros y se le asigna una puntuación (score) implementando algoritmos de Inteligencia Artificial y Reconocimiento de Imágenes. De momento, el API reconoce 8 emociones, tales como felicidad, tristeza y desprecio, entre otras.


Este API implementa el método RecognizeAsync al cual se le envía un stream de la imagen o video a analizar. De respuesta se obtiene una cadena json que contiene la colección de Scores que indican la puntuación asignada a cada emoción (por ejemplo, 0.85 a Ira, 0.01 a Felicidad, etc) por el API después del análisis. 

NOTA: La llave que se muestra en esta imagen ya no funciona obviamente :P genera la tuya :-)

La tercer parte de la plática se centró en la aplicación demo que desarrollé para la sesión. Es una sencilla app hecha en Xamarin.Android que usa la cámara para tomar una fotografía (o te deja seleccionar una foto de la galería) y analiza las emociones del rostro. 


Luego subo otras imágenes graciosas de cada emoción, porque ya saben, ehm, hay que verificar que funciona el código xD

Descarga el código fuente (y la presentación que realicé) desde este enlace de GitHub.

Realmente me agradó lo fácil que es implementar este API en nuestras aplicaciones. Es realmente interesante que ahora podemos construir aplicaciones poderosas y útiles de manera muy sencilla. Te invito a que pruebes los Servicios Cognitivos de Microsoft para que experimentes de primera mano lo fácil que es integrar estos servicios en tus aplicaciones. Particularmente, mi siguiente paso es utilizar el API de Conocimiento para incorporarlo con la de red de investigadores con los que trabajo aquí en República Checa :-) (y en México también, ¿por qué no?)

Con mucho gusto, si tienes alguna pregunta te puedo ayudar. 

Gracias por tu tiempo e interés en leer esta entrada. 

Hezký víkend!

No hay comentarios:

Publicar un comentario