Logotipo de Zephyrnet

Una guía completa sobre la estimación de la pose humana

Fecha:

La estimación de la postura humana es una tarea de visión artificial que representa la orientación de una persona en un formato gráfico. Esta técnica se aplica ampliamente para predecir las partes del cuerpo o la posición de las articulaciones de una persona. Es una de las áreas de investigación más emocionantes en visión por computadora que ha ganado mucha tracción debido a su abundancia de aplicaciones que pueden beneficiarse de dicha tecnología.

El artículo de hoy arrojará luz sobre la estimación de la pose humana y cómo funciona. Además, trataré de cubrir algunos proyectos de estimación de poses de código abierto y de primer nivel en Github, junto con algunos modelos, técnicas y tipos de estimación de poses de última generación que demuestran hacer grandes avances en este campo.

Al leer esta guía completa, se encontrará con los siguientes temas:

  1. ¿Qué es la estimación de la pose humana?
  2. Importancia de la estimación de la pose humana
  3. Diferencia entre estimación de pose humana 2D y 3D
  4. Tipos de modelos de estimación de poses humanas
  5. De abajo hacia arriba VS. Métodos de arriba hacia abajo de estimación de pose
  6. ¿Cómo funciona la estimación de la pose humana?
  7. Código de estimación de pose humana simple
  8. Aplicaciones de la estimación de la pose humana
  9. Palabras finales
  10. sobre el autor
  11. Referencias

¿Qué es la estimación de la pose humana?

Estimación de la pose humana mediante el aprendizaje automático en Python

https://www.analyticsvidhya.com/blog/2021/10/human-pose-estimation-using-machine-learning-in-python/

Human Pose Estimation identifica y clasifica las poses de las partes y articulaciones del cuerpo humano en imágenes o videos. En general, se utiliza una técnica basada en modelos para representar e inferir posturas del cuerpo humano en espacios 2D y 3D.

Esencialmente, es una forma de capturar un conjunto de coordenadas mediante la definición de las articulaciones del cuerpo humano, como muñecas, hombros, rodillas, ojos, orejas, tobillos y brazos, que es un punto clave en imágenes y videos que pueden describir la pose de una persona. .

Luego, cuando se proporciona una imagen o un video al modelo estimador de pose como entrada, identifica las coordenadas de estas partes y articulaciones del cuerpo detectadas como salida y una puntuación de confianza que muestra la precisión de las estimaciones.

Importancia de la estimación de la pose humana

La detección de personas ha sido durante mucho tiempo un centro principal de discusión para varias aplicaciones en la detección de objetos tradicional. Con los desarrollos recientes en los algoritmos de aprendizaje automático, las computadoras ahora pueden comprender el lenguaje corporal humano al realizar la detección de poses y el seguimiento de poses. La precisión de estas detecciones y los requisitos de hardware para ejecutarlas ahora han llegado a un punto en el que se han vuelto comercialmente viables.

Además, el crecimiento de la tecnología también se transforma profundamente en medio de la pandemia de coronavirus, donde la detección y el seguimiento de poses en tiempo real de alto rendimiento traerán algunas de las tendencias más influyentes en la visión por computadora. Por ejemplo, se puede emplear para el distanciamiento social al combinar la estimación de la pose humana y la heurística de proyección de distancia. Ayuda a las personas a mantener la distancia física entre sí en un lugar concurrido.

La estimación de la pose humana tendrá un impacto significativo en varias industrias, incluida la seguridad, la inteligencia comercial, la salud y la seguridad, y el entretenimiento. Una de esas áreas donde esta técnica ya ha demostrado su existencia es la conducción autónoma. Con la ayuda de la detección y el seguimiento de la postura humana en tiempo real, las computadoras pueden detectar y predecir el comportamiento de los peatones de manera muy completa, lo que permite una conducción más consistente.

Diferencia entre estimación de pose humana 2D y 3D

https://openaccess.thecvf.com/content_cvpr_2017/papers/Chen_3D_Human_Pose_CVPR_2017_paper.pdf

