Action Recognition
El reconocimiento de acciones, o reconocimiento de actividades humanas (HAR), etiqueta lo que hacen las personas en vídeos mediante el modelado del movimiento a lo largo del tiempo. Métodos, conjuntos de datos y código.
El reconocimiento de acciones es una tarea de visión por ordenador que clasifica lo que hace una persona, o a veces un animal o un robot, en un vídeo: caminar, saludar con la mano, caerse, golpear una pelota de golf o hacer flexiones. Amplía la clasificación de imágenes a lo largo del tiempo, porque muchas acciones no pueden distinguirse en un solo fotograma. Una imagen fija de alguien a medio agacharse puede mostrar que se está sentando o levantando, mientras que un clip corto revela cuál de las dos acciones está ocurriendo. El término suele usarse indistintamente con reconocimiento de actividades humanas (HAR), aunque HAR también abarca el reconocimiento a partir de sensores portátiles, como los acelerómetros.
Cómo funciona el reconocimiento de acciones#
Los modelos reciben un clip, normalmente de 8 a 64 fotogramas extraídos de unos segundos de vídeo, y aprenden dos tipos de información: características espaciales que describen el aspecto de las personas y los objetos, y características temporales que describen su movimiento. Las primeras redes de dos flujos procesaban fotogramas RGB y flujo óptico en ramas separadas y fusionaban sus predicciones. Las redes neuronales convolucionales 3D realizan convoluciones a la vez en altura, anchura y tiempo; I3D las creó ampliando a 3D filtros de imagen 2D preentrenados con ImageNet, y SlowFast combina una vía de baja frecuencia de fotogramas para el aspecto con otra de alta frecuencia para el movimiento. Los transformadores de vídeo aplican autoatención a parches espaciotemporales, y VideoMAE los preentrena reconstruyendo vídeos con gran parte de su contenido enmascarado.
Una CNN 3D de los modelos de vídeo de TorchVision clasifica un clip con unas pocas líneas:
import cv2
import numpy as np
import torch
from torchvision.models.video import R3D_18_Weights, r3d_18
# Load a 3D CNN pretrained on the 400 action classes of Kinetics-400
weights = R3D_18_Weights.KINETICS400_V1
model = r3d_18(weights=weights).eval()
# Read 16 consecutive frames from a short exercise video
cap = cv2.VideoCapture("https://github.com/ultralytics/assets/releases/download/v0.0.0/solution_ci_pose_demo.mp4")
frames = [cv2.cvtColor(cap.read()[1], cv2.COLOR_BGR2RGB) for _ in range(16)]
# Stack the frames into one clip shaped (time, channels, height, width) and classify it
clip = torch.from_numpy(np.stack(frames)).permute(0, 3, 1, 2)
batch = weights.transforms()(clip).unsqueeze(0)
with torch.no_grad():
probs = model(batch).softmax(dim=1)[0]
top = probs.argmax().item()
print(f"{weights.meta['categories'][top]}: {probs[top]:.2f}")El modelo muestra push up: 0.99: asigna una acción de sus 400 clases al clip completo de medio segundo.
Los métodos basados en esqueletos siguen otro enfoque. Primero, un modelo de estimación de pose encuentra los puntos clave del cuerpo en cada fotograma; después, un modelo temporal, como la red de grafos ST-GCN, clasifica las trayectorias articulares resultantes. Los esqueletos ignoran la ropa, la iluminación y el fondo, y son lo bastante pequeños como para procesarse en tiempo real en dispositivos periféricos. Los modelos de pose de YOLO26 de Ultralytics proporcionan los 17 puntos clave del cuerpo de cada persona para este método, y la solución de seguimiento de entrenamientos convierte el ángulo entre tres de esos puntos clave en recuentos de repeticiones de ejercicios como flexiones y sentadillas.
Reconocimiento de acciones y tareas relacionadas#
- Estimación de pose y seguimiento de objetos: La estimación de pose localiza las articulaciones y el seguimiento mantiene la identidad de cada persona entre fotogramas. Ambas suelen servir de entrada al reconocimiento de acciones, que interpreta el movimiento que describen; entre una multitud, cada persona seguida tiene su propio clip y etiqueta.
- Localización temporal de acciones: Encuentra cuándo empieza y termina cada acción en un vídeo largo sin recortar. La detección espaciotemporal de acciones va más allá y delimita cada actor en cada fotograma, como en el conjunto de datos AVA.
- Comprensión de vídeo: Campo más amplio que también abarca la generación de subtítulos, las preguntas y respuestas, y el razonamiento sobre acontecimientos y causas en vídeo.
Aplicaciones en el mundo real#
- Atención sanitaria y cuidado de personas mayores: Los sistemas de detección de caídas reconocen una caída a partir de datos de cámaras o dispositivos portátiles y avisan al personal; las aplicaciones de rehabilitación comprueban que los pacientes realicen los ejercicios correctamente.
- Fitness y deporte: Las aplicaciones cuentan repeticiones y evalúan la técnica, y la analítica deportiva clasifica tiros, pases y golpes en grabaciones de retransmisiones.
- Seguridad y protección: Los sistemas de vigilancia detectan peleas en espacios públicos, así como caídas o levantamientos inseguros en plantas industriales.
- Interacción entre personas y robots: Los robots y dispositivos inteligentes responden a gestos como saludar con la mano o señalar.
Conjuntos de datos y retos#
Etiquetar vídeos exige mucho más esfuerzo que etiquetar imágenes, por lo que el progreso se ha apoyado en grandes conjuntos de datos. Kinetics-400 contiene al menos 400 clips de YouTube de unos 10 segundos para cada una de sus 400 clases de acciones humanas, y UCF101 incluye 13 320 clips de 101 clases. Something-Something V2 aborda el sesgo de escena, es decir, la tendencia de los modelos a reconocer la natación por la piscina en lugar de por las brazadas: sus aproximadamente 220 000 clips muestran manos que interactúan con objetos cotidianos en 174 clases que solo se diferencian por el movimiento, como «empujar algo de izquierda a derecha» y «empujar algo de derecha a izquierda».










