Reconocer poses de manos con Google Open-Source

Reconocer poses de manos con Google Open-Source. Esta nueva versión puede predecir puntos clave en ambas manos simultáneamente.

Google ha compartido una nueva versión de su modelo para detectar la postura de las manos que aporta una precisión mejorada para proyectos 2D. Un nuevo soporte para 3D y la capacidad de predecir puntos clave en ambas manos simultáneamente.

El soporte para el seguimiento de ambas manos al mismo tiempo es una de las solicitudes más comunes de la comunidad de desarrolladores. En respuesta a las peticiones de los desarrolladores, Google ha está mejorando su código fuente para esta aplicación.

Ahora puedes ver y probar una demostración en vivo del nuevo modelo aquí. Google señaló que este modelo es una nueva versión de un modelo anterior que permitía predecir 21 puntos clave, pero solo podía detectar una sola mano. El equipo también ha compartido un artículo que analiza el nuevo modelo y cómo puede comenzar.

Reconocer poses de manos con Google
Reconocer poses de manos con Google

Reconocimiento de gestos manuales en tiempo real

Presentamos un sistema de reconocimiento de gestos de la mano en tiempo real. Utilizando un dispositivo, que detecta un conjunto de gestos estáticos predefinidos como una cámara RGB. El sistema consta de dos partes; un rastreador del esqueleto de las manos y un clasificador de gestos.

Usan MediaPipe Hands como base del rastreador del esqueleto de las manos, que mejoran la precisión de los puntos clave y agregan la estimación de los puntos clave 3D en un espacio métrico mundial. Creando dos clasificadores de gestos diferentes, uno basado en heurísticas y el otro usando redes neuronales (NN).

Reconocer poses de manos open source
Reconocer poses de manos open source

Introducción al sistema tecnológico

El reconocimiento de gestos de la mano (HGR) es un método natural e intuitivo para la interacción humano-ordenador (HCI). Ha sido un área de investigación activa. Se ha investigado una amplia variedad de dispositivos y técnicas de entrada, y el HGR basado en el esqueleto es una opción popular debido a su robustez de fondo y las variaciones de luz.

Muchos sistemas HGR basados ​​en esqueleto se basan en sensores de profundidad. Como las cámaras RGBD, que no son tan comunes como las cámaras RGB en dispositivos móviles. El HGR que presenta Google Open-Sources, por otro lado, requiere solo una cámara RGB. Para ello, primero predice los puntos clave de esqueleto 3D a partir de una imagen de la cámara y luego ejecuta un clasificador de gestos en esos puntos clave.

Google Open-Sources ha diseñado dos clasificadores de gestos con diferentes casos de uso en mente. El clasificador basado en heurística es más fácil de crear y ampliar, sin la necesidad de datos de entrenamiento, y más intuitivo de desarrollar y solucionar. El clasificador basado en NN es más exacto y preciso, especialmente para los casos extremos. También es más indulgente con los errores en los puntos clave del esqueleto.

El HGR de Google Open-Sources funciona en tiempo real a 30 frames por segundo en dispositivos móviles convencionales.

Reconocer poses de manos con Google Open-Sources
Ángulo de rotación de las manos derivado de la suma de dos vectores. Índice al nudillo de la base del meñique (en verde) y del nudillo de la base del medio a la muñeca (en rojo).

Reconocer poses de manos superando la cercanía del gesto

Dicha normalización se vuelve muy inestable a medida que la distancia de normalización se acerca a cero, lo que da como resultado una degradación significativa en la calidad del seguimiento. Para superar este problema, Google presenta un nuevo algoritmo similar al enfoque adoptado por BlazePose.

Para nuestro caso, definimos dos puntos clave virtuales para describir el centro de la mano, la escala y el ángulo de rotación; un punto clave central y un punto clave de alineación. El punto clave central se estima como el promedio de los nudillos índice, medio y meñique.

La ubicación del punto clave de alineación se estima para que forme el vector de rotación/escala con el punto clave central. El ángulo de rotación se estima a partir de la suma de dos vectores; desde el nudillo de la base del medio hasta la muñeca y desde el índice hasta el nudillo de la base del meñique.

Como los vectores componentes tienden a ser ortogonales en la mayoría de los casos; el vector resultante cambia suavemente para cualquier postura de la mano y nunca se degrada a cero.

Esto aumenta la calidad general del seguimiento de las manos para los puntos de mano frontales. El valor de la escala del vector de alineación se estima como la distancia desde el punto clave central hasta el nudillo más lejano de la misma mano.

Reconocer poses de manos
Reconocer poses de manos

Reconocer poses de manos con un aumento significativo de calidad

La nueva rotación y normalización de escala da como resultado un aumento significativo de la calidad para todo el proceso de estimación de la postura de la mano; 71,3 mAP frente a 66,5 mAP (para el proceso original de Medi aPipe Hands) en nuestro conjunto de datos de validación con poses de mano ASL complejas.

La estimación precisa de la postura de la mano en el espacio 3D es un componente fundamental para la clasificación de gestos.

Minimiza la ambigüedad entre las proyecciones de la misma postura de la mano desde diferentes posiciones del observador en el espacio; y permite que la clasificación de los gestos sea invariable a la rotación.

Por lo tanto, además de predecir la pose de la mano en el espacio de píxeles de la pantalla, también estimamos la pose en un espacio métrico mundial en relación con la muñeca de la mano.

Para obtener una distancia exacta del gesto de la mano 3D en un espacio métrico, ajustamos nuestra anotación de mano 2D con un modelo de mano GHUM estadístico y altamente realista como se muestra en la Figura 3.

El sistema perfecciona los resultados
El sistema perfecciona los resultados

Dos objetos con la misma forma tendrán la misma proyección

Debido a la naturaleza de la proyección en perspectiva, los objetos de diferentes tamaños pueden tener la misma proyección en el plano de la imagen. Dos objetos con la misma forma (más grande y más pequeña) tendrán la misma proyección si se colocan respectivamente más lejos y más cerca de la cámara.

Sin duda estamos ante un proyecto interesante que seguro resultará de mucha utilidad para los programadores y desarrolladores de productos que integren esta tecnología. Además la podemos encontrar de forma gratuita. Puedes ver una demostración en tiempo real en este enlace. Y también puedes descargar el documento PDF con la información completa y detallada sobre el tema.

También tienes más información y comentarios sobre cómo reconocer poses de manos con Google Open-Source en el foro, sigue leyendo…