Aprendiendo la Estimación de Poses Usando Nuevas Técnicas de Visión por Computadora

Learning Pose Estimation Using New Computer Vision Techniques

Introducción

Encontrar y rastrear las posiciones de las articulaciones o puntos clave importantes del cuerpo en una imagen o secuencia de video es la tarea de detección de postura, comúnmente conocida como estimación de pose o detección de puntos clave. Busca comprender y representar la posición y disposición espacial de personas u otras cosas en una escena. La detección de postura juega un papel crucial y encuentra aplicaciones en varios sectores, incluyendo robótica y automatización, juegos, seguridad y vigilancia, así como monitoreo deportivo y de fitness. Permite una amplia gama de aplicaciones que involucran la interacción humano-computadora, el análisis, la animación, la atención médica, la seguridad y la robótica al ofrecer información perspicaz sobre el movimiento humano y las relaciones espaciales. En este artículo, vamos a estudiar algunos algoritmos emocionantes de detección de postura utilizando nuevas técnicas de visión por computadora. Entender cómo como principiante podemos usarlos en un ambiente real. Estos algoritmos son:

  • OpenPose
  • PoseNet
  • MoveNet

También examinaremos dos nuevos algoritmos contribuidos recientemente por Google que utilizan la arquitectura MobileNet V2. Estos dos algoritmos son, MoveNet Lightning y MoveNet Thunder.

Objetivos de aprendizaje

  • Comprensión de los conceptos básicos: Aprenda todo lo que hay que saber sobre la idea de la estimación de postura y por qué es tan crucial para la visión por computadora.
  • Comprensión de la detección de puntos clave: Familiarizarse con los métodos de detección de puntos clave, que implican localizar componentes o puntos clave específicos del cuerpo en una imagen o video.
  • Asociación y seguimiento de puntos clave: Aprenda a rastrear los puntos clave a lo largo del tiempo y asociarlos en diferentes fotogramas para estimar la postura continua de una persona mediante la asociación y el seguimiento de puntos clave. Reconozca las dificultades y los métodos utilizados en este proceso.
  • Preprocesamiento de datos: Desarrolle sus habilidades de modelado entrenando modelos de estimación de postura utilizando conjuntos de datos anotados. Identifique los pasos involucrados en la recolección y etiquetado de datos de entrenamiento, la elección de funciones de pérdida adecuadas y la mejora del rendimiento del modelo.
  • Aplicaciones e integración: Aprenda sobre las diferentes formas en que se utiliza la estimación de postura en la visión por computadora en áreas como la realidad aumentada, el reconocimiento de gestos, la interacción humano-computadora y el reconocimiento de acciones humanas.

Este artículo fue publicado como parte del Blogatón de Ciencia de Datos.

Arquitecturas del modelo

1. OpenPose

El modelo de detección de postura OpenPose tiene una arquitectura compleja con varias etapas y partes. Para encontrar y estimar puntos clave de numerosas personas en una imagen o video, se utiliza una canalización de múltiples etapas. El modelo primero examina la imagen de entrada e intenta comprender sus características. El modelo asigna estas características para representar diversos aspectos de la imagen, incluyendo formas, colores y texturas. En la etapa siguiente, el modelo se enfoca en comprender las conexiones entre diferentes partes del cuerpo.

Produce otro conjunto de mapas que ilustran los posibles vínculos entre diferentes partes del cuerpo, como la conexión entre la muñeca y el codo o el hombro y la cadera. Para determinar la verdadera pose de cada persona, el modelo emplea un algoritmo para descifrar los mapas de vínculos. Analiza los mapas para establecer las relaciones entre los componentes del cuerpo y construir un modelo esquelético completo de cada pose.

Estos pasos permiten al modelo OpenPose detectar y rastrear las poses de varias personas en tiempo real con precisión y eficiencia.

2. PoseNet

