This is the official repo of TD-GCN and our work is accepted by IEEE Transactions on Multimedia (TMM).
Jinfu Liu, Xinshun Wang, Can Wang, Yuan Gao, Mengyuan Liu. Temporal Decoupling Graph Convolutional Network for Skeleton-based Gesture Recognition. IEEE Transactions on Multimedia (TMM), 2023.
You can install all dependencies by running pip install -r requirements.txt
Then, you need to install torchlight by running pip install -e torchlight
- SHREC’17 Track dataset from http://www-rech.telecom-lille.fr/shrec2017-hand/
- DHG-14/28 dataset from http://www-rech.telecom-lille.fr/DHGdataset/
- NTU RGB+D 60 Skeleton dataset from https://rose1.ntu.edu.sg/dataset/actionRecognition/
- NW-UCLA dataset from Download NW-UCLA dataset
- Put downloaded data into the following directory structure:
- data/
- shrec/
- shrec17_dataset/
- HandGestureDataset_SHREC2017/
- gesture_1
...
- DHG14-28/
- DHG14-28_dataset/
- gesture_1
...
- NW-UCLA/
- all_sqe
...
- ntu/
- nturgbd_raw/
- nturgb+d_skeletons
...
- First, extract all files to
/data/shrec/shrec17_dataset
- Then, run
python gen_traindataset.py
andpython gen_testdataset.py
- First, extract all files to
./data/DHG14-28/DHG14-28_dataset
- Then, run
python python gen_dhgdataset.py
- First, extract all skeleton files to
./data/ntu/nturgbd_raw
- Then, run
python get_raw_skes_data.py
,python get_raw_denoised_data.py
andpython seq_transformation.py
in sequence
- Move folder
all_sqe
to./data/NW-UCLA
You can change the configuration in the yaml file and in the main function. We also provide four default yaml configuration files.
Run python main.py --device 0 --config ./config/shrec17/shrec17.yaml
Run python main.py --device 0 --config ./config/dhg14-28/DHG14-28.yaml
On the benchmark of cross-view, run python main.py --device 0 --config ./config/nturgbd-cross-view/default.yaml
On the benchmark of cross-subject, run python main.py --device 0 --config ./config/nturgbd-cross-subject/default.yaml
Run python main.py --device 0 --config ./config/ucla/nw-ucla.yaml
We provide several trained weight files and place them in the checkpoints folder.
python main.py --device 0 --config <config.yaml> --phase test --weights <work_dir>/<weight.pt>
1. Set Rate
2. Run:
python gesture_ensemble.py \
--joint_Score <joint_path> \
--bone_Score <bone_path> \
--jointmotion_Score <jointmotion_path> \
--val_sample <val_path> \
--benchmark <benchmark>
# Example for Shrec_28
1. Download .pkl file from: https://drive.google.com/drive/folders/1ux87mUirBQjmA4b4fEWtb9tuj-8wSYHt
2. Set Rate [0.5, 0.5, 0.5] or [0.5, 0.3, 0.2]
3. Run:
python gesture_ensemble.py \
--joint_Score ./joint.pkl \
--bone_Score ./bone.pkl \
--jointmotion_Score ./jointmotion.pkl \
--val_sample ./shrec17_28.txt \
--benchmark Shrec_28
@ARTICLE{10113233,
author={Liu, Jinfu and Wang, Xinshun and Wang, Can and Gao, Yuan and Liu, Mengyuan},
journal={IEEE Transactions on Multimedia},
title={Temporal Decoupling Graph Convolutional Network for Skeleton-based Gesture Recognition},
year={2024}
}
Our project is based on the DSTA-Net, CTR-GCN.
For any questions, feel free to contact: [email protected]