Añade inteligencia a tus aplicaciones con el Proyecto Oxford
Uno de los grandes trending topics del pasado Build 2015 fue la web https://how-old.net, donde al subir una foto te predice la edad y el sexo de las personas que aparecen en ella. Para realizar esta hazaña se utiliza una técnica de aprendizaje automático llamada Deep Learning, que ahora podemos incluir de forma sencilla en nuestras aplicaciones gracias al proyecto Oxford. A través de llamadas a una API REST podremos acceder a los siguientes servicios:
- Reconocimiento facial, permite detectar caras, grupos de personas e identificación facial
- APIs de voz con reconocimiento y síntesis de voz en múltiples idiomas
- Visión por computador que nos proporciona análisis avanzado de imágenes, OCR y miniaturas inteligentes
- Comprensión de lenguaje natural, para poder comunicarnos por voz con nuestras aplicaciones
Gracias a estos servicios, podremos incluir en nuestras aplicaciones cualquiera de estas características, proporcionando así inteligencia a nuestras aplicaciones con muy poco esfuerzo.
Aunque hayamos anunciado el proyecto publico hace muy poco, todos estos proyectos llevan mucho tiempo funcionando dentro de los productos de Microsoft, como en el caso del motor de búsquedas de Bing. Cuando realizamos una búsqueda de imágenes, Bing utiliza los algoritmos de visión artificial para identificar automáticamente los elementos que estamos buscando, la idoneidad de las imágenes por rango de edades y cultura, los colores y muchas otras características:
La verdadera novedad es que estos servicios ahora están a disposición de cualquier desarrollador y ya podemos incorporar a nuestras aplicaciones los mismos algoritmos de inteligencia que estamos utilizando en Microsoft para nuestros productos como Bing o Cortana.
Uso de las APIs en nuestras aplicaciones
Para empezar a utilizar una de las APIs tenemos que darnos de alta para obtener un código de desarrollador. A través del portal https://www.projectoxford.ai, pulsando en el botón “Sign up” en la página del servicio que queramos utilizar:
Esto nos llevará a la página de Azure donde podremos seleccionar el servicio que queremos utilizar. Para este ejemplo utilizaremos la Face API:
Una vez creado el servicio del Marketplace ya podremos obtener una clave desde el enlace Manage que nos permitirá regenerar y/o copiar la clave que necesitamos para incorporar en nuestras aplicaciones:
En la misma página del proyecto encontraremos el SDK que incluye ejemplos de uso de las librerías cliente. Dependiendo de la API tenemos código para .Net, para Android y para iOS, aunque como al final es una api REST será muy fácil incorporarla a cualquier otro lenguaje que pueda realizar una llamada HTTP.
Detección facial
La API de detección facial nos permite detectar caras en cualquier foto, predecir su edad y sexo, verificar si la misma persona sale en dos fotos, agrupar las personas que salen en un listado de fotos, encontrar caras similares e identificar a la persona que sale en la foto.
Los ejemplos vienen con una librería “portable” que ya hace el trabajo de comunicar con la API REST, de forma que la podamos incluir la funcionalidad en nuestras aplicaciones de forma muy sencilla. En la librería cliente ya tenemos los métodos que realizan las llamadas REST por nosotros:
Para poder utilizar el proyecto de ejemplo tenemos que introducir la clave de suscripción dentro del MainWindow.Xaml.cs:
Visión artificial
Las aplicaciones modernas utilizan muchísimo contenido audiovisual y resulta muy costoso clasificar e identificar si ese contenido es correcto en cada contexto. Mediante las APIs de visión artificial podremos extraer gran cantidad de información de una simple imagen. Por ejemplo, nos permitirá identificar qué parte de la foto es la más importante para poder realizar un recorte correctamente a la hora de generar una miniatura:
También es capaz de detectar desnudos e identificar si es un desnudo adulto o una foto de un bebé y nos proporcionará mucha información útil para clasificar la imagen que le hemos proporcionado. De la siguiente imagen nos explica que no es ni clipart ni un dibujo, no tiene contenido adulto y entra dentro de las categorías “exteriores” y “exteriores con agua”. Además nos indica que el color predominante es el gris y si queremos utilizar un color de contraste para la foto nos propone el #3F668C:
Las categorías que nos proporciona el sistema están basadas en un modelo entrenado sobre 86 categorías diferentes provenientes de Bing:
Los colores dominante y resaltado nos permitirán crear vistas de las imágenes con un buen contraste con la página que las contiene. De esta forma podremos adaptar el aspecto de nuestra aplicación dependiendo de las imágenes que estemos mostrando, proporcionando una interfaz mucho más equilibrada y agradable a la vista.
Por último, los valores Adult y Racy nos dicen si las imágenes contienen desnudos o bien son imágenes sugerentes que pueden herir la sensibilidad en ciertas culturas. Estas mismas técnicas se utilizan en Bing Safe Search.
Utilizando el SDK de .Net, realizar un análisis, OCR o creación inteligente de miniatura sería así:
APIs de voz
Con este SDK podremos convertir voz a texto y texto a voz desde cualquier plataforma (Windows, iOS y Android), con el mismo motor que está utilizando Cortana para reconocer nuestra voz. Por ahora reconoce chino, inglés, francés, alemán, italiano y español. La conversión de texto a voz añade el portugués y el ruso, además de algunas variantes de cada uno de los idiomas.
Como todos los otros proyectos, además de poder descargarnos el SDK e incorporarlo a nuestras aplicaciones, tenemos una página de demostración donde podremos utilizar el servicio en directo:
LUIS
Complementando a los algoritmos de reconocimiento de voz está el servicio de comprensión LUIS (Language Understanding Intelligent Service). Es el mismo que Bing y Cortana utilizan para entender la intención que tenemos al hablar con el asistente. Esto nos permitirá hablar con nuestras aplicaciones y que estas entiendan los comandos que queremos que ejecuten, como “Enciende la luz” o “Pon la calefacción a 22 grados”. Por ahora, este servicio está en beta privada y sólo disponible por invitación.
El servicio dispondrá de modelos programados con los comandos más habituales y también podremos crear nuestros propios modelos que entiendan las acciones específicas de nuestra aplicación. Nos proporcionará un json con el comando más probable y la puntuación sobre otros comandos:
Empieza ya con el proyecto Oxford
Incorporar todos estos servicios a tus aplicaciones es muy fácil, sólo tienes que darte de alta, obtener tu clave y empezar a utilizarlos:
- Abre https://www.projectoxford.ai y selecciona “Sign up” en cualquiera de los servicios
- Crea el servicio a través del Azure Marketplace como Free Tier
- Obtén tus claves de desarrollo
- Descarga el SDK
¡Esperamos ver pronto vuestras aplicaciones!
Juan Manuel Servera
@jmservera
Web & IoT Technical Evangelist
Comments
Anonymous
June 17, 2015
La verdad es que las posibilidades que ofrece Proyecto Oxford son inmensas. Muy buen trabajo.Anonymous
March 20, 2016
Buenas tardes,Muy interesante el tema, si se quisiera llevar este tipo de aplicaciones a nível de vídeos para implementar un sistema de alertas que enviara un mensaje de advertencia al encontrar menores de edad solos en sitios de riego (por ejemplo: una piscina sin el acompañemiento de un adulto, niños en áreas de mucha afluencia vehícular), que podría hacer para tener control sobre la edad que devuelve y así poder verificar si se trata de un niño una vez se compare su edad con un rango considerado como niño, y como puedo controlar que la imagen que llegan sea identificada como un niño que se encuentra solo o que acaba de llegar a ese sitio, estoy probando la aplicación WPF eb C#, muchas gracias.Anonymous
April 19, 2016
The comment has been removed