El pasado fin de semana, Santiago Porras y un servidor, estuvimos en un evento de Comunidad en Andorra (GAPAND 2015) contando aspectos relacionados con Machine Learning, Azure y el proyecto Oxford. En el artículo de hoy, quiero hablaros de cómo utilizar el proyecto Oxford en nuestros desarrollos. ¡Empezamos!
¿Qué es el Proyecto Oxford?
En el pasado Build, Microsoft presentó como una de las grandes novedades el proyecto Oxford. Una solución tecnológica que permitirá a los desarrolladores crear aplicaciones inteligentes capaces de reconocer caras e incluso interpretar el lenguaje. El desarrollador únicamente tendrá que incluir la API elegida y dejar a Microsoft todo el proceso de aprendizaje automático.
Los servicios del Proyecto Oxford se encuentran actualmente de forma gratuita en fase beta limitada. Estos se encuentran en la plataforma de computación de Microsoft, Azure, por lo que los desarrolladores pueden acceder a ellos desde cualquier plataforma.
¿Cuáles son los componentes principales?
Los componentes principales del Proyecto Oxford son tres:
- Reconocimiento facial. Mediante esta tecnología podemos reconocer automáticamente las caras que aparecen en las fotos. Esta tecnología se encuentra, por ejemplo, detrás de la famosa web “Adivina que edad tengo”.
- Procesamiento de voz. Otro de los fuertes de esta tecnología es la capacidad de reconocer la voz y transmitirla como texto y viceversa. Interesante, ¿no?
- Herramientas visuales. Mediante este servicio se pueden realizar acciones como: encontrar contenido inapropiado en fotografías, analizar fotografías por colores o detectar texto en las fotos, pudiendo realizar tareas de ordenación por contenido, categorías, etc.
¿Cómo podemos utilizarlo?
En primer lugar, tenemos que instalar el servicio Face API dentro de nuestra suscripción de Azure. Para ello, desde el portal Antiguo de Azure seleccionamos: Nuevo-> Tienda y buscamos Face API.
Una vez tenemos el servicio incluido dentro de nuestra suscripción de Azure (el uso de esta API es de momento totalmente gratuito e ilimitado), obtenemos los Keys que necesitaremos para que funcione esta API dentro de nuestro desarrollo.
A continuación, nos descargamos el SDK para utilizarlo en .NET (aunque alternativamente podemos utilizarlo en Android de forma nativa o utilizar el servicio llamadas REST).
Ejemplo: detección de Edad y Sexo de una foto
Creamos un proyecto de Consola. Abrimos Visual Studio-> Nuevo Proyecto-> C# -> Windows Desktop -> Console Application.
A continuación, agregamos una referencia a la librería del SDK para poder utilizarla. Vamos a implementar un método que, dado una URL donde esta una foto, detecta el número de caras que hay, calcula su edad estimada y el sexo de la misma. Para ello, podemos utilizar el siguiente código:
private static async Task<ResultFace> DetecFacesAndDisplayResult(string url) { var subscriptionKey = Param.Key; try { ResultFace result= new ResultFace(); var client = new FaceServiceClient(subscriptionKey); var faces = await client.DetectAsync(url,false, true, true); Console.WriteLine(" > " + faces.Length + " detected."); foreach (var face in faces) { Console.WriteLine(string.concat(" >> age: ",face.Attributes.Age, " gender:",face.Attributes.Gender); result.Age = face.Attributes.Age; result.Gender = face.Attributes.Gender; } return result; } catch (Exception exception) { return null; Console.WriteLine(exception.ToString()); } }
Resumen
El proyecto Oxford es un gran avance para empezar a realizar nuestras aplicaciones inteligentes. Con el uso de estos servicios, se abre un amplio abanico de aplicaciones que hace no mucho tiempo parecían ciencia ficción y hoy las vemos de lo más normal. ¿Quién no ha mirado su edad en una foto recientemente?
Este proyecto acerca los beneficios del Cloud para nuestro propio beneficio. Por si no hubieran pocos ingredientes, podemos incluir otros aspectos de Azure para implementar aplicaciones potentes (WebJobs, Service Bus, Colas, Media Services, etc). ¡Guau!