Ya se puede averiguar la edad por una foto


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

howold

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.

 

Pasos para migrar aplicaciones en Google Cloud


Tras el aviso de Google a los usuarios de la plataforma de Google Cloud ,es decir  la  plataforma PaaS( Plataforma como Servicio ) conocida  como  GAE  (Google App Engine)    para que migren sus viejas  aplicaciones maestro/esclavo  construidas en  Python,Java PHP o  Go  hacia  el   nuevo entorno HRD que sustituirá definitivamente al veterano sistema basado en el almacén  de datos maestro/esclavo, vamos a ver como es realmente sencillo migrar nuestras aplicaciones para no perderlas definitivamente el plazo tope de este verano.

  

 

En  efecto,  el  veterano almacén de datos Maestro / Esclavo  que hemos usado desde que GAE se puso en servicio pronto se cerrará, para dar paso a la nueva plataforma  HRD.Como nota importante aunque las  aplicaciones desplegadas en GAE que no almacenen  datos en el almacén de datos  Master / Slave , todavía se configuran para utilizar el almacén de datos Master / Slave ,así que esta nueva directiva todavía les es de aplicación .

Tras el desmantelamiento de la infaestructura del almacen de datos master/slave, van a proporcionar un período de gracia de un mes durante el cual los usuarios pueden volver a habilitar sus aplicaciones con el fin de migrar a HRD. Esto significa que después de 10 de agosto 2015 estas aplicaciones dejarán de atender las solicitudes y que ya no tendrán acceso programático a los datos. Obviamente  si ya no necesitan las aplicaciones maestro / esclavo y datos asociados, no se requiere ninguna acción ( se borrarian ) pero si se necesitan  animan a que migremos a HRD inmediatamente.

Cuando el equipo de Google lanzó    el almacén de datos Google  App Engine, Master / Slave era el único servicio de base de datos que las aplicaciones podían utilizar para almacenar datos. Se daba la circunstancia de que el almacén de datos Master / Slave tenía problemas para escalar con el tamaño y era  complejo mantener  las aplicaciones que se ejecutaban en App Engine  usando ese sistemas , así que se lanzó su sucesor, el almacén de datos  de alta replicación (HRD), en 2011. Desde ese lanzamiento HRD ha demostrado  escalar sin problemas.

Uno de los objetivos principales con Google Cloud Platform era proporcionar a los clientes las mejores tecnologías para construir su negocio, así que cuando vieron que HRD era una tecnología más robusta, finalmente han decidido hacer HRD el servicio de base de datos por defecto.

El 4 de abril 2012 Google  anunció  la desaprobación de almacén de datos del maestro / esclavo – , lo cual  ya era una señal de que en tres años a partir de esa fecha se cerraría formalmente el servicio.

Como ya han pasado  tres años desde que se anunció, van a  forzar el apagado de todo lo que  este en esa vieja infraestructura  del almacén de dato Master / Slave . De hecho,  si los usuarios  no tomasen ninguna acción en las  aplicaciones que esten desplegadas  en Master/Slave ,  las cerrarán el 6 de julio, 2015 y ya no garantizarán el tráfico de éstas (los usuarios verán respuestas HTTP 404 ).

 

Una nota importante: Es necesario seguir los pasos anteriores, incluso si la aplicación no almacena ningún dato, ya que tambien la  aplicación está configurada para utilizar el  almacén de datos maestro / esclavo.  Por ejemplo, incluso si se trata de una página web HTML estática. Cuando cierren el almacén de datos maestro / esclavo  de estas aplicaciones también cerraran  las que  no se migren.

 

Para asegurarse de que estas viejas aplicaciones que usen el almacén de dato Master / Slave sigan funcionando, los usuarios  tendrán que seguir estos pasos para cada aplicación:

 

1-Validarnos con nuestra cuenta de google

2-Iniciar sesión en la consola de administración del motor App   accediendo a la siguiente  url : https://appengine.google.com/

 

migracion0

3-Acceder  ahora   a  las aplicaciones que están bajo el esquema de almacenamiento  Master/Slave  pinchando sobre el link Migrate to High Replication

migracion1

 

4-Tras un proceso largo que dependerá del volumen de código de la aplicación, se  irán completando  las 8 fases  que constituyen el proceso (cath up, Copy,Waiting,Sync,Read-only,Catch up ,Sync,Copy)

 

5-Espere que  las  8 fases  que constituyen el proceso (cath up, Copy,Waiting,Sync,Read-only,Catch up ,Sync,Copy) estén concluidas  (la columna de Status pasara desde Waiting a Done).

Observaciones:

-En la fase Waiting habrá que confirmar  la activación   read-only bien seleccionando la copia incremental  o bien activado la activación de solo Lectura

migracion2

 

-En la ultima fase  Alias  tendremos que confirmar la creación del Alias

hrd migration

6-Observe que durante  el proceso hasta la ultima fase si  no ha ido satisfactorio o cambia de parecer , tiene la posibilidad de revertir el  proceso pulsando el botón   «Revert Migration«, pero una vez concluya el proceso  ya no podrá volver «marcha atrás»

 

migration-finish