OpenGait is a flexible and extensible gait recognition project provided by the Shiqi Yu Group and supported in part by WATRIX.AI.
We use tensorboard and logging to log everything, which looks pretty.
What's New
Highlighted features
- Multiple Models Support: We reproduced several SOTA methods, and reached the same or even the better performance.
- DDP Support: The officially recommended
Distributed Data Parallel (DDP)mode is used during both the training and testing phases. - AMP Support: The
Auto Mixed Precision (AMP)option is available. - Nice log:
Model Zoo
CASIA-B
| Model | NM | BG | CL | Configuration | Input Size | Inference Time | Model Size |
|---|---|---|---|---|---|---|---|
| Baseline | 96.3 | 92.2 | 77.6 | baseline.yaml | 64x44 | 12s | 3.78M |
| GaitSet(AAAI2019) | 95.8(95.0) | 90.0(87.2) | 75.4(70.4) | gaitset.yaml | 64x44 | 13s | 2.59M |
| GaitPart(CVPR2020) | 96.1(96.2) | 90.7(91.5) | 78.7(78.7) | gaitpart.yaml | 64x44 | 56s | 1.20M |
| GLN*(ECCV2020) | 96.4(95.6) | 93.1(92.0) | 81.0(77.2) | gln_phase1.yaml, gln_phase2.yaml | 128x88 | 47s/46s | 8.54M / 14.70M |
| GaitGL(ICCV2021) | 97.4(97.4) | 94.5(94.5) | 83.8(83.6) | gaitgl.yaml | 64x44 | 38s | 3.10M |
OUMVLP
| Model | Rank@1 | Configuration | Input Size | Inference Time | Model Size |
|---|---|---|---|---|---|
| Baseline | 86.7 | baseline.yaml | 64x44 | 1m13s | 44.11M |
| GaitSet(AAAI2019) | 87.2(87.1) | gaitset.yaml | 64x44 | 1m26s | 6.31M |
| GaitPart(CVPR2020) | 88.6(88.7) | gaitpart.yaml | 64x44 | 8m04s | 3.78M |
| GaitGL(ICCV2021) | 89.9(89.7) | gaitgl.yaml | 64x44 | 5m23s | 95.62M |
The results in the parentheses are mentioned in the papers
Note:
- All results are Rank@1, excluding identical-view cases.
- The shown result of GLN is implemented without compact block.
- Only two RTX3090 are used for infering CASIA-B, and eight are used for infering OUMVLP.
Get Started
Installation
-
clone this repo.
git clone https://github.com/ShiqiYu/OpenGait.git -
Install dependenices:
- pytorch >= 1.6
- torchvision
- pyyaml
- tensorboard
- opencv-python
- tqdm
Install dependenices by Anaconda:
conda install tqdm pyyaml tensorboard opencv conda install pytorch==1.6.0 torchvision -c pytorchOr, Install dependenices by pip:
pip install tqdm pyyaml tensorboard opencv-python pip install torch==1.6.0 torchvision==0.7.0
Prepare dataset
See prepare dataset.
Get trained model
- Option 1:
python misc/download_pretrained_model.py - Option 2: Go to the release page, then download the model file and uncompress it to output.
Train
Train a model by
CUDA_VISIBLE_DEVICES=0,1 python -m torch.distributed.launch --nproc_per_node=2 lib/main.py --cfgs ./config/baseline.yaml --phase train
python -m torch.distributed.launchDDP launch instruction.--nproc_per_nodeThe number of gpus to use, and it must equal the length ofCUDA_VISIBLE_DEVICES.--cfgsThe path to config file.--phaseSpecified astrain.
--log_to_fileIf specified, the terminal log will be written on disk simultaneously.
You can run commands in train.sh for training different models.
Test
Evaluate the trained model by
CUDA_VISIBLE_DEVICES=0,1 python -m torch.distributed.launch --nproc_per_node=2 lib/main.py --cfgs ./config/baseline.yaml --phase test
--phaseSpecified astest.--iterSpecify a iteration checkpoint.
Tip: Other arguments are the same as train phase.
You can run commands in test.sh for testing different models.
Customize
- Read the detailed config to figure out the usage of needed setting items;
- See how to create your model;
- There are some advanced usages, refer to advanced usages, please.
Warning
- Some models may not be compatible with
AMP, you can disable it by settingenable_float16False. - In
DDPmode, zombie processes may be generated when the program terminates abnormally. You can use this command sh misc/clean_process.sh to clear them. - We implemented the functionality about testing while training, but it slightly affected the results. None of our published models use this functionality. You can disable it by setting
with_testFalse. - Recommended Pytorch version: 1.6-1.8
Authors:
Open Gait Team (OGT)
- Chao Fan (樊超), 12131100@mail.sustech.edu.cn
- Chuanfu Shen (沈川福), 11950016@mail.sustech.edu.cn
- Junhao Liang (梁峻豪), 12132342@mail.sustech.edu.cn
Acknowledgement
- GLN: Saihui Hou (侯赛辉)
- GaitGL: Beibei Lin (林贝贝)
Note: This code is only used for academic purposes, people cannot use this code for anything that might be considered commercial use.


