vincentleooo / OpenGait

A flexible and extensible framework for gait recognition. You can focus on designing your own models and comparing with state-of-the-arts easily with the help of OpenGait.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

logo

nmbgcl

OpenGait is a flexible and extensible gait recognition project provided by the Shiqi Yu Group and supported in part by WATRIX.AI.

What's New

  • [Mar 2022] More results on GREW are supported, and the model files are coming soon.
  • [Mar 2022] Dataset GREW is supported in datasets/GREW.
  • [Mar 2022] HID support is ready in datasets/HID.

Highlighted features

  • Mutiple Dataset supported: OpenGait supports four popular gait datasets: CASIA-B, OUMVLP, HID, and GREW.
  • 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: We use tensorboard and logging to log everything, which looks pretty.

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

GREW

Model Rank@1 Configuration Input Size Inference Time Model Size
Baseline 48.5 baseline.yaml 64x44 2m23s 84.12M
GaitSet(AAAI2019) 48.4 gaitset.yaml 64x44 - -
GaitPart(CVPR2020) 47.6 gaitpart.yaml 64x44 - -
GaitGL(ICCV2021) 41.5 gaitgl.yaml 64x44 - -
GaitGL(BNNeck)(ICCV2021) 51.7 gaitgl.yaml 64x44 - -
RealGait(Arxiv now) (54.1) - - - -

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

  1. clone this repo.

    git clone https://github.com/ShiqiYu/OpenGait.git
    
  2. Install dependenices:

    • pytorch >= 1.6
    • torchvision
    • pyyaml
    • tensorboard
    • opencv-python
    • tqdm
    • py7zr

    Install dependenices by Anaconda:

    conda install tqdm pyyaml tensorboard opencv py7zr
    conda install pytorch==1.6.0 torchvision -c pytorch
    

    Or, Install dependenices by pip:

    pip install tqdm pyyaml tensorboard opencv-python py7zr
    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 opengait/main.py --cfgs ./config/baseline/baseline.yaml --phase train
  • python -m torch.distributed.launch DDP launch instruction.
  • --nproc_per_node The number of gpus to use, and it must equal the length of CUDA_VISIBLE_DEVICES.
  • --cfgs The path to config file.
  • --phase Specified as train.
  • --log_to_file If 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 opengait/main.py --cfgs ./config/baseline/baseline.yaml --phase test
  • --phase Specified as test.
  • --iter Specify a iteration checkpoint.

Tip: Other arguments are the same as train phase.

You can run commands in test.sh for testing different models.

Customize

  1. Read the detailed config to figure out the usage of needed setting items;
  2. See how to create your model;
  3. There are some advanced usages, refer to advanced usages, please.

Warning

  • In DDP mode, zombie processes may be generated when the program terminates abnormally. You can use this command sh misc/clean_process.sh to clear them.

Authors:

Open Gait Team (OGT)

Acknowledgement

Note: This code is only used for academic purposes, people cannot use this code for anything that might be considered commercial use.

About

A flexible and extensible framework for gait recognition. You can focus on designing your own models and comparing with state-of-the-arts easily with the help of OpenGait.


Languages

Language:Python 97.1%Language:Shell 2.9%