Existen principalmente dos técnicas en las que los modelos de estimación de poses pueden detectar poses humanas.

  1. Estimación de pose 2D: En este tipo de estimación de pose, simplemente estima las ubicaciones de las articulaciones del cuerpo en el espacio 2D en relación con los datos de entrada (es decir, imagen o cuadro de video). La ubicación se representa con coordenadas X e Y para cada punto clave.
  2. Estimación de pose 3D: En este tipo de estimación de pose, transforma una imagen 2D en un objeto 3D estimando una dimensión Z adicional a la predicción. La estimación de pose 3D nos permite predecir el posicionamiento espacial preciso de una persona o cosa representada.

La estimación de poses 3D es un desafío importante al que se enfrentan los ingenieros de aprendizaje automático debido a la complejidad que implica la creación de conjuntos de datos y algoritmos que estiman varios factores, como la escena de fondo de una imagen o video, las condiciones de luz y otros.

Tipos de modelos de estimación de poses humanas

Hay tres tipos principales de modelos de estimación de poses humanas que se utilizan para representar el cuerpo humano en planos 2D y 3D.

Estimación de la pose humana usando OpenCV y Python - TechVidvan

https://www.semanticscholar.org/paper/Deep-Learning-Based-Human-Pose-Estimation%3A-A-Survey-Zheng-Wu/0edef16d8fb78625ec5a050e2a7ae4efffef3689

#1. Modelo basado en esqueleto: También llamado modelo cinemático, este representante incluye un conjunto de puntos clave (articulaciones) como tobillos, rodillas, hombros, codos, muñecas y orientaciones de las extremidades que se utilizan principalmente para la estimación de poses en 3D y 2D.

Este modelo de cuerpo humano flexible e intuitivo comprende la estructura esquelética del cuerpo humano y se aplica con frecuencia para capturar las relaciones entre las diferentes partes del cuerpo.

#2. Modelo basado en contornos: También llamado modelo plano, se utiliza para la estimación de poses en 2D y consiste en el contorno y el ancho aproximado del cuerpo, el torso y las extremidades. Básicamente, representa la apariencia y la forma de un cuerpo humano, donde las partes del cuerpo se muestran con límites y rectángulos del contorno de una persona.

Un ejemplo famoso es el Modelo de forma activa (ASM), que captura el gráfico del cuerpo humano completo y las deformaciones de la silueta empleando la técnica de análisis de componentes principales (PCA).

#3. Modelo basado en volumen: También llamado modelo volumétrico, se utiliza para la estimación de poses en 3D. Consiste en múltiples modelos y poses populares del cuerpo humano en 3D representados por mallas y formas geométricas humanas, generalmente capturadas para la estimación de poses humanas en 3D basadas en el aprendizaje profundo.

De abajo hacia arriba VS. Métodos de arriba hacia abajo de estimación de pose

Todos los métodos para la estimación de la pose humana se pueden clasificar en dos enfoques principales: de abajo hacia arriba y de arriba hacia abajo.

  1. Métodos de abajo hacia arriba evalúe primero cada articulación del cuerpo y luego colóquelas para componer una pose única.
  2. Métodos de arriba hacia abajo ejecute primero un detector de cuerpos y determine las articulaciones del cuerpo dentro de los cuadros delimitadores descubiertos.

¿Cómo funciona la estimación de la pose humana?

Ahora que sabe qué es la estimación de pose, por qué es esencial y la diferencia entre varios métodos, modelos y técnicas, ahora es el momento de analizar su funcionamiento. Sí, vamos a hablar sobre cómo funciona la estimación de la pose humana, y esta sección se divide en 3 subcategorías respectivamente:

  • Estructura base
  • Descripción general de la arquitectura del modelo
  • Diferentes enfoques para la estimación de la pose humana

Aplicación de reconocimiento de actividad humana para fitness y terapia – InData Labs

https://indatalabs.com/resources/human-activity-recognition-fitness-app

Estructura basica

Una guía de 2019 para la estimación de la postura humana con aprendizaje profundo

https://nanonets.com/blog/human-pose-estimation-2d-guide/

Hay varias soluciones propuestas para el problema de la estimación de la pose humana. Sin embargo, en general, los métodos existentes se pueden subcategorizar en tres grupos, a saber, estimación de pose absoluta, estimación de pose relativa y la estimación de pose adecuada, que es la combinación de ambos.

