Blog

Aprendizaje automático para el reconocimiento de gestos

Hablar de  aprendizaje automático o  machine learning hoy día puede resultar aún algo curioso y para muchos desconocido, pero lo cierto es que está más presente de lo que pensamos. Lo utilizamos a diario e inconscientemente mientras navegamos por Internet, cuando consultamos nuestras redes sociales, o incluso al realizar la compra.

¿Qué es el aprendizaje automático (machine learning)?

El aprendizaje automático es un tipo de inteligencia artificial desarrollada para que los programas informáticos puedan aprender de nuestro comportamiento y uso de las tecnologías. Así, se mejora la experiencia del usuario e incluso se le pueden proponer nuevas utilidades o servicios.

aprendizaje automático-1000x600-1508x706_c

Este sistema detecta patrones de comportamiento y ajusta el programa a las necesidades del usuario. Uno de los ejemplos más conocidos es Facebook, que utiliza el aprendizaje automático para detectar qué le interesa al usuario y ofrecerle contenido relacionado en su muro. Pero esto se puede llevar un paso más allá, como explicaremos en este post, y hacer que un sistema pueda aprender a reconocer movimientos o gestos concretos, y con ello establecer un nuevo sistema de comunicación, donde el gesto sea el lenguaje entre la persona y la máquina.

En este pequeño vídeo podrás ver cómo hemos realizado todo el proceso que explicamos a continuación:

¿Por qué el aprendizaje automático es tan popular?

Ahora tenemos datos

Para que el aprendizaje automático sea realmente efectivo, necesita de gran cantidad de datos y que estos sean de calidad. En ocasiones, es más difícil conseguir estos datos que modelar el propio algoritmo en sí.
Con la explotación del Big Data, donde se almacena la mayor cantidad de información posible para procesar y extraer datos filtrados y relevantes, el aprendizaje automático puede desarrollarse rápidamente.

“It’s not who has the best algorithm that wins, it’s who has the most data”

(Andrew Ng)

Con los datos suficientes y bien estructurados, no hace falta utilizar el mejor algoritmo, la precisión final solo variaría décimas.

Ahora tenemos computación en la nube

Una de las principales razones por la que el machine learning perdió peso en el pasado fue por su gran coste computacional.
Sabemos que para que el resultado sea efectivo, ha de emplearse un gran conjunto de datos, sobre el que se efectuarán principalmente multiplicaciones de matrices para ajustar los datos a un modelo determinado que se pretende entrenar.

Sin embargo, las capacidades de los equipos son limitadas, tanto en procesamiento como en memoria, lo que supuso que se buscaran otras alternativas computacionalmente más ligeras. Hoy en día esto ya no es un problema, pues existen numerosos servicios en la nube que permiten trabajar con cantidades ingentes de datos y efectuar procesamientos en cuestión de minutos, que podrían tardar miles de años en un único equipo convencional.

Ahora tenemos herramientas y recursos

Éste probablemente sí haya sido el avance más importante de los últimos años. No sólo se han desarrollado nuevas herramientas y frameworks para el machine learning, como TensorFlow, Caffe, Keras, Torch, Deepnet, etc; sino que también se han generado multitud de recursos públicos para las pruebas y aprendizaje en diferentes ámbitos como el procesamiento del lenguaje natural, clasificación de imágenes, reconocimiento de texto, etc.

Uno de los data sets más importantes, sobre el que se realizan incluso competiciones, y que cuenta con un ranking global, es el popular MNIST, un conjunto de imágenes con dígitos escritos a mano alzada, sobre el que se ha conseguido una precisión del 99.7%. En otras palabras, ahora mismo ya se logra que una máquina pueda ser capaz de identificar cualquier dígito escrito por cualquier persona, partiendo de un aprendizaje previo con ese conjunto de datos, es decir, solamente fallaría de media 3 veces de cada 1000 intentos.

¿Cómo aplicamos el aprendizaje automático en Neosentec?

Entre otras cosas, lo venimos aplicando para la detección de caras (por ejemplo con Spooface), o a la clasificación de imágenes para proyectos de realidad aumentada, pero queremos centrarnos en otro proyecto, bastante menos común, con el que hemos estado jugando en nuestro laboratorio.

Detección de gestos en dispositivos wearables

¿Recuerdas la película de Minority Report, donde el protagonista controlaba multitud de pantallas realizando gestos con sus manos?
Ya es posible realizar algo similar utilizando cámaras de profundidad, como Kinect o Magic Leap, pero ambas requieren un uso en interiores, que los gestos sean visibles para las cámaras, y obviamente la instalación previa de estos dispositivos.

Pero imagina ahora que eliminamos todas las restricciones anteriores, y hacemos que con una simple pulsera seamos capaces de controlar cualquier dispositivo, aunque no esté visible. A eso hemos jugado.

El proceso

Decidimos entrenar un gesto sencillo conocido como “Double-flip”, al resultar un giro doble en 2 sentidos sobre el mismo eje.

El primer paso fue obtener los datos, para ello utilizamos un prototipo de wearable con sensores de acelerómetro y giroscopio, capaces de medir las fuerzas y ángulos de giro en 3 dimensiones. Con lo que obtenemos 6 gráficas como las que se muestran a continuación.

gráficas de acelerómetro y giroscopio en aprendizaje automático

Establecimos la duración de cada gesto en 2 segundos y comenzamos tomando 1.000 muestras negativas (movimientos de todo tipo que no incluyesen el que queremos detectar) y se etiquetan como “negativo”.

Posteriormente hicimos lo mismo pero tomando 100 muestras positivas, es decir, realizando 100 veces el gesto que queríamos entrenar y las etiquetamos como “double-flip”.
Para el entrenamiento utilizamos la librería TensorFlow de Google, aplicando un algoritmo simple de regresión logística, combinando los valores normalizados de las 6 gráficas anteriores, lo que resultó en una matriz de 1100 muestras x 1200 características (200 por gráfica). Pese a utilizar un algoritmo sencillo y una cantidad muy limitada de muestras, los resultados han sido plenamente satisfactorios, consiguiendo una precisión del 95%.

Como hemos visto, las posibilidades que ofrece el aprendizaje automático son prácticamente infinitas, y pueden aplicar a cualquier sector o proyecto, incluso para ideas tan atípicas como la que hemos presentado.

 

Comentarios (0)

Añadir comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *