Wir führen einen großen Bilddatensatz HaGRIDv2 ( HA nd Gesture Recognition Image Dataset) für Handgestenerkennungssysteme (HGR) ein. Sie können es für Bildklassifizierungs- oder Bilderkennungsaufgaben verwenden. Der vorgeschlagene Datensatz ermöglicht den Aufbau von HGR-Systemen, die in Videokonferenzdiensten (Zoom, Skype, Discord, Jazz usw.), Hausautomationssystemen, dem Automobilsektor usw. verwendet werden können.
Die HaGRIDv2-Größe beträgt 1,5T und der Datensatz enthält 1.086.158 FullHD-RGB-Bilder, unterteilt in 33 Gestenklassen und eine neue separate „no_gesture“-Klasse, die domänenspezifische natürliche Handhaltungen enthält. Außerdem haben einige Bilder die Klasse no_gesture
, wenn sich im Rahmen eine zweite gestenfreie Hand befindet. Diese zusätzliche Klasse enthält 2.164 Beispiele. Die Daten wurden in 76 % Trainings-, 9 % Validierungs- und 15 % Testsätze nach Subjekt- user_id
aufgeteilt, mit 821.458 Bildern für den Zug, 99.200 Bildern für die Validierung und 165.500 für den Test.
Der Datensatz enthält 65.977 einzigartige Personen und mindestens diese Anzahl einzigartiger Szenen. Bei den Probanden handelt es sich um Personen über 18 Jahre. Der Datensatz wurde hauptsächlich in Innenräumen mit erheblichen Unterschieden in der Beleuchtung, einschließlich künstlichem und natürlichem Licht, erfasst. Darüber hinaus enthält der Datensatz Bilder, die unter extremen Bedingungen aufgenommen wurden, z. B. wenn man vor oder hinter einem Fenster steht. Außerdem mussten die Probanden in einem Abstand von 0,5 bis 4 Metern zur Kamera Gesten zeigen.
Beispiel für ein Beispiel und seine Anmerkung:
Weitere Informationen finden Sie in unserem arxiv-Papier, das noch bekannt gegeben wird.
2024/09/24
: Wir veröffentlichen HaGRIDv2. ?
Der HaGRID-Datensatz wurde um 15 neue Gestenklassen erweitert, darunter auch Zweihandgesten
Neue Klasse „no_gesture“ mit domänenspezifischen natürlichen Handhaltungen wurde hinzugefügt ( 2.164 Proben, geteilt durch Zug/Wert/Test mit jeweils 1.464, 200 und 500 Bildern)
Die Extraklasse no_gesture
enthält 200.390 Begrenzungsrahmen
Neue Modelle für Gestenerkennung, Handerkennung und Vollbildklassifizierung hinzugefügt
Die Datensatzgröße beträgt 1,5T
1.086.158 FullHD-RGB-Bilder
Zug-/Wert-/Testaufteilung: (821.458) 76 % / (99.200) 9 % / (165.500) 15 % nach Betreff- user_id
65.977 einzigartige Personen
2023/09/21
: Wir veröffentlichen HaGRID 2.0. ✌️
Alle Dateien für Training und Tests werden in einem Verzeichnis zusammengefasst
Die Daten wurden weiter bereinigt und neue hinzugefügt
Multi-GPU-Training und -Tests
Neue Modelle zur Erkennung und Vollbildklassifizierung hinzugefügt
Die Datensatzgröße beträgt 723 GB
554.800 FullHD-RGB-Bilder (bereinigte und aktualisierte Klassen, zusätzliche Vielfalt nach Rasse)
Die Extraklasse no_gesture
enthält 120.105 Samples
Zug-/Wert-/Testaufteilung: (410.800) 74 % / (54.000) 10 % / (90.000) 16 % nach Betreff user_id
37.583 einzigartige Personen
2022/06/16
: HaGRID (ursprünglicher Datensatz)?
Die Datensatzgröße beträgt 716 GB
552.992 FullHD-RGB-Bilder, aufgeteilt in 18 Klassen
Die Extraklasse no_gesture
enthält 123.589 Samples
Zug-/Testaufteilung: (509.323) 92 % / (43.669) 8 % nach Betreff- user_id
34.730 Einzelpersonen im Alter von 18 bis 65 Jahren
Der Abstand zur Kamera beträgt 0,5 bis 4 Meter
Klonen und installieren Sie die erforderlichen Python-Pakete:
Git-Klon https://github.com/hukenovs/hagrid.git# oder Mirror-Link:cd hagrid# Erstellen Sie eine virtuelle Umgebung mit Conda oder Venvconda. Erstellen Sie -n Gesten python=3.11 -y Conda aktiviert Gesten# Anforderungen installierenpip install -r Anforderungen.txt
Aufgrund der großen Datenmenge haben wir den Zugdatensatz nach Gesten in 34 Archive aufgeteilt. Laden Sie sie über die folgenden Links herunter und entpacken Sie sie:
Geste | Größe | Geste | Größe | Geste | Größe |
---|---|---|---|---|---|
call | 37,2 GB | peace | 41,4 GB | grabbing | 48,7 GB |
dislike | 40,9 GB | peace_inverted | 40,5 GB | grip | 48,6 GB |
fist | 42,3 GB | rock | 41,7 GB | hand_heart | 39,6 GB |
four | 43,1 GB | stop | 41,8 GB | hand_heart2 | 42,6 GB |
like | 42,2 GB | stop_inverted | 41,4 GB | holy | 52,7 GB |
mute | 43,2 GB | three | 42,2 GB | little_finger | 48,6 GB |
ok | 42,5 GB | three2 | 40,2 GB | middle_finger | 50,5 GB |
one | 42,7 GB | two_up | 41,8 GB | point | 50,4 GB |
palm | 43,0 GB | two_up_inverted | 40,9 GB | take_picture | 37,3 GB |
three3 | 54 GB | three_gun | 50,1 GB | thumb_index | 62,8 GB |
thumb_index2 | 24,8 GB | timeout | 39,5 GB | xsign | 51,3 GB |
no_gesture | 493,9 MB |
dataset
annotations
Anmerkungen
HaGRIDv2 512px – Lightweight-Version des vollständigen Datensatzes mit min_side = 512p
119.4 GB
oder mithilfe eines Python-Skripts
python download.py --save_path--annotations --dataset
Führen Sie den folgenden Befehl mit dem Schlüssel --dataset
aus, um den Datensatz mit Bildern herunterzuladen. Laden Sie Anmerkungen für die ausgewählte Phase mit dem Schlüssel --annotations
herunter.
Verwendung: download.py [-h] [-a] [-d] [-t TARGETS [TARGETS ...]] [-p SAVE_PATH] Datensatz herunterladen... optionale Argumente: -h, --help diese Hilfemeldung anzeigen und beenden -a, --annotations Anmerkungen herunterladen -d, --dataset Datensatz herunterladen -t TARGETS [TARGETS ...], --targets TARGETS [TARGETS ... ] Ziele zum Herunterladen des Zugsatzes -p SAVE_PATH, --save_path SAVE_PATH Pfad speichern
Nach dem Herunterladen können Sie das Archiv entpacken, indem Sie den folgenden Befehl ausführen:
entpacken Sie-d
Der Aufbau des Datensatzes ist wie folgt:
├── hagrid_dataset│ ├── call │ │ ├── 00000000.jpg │ │ ├── 00000001.jpg │ │ ├── ... ├── hagrid_annotations │ ├── train │ │ ├── call.json │ │ ├── ... │ ├── val │ │ ├── call.json │ │ ├── ... │ ├── test │ │ ├── call.json │ │ ├── ...
Wir stellen einige auf HaGRIDv2 vorab trainierte Modelle als Basis mit den klassischen Backbone-Architekturen für Gestenklassifizierung, Gestenerkennung und Handerkennung zur Verfügung.
Gestendetektoren | Karte |
---|---|
YOLOv10x | 89,4 |
YOLOv10n | 88,2 |
SSDLiteMobileNetV3Large | 72,7 |
Wenn Sie außerdem Hände erkennen müssen, können Sie YOLO-Erkennungsmodelle verwenden, die auf HaGRIDv2 vorab trainiert wurden
Handdetektoren | Karte |
---|---|
YOLOv10x | 88,8 |
YOLOv10n | 87,9 |
Wenn Sie jedoch eine einzelne Geste benötigen, können Sie anstelle von Detektoren vorab trainierte Vollbildklassifikatoren verwenden. Um Vollbildmodelle zu verwenden, entfernen Sie die Klasse no_gesture
Vollbildklassifikatoren | F1-Gesten |
---|---|
MobileNetV3_small | 86,7 |
MobileNetV3_large | 93,4 |
VitB16 | 91,7 |
ResNet18 | 98,3 |
ResNet152 | 98,6 |
ConvNeXt-Basis | 96,4 |
Sie können heruntergeladene trainierte Modelle verwenden, andernfalls wählen Sie Parameter für das Training im Ordner configs
aus. Um das Modell zu trainieren, führen Sie den folgenden Befehl aus:
Einzelne GPU:
python run.py -c train -p configs/
Multi-GPU:
bash ddp_run.sh -g 0,1,2,3 -c train -p configs/
which -g ist eine Liste von GPU-IDs.
Jeder Schritt, der aktuelle Verlust, die Lernrate und andere Werte werden im Tensorboard protokolliert. Sehen Sie sich alle gespeicherten Metriken und Parameter an, indem Sie eine Befehlszeile öffnen (dadurch wird eine Webseite unter localhost:6006
geöffnet):
tensorboard --logdir=
Testen Sie Ihr Modell, indem Sie den folgenden Befehl ausführen:
Einzelne GPU:
python run.py -c test -p configs/
Multi-GPU:
bash ddp_run.sh -g 0,1,2,3 -c test -p configs/
which -g ist eine Liste von GPU-IDs.
python demo.py -p--landmarks
python demo_ff.py -p
Die Anmerkungen bestehen aus Begrenzungsrahmen von Händen und Gesten im COCO-Format [top left X position, top left Y position, width, height]
mit Gestenbeschriftungen. Wir stellen das Feld user_id
bereit, mit dem Sie den Zug-/Wert-/Testdatensatz selbst aufteilen können, sowie Metainformationen, die automatisch mit Anmerkungen zu Alter, Geschlecht und Rasse versehen sind.
"04c49801-1101-4b4e-82d0-d4607cd01df0": { "bboxes": [ [0,0694444444, 0,3104166667, 0,2666666667, 0,2640625], [0,5993055556, 0,2875, 0,2569444444, 0,2760416667] ], „labels“: [ „thumb_index2“, „thumb_index2“ ], "united_bbox": [ [0,0694444444, 0,2875, 0,7868055556, 0,2869791667] ], „united_label“: [ „thumb_index2“ ], „user_id“: „2fe6a9156ff8ca27fbce8ada318c592b“, „hand_landmarks“: [ [ [0,37233507701702123, 0,5935673528948108], [0,3997604810145188, 0,5925499847441514], ... ], [ [0,37388438145820907, 0,47547576284667353], [0,39460467775730607, 0,4698847093520443], ... ] ] „meta“: { „age“: [24.41], „gender“: [„female“], „race“: [„White“] }
Schlüssel – Bildname ohne Erweiterung
Bboxes – Liste der normalisierten Bboxes für jede Hand [top left X pos, top left Y pos, width, height]
Beschriftungen – Liste der Klassenbezeichnungen für jede Hand, z. B. „ like
“, stop
, no_gesture
.
United_bbox – vereinte Kombination zweier Handboxen bei zweihändigen Gesten („hand_heart“, „hand_heart2“, „thumb_index2“, „timeout“, „holy“, „take_picture“, „xsign“) und „null“ in der Fall von einhändigen Gesten
United_label – eine Klassenbezeichnung für united_bbox bei zweihändigen Gesten und „null“ bei einhändigen Gesten
Benutzer-ID – Betreff-ID (nützlich für die Aufteilung von Daten in Trainings-/Value-Teilmengen).
Hand_landmarks – automatisch mit MediaPipe-Markierungen für jede Hand versehen.
Meta – automatisch kommentiert mit neuronalen Netzwerken von FairFace und MiVOLO. Metainformationen enthalten Alter, Geschlecht und Rasse
Objekt | Zug | Val | Prüfen | Gesamt |
---|---|---|---|---|
Geste | 980 924 | 120 003 | 200 006 | 1 300 933 |
keine Geste | 154 403 | 19 411 | 29 386 | 203 200 |
Gesamtzahl der Kartons | 1 135 327 | 139 414 | 229 392 | 1 504 133 |
Objekt | Zug | Val | Prüfen | Gesamt |
---|---|---|---|---|
Gesamtzeiger mit Orientierungspunkten | 983 991 | 123 230 | 201 131 | 1 308 352 |
Wir stellen ein Skript zum Konvertieren von Anmerkungen in das YOLO-Format bereit. Um Anmerkungen zu konvertieren, führen Sie den folgenden Befehl aus:
python -m converters.hagrid_to_yolo --cfg--mode <'hands' or 'gestures'>
Nach der Konvertierung müssen Sie die ursprüngliche Definition von img2labels ändern in:
def img2label_paths(img_paths): img_paths = list(img_paths) # Etikettenpfade als Funktion von Bildpfaden definieren, wenn "train" in img_paths[0]: return [x.replace("train", "train_labels").replace(" .jpg", ".txt") für x in img_paths] elif "test" in img_paths[0]: return [x.replace("test", "test_labels").replace(".jpg", ".txt" ) für x in img_paths] elif "val" in img_paths[0]: return [x.replace("val", "val_labels").replace(".jpg", ".txt") für x in img_paths]
Außerdem stellen wir ein Skript zum Konvertieren von Anmerkungen in das Coco-Format bereit. Um Anmerkungen zu konvertieren, führen Sie den folgenden Befehl aus:
python -m Converters.hagrid_to_coco --cfg--mode <'hands' or 'gestures'>
Dieses Werk ist unter einer Variante der Creative Commons Attribution-ShareAlike 4.0 International License lizenziert.
Bitte beachten Sie die spezifische Lizenz.
Alexander Kapitänow
Andrey Makhlyarchuk
Karina Kvanchiani
Alexander Nagaev
Roman Kraynov
Anton Nuschdin
Github
arXiv
Sie können den Artikel mit dem folgenden BibTeX-Eintrag zitieren:
@InProceedings{Kapitanov_2024_WACV, author = {Kapitanov, Alexander and Kvanchiani, Karina and Nagaev, Alexander and Kraynov, Roman and Makhliarchuk, Andrei}, title = {HaGRID -- HAnd Gesture Recognition Image Dataset}, booktitle = {Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision (WACV)}, month = {January}, year = {2024}, pages = {4572-4581} }