El primero: el método de estimación de pose absoluta se basa en señales de navegación satelitales, balizas de navegación, puntos de referencia activos y pasivos y coincidencia de mapas de calor. El segundo: el método de estimación de la pose relativa se basa en la navegación a estima, que actualiza gradualmente la pose humana al estimar la distancia desde una articulación conocida, es decir, la posición y orientación iniciales de una persona.

Fundamentalmente, la mayoría de los algoritmos utilizan la posición y la orientación humanas para predecir la ubicación de una persona con respecto al fondo. Es un marco de 2 pasos que identifica cuadros delimitadores humanos y luego evalúa la pose de cada cuadro.

A continuación, estima los puntos clave para una persona que estarían articulados como el codo, las rodillas, las muñecas, etc. Podemos estimar poses para una sola persona o varias personas según la aplicación.

En la estimación de una sola pose, el modelo estima las poses de una sola persona en una escena determinada. Por el contrario, en el caso de la estimación multipose, el modelo estima las poses de varias personas en la secuencia de entrada dada.

Descripción general de la arquitectura del modelo

https://nanonets.com/blog/human-pose-estimation-2d-guide/

Múltiples arquitecturas de redes neuronales específicas no se pueden cubrir aquí en un solo artículo, pero hablaremos sobre algunas sólidas y confiables que son buenos puntos para comenzar.

Los modelos de estimación de pose humana vienen en algunas variedades, es decir, los enfoques de abajo hacia arriba y de arriba hacia abajo mencionados anteriormente. La arquitectura más famosa comienza con un codificador que toma una imagen de entrada y extrae características utilizando una serie de bloques de convolución de estrechamiento. El siguiente paso después de un codificador varía según el método utilizado para la estimación de pose.

El sistema más simple desde el punto de vista conceptual practica un regresor para las predicciones finales de salida de cada ubicación de punto clave al aceptar una imagen de entrada y generar las coordenadas X, Y y Z para cada punto clave que intenta predecir. Sin embargo, prácticamente esta arquitectura no se usa ya que no produce resultados precisos sin un mayor refinamiento.

Un enfoque algo más complejo practica una arquitectura de codificador-decodificador. En lugar de calcular las coordenadas conjuntas directamente en esta arquitectura, el codificador se alimenta a un decodificador, generando mapas de calor. Estos mapas de calor representan la probabilidad de que se detecte una articulación en una sección determinada de una imagen de entrada.

Las coordenadas precisas se eligen seleccionando las ubicaciones del mapa de calor con la mayor probabilidad conjunta durante el posprocesamiento. Además, en el caso de la estimación multipose, un mapa de calor comprende múltiples regiones de alta probabilidad de punto clave, por ejemplo, 2 o más manos izquierdas en una imagen. Se hace para asignar cada ubicación a un modelo humano específico.

Las arquitecturas discutidas anteriormente se aplican igualmente a la estimación de poses 2D y 3D.

Diferentes bibliotecas para la estimación de la pose humana

Con el rápido desarrollo de los métodos clásicos de visión artificial, la estimación de poses, incluida la segmentación de imágenes y la detección de objetos, se ha destacado en varias tareas.

Esta sección enumerará y revisará las cinco bibliotecas de estimación de poses más populares disponibles en Internet para uso público. Puede implementar un estimador de pose humano personalizado utilizando las siguientes bibliotecas.

#1. pose abierta

Logotipo

Documentación: https://cmu-perceptual-computing-lab.github.io/openpose/web/html/doc/index.html

Enlace de Github: https://github.com/CMU-Perceptual-Computing-Lab/openpose

Estrellas Github: 22.8K

Bifurcación de Github: 6.8K

OpenPose es una biblioteca gratuita de detección de articulaciones humanas que funciona en tiempo real. Detecta puntos clave para la estimación del cuerpo, rostro, manos y pies. Es el primer sistema multipersona que detecta conjuntamente 135 puntos clave en total en una sola imagen de entrada. Es una de las bibliotecas de estimación de poses humanas de varias personas más populares que utiliza un enfoque ascendente.

OpenPose es una API de código abierto que brinda a los usuarios la flexibilidad de seleccionar imágenes de entrada desde campos de cámara, cámaras web y otras fuentes para aplicaciones de sistemas integrados. Admite diferentes arquitecturas de hardware, incluidas GPU CUDA, GPU OpenCL y sistemas solo de CPU. Es ampliamente utilizado para la estimación de poses 2D (cuerpo entero), reconstrucción y estimación de poses 3D (cuerpo entero) y complemento de unidad.