La red neuronal convolucional (CNN) sirve como base para el diseño del modelo de detección de postura PoseNet. Para extraer información útil, toma una imagen de entrada y la pasa por varias capas de procesamiento convolucional. Estas capas convolucionales ayudan a capturar los numerosos patrones y estructuras de la imagen. El método de estimación de pose de una sola persona utilizado por PoseNet se centra en estimar los puntos clave de pose de una sola persona. Las coordenadas 2D de los puntos clave del cuerpo se pueden regresar directamente utilizando la arquitectura CNN. Esto significa que el modelo desarrolla la capacidad de prever las coordenadas X e Y de las articulaciones corporales como las muñecas, codos, rodillas y tobillos durante el entrenamiento.

La estimación de postura es rápida y fácil debido a la simplicidad de la arquitectura PoseNet, lo que la hace ideal para aplicaciones con recursos de procesamiento limitados, como navegadores web o teléfonos inteligentes. Ofrece un enfoque rápido y sencillo para determinar la postura de una persona en una imagen o video.

3. MoveNet

La arquitectura del modelo de detección de pose de MoveNet también está construida utilizando una red neuronal convolucional profunda (CNN). Emplea un diseño amigable para dispositivos móviles que está optimizado para operar en sistemas integrados y otros dispositivos con recursos limitados. MoveNet utiliza un enfoque de estimación de pose de una sola persona con el objetivo de estimar los puntos clave de la pose de una persona. Comienza con una red de base simple, luego pasa a las etapas de asociación de puntos clave y detección de puntos clave. La red de base procesa la imagen de entrada, aislando características significativas. El paso de asociación de puntos clave afina aún más los puntos clave teniendo en cuenta sus dependencias y relaciones geográficas. La etapa de detección de puntos clave predice las calificaciones de confianza y las posiciones exactas de los puntos clave del cuerpo.

El diseño de MoveNet equilibra la eficiencia y la precisión, lo que lo hace apropiado para la estimación de pose en tiempo real en dispositivos con capacidad de cálculo limitada. En una serie de aplicaciones, como el seguimiento de la actividad física, la realidad aumentada y la interacción basada en gestos, ofrece un método práctico para identificar y rastrear las posiciones humanas.

Lightning and Thunder en la Detección de Pose

Como versiones especializadas de la familia de modelos de MoveNet, Google creó los modelos de detección de pose Lightning y Thunder. En 2021, el equipo de Lightning presentó una versión mejorada de Lightning diseñada específicamente para una estimación de pose ultrarrápida. Es perfecto para aplicaciones con limitaciones estrictas de latencia, ya que utiliza técnicas de compresión de modelos y mejoras arquitectónicas para reducir los requisitos de cálculo y lograr tiempos de inferencia increíblemente rápidos. El lanzamiento de Thunder en 2022, por otro lado, se centra en la estimación de pose de múltiples personas. Aumenta la capacidad de MoveNet para identificar y seguir con precisión las posiciones de varias personas a la vez en situaciones en vivo.

Tanto los modelos de Lightning como de Thunder se diferencian de los métodos competidores al proporcionar una estimación precisa de la postura que es eficiente y adecuada para ciertos casos de uso: Lightning para una inferencia ultrarrápida y soporte de dispositivos universales, y Thunder para una mayor precisión y rendimiento. Estos modelos demuestran la dedicación de Google al desarrollo de tecnología de detección de pose para satisfacer una variedad de necesidades de aplicaciones.

Implementación de la Detección de Pose

Necesitamos seguir algunos procedimientos para utilizar el modelo de Lightning de MoveNet para la detección de pose en una imagen. Primero, asegúrese de haber instalado las bibliotecas y dependencias de software necesarias. Dos marcos de aprendizaje profundo ampliamente utilizados, TensorFlow y PyTorch, son ejemplos de estas bibliotecas. A continuación, cargue los pesos del modelo de Lightning de MoveNet, que suelen estar disponibles en un formato pre-entrenado. Una vez cargado el modelo, preprocese la imagen de entrada escalándola al tamaño de entrada adecuado y aplicando cualquier normalización necesaria. Alimente el modelo con la imagen preprocesada, luego utilice la inferencia hacia adelante para obtener los resultados. Los puntos clave predichos para varias áreas del cuerpo, comúnmente mostrados como coordenadas (x, y), conformarán la salida.

Por último, realice cualquier post-procesamiento necesario en los puntos clave, como vincular los puntos clave para crear representaciones de esqueleto o aplicar criterios de confianza. Esta fase de post-procesamiento mejora los resultados de la estimación de pose. Al utilizar el modelo de Lightning de MoveNet para la detección de posturas en una imagen, puede estimar y analizar las posturas de las personas dentro de la imagen siguiendo estos pasos.

Explicación para la Detección

Se proporciona aquí una explicación detallada para la detección de una pose en una imagen de entrada.

Comencemos construyendo un modelo de MoveNet Lightning para implementar la detección de pose en tiempo real en un video.

En primer lugar, importando las bibliotecas necesarias.

import tensorflow as tf
import numpy as np
from matplotlib import pyplot as plt
import cv2

Luego, el paso más importante, cargando nuestro modelo de detección de pose MoveNet Lightning para una sola pose. Aquí, una sola pose describe que el modelo va a detectar la pose de una sola persona, mientras que su otra versión denominada multi-pose detecta las poses de varias personas en un cuadro.

interpreter = tf.lite.Interpreter(model_path='lite-model_movenet_singlepose_lightning_3.tflite')
interpreter.allocate_tensors()

Puntos clave para el modelo

Puede descargar este modelo desde TensorFlow Hub. Ahora definiremos los puntos clave para el modelo. Los puntos clave son áreas o puntos de referencia únicos en el cuerpo humano que se identifican y monitorean en el contexto de modelos de detección de postura como MoveNet. Estos puntos clave representan articulaciones y partes importantes del cuerpo, permitiendo una comprensión completa de la postura del cuerpo. Las muñecas, codos, hombros, caderas, rodillas y tobillos son puntos clave frecuentemente utilizados, además de la cabeza, los ojos, la nariz y las orejas.

EDGES = {
    (0, 1): 'm',
    (0, 2): 'c',
    (1, 3): 'm',
    (2, 4): 'c',
    (0, 5): 'm',
    (0, 6): 'c',
    (5, 7): 'm',
    (7, 9): 'm',
    (6, 8): 'c',
    (8, 10): 'c',
    (5, 6): 'y',
    (5, 11): 'm',
    (6, 12): 'c',
    (11, 12): 'y',
    (11, 13): 'm',
    (13, 15): 'm',
    (12, 14): 'c',
    (14, 16): 'c'
}

#Función para dibujar puntos clave
def draw_keypoints(frame, keypoints, confidence_threshold):
    y, x, c = frame.shape
    shaped = np.squeeze(np.multiply(keypoints, [y,x,1]))
    
    for kp in shaped:
        ky, kx, kp_conf = kp
        if kp_conf > confidence_threshold:
            cv2.circle(frame, (int(kx), int(ky)), 4, (0,255,0), -1) 

El diccionario de puntos clave para los puntos clave anteriores es,

nariz:0, ojo izquierdo:1, ojo derecho:2, oreja izquierda:3, oreja derecha:4, hombro izquierdo:5, hombro derecho:6, codo izquierdo:7, codo derecho:8, muñeca izquierda:9, muñeca derecha:10, cadera izquierda:11, cadera derecha:12, rodilla izquierda:13, rodilla derecha:14, tobillo izquierdo:15, tobillo derecho:16

Ahora, después de dibujar las conexiones, veamos cómo capturar video a través de la biblioteca OpenCV.

cap = cv2.VideoCapture(0)
while cap.isOpened():
    ret, frame = cap.read()
    
    cv2.imshow(frame)

cv2.VideoCapture, es una función importante de OpenCV para leer videos de entrada. En este caso, 0 especifica que se captura el video desde la cámara principal de la laptop, mientras que 1 se utiliza para personas que usan cámaras web externas. Para usar un video de entrada personalizado, simplemente encierre la ruta de la imagen entre comillas.

