Las ventajas que te ofrece Microsoft Azure y el mundo.NET

Microsoft Cognitive Services | Introducción

En los últimos tiempos las grandes empresas tecnológicas están trabajando muy duro e invirtiendo muchos recursos en una nueva “revolución” basada en las IA, Machine Learning, Big Data, Realidad Virtual, etc. que, aunque no son conceptos nuevos sí que parecían algo abandonados en tiempos pasados. Entre todos estos esfuerzos y dado que se está universalizando su uso, parece lógico que aparezcan potentes plataformas, APIs, frameworks, etc. que hagan uso de esas tecnologías para hacer un poco más sencillo que los desarrolladores implementen soluciones basadas en ellas.

Entre todas estas grandes compañías, Microsoft ha apostado más fuerte que nadie, no sólo universalizando Machine Learning sino poniendo a disposición de los desarrolladores múltiples servicios, generalmente apoyados en Microsoft Azure, muy fáciles de usar y, sobre todo, que pueden ser consumidos desde cualquier otra tecnología.

Es en este punto donde Microsoft Cognitive Services se convierte en un caballo ganador ya que aúna gran cantidad de APIs para dar solución a diferentes escenarios en los que se requiere del análisis de datos o de complejos algoritmos que, por nuestra cuenta sería muy complicado que desarrolláramos.

¿Qué APIs componen Microsoft Cognitive Services?

Microsoft ha dispuesto varios grupos de servicios que, a día de hoy, son Language, Speech, Knowledge, Search y Vision. Estos servicios se apoyan en Machine Learning y hacen uso del resultado de analizar cantidades masivas de datos por algoritmos complejos.

image

Las aplicaciones que podemos dar al uso de estas APIs son múltiples y ya mi compañero Adrián Díaz y un servidor Santiago Porras, dimos varias charlas al respecto, desde el punto de vista de un desarrollador,

Ejemplos del uso de estas APIs, son las páginas How-Old.net, TwinsOrNot.net, Bing, Bing Image Search, etc. Microsoft incluso dispone de una página para poder poner nuestras aplicaciones como ejemplo de su uso https://www.microsoft.com/cognitive-services/en-us/applications y podemos encontrarnos incluso Uber

Ejemplo de Face API (Vision) en una App Windows 10

Para Windows 10, existe un SDK que podemos descargar desde nuget https://www.nuget.org/packages/Microsoft.ProjectOxford.Face/ además de estar disponible en GitHub con ejemplos y documentación.

Empezamos por agregar el paquete de Nuget, para lo que, en este caso, usaré Package Manager Console y escribiré el comando Install-Package Microsoft.ProjectOxford.Face

image

Una vez instalado podremos realizar tareas como detectar, reconocer y agrupar caras https://www.microsoft.com/cognitive-services/en-us/face-api/documentation/overview

En este caso, vamos a probar la detección de caras y, veremos cómo con un sencillo código podemos realizar la detección de caras y extraer bastante información útil.

                    var faceServiceClient = new FaceServiceClient("{API Key}");
                    var faces = await faceServiceClient.DetectAsync(fileStream, false, true, new FaceAttributeType[] { FaceAttributeType.Gender, FaceAttributeType.Age, FaceAttributeType.Smile, FaceAttributeType.Glasses, FaceAttributeType.HeadPose, FaceAttributeType.FacialHair });
                    foreach (var face in faces)
                    {
                        DetectedFaces.Add(new Face()
                        {
                            ImagePath = picture.Path,
                            Left = face.FaceRectangle.Left,
                            Top = face.FaceRectangle.Top,
                            Width = face.FaceRectangle.Width,
                            Height = face.FaceRectangle.Height,
                            FaceId = face.FaceId.ToString(),
                            Gender = face.FaceAttributes.Gender,
                            Age = string.Format("{0:#} years old", face.FaceAttributes.Age),
                            IsSmiling = face.FaceAttributes.Smile > 0.0 ? "Smile" : "Not Smile",
                            Glasses = face.FaceAttributes.Glasses.ToString(),
                            FacialHair = string.Format("Facial Hair: {0}", face.FaceAttributes.FacialHair.Moustache + face.FaceAttributes.FacialHair.Beard + face.FaceAttributes.FacialHair.Sideburns > 0 ? "Yes" : "No"),
                            HeadPose = string.Format("Pitch: {0}, Roll: {1}, Yaw: {2}", Math.Round(face.FaceAttributes.HeadPose.Pitch, 2), Math.Round(face.FaceAttributes.HeadPose.Roll, 2), Math.Round(face.FaceAttributes.HeadPose.Yaw, 2))
                        });
                    }

Como se puede observar, simplemente necesitamos una clave para acceder al servicio y que podemos obtener desde la página de la propia API. Una vez establecida la conexión con el servicio, tan sólo hay que enviar el Stream de la imagen al método “DetectAsync” de la API y procesar los resultados.

El resultado final es el mostrado en la imagen a continuación.

UWP - Face Api_30FPS_GIF_01-05-17

mm

Sobre Santiago Porras Rodríguez

Innovation Team Leader at ENCAMINA | MVP in Developer Technologies. Apasionado por las nuevas tecnologías. Colaboro con la comunidad de desarrolladores escribiendo artículos en mi blog personal y ocasionalmente en CompartiMOSS.com. Además, soy uno de los coordinadores de TenerifeDev, grupo de usuarios de .NET de Tenerife y de otros grupos como Comunidad Office 365. Puedes encontrarme en la red microparticipando en Twitter con el usuario @saintwukong
Esta entrada ha sido publicada en Face API, Microsoft Cognitive Services, Vision y etiquetada como , , . Enlace permanente .
Suscríbete a Piensa en Sofware desarrolla en Colores

Suscríbete a Piensa en Sofware desarrolla en Colores

Recibe todas las actualizaciones semanalmente de nuestro blog

You have Successfully Subscribed!

ENCAMINA, piensa en colores