Action Recognition
La reconnaissance d’actions, ou reconnaissance des activités humaines (HAR), attribue une étiquette aux actions des personnes dans une vidéo en modélisant leur mouvement au fil du temps. Méthodes, jeux de données et code.
La reconnaissance d’actions est une tâche de vision par ordinateur qui classe ce qu’une personne — ou parfois un animal ou un robot — fait dans une vidéo : marcher, saluer de la main, tomber, manier un club de golf ou faire des pompes. Elle étend la classification d’images dans le temps, car de nombreuses actions sont impossibles à distinguer dans une seule image. Une image fixe d’une personne à mi-chemin d’un mouvement peut montrer qu’elle s’assoit ou se relève, tandis qu’un court extrait permet de savoir lequel des deux mouvements est en cours. Le terme est souvent employé indifféremment avec la reconnaissance des activités humaines (HAR), bien que la HAR couvre aussi la reconnaissance à partir de capteurs portables tels que les accéléromètres.
Fonctionnement de la reconnaissance d’actions#
Les modèles prennent en entrée un extrait, généralement de 8 à 64 images échantillonnées sur quelques secondes de vidéo, et apprennent deux types d’informations : les caractéristiques spatiales décrivant l’apparence des personnes et des objets, et les caractéristiques temporelles décrivant leurs mouvements. Les premiers réseaux à deux flux traitaient séparément les images RGB et le flux optique dans des branches distinctes, puis fusionnaient leurs prédictions. Les réseaux de neurones convolutifs 3D effectuent des convolutions simultanément sur la hauteur, la largeur et le temps ; I3D les a créés en gonflant en 3D des filtres d’image 2D préentraînés sur ImageNet, et SlowFast associe une voie à faible fréquence d’images pour l’apparence à une voie à fréquence élevée pour le mouvement. Les transformers vidéo appliquent l’auto-attention sur des patches spatio-temporels, et VideoMAE les préentraîne en reconstruisant des vidéos fortement masquées.
Un CNN 3D issu des modèles vidéo de TorchVision classe un extrait en quelques lignes :
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}")Le modèle affiche push up: 0.99 : il attribue à l’ensemble de l’extrait d’une demi-seconde une seule action parmi ses 400 classes.
Les méthodes fondées sur les squelettes suivent une autre approche. Un modèle d’estimation de pose repère d’abord les points clés du corps dans chaque image, puis un modèle temporel tel que le réseau de graphes ST-GCN classe les trajectoires articulaires obtenues. Les squelettes ignorent les vêtements, l’éclairage et l’arrière-plan, et sont assez légers pour être traités en temps réel sur des appareils en périphérie. Les modèles de pose YOLO26 d’Ultralytics fournissent les 17 points clés du corps par personne pour cette approche, et la solution de suivi des entraînements convertit l’angle entre trois de ces points clés en nombre de répétitions pour des exercices comme les pompes et les squats.
Reconnaissance d’actions et tâches associées#
- Estimation de pose et suivi d’objets : L’estimation de pose localise les articulations, tandis que le suivi conserve l’identité de chaque personne d’une image à l’autre. Ces deux tâches servent souvent d’entrées à la reconnaissance d’actions, qui interprète les mouvements qu’elles décrivent ; dans une foule, chaque personne suivie reçoit son propre extrait et sa propre étiquette.
- Localisation temporelle des actions : Repère le début et la fin de chaque action dans une longue vidéo non découpée. La détection d’actions spatio-temporelles va plus loin en encadrant chaque acteur dans chaque image, comme dans le jeu de données AVA.
- Compréhension vidéo : Domaine plus vaste qui couvre aussi le sous-titrage, les questions-réponses et le raisonnement sur les événements et leurs causes dans les vidéos.
Applications concrètes#
- Santé et soins aux personnes âgées : Les systèmes de détection des chutes reconnaissent une chute à partir des données d’une caméra ou d’un appareil portable et alertent le personnel ; les applications de rééducation vérifient que les patients effectuent correctement leurs exercices.
- Forme physique et sport : Les applications comptent les répétitions et évaluent la posture, tandis que l’analyse sportive classe les tirs, les passes et les coups dans les séquences diffusées.
- Sécurité et sûreté : Les systèmes de surveillance signalent les bagarres dans les espaces publics, ainsi que les chutes et le levage dangereux dans les usines.
- Interaction humain-robot : Les robots et les appareils intelligents réagissent à des gestes comme saluer de la main ou pointer du doigt.
Jeux de données et défis#
L’annotation vidéo demande beaucoup plus d’efforts que l’annotation d’images, de sorte que les progrès ont reposé sur de grands jeux de données. Kinetics-400 contient au moins 400 extraits YouTube d’environ 10 secondes pour chacune de ses 400 classes d’actions humaines, et UCF101 compte 13 320 extraits répartis en 101 classes. Something-Something V2 cible le biais de scène, c’est-à-dire la tendance des modèles à reconnaître la natation à la piscine plutôt qu’aux mouvements de nage : ses quelque 220 000 extraits montrent des mains manipulant des objets du quotidien dans 174 classes qui ne diffèrent que par le mouvement, comme « pousser quelque chose de gauche à droite » et « pousser quelque chose de droite à gauche ».










