Überblick
- Zeitraum und Rahmen — September 2022 bis April 2023, Bachelorarbeit im Studiengang Robotik an der Universität Guangzhou, in Einzelarbeit
- Aufgabe — Handgesten mit einer gewöhnlichen Monokamera erkennen und in Fahrbefehle für ein mobiles Roboterfahrzeug übersetzen, mit höherer Erkennungsgenauigkeit und besserem Zusammenspiel von Erkennung und Steuerung
- Ergebnis — 81,3 % mAP bei statischer Gestendetektion; bis zu 83,3 % Genauigkeit bei dynamischen Gesten; Echtzeitsteuerung des Fahrzeugs mit 10 Bewegungsbefehlen über statische Gesten
Meine Beiträge
- Eigener Datensatz statischer Gesten — chinesische Zahlengesten 0–5 mit der Laptopkamera von 5 Personen aufgenommen, insgesamt 4.488 Bilder (3.740 Training / 748 Validierung), ergänzt um Szenen mit Gesicht und Hand sowie um 45° gedrehte und gespiegelte Aufnahmen
- YOLOv5s für statische Gesten verbessert — drei Varianten verglichen (CA-Attention, CBAM-Attention, CoordConv) und CBAM-YOLOv5s gewählt: mAP@0.5:0.95 stieg von 80,2 % auf 81,3 %, der Rechenaufwand sank von 16,0 auf 15,8 GFLOPs, und die Fehldetektionen des Hintergrunds als Ziffer 4 oder 5 gingen zurück
- C3D für dynamische Gesten verbessert — das ursprüngliche C3D erreichte auf fünf Gestenklassen aus DSL-46 nur 19,2 %, der Loss wurde NaN. Mit binarisierten Videos auf 1.260 Clips erweitert, Batch-Normalisierung nach den Faltungsschichten ergänzt und die Lernrate von 0,001 auf 0,0001 gesenkt: 83,3 %, vor R3D (55 %) und R(2+1)D (54 %) unter gleichen Bedingungen
- Gestengesteuertes Fahrzeug aufgebaut — Raspberry-Pi-4B-Fahrzeug mit TB6612FNG-Doppel-H-Brücke und PWM-Drehzahlregelung über GPIO; der Host-PC erkennt die Gesten und sendet die Befehle per WLAN über TCP/IP für 10 Bewegungen: Stopp, vorwärts, rückwärts, Drehen nach links und rechts, Beschleunigen sowie Zweihandkombinationen für Kurven und Rückwärtsfahren nach links und rechts
Technische Details
Statische Gesten: drei Varianten im Vergleich
Gleicher Datensatz, gleiche Trainingseinstellungen (100 Epochen, Batch 8):
| Modell | Änderung | mAP@0.5:0.95 | Rechenaufwand (GFLOPs) |
|---|---|---|---|
| YOLOv5s (Basis) | — | 80,2 % | 16,0 |
| CA-YOLOv5s | Coordinate Attention nach dem 2., 3. und 4. C3-Block des Backbones | 80,6 % | 16,0 |
| CBAM-YOLOv5s (gewählt) | CBAM (Kanal- und Raum-Attention) in den C3-Blöcken des Backbones | 81,3 % | 15,8 |
| CoordConv-YOLOv5s | Koordinatenfaltung statt 1×1-Faltungen im Head, zusätzlich vor den Detektionsköpfen | 80,8 % | 21,7 |
Auf demselben Datensatz erreichten die neueren YOLOv7 79,7 % und YOLOv8s 82,3 %. Unter den drei YOLOv5-Varianten hatte CBAM die höchste Genauigkeit und zugleich den geringsten Rechenaufwand.
Dynamische Gesten: von 19,2 % auf 83,3 %
- Daten — fünf Alltagsgesten aus dem öffentlichen Datensatz DSL-46 (come, don’t want, fine, go, hello), je 120 Clips, für das Training in Einzelbilder zerlegt
- Ausgangspunkt — ursprüngliches C3D (8 Faltungsschichten mit 3×3×3-Kernen, 3 vollverbundene Schichten), 20 Epochen trainiert; der Loss sank nicht
- Änderungen — binarisierte Kopien der Videos erweiterten die Daten auf 1.260 Clips (804 Training / 204 Validierung / 252 Test); Batch-Normalisierung (Momentum 0,9) nach den Faltungsschichten; Lernrate 0,0001; 100 Epochen
| Netz | Beste Genauigkeit |
|---|---|
| BN-C3D | 83,3 % |
| R3D | 55 % |
| R(2+1)D | 54 % |
Von der Erkennung zur Bewegung
- Ablauf — Kamera am Host → CBAM-YOLOv5s in Echtzeit → Zuordnung von Geste zu Befehl → WLAN (TCP/IP) → Raspberry Pi 4B → TB6612FNG → Gleichstrommotoren
- Hardware — Aluminiumchassis, Differentialantrieb, Gleichstrommotoren mit Metallgetriebe, zwei 7,4-V-Lithiumakkus; Host-PC mit i7-12650H und RTX 4060 Laptop GPU
- Software — Python 3.8, PyTorch 1.13, OpenCV 4.7; das Fahrprogramm per VNC auf dem Pi eingerichtet
- Befehle — eine Hand: 0 Stopp · 1 vorwärts · 2 rückwärts · 3 Drehen links · 4 Drehen rechts · 5 beschleunigen; zwei Hände: 1+3 Kurve links · 1+4 Kurve rechts · 2+3 rückwärts links · 2+4 rückwärts rechts
Grenzen und Lehren
- Dynamische Gesten kamen nie am Fahrzeug an — BN-C3D schwankte auf der Validierung stark und erkannte eigene Aufnahmen schlecht; die Echtzeiterkennung dynamischer Gesten erfüllte die Steuerungsanforderungen nicht, deshalb wurde das Fahrzeug nur mit statischen Gesten gesteuert. Ursachen: nur 120 Clips pro Klasse und eine einfache Monokamera ohne Tiefeninformation
- Begrenzter Zugewinn — Gestendetektion ist einfacher als allgemeine Objektdetektion; die Basis lag schon bei 80,2 %, die Verbesserung brachte etwa einen Prozentpunkt. YOLOv8s erreichte 82,3 % auf denselben Daten (anderer Loss, daher nicht streng vergleichbar)
- Was daraus wurde — ferne Pylonen im KAL-Projekt am KIT waren dasselbe Kleinobjektproblem; dort habe ich wieder Attention eingesetzt (Coordinate Attention) und eine Tiefenkamera ergänzt