Mientras se estima la postura a través de la visión por computadora, el relleno y el procesamiento de cuadros y el cambio de tamaño son muy importantes. Proporciona funcionalidades como:

  • Las imágenes de entrada o los cuadros de video son uniformes para cumplir con el tamaño anticipado del modelo mediante el cambio de tamaño del cuadro.
  • Utilizar el relleno para resolver la situación en la que las dimensiones originales del marco son más pequeñas que el tamaño de entrada necesario del modelo. Agregar relleno aumenta el marco para acomodar el tamaño de entrada requerido, asegurando un procesamiento uniforme independientemente del tamaño de entrada.

Consulte el código detallado aquí.

Conclusión

Entonces, ¿qué hemos aprendido de este artículo? Estudiemos algunos puntos importantes de este artículo.

  • Perspectiva de investigación: La estimación de la postura es un tema muy importante en la investigación, con nuevos desarrollos y dificultades que surgen cada día. Puede avanzar en el área investigando nuevos algoritmos de visión por computadora, mejorando las técnicas actuales o abordando problemas específicos relacionados con la estimación de la postura.
  • Importancia: La estimación de la postura contribuye significativamente a interacciones más naturales e intuitivas entre personas y computadoras en la interacción humano-computadora. Con la ayuda de este artículo, puede utilizar su experiencia para construir y crear sistemas interactivos que respondan a gestos físicos, posturas o movimientos corporales.
  • Proyectos académicos: La estimación de la postura es un tema excelente para proyectos académicos, ya sea que se realicen de manera independiente o colaborativa. Se pueden explorar desafíos, conjuntos de datos o aplicaciones relacionadas con la estimación de la postura, y se puede crear un proyecto que exhiba sus habilidades de comprensión y aplicación práctica.
  • Amplio rango de aplicaciones: La estimación de la postura tiene numerosas aplicaciones en diversos campos, como deportes, medicina, vigilancia y las industrias de animación y entretenimiento.

Un método potente para predecir con precisión las poses humanas en aplicaciones en tiempo real es el modelo de detección de poses MoveNet, en particular su versión mejorada MoveNet Lightning. Estos modelos pueden detectar y rastrear puntos clave que representan con precisión diferentes partes del cuerpo mediante el uso de redes neuronales convolucionales profundas. Son ideales para su implementación en dispositivos con recursos limitados, como teléfonos móviles y sistemas integrados, debido a su simplicidad y eficiencia. Los modelos MoveNet proporcionan una solución flexible para una variedad de aplicaciones, incluido el seguimiento de la actividad física, la realidad aumentada, la interacción basada en gestos y el análisis de multitudes. Pueden manejar tanto la estimación de poses de una sola persona como de varias personas. Han realizado contribuciones significativas al campo de la identificación de posturas que demuestran el desarrollo de la tecnología de visión por computadora y su promesa de mejorar la interacción entre humanos y computadoras y la comprensión del movimiento.

Preguntas frecuentes

Los medios mostrados en este artículo no pertenecen a Analytics Vidhya y se utilizan a discreción del autor.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Aprendizaje Automático

3 preguntas Jacob Andreas sobre modelos de lenguaje grandes

El científico de CSAIL describe la investigación de procesamiento de lenguaje natural a través de modelos avanzados d...

Inteligencia Artificial

El papel proactivo de la IA en el combate a la corrupción en el gobierno

La reciente explosión de modelos generativos de Inteligencia Artificial (IA) ha centrado la atención del mundo en tem...

Inteligencia Artificial

ChatGPT investigado por la Comisión Federal de Comercio por posibles daños

En un desarrollo significativo, la Comisión Federal de Comercio (FTC) ha iniciado una investigación contra OpenAI, la...

Inteligencia Artificial

K-Means agrupado con Python Numba y CUDA C

Paralelizar las cargas de trabajo de análisis de datos puede ser una tarea desalentadora, especialmente cuando no hay...

Inteligencia Artificial

Conozca a NANA, el avatar de recepcionista con inteligencia artificial de Moonshine Studio

Nota del editor: Esta publicación es parte de nuestra serie semanal En el Estudio de NVIDIA, que celebra a artistas d...