#2. PoseDetección

Enlace de Github: https://github.com/tensorflow/tfjs-models/tree/master/pose-detection

Estrellas Github: 10.3K

Bifurcación de Github: 3.2K

La detección de poses es una biblioteca de detección de poses en tiempo real de código abierto que puede detectar poses humanas en imágenes o videos. Es una arquitectura de estimador de poses basada en tensorflow.js y le permite detectar partes del cuerpo como codos, caderas, muñecas, rodillas, tobillos y otras, ya sea para una sola pose o varias poses.

Está diseñado para ejecutarse de manera eficiente en dispositivos livianos como navegadores o dispositivos móviles. Este paquete ofrece tres modelos de última generación para ejecutar la estimación de pose en tiempo real:

  • MoveNet (detecta 17 puntos clave y funciona a más de 50 fps)
  • BlazePose (detecta 33 puntos clave)
  • PoseNet (capaz de detectar múltiples poses, y cada pose contiene 17 puntos clave)

#3. Pose densa

Documentación: http://densepose.org/

Enlace de Github: https://github.com/facebookresearch/Densepose

Estrellas Github: 6.2K

Bifurcación de Github: 1.2K

La estimación de pose humana densa es una biblioteca gratuita de código abierto que puede asignar todos los píxeles humanos de imágenes RGB 2D a un modelo del cuerpo basado en la superficie 3D en tiempo real. Esta biblioteca se implementa en el marco de trabajo de detectron, impulsado por caffe2, y también se puede usar para problemas de estimación de pose única y múltiple.

#4. pose alfa


Documentación: https://www.mvig.org/research/alphapose.html

Enlace de Github: https://github.com/MVIG-SJTU/AlphaPose

Estrellas Github: 5.7K

Bifurcación de Github: 1.6K

Alphapose es una biblioteca de estimación de poses de múltiples personas en tiempo real de código abierto que utiliza un enfoque popular de arriba hacia abajo y es muy preciso. Esta biblioteca ayuda a detectar poses en presencia de cuadros delimitadores humanos inexactos, y es una arquitectura óptima para determinar poses humanas mediante cuadros delimitadores detectados de manera óptima.

Alphapose también proporciona un rastreador de poses en línea eficiente para asociar poses que indican a la misma persona en todos los marcos. Es el primer rastreador de poses en línea de código abierto y se llama PoseFlow. Esta biblioteca puede detectar puntos clave precisos de varias personas y de una sola persona en tiempo real en imágenes, videos y listas de imágenes.

#5. HRNet (red de alta resolución)


Documentación: https://jingdongwang2017.github.io/Projects/HRNet/PoseEstimation.html

Enlace de Github: https://github.com/leoxiaobin/deep-high-resolution-net.pytorch

Estrellas Github: 3.5K

Bifurcación de Github: 810

HRNet es una arquitectura utilizada para la estimación de poses humanas para encontrar lo que conocemos como puntos clave con respecto a los objetos o personas específicos en una imagen. Mantiene representaciones de alta resolución durante todo el proceso y predice un mapa de calor de puntos clave muy preciso.

Además, esta arquitectura es adecuada para detectar la postura humana en los deportes televisados. Muchas otras tareas de predicción densa, como la segmentación, la alineación de rostros, la detección de objetos, etc., se han beneficiado de HRNet.

Código de estimación de pose humana simple

Hay muchos conjuntos de datos públicos disponibles tanto para la estimación de poses en 3D como en 2D.

Conjuntos de datos de estimación de poses 3D

Conjuntos de datos de estimación de poses 2D

En nuestro ejemplo, usaremos el modelo previamente entrenado por el equipo de Openpose usando Caffe en MPI Dataset, que tiene 15 puntos clave para identificar varias articulaciones en el cuerpo humano.

"Cabeza": 0, "Cuello": 1, "RHombro": 2, "RElbow": 3, "RWrist": 4, "LShombro": 5, "LElbow": 6, "LMuñeca": 7, "RHhip ": 8, "RNillo": 9, "ARnkle": 10, "LHip": 11, "LKnee": 12, "LAnkle": 13, "Pecho": 14, "Fondo": 15

