Apresentamos um grande conjunto de dados de imagens HaGRIDv2 ( HA nd Gesture R ecognition Image Dataset ) para sistemas de reconhecimento de gestos manuais (HGR). Você pode usá-lo para tarefas de classificação ou detecção de imagens. O conjunto de dados proposto permite construir sistemas HGR, que podem ser utilizados em serviços de videoconferência (Zoom, Skype, Discord, Jazz etc.), sistemas de automação residencial, setor automotivo, etc.
O tamanho do HaGRIDv2 é 1,5T e o conjunto de dados contém 1.086.158 imagens FullHD RGB divididas em 33 classes de gestos e uma nova classe separada "no_gesture", contendo posturas naturais das mãos específicas do domínio. Além disso, algumas imagens terão a classe no_gesture
se houver uma segunda mão sem gesto no quadro. Esta classe extra contém 2.164 amostras. Os dados foram divididos em conjuntos de treinamento 76%, validação de 9% e testes de 15% por assunto user_id
, com 821.458 imagens para treinamento, 99.200 imagens para validação e 165.500 para teste.
O conjunto de dados contém 65.977 pessoas únicas e pelo menos esse número de cenas únicas. Os sujeitos são pessoas maiores de 18 anos. O conjunto de dados foi coletado principalmente em ambientes internos com variação considerável na iluminação, incluindo luz artificial e natural. Além disso, o conjunto de dados inclui imagens tiradas em condições extremas, como de frente para uma janela. Além disso, os sujeitos deveriam fazer gestos a uma distância de 0,5 a 4 metros da câmera.
Exemplo de amostra e sua anotação:
Para obter mais informações, consulte nosso artigo arxiv TBA.
2024/09/24
: Lançamos o HaGRIDv2. ?
O conjunto de dados HaGRID foi expandido com 15 novas classes de gestos, incluindo gestos com as duas mãos
A nova classe "no_gesture" com posturas naturais das mãos específicas do domínio foi adicionada ( 2.164 amostras, divididas por trem/val/teste contendo 1.464, 200, 500 imagens, respectivamente)
A classe extra no_gesture
contém 200.390 caixas delimitadoras
Adicionados novos modelos para detecção de gestos, detecção de mãos e classificação full-frame
O tamanho do conjunto de dados é 1,5T
1.086.158 imagens FullHD RGB
Divisão de treinamento/val/teste: (821.458) 76% / (99.200) 9% / (165.500) 15% por assunto user_id
65.977 pessoas únicas
2023/09/21
: Lançamos o HaGRID 2.0. ✌️
Todos os arquivos para treinamento e teste são combinados em um diretório
Os dados foram limpos e novos foram adicionados
Treinamento e testes multi-GPU
Adicionados novos modelos para detecção e classificação full-frame
O tamanho do conjunto de dados é 723 GB
554.800 imagens FullHD RGB (classes limpas e atualizadas, diversidade adicional por raça)
A classe extra no_gesture
contém 120.105 amostras
Divisão de treinamento/val/teste: (410.800) 74% / (54.000) 10% / (90.000) 16% por assunto user_id
37.583 pessoas únicas
2022/06/16
: HaGRID (conjunto de dados inicial)?
O tamanho do conjunto de dados é 716 GB
552.992 imagens FullHD RGB divididas em 18 classes
A classe extra no_gesture
contém 123.589 amostras
Divisão de treinamento/teste: (509.323) 92% / (43.669) 8% por assunto user_id
34.730 pessoas únicas de 18 a 65 anos
A distância é de 0,5 a 4 metros da câmera
Clone e instale os pacotes python necessários:
git clone https://github.com/hukenovs/hagrid.git# ou link espelhado:cd hagrid# Crie ambiente virtual por conda ou venvconda create -n gestos python=3.11 -y conda ativa gestos# Instalar requisitospip install -r requisitos.txt
Dividimos o conjunto de dados do trem em 34 arquivos por gestos devido ao grande tamanho dos dados. Baixe e descompacte-os nos seguintes links:
Gesto | Tamanho | Gesto | Tamanho | Gesto | Tamanho |
---|---|---|---|---|---|
call | 37,2GB | peace | 41,4 GB | grabbing | 48,7GB |
dislike | 40,9GB | peace_inverted | 40,5 GB | grip | 48,6GB |
fist | 42,3GB | rock | 41,7GB | hand_heart | 39,6GB |
four | 43,1 GB | stop | 41,8GB | hand_heart2 | 42,6GB |
like | 42,2GB | stop_inverted | 41,4 GB | holy | 52,7GB |
mute | 43,2GB | three | 42,2GB | little_finger | 48,6GB |
ok | 42,5 GB | 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 | 54 GB | three_gun | 50,1GB | thumb_index | 62,8GB |
thumb_index2 | 24,8GB | timeout | 39,5GB | xsign | 51,3GB |
no_gesture | 493,9MB |
anotações dataset
: annotations
HaGRIDv2 512px - versão leve do conjunto de dados completo com min_side = 512p
119.4 GB
ou usando script python
python download.py --save_path--anotações --conjunto de dados
Execute o seguinte comando com a chave --dataset
para baixar o conjunto de dados com imagens. Baixe anotações para o estágio selecionado pela chave --annotations
.
uso: download.py [-h] [-a] [-d] [-t TARGETS [TARGETS ...]] [-p SAVE_PATH] Baixar conjunto de dados... argumentos opcionais: -h, --help mostra esta mensagem de ajuda e sai -a, --annotations Baixar anotações -d, --dataset Baixar conjunto de dados -t TARGETS [TARGETS ...], --targets TARGETS [TARGETS ... ] Destino(s) para baixar o conjunto de trens -p SAVE_PATH, --save_path SAVE_PATH Salvar caminho
Após o download, você pode descompactar o arquivo executando o seguinte comando:
descompacte-d
A estrutura do conjunto de dados é a seguinte:
├── hagrid_dataset│ ├── call │ │ ├── 00000000.jpg │ │ ├── 00000001.jpg │ │ ├── ... ├── hagrid_annotations │ ├── train │ │ ├── call.json │ │ ├── ... │ ├── val │ │ ├── call.json │ │ ├── ... │ ├── test │ │ ├── call.json │ │ ├── ...
Fornecemos alguns modelos pré-treinados em HaGRIDv2 como linha de base com as arquiteturas de backbone clássicas para classificação de gestos, detecção de gestos e detecção de mãos.
Detectores de gestos | mapa |
---|---|
YOLOv10x | 89,4 |
YOLOv10n | 88,2 |
SSDLiteMobileNetV3Large | 72,7 |
Além disso, se precisar detectar mãos, você pode usar modelos de detecção YOLO, pré-treinados em HaGRIDv2
Detectores de mão | mapa |
---|---|
YOLOv10x | 88,8 |
YOLOv10n | 87,9 |
No entanto, se precisar de um único gesto, você pode usar classificadores full frame pré-treinados em vez de detectores. Para usar modelos full frame, remova a classe no_gesture
Classificadores Full Frame | Gestos F1 |
---|---|
MobileNetV3_small | 86,7 |
MobileNetV3_large | 93,4 |
Vitamina B16 | 91,7 |
ResNet18 | 98,3 |
ResNet152 | 98,6 |
Base ConvNeXt | 96,4 |
Você pode usar modelos treinados baixados; caso contrário, selecione parâmetros para treinamento na pasta configs
. Para treinar o modelo, execute o seguinte comando:
GPU única:
python run.py -c train -p configs/
Multi GPU:
bash ddp_run.sh -g 0,1,2,3 -c train -p configurações/
which -g é uma lista de IDs de GPU.
Cada etapa, a perda atual, a taxa de aprendizado e outros valores são registrados no Tensorboard . Veja todas as métricas e parâmetros salvos abrindo uma linha de comando (isso abrirá uma página da web em localhost:6006
):
tensorboard --logdir=
Teste seu modelo executando o seguinte comando:
GPU única:
python run.py -c test -p configurações/
Multi GPU:
bash ddp_run.sh -g 0,1,2,3 -c test -p configurações/
which -g é uma lista de IDs de GPU.
python demo.py -p--landmarks
python demo_ff.py -p
As anotações consistem em caixas delimitadoras de mãos e gestos no formato COCO [top left X position, top left Y position, width, height]
com rótulos de gestos. Fornecemos o campo user_id
que permitirá que você mesmo divida o conjunto de dados train / val / test, bem como uma meta-informação contém idade, sexo e raça anotados automaticamente.
"04c49801-1101-4b4e-82d0-d4607cd01df0": { "bboxes": [ [0,0694444444, 0,3104166667, 0,2666666667, 0,2640625], [0,5993055556, 0,2875, 0,2569444444, 0,2760416667] ], "rótulos": [ "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": { "idade": [24,41], "gênero": ["feminino"], "raça": ["Branco"] }
Chave - nome da imagem sem extensão
Bboxes - lista de bboxes normalizadas para cada mão [top left X pos, top left Y pos, width, height]
Etiquetas - lista de etiquetas de classe para cada mão, por exemplo, like
, stop
, no_gesture
United_bbox - combinação unida de duas caixas manuais no caso de gestos com as duas mãos ("hand_heart", "hand_heart2", "thumb_index2", "timeout", "holy", "take_picture", "xsign") e 'null' em o caso de gestos com uma mão
United_label - um rótulo de classe para united_bbox no caso de gestos com as duas mãos e 'null' no caso de gestos com uma mão
ID do usuário - ID do assunto (útil para dividir dados em subconjuntos de treinamento/val).
Hand_landmarks - anotado automaticamente com pontos de referência do MediaPipe para cada mão.
Meta - anotada automaticamente com meta-informações das redes neurais FairFace e MiVOLO contendo idade, sexo e raça
Objeto | Trem | Val | Teste | Total |
---|---|---|---|---|
gesto | 980 924 | 120 003 | 200 006 | 1 300 933 |
nenhum gesto | 154 403 | 19 411 | 29 386 | 203 200 |
total de caixas | 1 135 327 | 139 414 | 229 392 | 1 504 133 |
Objeto | Trem | Val | Teste | Total |
---|---|---|---|---|
Mãos totais com pontos de referência | 983 991 | 123 230 | 201 131 | 1 308 352 |
Fornecemos um script para converter anotações para o formato YOLO. Para converter anotações, execute o seguinte comando:
python -m conversores.hagrid_to_yolo --cfg--mode <'mãos' ou 'gestos'>
após a conversão, você precisa alterar a definição original img2labels para:
def img2label_paths(img_paths): img_paths = list(img_paths) # Defina caminhos de rótulo como uma função de caminhos de imagem se "train" em img_paths[0]: return [x.replace("train", "train_labels").replace(" .jpg", ".txt") para x em img_paths] elif "test" em img_paths[0]: return [x.replace("test", "test_labels").replace(".jpg", ".txt" ) para x em img_paths] elif "val" em img_paths[0]: retorne [x.replace("val", "val_labels").replace(".jpg", ".txt") para x em img_paths]
Além disso, fornecemos um script para converter anotações para o formato Coco. Para converter anotações, execute o seguinte comando:
python -m conversores.hagrid_to_coco --cfg--mode <'mãos' ou 'gestos'>
Este trabalho está licenciado sob uma variante da Licença Internacional Creative Commons Attribution-ShareAlike 4.0.
Consulte a licença específica.
Alexandre Kapitanov
Andrey Makhlyarchuk
Karina Kvanchiani
Aleksandr Nagaev
Roman Kraynov
Anton Nuzhdin
GitHub
arXiv
Você pode citar o artigo usando a seguinte entrada do 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} }