Action Recognition
Il riconoscimento delle azioni, o riconoscimento delle attività umane (HAR), assegna etichette a ciò che fanno le persone nei video modellando il movimento nel tempo. Metodi, dataset e codice.
Il riconoscimento delle azioni è un’attività di visione artificiale che classifica ciò che una persona, o talvolta un animale o un robot, sta facendo in un video: camminare, salutare, cadere, colpire una pallina da golf o fare un piegamento. Estende la classificazione delle immagini lungo l’asse temporale, perché molte azioni non si distinguono in un singolo fotogramma. Un’immagine fissa di qualcuno a metà del movimento verso il basso potrebbe mostrare una persona che si siede o si alza in piedi, mentre una breve clip rivela quale delle due azioni sta avvenendo. Il termine è spesso usato come sinonimo di riconoscimento delle attività umane (HAR), anche se HAR comprende anche il riconoscimento tramite sensori indossabili, come gli accelerometri.
Come funziona il riconoscimento delle azioni#
I modelli ricevono una clip, in genere da 8 a 64 fotogrammi campionati da pochi secondi di video, e apprendono due tipi di informazioni: caratteristiche spaziali che descrivono l’aspetto di persone e oggetti e caratteristiche temporali che ne descrivono il movimento. Le prime reti a due flussi elaboravano separatamente i fotogrammi RGB e il flusso ottico in rami distinti, fondendone poi le previsioni. Le reti neurali convoluzionali 3D eseguono convoluzioni simultanee su altezza, larghezza e tempo; I3D le ha create espandendo in 3D i filtri 2D per immagini preaddestrati su ImageNet, mentre SlowFast abbina un percorso a bassa frequenza di fotogrammi per l’aspetto a uno ad alta frequenza per il movimento. I Transformer per video applicano l’autoattenzione alle patch spazio-temporali e VideoMAE li preaddestra ricostruendo video con ampie porzioni mascherate.
Una CNN 3D tratta dai modelli video di TorchVision classifica una clip con poche righe di codice:
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}")Il modello stampa push up: 0.99: assegna all’intera clip di mezzo secondo un’azione tra le sue 400 classi.
I metodi basati sugli scheletri seguono un approccio diverso. Un modello di stima della posa individua prima i punti chiave del corpo in ogni fotogramma, e un modello temporale come la rete a grafo ST-GCN classifica le traiettorie articolari risultanti. Gli scheletri ignorano l'abbigliamento, l'illuminazione e lo sfondo e sono abbastanza leggeri da essere elaborati in tempo reale su dispositivi edge. Per questo approccio, Ultralytics YOLO26 fornisce, tramite i propri modelli di posa, i 17 punti chiave del corpo per ogni persona, e la soluzione di monitoraggio degli allenamenti trasforma l'angolo formato da tre di questi punti chiave in un conteggio delle ripetizioni per esercizi come piegamenti e squat.
Riconoscimento delle azioni e attività correlate#
- Stima della posa e tracciamento degli oggetti: la stima della posa individua le articolazioni e il tracciamento mantiene l’identità di ogni persona tra i fotogrammi. Entrambi sono spesso input per il riconoscimento delle azioni, che interpreta i movimenti descritti; in una folla, ogni persona tracciata riceve una clip e un’etichetta proprie.
- Localizzazione temporale delle azioni: individua quando inizia e termina ogni azione in un video lungo e non ritagliato. Il rilevamento spazio-temporale delle azioni va oltre e racchiude ogni attore in ogni fotogramma, come nel dataset AVA.
- Comprensione dei video: il campo più ampio che comprende anche la generazione di didascalie, la risposta a domande e il ragionamento su eventi e cause nei video.
Applicazioni nel mondo reale#
- Assistenza sanitaria e agli anziani: i sistemi di rilevamento delle cadute riconoscono una caduta dai dati di una telecamera o di un dispositivo indossabile e avvisano il personale; le app di riabilitazione verificano che i pazienti eseguano correttamente gli esercizi.
- Fitness e sport: le app contano le ripetizioni e valutano la tecnica, mentre l’analisi sportiva classifica tiri, passaggi e colpi nei filmati delle trasmissioni.
- Sicurezza e protezione: i sistemi di monitoraggio segnalano le risse negli spazi pubblici e le cadute o il sollevamento in condizioni non sicure nei reparti di fabbrica.
- Interazione uomo-robot: robot e dispositivi intelligenti reagiscono a gesti come salutare o indicare.
Dataset e sfide#
Etichettare i video richiede molto più lavoro che etichettare le immagini, perciò i progressi sono dipesi da grandi dataset. Kinetics-400 contiene almeno 400 clip YouTube di circa 10 secondi per ciascuna delle sue 400 classi di azioni umane, mentre UCF101 comprende 13.320 clip in 101 classi. Something-Something V2 affronta il bias di scena, ovvero la tendenza dei modelli a riconoscere il nuoto dalla piscina invece che dai movimenti: le sue circa 220.000 clip mostrano mani che interagiscono con oggetti di uso quotidiano in 174 classi distinguibili solo dal movimento, come «spingere qualcosa da sinistra a destra» e «spingere qualcosa da destra a sinistra».










