ハンド ジェスチャ認識 (HGR) システム用の大規模画像データセットHaGRIDv2 ( HAおよびジェスチャ認識画像データセット) を紹介します。画像分類または画像検出タスクに使用できます。提案されたデータセットにより、ビデオ会議サービス (Zoom、Skype、Discord、Jazz など)、ホーム オートメーション システム、自動車分野などで使用できる HGR システムを構築できます。
HaGRIDv2 サイズは1.5Tで、データセットには33クラスのジェスチャと、ドメイン固有の自然な手の姿勢を含む新しい個別の「no_gesture」クラスに分割された1,086,158 個の FullHD RGB 画像が含まれています。また、フレーム内にジェスチャーのない 2 番目の手がある場合、一部の画像にはno_gesture
クラスが含まれます。この追加クラスには2,164 個のサンプルが含まれています。データは、被験者user_id
ごとにトレーニング 76%、検証 9%、テスト 15% のセットに分割され、トレーニング用の画像が 821,458 枚、検証用の画像が 99,200 枚、テスト用の画像が 165,500 枚ありました。
データセットには65,977 人の固有の人物と、少なくともこの数の固有のシーンが含まれています。対象は18歳以上の人です。データセットは、人工光や自然光など、照明がかなり変化する屋内で主に収集されました。さらに、データセットには、窓に面したり背を向けたりするなど、極端な状況で撮影された画像も含まれています。また、被験者はカメラから0.5〜4メートルの距離でジェスチャーを示す必要がありました。
サンプルとその注釈の例:
詳細については、arxiv 論文未定を参照してください。
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 をリリースします。 ✌️
トレーニングとテスト用のすべてのファイルが 1 つのディレクトリに結合されます
データがさらに消去され、新しいデータが追加されました
マルチ 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です
552,992 枚のFullHD RGB 画像を18クラスに分割
追加クラスno_gesture
には123,589 個のサンプルが含まれています
トレーニング/テストの分割: (509,323) 92% / (43,669) 8% (サブジェクトuser_id
別)
18 歳から 65 歳までの34,730 人のユニークな人物
カメラからの距離は0.5~4メートルです
必要な Python パッケージをクローンしてインストールします。
git clone https://github.com/hukenovs/hagrid.git# またはミラーリンク:cd hagrid# conda または venvconda で仮想環境を作成します create -ngestures python=3.11 -y conda activate ジェスチャー# インストール要件spip 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 TARGETS [TARGETS ...]] [-p SAVE_PATH] データセットをダウンロード... オプションの引数: -h、--help このヘルプ メッセージを表示して終了します -a、--annotations 注釈をダウンロードする -d、--dataset データセットをダウンロードする -t TARGETS [TARGETS ...]、--targets TARGETS [TARGETS ... 】 トレイン セットをダウンロードするターゲット -p SAVE_PATH、--save_path SAVE_PATH 保存パス
ダウンロード後、次のコマンドを実行してアーカイブを解凍できます。
unzip-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 |
レスネット18 | 98.3 |
レスネット152 | 98.6 |
ConvNext ベース | 96.4 |
ダウンロードしたトレーニング済みモデルを使用できます。それ以外の場合は、 configs
フォルダーでトレーニング用のパラメーターを選択します。モデルをトレーニングするには、次のコマンドを実行します。
単一 GPU:
python run.py -c train -p configs/
マルチGPU:
bash ddp_run.sh -g 0,1,2,3 -c train -p configs/
-g は GPU ID のリストです。
ステップごとに、現在の損失、学習率、その他の値がTensorboardに記録されます。コマンドラインを開いて、保存されているすべてのメトリクスとパラメータを表示します (これにより、 localhost:6006
で Web ページが開きます)。
tensorboard --logdir=
次のコマンドを実行してモデルをテストします。
単一 GPU:
python run.py -c test -p configs/
マルチGPU:
bash ddp_run.sh -g 0,1,2,3 -c test -p configs/
-g は GPU ID のリストです。
pythondemo.py -p--landmarks
pythondemo_ff.py -p
注釈は、ジェスチャ ラベルが付いた COCO 形式の手とジェスチャの境界ボックス[top left X position, top left Y position, width, height]
で構成されます。 train / val / test データセットを自分で分割できるようにするuser_id
フィールドと、自動的に注釈が付けられた年齢、性別、人種を含むメタ情報が提供されます。
"04c49801-1101-4b4e-82d0-d4607cd01df0": { "bboxes": [ [0.0694444444、0.3104166667、0.2666666667、0.2640625]、 [0.5993055556、0.2875、0.2569444444、0.2760416667] ], "ラベル": [ "thumb_index2", "thumb_index2" ]、「ユナイテッド_bbox」:[ [0.0694444444、0.2875、0.7868055556、0.2869791667] ]、"ユナイテッドラベル": [ "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' の場合の 2 つのハンド ボックスの結合組み合わせ片手ジェスチャーの場合
United_label - 両手ジェスチャの場合は United_bbox のクラス ラベル、片手ジェスチャの場合は「null」
ユーザー ID - サブジェクト ID (分割データをトレーニング/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 Converts.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 Converts.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} }