Defina los pares de poses utilizados para crear las extremidades que conectarán los puntos clave. Luego descargue los modelos entrenados.

Pose_Pairs = [ ["Cabeza", "Cuello"], ["Cuello", "Hombro DER"], ["Hombro DER", "Codo DER"], ["Codo DER", "Cuello"], ["Cuello", "Hombro DER" "], ["LShombro", "LElbow"], ["LElbow", "LMuñeca"], ["Cuello", "Pecho"], ["Pecho", "RHhip"], ["RHhip", "RKnee "], ["Columna izquierda", "Tobillo izquierdo"], ["Pecho", "Cadera izquierda"], ["Cadera izquierda", "Rodilla izquierda"], ["Rodilla izquierda", "Tobillo izquierdo"] ] MODEL_URL="http:// posefs1.perception.cs.cmu.edu/OpenPose/models/" POSE_FOLDER="pose/" MPI_FOLDER=${POSE_FOLDER}"mpi/" MPI_MODEL=${MPI_FOLDER}"pose_iter_160000.caffemodel" wget -c ${MODEL_URL}$ {MPI_MODEL} -P ${MPI_FOLDER}

#1. Lea el archivo .prototxt y cargue los pesos preentrenados en la red.

red = cv.dnn.readNetFromCaffe(args.proto, args.modelo)

#2. A continuación, cargue imágenes en un lote y páselas a través de la red neuronal.

blob = cv.dnn.blobFromImage(imagen, factor de escala, tamaño, media, swapRB, recorte)

#3. Llame a la función de reenvío para ejecutar la inferencia en las imágenes de entrada. Luego genere el mapa de confianza para cada punto clave.

inp = cv.dnn.blobFromImage(fotograma, 1.0 / 255, (inWidth, inHeight), (0, 0, 0), swapRB=False, crop=False) net.setInput(inp)

fuera = red.adelante()


#4. Muestre estos puntos críticos en la imagen original.

for i in range(len(BODY_PARTS)): # Cortar el mapa de calor de la parte del cuerpo correspondiente. heatMap = out[0, i, :, :] # Originalmente, tratamos de encontrar todos los máximos locales. Para simplificar un número de muestra, solo encontramos uno global. Sin embargo, solo una sola pose al mismo tiempo # podría detectarse de esta manera. _, conf, _, point = cv.minMaxLoc(heatMap) x = (frameWidth * point[0]) / out.shape[3] y = (frameHeight * point[1]) / out.shape[2] # Agregar un punto si su confianza es superior al umbral. puntos.append((int(x), int(y)) if conf > args.thr else Ninguno)
for par en POSE_PAIRS: partFrom = par[0] partTo = par[1] afirmar(partFrom en BODY_PARTS) afirmar(partTo en BODY_PARTS) idFrom = BODY_PARTS[partFrom] idTo = BODY_PARTS[partTo] if puntos[idFrom] y puntos[idTo ]: cv.line(marco, puntos[idDesde], puntos[idDesde], (255, 74, 0), 3) cv.ellipse(marco, puntos[idDesde], (4, 4), 0, 0, 360 , (255, 255, 255), cv.LLENADO) cv.elipse(marco, puntos[idTo], (4, 4), 0, 0, 360, (255, 255, 255), cv.LLENADO) cv. putText(frame, str(idFrom), puntos[idFrom], cv.FONT_HERSHEY_SIMPLEX, 0.75, (255, 255, 255),2,cv.LINE_AA) cv.putText(frame, str(idTo), puntos[idTo], cv.FONT_HERSHEY_SIMPLEX, 0.75, (255, 255, 255),2,cv.LINE_AA)

#5. Guarde el archivo y ejecútelo desde el símbolo del sistema utilizando los argumentos asignados.

python3 sample.py --input sample.jpg --proto pose/mpi/pose_deploy_linevec_faster_4_stages.prototxt --model pose/mpi/pose_iter_160000.caffemodel --dataset MPI

#6. Resultados

resultados de la estimación de pose ejecutada en una imagen

Aplicaciones de la estimación de la pose humana

La estimación de la pose humana es el tema del que más se habla en la visión por computadora, y se ha utilizado en una amplia gama de aplicaciones y casos de uso. Algunos incluyen interacción humano-computadora, análisis de movimiento, realidad aumentada y robótica.

En general, la estimación de la pose humana tiene infinitas aplicaciones en casi todos los dominios. Algunas de las aplicaciones más comunes que están en desarrollo son:

1. Estimación de movimiento y actividad humana

Una de las dimensiones más evidentes aplicables a la estimación de poses es el seguimiento y la medición de la actividad y el movimiento humanos. Muchas arquitecturas como OpenPose, PoseNet y DensePose a menudo se practican para el reconocimiento de acciones, gestos o pasos. Algunos ejemplos de seguimiento de la actividad humana son:

  • Entrenadores deportivos o entrenador personal de gimnasio con tecnología de IA
  • Detección de gestos sentados
  • Supervisión de la actividad en el lugar de trabajo
  • Comunicación en lengua de signos para discapacitados
  • Detección de señales de policías de tránsito
  • Detección de señal de árbitro de críquet
  • Detección de técnicas de baile
  • Seguimiento de movimientos en seguridad y vigilancia
  • Conteo y seguimiento de multitudes para puntos de venta minorista

2. Realidad Aumentada y Realidad Virtual (AR/ VR)

Cuando se combina con aplicaciones de realidad virtual y aumentada, la estimación de la pose humana presenta una oportunidad para crear experiencias más realistas y receptivas. Por ejemplo, puede aprender a jugar varios juegos como tenis o golf a través de tutores virtuales que tienen ilustraciones de poses. Más aún, el ejército de los EE. UU. Ha implementado programas AR en combate. Ayuda a los soldados a distinguir entre tropas enemigas y amigas.

3. Robótica

Los robots industriales tradicionales se basan en sistemas de visión 2D con muchas limitaciones. En lugar de programar manualmente los robots para que aprendan los movimientos, se puede emplear una técnica de estimación de poses en 3D. Este enfoque crea sistemas robóticos más receptivos, flexibles y reales. Permite a los robots comprender acciones y movimientos siguiendo la postura, el aspecto o la apariencia del tutor.

4. Animación y juegos

Los avances modernos en la estimación de poses y la tecnología de captura de movimiento hacen que la animación de personajes sea un proceso simplificado y automatizado. Por ejemplo, la cámara de profundidad Kinect de Microsoft captura el movimiento humano en tiempo real usando datos de sensores IR y los usa para representar las acciones de los personajes virtualmente en el entorno del juego. Del mismo modo, la captura de animaciones para experiencias de videojuegos inmersivas también se puede automatizar sin esfuerzo mediante diferentes arquitecturas de estimación de poses.

notas finales

La estimación de poses es un componente cautivador de visión por computadora utilizado por múltiples dominios, incluidos la tecnología, la atención médica, los juegos, etc. Espero que mi guía completa sobre la estimación de poses humanas haya ayudado a explicar los conceptos básicos de la estimación de poses humanas, sus principios de funcionamiento y cómo se puede utilizar. en el mundo real.

sobre el autor

Mrinal Walia es un desarrollador de Python profesional con una licenciatura en ciencias de la computación que se especializa en aprendizaje automático, inteligencia artificial y visión por computadora. Mrinal también es bloguero independiente, autor y geek con cuatro años de experiencia en su trabajo.

Si te gustó leer mi artículo, conéctate conmigo en mis perfiles de redes sociales y sígueme para tomar una taza de café virtual rápida.

Instagram | Facebook | Etiqueta LinkedIn | Github | Correo electrónico |

¡Gracias, y no tenga un buen día, tenga un gran día!

Leer mas articulos esta página en la detección de humanos y objetos.

Referencias

  • https://www.researchgate.net/publication/225561390_A_Novel_Pose_Estimation_System_for_Indoor_Mobile_Robots_Based_on_Two_Optical_Sensors
  • https://viso.ai/deep-learning/pose-estimation-ultimate-overview/
  • https://www.fritz.ai/pose-estimation/#part-how
  • https://learnopencv.com/deep-learning-based-human-pose-estimation-using-opencv-cpp-python/
  • https://cv-tricks.com/pose-estimation/using-deep-learning-in-opencv/

Los medios que se muestran en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor. 

Fuente: https://www.analyticsvidhya.com/blog/2022/01/a-comprehensive-guide-on-human-pose-estimation/

punto_img

café vc

café vc

Información más reciente

punto_img