Ya se puede averiguar la edad por una foto

Por Soloelectronicos @soloelectronico

¿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.