Мы представляем большой набор данных изображений HaGRIDv2 ( HA nd Gesture Recognition I mage Dataset ) для систем распознавания жестов рук (HGR). Вы можете использовать его для задач классификации изображений или обнаружения изображений. Предлагаемый набор данных позволяет создавать системы HGR, которые можно использовать в сервисах видеоконференцсвязи (Zoom, Skype, Discord, Jazz и т. д.), системах домашней автоматизации, автомобильном секторе и т. д.
Размер HaGRIDv2 составляет 1,5 ТБ , а набор данных содержит 1 086 158 изображений FullHD RGB, разделенных на 33 класса жестов и новый отдельный класс «no_gesture», содержащий естественные позы рук для конкретной предметной области. Кроме того, некоторые изображения имеют класс no_gesture
, если в кадре есть вторая рука без жестов. Этот дополнительный класс содержит 2164 образца. Данные были разделены на обучающие 76%, 9% проверочные и 15% тестовые наборы по субъекту user_id
: 821 458 изображений для обучения, 99 200 изображений для проверки и 165 500 для тестирования.
Набор данных содержит 65 977 уникальных людей и как минимум такое же количество уникальных сцен. Объектами являются люди старше 18 лет. Набор данных был собран в основном в закрытых помещениях со значительными различиями в освещении, включая искусственное и естественное освещение. Кроме того, набор данных включает изображения, сделанные в экстремальных условиях, например, лицом к окну или спиной к нему. Также испытуемые должны были показывать жесты на расстоянии от 0,5 до 4 метров от камеры.
Пример образца и его аннотация:
Для получения дополнительной информации см. наш архивный документ TBA.
2024/09/24
: Мы выпускаем HaGRIDv2. ?
Набор данных HaGRID был расширен за счет 15 новых классов жестов, включая жесты двумя руками.
Был добавлен новый класс «no_gesture» с естественными положениями рук, специфичными для предметной области ( 2164 образца, разделенные по train/val/test, содержащие 1464, 200, 500 изображений соответственно).
Дополнительный класс no_gesture
содержит 200 390 ограничивающих рамок.
Добавлены новые модели для распознавания жестов, рук и полнокадровой классификации.
Размер набора данных — 1,5 Т.
1 086 158 изображений FullHD RGB
Разделение поезд/значение/тест: (821 458) 76% / (99 200) 9% / (165 500) 15% по субъекту user_id
65 977 уникальных человек
2023/09/21
: Мы выпускаем HaGRID 2.0. ✌️
Все файлы для обучения и тестирования объединены в одну директорию.
В дальнейшем данные были очищены и добавлены новые.
Обучение и тестирование нескольких графических процессоров
Добавлены новые модели для обнаружения и полнокадровой классификации.
Размер набора данных составляет 723 ГБ.
554 800 изображений FullHD RGB (очищены и обновлены классы, добавлено разнообразие по расам)
Дополнительный класс no_gesture
содержит 120 105 семплов.
Разделение поезд/значение/тест: (410 800) 74 % / (54 000) 10 % / (90 000) 16 % по субъекту user_id
37 583 уникальных человека
2022/06/16
: HaGRID (исходный набор данных)?
Размер набора данных составляет 716 ГБ.
552 992 изображения FullHD RGB, разделенные на 18 классов.
Дополнительный класс no_gesture
содержит 123 589 семплов.
Разделение обучения/тестирования: (509 323) 92% / (43 669) 8% по субъекту user_id
34 730 уникальных людей от 18 до 65 лет
Расстояние от камеры от 0,5 до 4 метров.
Клонируйте и установите необходимые пакеты Python:
git clone https://github.com/hukenovs/hagrid.git# или зеркальная ссылка:cd hagrid# Создать виртуальную среду с помощью conda или venvconda create -n жесты python=3.11 -y conda активировать жесты# Установить требованияpip install -r требования.txt
Мы разделили набор данных поездов на 34 архива жестами из-за большого размера данных. Загрузите и разархивируйте их по следующим ссылкам:
Жест | Размер | Жест | Размер | Жест | Размер |
---|---|---|---|---|---|
call | 37,2 ГБ | peace | 41,4 ГБ | grabbing | 48,7 ГБ |
dislike | 40,9 ГБ | peace_inverted | 40,5 ГБ | grip | 48,6 ГБ |
fist | 42,3 ГБ | rock | 41,7 ГБ | hand_heart | 39,6 ГБ |
four | 43,1 ГБ | stop | 41,8 ГБ | hand_heart2 | 42,6 ГБ |
like | 42,2 ГБ | stop_inverted | 41,4 ГБ | holy | 52,7 ГБ |
mute | 43,2 ГБ | three | 42,2 ГБ | little_finger | 48,6 ГБ |
ok | 42,5 ГБ | three2 | 40,2 ГБ | middle_finger | 50,5 ГБ |
one | 42,7 ГБ | two_up | 41,8 ГБ | point | 50,4 ГБ |
palm | 43,0 ГБ | two_up_inverted | 40,9 ГБ | take_picture | 37,3 ГБ |
three3 | 54 ГБ | three_gun | 50,1 ГБ | thumb_index | 62,8 ГБ |
thumb_index2 | 24,8 ГБ | timeout | 39,5 ГБ | xsign | 51,3 ГБ |
no_gesture | 493,9 МБ |
аннотации dataset
: annotations
HaGRIDv2 512px — облегченная версия полного набора данных с min_side = 512p
119.4 GB
или с помощью скрипта Python
python download.py --save_path--аннотации --набор данных
Запустите следующую команду с ключом --dataset
, чтобы загрузить набор данных с изображениями. Загрузите аннотации для выбранного этапа с помощью ключа --annotations
.
использование: download.py [-h] [-a] [-d] [-t TARGETS [TARGETS ...]] [-p SAVE_PATH] Загрузить набор данных... необязательные аргументы: -h, --help показать это справочное сообщение и выйти -a, --annotations Загрузить аннотации -d, --dataset Загрузить набор данных -t TARGETS [TARGETS ...], --targets TARGETS [TARGETS ...] ] Цель(и) для загрузки набора поездов -p SAVE_PATH, --save_path SAVE_PATH Сохранить путь
После скачивания вы можете разархивировать архив, выполнив следующую команду:
разархивировать-d
Структура набора данных следующая:
├── hagrid_dataset│ ├── call │ │ ├── 00000000.jpg │ │ ├── 00000001.jpg │ │ ├── ... ├── hagrid_annotations │ ├── train │ │ ├── call.json │ │ ├── ... │ ├── val │ │ ├── call.json │ │ ├── ... │ ├── test │ │ ├── call.json │ │ ├── ...
Мы предоставляем несколько моделей, предварительно обученных на HaGRIDv2, в качестве базовой линии с классической магистральной архитектурой для классификации жестов, обнаружения жестов и обнаружения рук.
Детекторы жестов | карта |
---|---|
YOLOv10x | 89,4 |
YOLOv10n | 88,2 |
SSDLiteMobileNetV3Large | 72,7 |
Кроме того, если вам нужно обнаружить руки, вы можете использовать модели обнаружения YOLO, предварительно обученные на HaGRIDv2.
Ручные детекторы | карта |
---|---|
YOLOv10x | 88,8 |
YOLOv10n | 87,9 |
Однако, если вам нужен один жест, вы можете использовать предварительно обученные полнокадровые классификаторы вместо детекторов. Чтобы использовать полнокадровые модели, удалите класс no_gesture.
Полнокадровые классификаторы | Жесты F1 |
---|---|
MobileNetV3_small | 86,7 |
MobileNetV3_large | 93,4 |
ВитВ16 | 91,7 |
Реснет18 | 98,3 |
Реснет152 | 98,6 |
База ConvNeXt | 96,4 |
Вы можете использовать скачанные обученные модели, в противном случае выберите параметры для обучения в папке configs
. Чтобы обучить модель, выполните следующую команду:
Один графический процессор:
python run.py -c train -p configs/
Мульти графический процессор:
bash ddp_run.sh -g 0,1,2,3 -c train -p configs/<конфигурация>
где -g — список идентификаторов графических процессоров.
На каждом шаге текущие потери, скорость обучения и другие значения записываются в Tensorboard . Просмотрите все сохраненные метрики и параметры, открыв командную строку (откроется веб-страница по адресу localhost:6006
):
тензорная доска --logdir=<рабочий каталог>
Проверьте свою модель, выполнив следующую команду:
Один графический процессор:
python run.py -c test -p configs/
Мульти графический процессор:
bash ddp_run.sh -g 0,1,2,3 -c test -p configs/<конфигурация>
где -g — список идентификаторов графических процессоров.
python demo.py -p--landmarks
python demo_ff.py -p
Аннотации состоят из ограничивающих рамок с изображением рук и жестов в формате COCO [top left X position, top left Y position, width, height]
с метками жестов. Мы предоставляем поле user_id
, которое позволит вам самостоятельно разделить набор данных train/val/test, а метаинформация содержит автоматически аннотированные возраст, пол и расу.
"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], ... ] ] "мета": { "возраст": [24.41], "пол": ["женщина"], "раса": ["Белый"] }
Ключ — имя изображения без расширения
Bboxes — список нормализованных bbox для каждой руки [top left X pos, top left Y pos, width, height]
Ярлыки — список меток классов для каждой руки, like
, stop
, no_gesture
United_bbox - объединенная комбинация двух ручных коробок в случае двуручных жестов ("hand_heart", "hand_heart2", "thumb_index2", "timeout", "holy", "take_picture", "xsign") и 'null' в случай жестов одной рукой
United_label — метка класса для united_bbox в случае жестов двумя руками и «null» в случае жестов одной рукой.
Идентификатор пользователя — идентификатор субъекта (полезно для разделения данных на подмножества train/val).
Hand_landmarks — автоматически аннотируется ориентирами MediaPipe для каждой руки.
Мета — автоматически аннотируется с помощью нейронных сетей FairFace и MiVOLO. Метаинформация содержит возраст, пол и расу.
Объект | Тренироваться | Вал | Тест | Общий |
---|---|---|---|---|
жест | 980 924 | 120 003 | 200 006 | 1 300 933 |
никакого жеста | 154 403 | 19 411 | 29 386 | 203 200 |
Всего коробок | 1 135 327 | 139 414 | 229 392 | 1 504 133 |
Объект | Тренироваться | Вал | Тест | Общий |
---|---|---|---|---|
Всего рук с ориентирами | 983 991 | 123 230 | 201 131 | 1 308 352 |
Мы предоставляем скрипт для преобразования аннотаций в формат YOLO. Чтобы преобразовать аннотации, выполните следующую команду:
python -m Converters.hagrid_to_yolo --cfg--mode <'руки' или 'жесты'>
после преобразования вам нужно изменить исходное определение img2labels на:
def img2label_paths(img_paths): img_paths = list(img_paths) # Определить пути к меткам как функцию путей к изображениям, если "train" в img_paths[0]: return [x.replace("train", "train_labels").replace(" .jpg", ".txt") для x в img_paths] elif "test" в img_paths[0]: return [x.replace("test", "test_labels").replace(".jpg", ".txt" ) для x в img_paths] elif "val" в img_paths[0]: return [x.replace("val", "val_labels").replace(".jpg", ".txt") для x в img_paths]
Также мы предоставляем скрипт для преобразования аннотаций в формат Coco. Чтобы преобразовать аннотации, выполните следующую команду:
python -m Converters.hagrid_to_coco --cfg--mode <'руки' или 'жесты'>
Эта работа распространяется под лицензией Creative Commons Attribution-ShareAlike 4.0 International License.
Пожалуйста, ознакомьтесь с конкретной лицензией.
Александр Капитанов
Андрей Махлярчук
Карина Кванчиани
Александр Нагаев
Роман Крайнов
Антон Нуждин
Гитхаб
arXiv
Вы можете цитировать статью, используя следующую запись BibTeX:
@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} }