¿Aparenta su edad? Esta web desarrollada por dos ingenieros estadounidenses ( Corom Thompson y Santosh Balasubramanian), ingenieros en gestión de información y aprendizaje automático de Microsoft le puede decir los años que tiene con una sola foto o al menos eso es lo que aseguran ,pero sobre todo enseña las grandes capacidades disponibles hoy en día al alcance de todo el mundo gracias a servicios en nube , como es en este caso Azure.
En efecto esta web es el resultado de una divertida historia de cómo esperaban este par de ingenieros que probaran su prototipo tal vez con 50 usuarios para una prueba pero – al final – tienen más de 35.000 usuarios y han visto que todo se desarrolla en tiempo real.
Empezaron experimentando con la detección API de rostros recién liberada de Microsoft a través de una página web llamada http://how-old.net.
Esta página como vemos mas arriba, permite a los usuarios subir una foto actual de modo que la API permita predecir la edad y el género de las caras que se envíen en una foto.
Estos ingenieros enviaron un mensaje a un grupo de varios cientos de personas pidiéndoles que probasen la página durante unos minutos con la esperanza de que al menos 50 personas lo harían.
Monitorearon el tablero de análisis de tiempo real para rastrear el uso de la web y, en pocos minutos, el número de personas que utilizaron el sitio enormemente excedió el número de personas que habían enviado a nuestro email. Vieron que el uso se extendió rápidamente a través de los continentes y, tras tres horas más tarde,más de 35.000 usuarios habían probado la página de todo el mundo (alrededor de 29 k de ellos procedentes de Turquía, mientras que resultó – pues aparentemente hubo un montón de tweets de Turquía mencionando esta página), lo cual es un gran ejemplo de personas divirtiéndose gracias al poder de ML!
También asumieron que la gente no querría subir sus propias fotos ,pero prefería seleccionar imágenes previamente conservadas como las que encontraron en línea. Pero lo que descubrieron fue que más de la mitad de los cuadros analizados fueron de personas que habían subido sus propias imágenes. Querían utilizar esta información para mejorar la experiencia del usuario e hicieron algunas pruebas adicionales alrededor de imágenes subidas desde dispositivos móviles. Dado el poder de tales visiones de tiempo real, podrían también probar ideas adicionales por cosas tales como el diseño de página y obtener retroalimentación inmediata alrededor de la misma.
¿Cuál es la magia detrás de todo esto?
Esto puede ser difícil de creer, pero un día tomó un par de desarrolladores juntar toda esta solución, a partir de la tubería, desde la página web a la máquina de aprendizaje APIs para el streaming de análisis en tiempo real y BI en tiempo real. Esto resultó pues un gran ejemplo del poder de los servicios en nube de Azure.
Los componentes claves de esta solución son:
- Extrayendo el género y la edad de las personas en estas fotos.
- La obtención de ideas de tiempo real sobre los datos extraídos anteriormente.
- La creación de paneles de control de tiempo real para ver los resultados anteriores.
- Extracción de género y edad
Este par de ingenieros han querido crear una experiencia inteligente y divertida que puede captar la atención de personas en todo el mundo, así que miraron las API disponibles en la Galería de Azure para la máquina de aprendizaje. La galería contiene muchos servicios inteligentes acabados tales como cara, discurso y una visión que forman parte de un nuevo conjunto llamado Proyecto Oxford de Bing y Microsoft Research. La API de cara tiene una página de demostración que utiliza la API para detectar y extraer información de rostros en una fotografía. Encontraron la capacidad de la cara API para estimar la edad y el género a ser particularmente interesante y eligieron este aspecto para el proyecto.
Para hacer la experiencia más divertida utilizaron la cara API junto con la API de Bing Search del mercado azul para crear http://how-old.net.
Además de la edad y género, también tienen información adicional de los usuarios del sitio web, la latitud y la longitud de la ubicación de donde fue subido la imagen y mucho más. Esto se representa en el siguiente documento JSON:
[ { “event_datetime”: “2015-04-27T01:48:41.5852923Z”,
“user_id”: “91539922310b4f468c3f76de08b15416″, “session_id”: “fbb8b522-6a2b-457b-bc86-62e286045452″,
“submission_method”: “Search”,
“face”: { “age”: 23.0, “gender”: “Female” },
“location_city”: { “latitude”: 47.6, “longitude”: -122.3 },
“is_mobile_device”: true, “browser_type”: “Safari”, “platform”: “iOS”, “mobile_device_model”: “IPhone”
} ]
Tiempo real Insights
Una vez extraída la información que querían de las fotos subidas y registros web, podían recopilar y analizar los datos obtenidos de miles de fotos subidas a este sitio en tiempo real utilizando un sistema de servicios de Microsoft Azure s para este propósito de streaming.
Recopilaron todos los datos usando Azure Events Hubs, un altamente escalable gestor de publicaciones y suscripciones que toma millones de eventos por segundo. Utilizaron el API de eventos Hubs API transmitir el documento JSON de la página web cuando el usuario subía una foto (tenga en cuenta que la imagen no se guarda, sólo los metadatos extraídos en el archivo JSON obtiene streaming a eventos Hubs .
Ya tenían una secuencia de servicio para la imagen y podían procesar en tiempo real la información de miles de usuarios subiendo imágenes . Para ello utilizaron Azure flujo analítica (ASA), una solución de procesamiento de alto rendimiento de baja latencia totalmente gestionado. ASA le permite escribir su secuencia lógica en un SQL muy simple de procesamiento-como idioma.
Un ejemplo de la utilización de ASA, si quiere la cuenta de “género” en una segunda ventana 10 con un resultado escrito cada segundo, todo lo que necesita es una consulta muy simple para agregar esta información:
SELECT
System.Timestamp AS OutTime,
Face.gender AS Gender,
Count(*) AS Count
FROM
StreamInput
GROUP BY HoppingWindow(second,10,1),
Face.gender
En la consulta anterior, estamos seleccionando el tiempo cuando el resultado está escrito (ocasionadas), género y un conteo de género. StreamInput es el alias del centro del evento al que se enviaron los datos de registro streaming. Esto se hace en una ventana lupulización de 10 segundos, con un salto de 1 segundo. Esta consulta da la cuenta agregada del genero de las caras de las fotos subidas y esta información puede visualizarse en un tablero. Usted puede tener múltiples secuencias de procesamiento de consultas sobre los datos provenientes del mismo evento Hub.
Paneles de control de tiempo real
Utilizaron PowerBI para mostrar los resultados en un tablero de tiempo real. Todo lo que hicieron fue elegir PowerBI como resultado del trabajo de análisis de secuencia . Luego fueron a http://app.powerbi.com y seleccionado el conjunto de datos y tabla creada por ASA. No hay ninguna codificación adicional necesario para crear sus cuadros de tiempo real.
En este ejemplo tenemos un par de consultas de flujo analítica. Uno agrega edad en un rango de edad y en otros campos tales como la ubicación, pasa a PowerBI, y el otro es la consulta antes mencionados. PowerBI le permite crear fácilmente una variedad de visualizaciones, incluyendo mapas, gráficos de líneas, gráficos de vista árboles y más. Gráficos se actualizan en tiempo real como datos es generados por los usuarios subir fotos en http://how-old.net. Además también puede hacer preguntas de lenguaje natural (por ejemplo “¿Cuál es el número de personas que utilizan IOS por género por grupo de edad”) y los gráficos que aparecen como resultado de esa pregunta pueden ser fijados al tablero de tiempo real.
Ir a http://how-old.net pues la verdad es que puede resultarle por lo menos curioso y quizas de paso pueda servirle como inspiración para crear sus propias soluciones mediante servicios Azure y las API disponibles en la galería de ML.