손동작 인식 (HGR) 시스템을 위한 대용량 이미지 데이터 세트 HaGRIDv2 ( HA nd G esture Recognition Image Dataset)를 소개합니다. 이미지 분류 또는 이미지 감지 작업에 사용할 수 있습니다. 제안된 데이터 세트를 사용하면 화상 회의 서비스(Zoom, Skype, Discord, Jazz 등), 홈 자동화 시스템, 자동차 분야 등에 사용할 수 있는 HGR 시스템을 구축할 수 있습니다.
HaGRIDv2 크기는 1.5T 이며 데이터 세트에는 33개의 제스처 클래스로 구분된 1,086,158개의 FullHD RGB 이미지와 도메인별 자연스러운 손 자세를 포함하는 새로운 별도의 "no_gesture" 클래스가 포함되어 있습니다. 또한 프레임에 제스처가 없는 두 번째 손이 있는 경우 일부 이미지에는 no_gesture
클래스가 있습니다. 이 추가 클래스에는 2,164개의 샘플이 포함되어 있습니다. 데이터는 주제 user_id
별로 학습 76%, 검증 9% 및 테스트 15% 세트로 분할되었으며, 학습용 이미지 821,458개, 검증용 이미지 99,200개, 테스트용 이미지 165,500개가 포함되었습니다.
데이터 세트에는 65,977명의 고유 인물과 최소한 이 수의 고유 장면이 포함되어 있습니다. 대상은 18세 이상입니다. 데이터세트는 인공광과 자연광을 포함하여 조명이 상당히 다양한 실내에서 주로 수집되었습니다. 게다가, 데이터세트에는 창문을 향하거나 뒤로 물러나는 등 극한 조건에서 촬영한 이미지도 포함되어 있습니다. 또한 피험자들은 카메라로부터 0.5~4m 거리에서 몸짓을 보여야 했다.
샘플 및 해당 주석의 예:
자세한 내용은 arxiv 논문 TBA를 참조하세요.
2024/09/24
: HaGRIDv2를 출시합니다. ?
HaGRID 데이터 세트는 양손 제스처를 포함한 15개의 새로운 제스처 클래스로 확장되었습니다.
도메인별 자연스러운 손 자세를 갖춘 새로운 클래스 "no_gesture"가 추가되었습니다( 2,164개의 샘플, 각각 1,464, 200, 500개의 이미지를 포함하는 train/val/test로 나눔)
추가 클래스 no_gesture
에는 200,390개의 경계 상자가 포함되어 있습니다.
제스처 감지, 손 감지 및 풀프레임 분류를 위한 새로운 모델 추가
데이터 세트 크기는 1.5T 입니다.
1,086,158개의 FullHD RGB 이미지
학습/평가/테스트 분할: 주제별 (821,458) 76% / (99,200) 9% / (165,500) 15% user_id
65,977 명의 순 사람
2023/09/21
: HaGRID 2.0을 출시합니다. ✌️
교육 및 테스트용 모든 파일이 하나의 디렉터리로 결합됩니다.
데이터가 더욱 삭제되고 새로운 데이터가 추가되었습니다.
다중 GPU 훈련 및 테스트
감지 및 풀프레임 분류를 위한 새로운 모델 추가
데이터 세트 크기는 723GB 입니다.
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 (초기 데이터셋) ?
데이터 세트 크기는 716GB 입니다.
18개 클래스로 구분된 552,992개의 FullHD RGB 이미지
추가 클래스 no_gesture
에는 123,589개의 샘플이 포함되어 있습니다.
훈련/테스트 분할: (509,323) 92% / (43,669) 주제별 8% user_id
18세부터 65세까지 순 34,730 명
거리는 카메라로부터 0.5~4m입니다.
필수 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.2GB | peace | 41.4GB | grabbing | 48.7GB |
dislike | 40.9GB | peace_inverted | 40.5GB | grip | 48.6GB |
fist | 42.3GB | rock | 41.7GB | hand_heart | 39.6GB |
four | 43.1GB | stop | 41.8GB | hand_heart2 | 42.6GB |
like | 42.2GB | stop_inverted | 41.4GB | holy | 52.7GB |
mute | 43.2GB | three | 42.2GB | little_finger | 48.6GB |
ok | 42.5GB | three2 | 40.2GB | middle_finger | 50.5GB |
one | 42.7GB | two_up | 41.8GB | point | 50.4GB |
palm | 43.0GB | two_up_inverted | 40.9GB | take_picture | 37.3GB |
three3 | 54GB | three_gun | 50.1GB | thumb_index | 62.8GB |
thumb_index2 | 24.8GB | timeout | 39.5GB | xsign | 51.3GB |
no_gesture | 493.9MB |
dataset
주석 : annotations
HaGRIDv2 512px - min_side = 512p
119.4 GB
인 전체 데이터 세트의 경량 버전
또는 Python 스크립트를 사용하여
python download.py --save_path--주석 --데이터세트
이미지가 포함된 데이터세트를 다운로드하려면 --dataset
키를 사용하여 다음 명령을 실행하세요. --annotations
키를 사용하여 선택한 단계에 대한 주석을 다운로드합니다.
사용법: download.py [-h] [-a] [-d] [-t 대상 [대상 ...]] [-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 |
또한 손을 감지해야 하는 경우 HaGRIDv2에서 사전 훈련된 YOLO 감지 모델을 사용할 수 있습니다.
손 감지기 | 지도 |
---|---|
YOLOv10x | 88.8 |
YOLOv10n | 87.9 |
그러나 단일 동작이 필요한 경우 감지기 대신 사전 훈련된 풀 프레임 분류기를 사용할 수 있습니다. 풀 프레임 모델을 사용하려면 no_gesture 클래스를 제거하세요.
풀 프레임 분류기 | F1 제스처 |
---|---|
MobileNetV3_small | 86.7 |
MobileNetV3_large | 93.4 |
비트B16 | 91.7 |
ResNet18 | 98.3 |
ResNet152 | 98.6 |
ConvNeXt 베이스 | 96.4 |
다운로드한 훈련된 모델을 사용할 수 있습니다. 그렇지 않으면 configs
폴더에서 훈련을 위한 매개변수를 선택할 수 있습니다. 모델을 학습하려면 다음 명령어를 실행하세요.
단일 GPU:
python run.py -c 기차 -p configs/
다중 GPU:
bash ddp_run.sh -g 0,1,2,3 -c train -p configs/
-g는 GPU ID 목록입니다.
모든 단계, 현재 손실, 학습률 및 기타 값은 Tensorboard 에 기록됩니다. 명령줄을 열어 저장된 측정항목과 매개변수를 모두 확인하세요(이렇게 하면 localhost:6006
에서 웹페이지가 열립니다).
tensorboard --logdir=<작업 디렉터리>
다음 명령을 실행하여 모델을 테스트하십시오.
단일 GPU:
python run.py -c 테스트 -p configs/
다중 GPU:
bash ddp_run.sh -g 0,1,2,3 -c test -p configs/
-g는 GPU ID 목록입니다.
python 데모.py -p--랜드마크
파이썬 데모_ff.py -p
주석은 제스처 라벨이 포함된 COCO 형식 [top left X position, top left Y position, width, height]
의 손 및 제스처 경계 상자로 구성됩니다. 우리는 훈련/발행/테스트 데이터 세트를 직접 분할할 수 있는 user_id
필드를 제공할 뿐만 아니라 자동으로 주석이 달린 연령, 성별 및 인종이 포함된 메타 정보도 제공합니다.
"04c49801-1101-4b4e-82d0-d4607cd01df0": { "bbox": [ [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'입니다.
사용자 ID - 대상 ID(데이터를 훈련/발행 하위 집합으로 분할하는 데 유용함).
Hand_landmarks - 각 손에 대한 MediaPipe 랜드마크로 자동 주석이 추가됩니다.
메타 - FairFace 및 MiVOLO 신경망으로 자동으로 주석이 추가됩니다. 메타 정보에는 나이, 성별, 인종이 포함됩니다.
물체 | 기차 | 발 | 시험 | 총 |
---|---|---|---|---|
몸짓 | 980 924 | 120003 | 200006 | 1 300 933 |
제스처 없음 | 154403 | 19411 | 29386 | 203 200 |
총 상자 | 1 135 327 | 139414 | 229 392 | 1 504 133 |
물체 | 기차 | 발 | 시험 | 총 |
---|---|---|---|---|
랜드마크가 있는 총 손 | 983 991 | 123 230 | 201 131 | 1 308 352 |
주석을 YOLO 형식으로 변환하는 스크립트를 제공합니다. 주석을 변환하려면 다음 명령어를 실행하세요.
python -m 변환기.hagrid_to_yolo --cfg--mode <'손' 또는 '제스처'>
변환 후에는 원래 정의 img2labels를 다음으로 변경해야 합니다.
def img2label_paths(img_paths): img_paths = list(img_paths) # 레이블 경로를 이미지 경로의 함수로 정의 if "train" in img_paths[0]: return [x.replace("train", "train_labels").replace(" .jpg", ".txt") for x in img_paths] elif "test" in img_paths[0]: return [x.replace("test", "test_labels").replace(".jpg", ".txt" ) for x in img_paths] elif "val" in img_paths[0]: return [x.replace("val", "val_labels").replace(".jpg", ".txt") for x in img_paths]
또한 주석을 Coco 형식으로 변환하는 스크립트를 제공합니다. 주석을 변환하려면 다음 명령어를 실행하세요.
python -m 변환기.hagrid_to_coco --cfg--mode <'손' 또는 '제스처'>
이 저작물은 Creative Commons Attribution-ShareAlike 4.0 International License의 변형에 따라 라이센스가 부여됩니다.
특정 라이센스를 참조하십시오.
알렉산더 카피타노프
안드레이 마크랴르추크
카리나 크반치아니
알렉산드르 나가예프
로만 크라이노프
안톤 누즈딘
Github
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} }