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.

 

ARDUINO REMOTO para WINDOWS Parte 2 de 3


Arduino remoto para  Windows es una biblioteca de componentes de tiempo de ejecución de Windows de código abierto que permite a los fabricantes controlar un Arduino mediante una conexión Bluetooth o USB. Se pretende para los desarrolladores de Windows Runtime que quieran aprovechar el poder de hardware Arduino usando las lenguajes  de tiempo de ejecución de Windows. Los desarrolladores que incluyan este componente en sus proyectos automáticamente tendrán acceso a sus funciones en cualquiera de las lenguajes soportados de  WinRT (C + + CX, C# y JavaScript).

 En un post anterior vimos cómo configurar su Arduino , hoy vamos a ver como   configurar su ordenador  para añadir la biblioteca Arduino Remoto para windows a su  solución IoT

Hay tres maneras de agregar la biblioteca Arduino remoto para  Windows a su solución, en orden de más fácil a más difícil.

  1. Instale el paquete de NuGet
  2. Agregar manualmente los archivos del proyecto Arduino remoto de Windows a su solución
  3. Compilar la solución Windows remotos Arduino y manualmente los archivos WinMD en la solución de referencia.

De estas opciones, instalar el paquete NuGet es por lejos la más fácil.

Opción 1: Instalar el paquete de NuGet

NuGet es una manera rápida y fácil para instalar automáticamente los paquetes y las dependencias de la instalación. Por desgracia, no todavía tenemos soporte para NuGet en Windows 10.

 

 

Opción 2: Añadir los proyectos Arduino remoto de Windows a su solución

Paso 1: Crear un nuevo proyecto

  • Archivo -> nuevo proyecto
  • Seleccione su idioma de preferencia. Arduino remoto para Windows es un componente de WinRT, lo que significa que es compatible con C++, C# o JavaScript.
  • Verá que he elegido C# ampliando el menú «Visual C#». Seleccione la opción «Windows» y elija «App en blanco (Windows Universal)» o «App en blanco (Windows 8.1 Universal)» Si usted está construyendo para Windows 8.1.

Paso 2: Añadir proyectos Arduino remoto de Windows a su solución

  • Acceda a su copia local del repositorio. Aquí verá que lo clonó a C:\git\remote-wiring, pero puede elegir un directorio diferente. Luego, abra la carpeta solución apropiada para su entorno de compilación (10 de Windows o Windows 8.1).
  • Vamos a empezar con el proyecto de serie (Microsoft.Maker.Serial). Abra este directorio.
  • Seleccione el archivo .vcxproj . (Si usted está apuntando Windows 8.1, primero tendrás que elegir entre Windows y Windows Phone directorios de plataforma. No tienes que hacer esto para Windows 10, que es Universal para todas las plataformas.)
  • Haga clic en cualquier proyecto y seleccione crear dependencias-> dependencias del proyecto
  • Dependencias entre proyectos para Arduino remoto Windows ya debe estar configurado. Sin embargo, no lastimará a verificar que las dependencias correctas son seleccionadas para cada proyecto. Seleccione cada proyecto en la gota abajo y verifique que tiene las dependencias correctas.
  • Serie no tiene dependencias.
  • Una firmado depende de serie.
  • RemoteWiring depende de serie y una firmado.

Finalmente, seleccione su proyecto en la gota abajo y cada uno de los proyectos Microsoft.Maker como dependencias para su proyecto.

  • Haga clic en «Referencias» en su proyecto. Seleccione Agregar referencia
  • En la pestaña «Windows Universal», seleccione el submenú «Extensions» y seleccione el Paquete de tiempo de ejecución de Microsoft Visual C++ AppLocal versión 14.0.
  • En la pestaña «Proyectos», seleccione los tres de los proyectos de Microsoft.Maker
  • Reconstruir su solución seleccionando Build -> reconstruir todo

Paso 3: ¡ Diviértete!

Ahora puede utilizar los tres proyectos directamente en el código fuente. Usted notará he construido un objeto BluetoothSerial y lo unió a mi objeto de ServiceRecord, así que he incluido los dos espacios de nombres apropiados en la parte superior de mi archivo .cs.

Opción 3: Compilar manualmente y añadir referencias a su solución

Compilar manualmente una biblioteca de componentes WinRT produce archivos .winmd y .dll que se pueden hacer referencia en su proyecto.

Paso 1: Compilar la solución Windows remotos Arduino

  • Clonar el repositorio de Windows remotos Arduino GitHub.
  • Abra la copia local del repositorio. Aquí verás que yo he clonó a C:\git\remote-wiring, pero usted puede elegir un directorio diferente. Luego, abra la carpeta solución apropiada para su entorno de compilación (10 de Windows o Windows 8.1).
  • Abra el archivo de solución (.sln). Si no tienes «Extensiones de nombre de archivo» habilitado en la ficha «Ver», puede buscar el tipo de «Microsoft Visual Studio solución». (Si usted está apuntando Windows 8.1, primero tendrás que elegir entre Windows y Windows Phone directorios de plataforma. No tienes que hacer esto para Windows 10, que es Universal para todas las plataformas)
  • Seleccione el destino correcto construir. Si usted está planeando desplegar la aplicación Pi2 frambuesa o Windows Phone, usted querrá seleccionar brazo. Caso contrario si usted está apuntando a una selección de plataforma PC ya sea x 86 o x 64. Si usted está apuntando MinnowBoardMax, seleccione x 86.
  • Construcción -> reconstrucción de solución
  • La solución debe aumentar aproximadamente un minuto.

Paso 2: Crear un nuevo proyecto

  • Archivo -> nuevo proyecto
  • Seleccione su idioma de preferencia. Arduino remoto de Windows es un componente de WinRT, lo que significa que es compatible con C++, C# o JavaScript.
  • Verás que he elegido C# ampliando el menú «Visual C#». Seleccione la opción «Windows» y elija «App en blanco (Windows Universal)» o «App en blanco (Windows 8.1 Universal)» Si usted está construyendo para Windows 8.1.

Paso 3: Referencia a los archivos de WinMD

  • Busque el elemento de «Referencias» en el explorador de soluciones en su nuevo proyecto. Con el botón derecho y seleccione «Agregar referencia…»
  • En la pestaña «Windows Universal», seleccione el submenú «Extensions» y seleccione el Paquete de tiempo de ejecución de Microsoft Visual C++ AppLocal versión 14.0.
  • Seleccione la pestaña «Examinar» de la izquierda y haga clic en el botón «Browse…» en la parte inferior.
  • Busque el directorio donde se ha almacenado en el repositorio de Arduino remoto de Windows y abra la carpeta del proyecto apropiado.
    • Si se ha compilado la biblioteca como «Brazo» utilizará la carpeta «Brazo» como yo tengo por debajo y luego «Debug» dentro de «Brazo».
    • Asimismo, x 64 puede encontrarse en la carpeta «x64\Debug».
    • x 86 estará en simplemente «Debug» como se puede ver en la captura de pantalla siguiente.
  • Aviso que estoy dentro del directorio «ARM\Debug», como estoy compilando para plataformas brazo como Windows Phone 10. Vamos a empezar por la apertura de la carpeta «Microsoft.Maker.Serial».
  • Seleccione el archivo WinMD y pulse «Añadir».
  • Repita los pasos 3-5 para todos los archivos WinMD tres ubicados en sus respectivas carpetas. Puede encontrar archivos WinMD adicionales en otras carpetas de proyecto, como hacen referencia a otros proyectos. Sólo referencia el WinMD correcto para cada directorio.
  • Los siguientes pasos estará automatizados en el futuro, pero son una necesaria por el momento.

Por ahora, nosotros debemos manualmente ‘conectar’ el archivo WinMD con su archivo .dll respectivos. Haga clic en el archivo de proyecto (no de la solución) y seleccione «Descargar Project».

  • Seleccione la opción Editar .csproj nombre del proyecto.
  • Casi al final de este archivo XML, localice la sección de referencia y específicamente las etiquetas <Reference> tres de los elementos que hemos añadido en los pasos 3-6.
  • Debe agregar dos etiquetas a cada una de estas etiquetas <Reference> debajo de la etiqueta <HintPath> .
    <IsWinMDFile>true</IsWinMDFile>
    <Implementation>%PROJECT%.dll</Implementation>
    Donde proyecto % es el nombre del proyecto apropiado para esa etiqueta <Reference> . He añadido los tres aquí (aunque sólo uno está resaltada). Así que usted puede agregar el texto para que coincida con lo que tengo en la captura de pantalla siguiente. No importa donde ha instalado sus proyectos, la etiqueta<HintPath> se encarga de eso para nosotros.
  • Hacer click derecho sobre el proyecto y seleccione «Actualizar Project». Si se le pedirá que guarde, seleccione Sí.

Paso 4: ¡ Diviértete!

Ahora puede utilizar los tres proyectos directamente en el código fuente. Usted notará he construido un objeto BluetoothSerial y lo unió a mi objeto de ServiceRecord, así que he incluido los dos espacios de nombres apropiados en la parte superior de mi archivo .cs.

Capacidades del dispositivo

Cada proyecto de Windows contiene un archivo de manifiesto que debe estar configurado para permitir ciertos permisos, como la conectividad Bluetooth y USB.Afortunadamente, es bastante fácil de configurar estos.

Usted necesitará abrir el archivo package.appxmanifest del proyecto haciendo clic derecho y seleccionando la opción «Ver código». Entonces encontrar la de la etiqueta y pegar uno o ambos de los siguientes bloques de etiquetas como un nodo secundario.

Nota:

Para Windows 8.1, necesitará agregar el espacio de nombres siguiente a la parte superior del archivo XML, dentro de la etiqueta <Package> .

xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest"

Habilitar las capacidades Bluetooth

Usted necesitará agregar uno del siguiente XML bloquea el archivo de manifiesto, dentro del etiqueta, con el fin de invocar las capacidades Bluetooth/USB de una aplicación de WinRT, dependiendo de qué versión de sistema operativo está dirigiéndose.

Windows 10

Name="bluetooth.rfcomm">

Windows 8.1

Name="bluetooth.rfcomm">

Habilitar las capacidades USB

Usted necesitará agregar uno de los siguientes bloques XML en el archivo de manifiesto para invocar las capacidades USB de una aplicación de WinRT, dependiendo de qué versión de sistema operativo está dirigiéndose.

Windows 10

Name="serialcommunication">

Windows 8.1

Name="serialcommunication">

 

Fuente     aqui