Para algunos proyectos que requieren la estmación del movimiento del cuerto humano, es posible que ni siquiera se necesite una cámara de profundidad como la disponible en el Kinect. Así que si se toma una cámara web y la librería Tensorflow, es posible usar la Inteligencia Artificial de Google para crear un seguimiento de esqueleto, con lo cual se puede crear un sistema que emula muchas de las funcionalidades del ahora descontinuado Microsoft Kinect, este proyecto de software libre se conoce como VNect.
La pérdida del Microsoft Kinect es un golpe para cualquiera que quiera experimentar con la visión 3D, pero AI (Inteligencia Artificial) avanza muy rápido. Hay una serie de soluciones de seguimiento del movimiento corporal que solo usan entrada de video, pero ahora es bastante fácil crear el tuyo propio usando un proyecto de red neuronal basado en Tensorflow recientemente anunciado llamado VNect.
Cuando se toma en consideración la cantidad de trabajo que el algoritmo original de esqueletización de Kinect tomó para ser creardo, este proyecto de software libre es un claro signo de los tiempos en que nos encontramos. El algoritmo original de Kinect no se basaba en una red neuronal sino en otra técnica de aprendizaje automático llamada bosque de árboles, básicamente árboles de decisión múltiple. Por supuesto, el algoritmo orignal también trabajó con datos mucho más limpios ya que se usaba la señal RGB de una cámada de video más la de profundidad que usaba infrarojo. Parece que una red neuronal puede hacer el trabajo mucho mejor y con sólo usar una cámara de video RGB (webcam).
VNect fue presentado en el SIGRAPH del año pasado (2017) por un equipo del Instituto Max Planck de Alemania; la Universidad de Saarland de Alemania y la Universidad Rey Juan Carlos de España.
Puedes ver este sistema en funcionamiento y conocer su diseño en el siguiente video:
El equipo de desarrollo ha mejorado recientemente VNect y ha producido algunos videos adicionales en tiempo real:
El modelo de red neuronal completo está disponible para descargar y construir tu propio sistema de seguimiento del cuerpo humano. Si no deseas hacer la reimplementación de la red neuronal, puede utilizar el código no oficial de Tim Ho para TensorFlow, que está disponible en GitHub. Esto hace que sea más o menos posible convertir cualquier cámara web de bajo costo en el equivalente del Kinect en el modo de seguimiento de esqueleto.
Y para demostrar que es posible, dos programadores, Fleisher y Dror Ayalon, han unido el VNect con Unity para divertirse:
Si desea una solución completa en C ++, en la lugar de la implementación en Python de Tim Ho, entonces echale un vistazo al Openpose de CMU. Este es un sistema en tiempo real, con múltiples personas, que detecta los puntos clave del cuerpo, la mano y el rostro. No hace el mismo trabajo que la solución de la red neuronal, ya que solo da coordenadas (x, y) de los puntos clave en la imagen y no las coordenadas (x, y, z) en el espacio real.
Ambas son alternativas útiles, pero las cámaras de profundidad proporcionan coordenadas (x, y, z) completas para cada punto de la escena y puede ser que esto es lo que requiere tu proyecto.
Espero esta información les haya sido de utilidad y si alguien lo ha implementado, por favor comenten su experiencia.