Action Recognition
Die Aktionserkennung oder Erkennung menschlicher Aktivitäten (HAR) ordnet Personen in Videos anhand ihrer zeitlichen Bewegungen Aktivitäten zu. Methoden, Datensätze und Code.
Aktivitätserkennung ist eine Aufgabe der Computer Vision, bei der klassifiziert wird, was eine Person – manchmal auch ein Tier oder Roboter – in einem Video tut: gehen, winken, fallen, einen Golfschläger schwingen oder Liegestütze machen. Sie erweitert die Bildklassifizierung um die zeitliche Dimension, denn viele Aktivitäten lassen sich anhand eines einzelnen Einzelbilds nicht unterscheiden. Ein Standbild von jemandem auf halbem Weg nach unten kann zeigen, ob sich die Person hinsetzt oder aufsteht; ein kurzer Clip zeigt, was tatsächlich geschieht. Der Begriff wird oft gleichbedeutend mit Erkennung menschlicher Aktivitäten (HAR) verwendet, wobei HAR auch die Erkennung anhand tragbarer Sensoren wie Beschleunigungsmessern umfasst.
So funktioniert die Aktivitätserkennung#
Modelle verarbeiten einen Clip, typischerweise 8 bis 64 aus wenigen Sekunden Videomaterial entnommene Einzelbilder, und lernen zwei Arten von Informationen: räumliche Merkmale, die beschreiben, wie Menschen und Objekte aussehen, und zeitliche Merkmale, die beschreiben, wie sie sich bewegen. Frühe Zwei-Strom-Netze verarbeiteten RGB-Einzelbilder und optischen Fluss in getrennten Zweigen und führten ihre Vorhersagen zusammen. 3D-Faltungsneuronale Netze führen Faltungen gleichzeitig über Höhe, Breite und Zeit aus. I3D entstand, indem vortrainierte 2D-Bildfilter von ImageNet zu 3D-Filtern erweitert wurden; SlowFast kombiniert einen Pfad mit niedriger Bildrate für das Erscheinungsbild mit einem Pfad mit hoher Bildrate für die Bewegung. Video-Transformer wenden Selbstaufmerksamkeit auf Raum-Zeit-Patches an, und VideoMAE trainiert sie vor, indem stark maskierte Videos rekonstruiert werden.
Ein 3D-CNN aus den TorchVision-Videomodellen klassifiziert einen Clip mit wenigen Zeilen Code:
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}")Das Modell gibt push up: 0.99 aus: Es versieht den gesamten halben Sekunden langen Clip mit einer Aktivitätsklasse aus seinen 400 Klassen.
Skelettbasierte Verfahren gehen anders vor. Ein Modell zur Posenschätzung ermittelt zunächst in jedem Einzelbild die Körper-Schlüsselpunkte. Ein zeitliches Modell wie das Graphnetzwerk ST-GCN klassifiziert anschließend die daraus entstehenden Gelenkverläufe. Skelette ignorieren Kleidung, Beleuchtung und Hintergrund und sind klein genug, um auf Edge-Geräten in Echtzeit verarbeitet zu werden. Die YOLO26-Posenmodelle von Ultralytics liefern für diesen Ansatz die 17 Körper-Schlüsselpunkte pro Person. Die Lösung zur Trainingsüberwachung wandelt den Winkel zwischen drei dieser Schlüsselpunkte in Wiederholungszahlen für Übungen wie Liegestütze und Kniebeugen um.
Aktivitätserkennung und verwandte Aufgaben#
- Posenschätzung und Objektverfolgung: Die Posenschätzung lokalisiert Gelenke, und die Verfolgung ordnet jeder Person über mehrere Einzelbilder hinweg eine Identität zu. Beides dient häufig als Eingabe für die Aktivitätserkennung, die die beschriebene Bewegung interpretiert. In einer Menschenmenge erhält jede verfolgte Person einen eigenen Clip und ein eigenes Label.
- Zeitliche Lokalisierung von Aktivitäten: Ermittelt, wann einzelne Aktivitäten in einem langen, ungeschnittenen Video beginnen und enden. Die raumzeitliche Aktivitätserkennung geht noch weiter und umrahmt die handelnde Person in jedem Einzelbild, wie im AVA-Datensatz.
- Videoverständnis: Das umfassendere Fachgebiet, das auch Bildbeschreibung, Fragebeantwortung und Schlussfolgerungen zu Ereignissen und Ursachen in Videos umfasst.
Anwendungen in der Praxis#
- Gesundheitswesen und Altenpflege: Systeme zur Sturzerkennung erkennen Stürze anhand von Kamera- oder tragbaren Sensordaten und benachrichtigen das Personal. Reha-Apps prüfen, ob Patientinnen und Patienten Übungen korrekt ausführen.
- Fitness und Sport: Apps zählen Wiederholungen und bewerten die Ausführung; Sportanalysen klassifizieren Würfe, Pässe und Schläge in Übertragungsmaterial.
- Sicherheit und Schutz: Überwachungssysteme melden Schlägereien an öffentlichen Orten sowie Stürze oder unsicheres Heben in Fabrikhallen.
- Mensch-Roboter-Interaktion: Roboter und intelligente Geräte reagieren auf Gesten wie Winken oder Zeigen.
Datensätze und Herausforderungen#
Videos zu annotieren ist wesentlich aufwendiger als Bilder zu annotieren, daher beruhen Fortschritte auf großen Datensätzen. Kinetics-400 enthält für jede seiner 400 menschlichen Aktivitätsklassen mindestens 400 YouTube-Clips von etwa 10 Sekunden Länge; UCF101 umfasst 13.320 Clips in 101 Klassen. Something-Something V2 zielt auf den Szenenbias ab: Modelle erkennen dann Schwimmen am Schwimmbecken statt an den Schwimmzügen. Die rund 220.000 Clips zeigen Hände, die mit Alltagsgegenständen interagieren. Sie umfassen 174 Klassen, die sich nur in der Bewegung unterscheiden, etwa „etwas von links nach rechts schieben“ und „etwas von rechts nach links schieben“.










