A strong baseline (state-of-the-art) for person re-identification.
We support
- easy dataset preparation
- end-to-end training and evaluation
- multi-GPU distributed training
- fast data loader with prefetcher
- fast training speed with fp16
- fast evaluation with cython
- support both image and video reid
- multi-dataset training
- cross-dataset evaluation
- high modular management
- state-of-the-art performance with simple model
- high efficient backbone
- advanced training techniques
- various loss functions
- tensorboard visualization
The designed architecture follows this guide PyTorch-Project-Template, you can check each folder's purpose by yourself.
-
cd
to folder where you want to download this repo -
Run
git clone https://github.com/L1aoXingyu/reid_baseline.git
-
Install dependencies:
- pytorch 1.0.0+
- torchvision
- tensorboard
- yacs
-
Prepare dataset
Create a directory to store reid datasets under this repo via
cd reid_baseline mkdir datasets
- Download dataset to
datasets/
from baidu pan or google driver - Extract dataset. The dataset structure would like:
datasets Market-1501-v15.09.15 bounding_box_test/ bounding_box_train/
- Download dataset to
-
Prepare pretrained model. If you use origin ResNet, you do not need to do anything. But if you want to use ResNet_ibn, you need to download pretrain model in here. And then you can put it in
~/.cache/torch/checkpoints
or anywhere you like.Then you should set this pretrain model path in
configs/softmax_triplet.yml
. -
compile with cython to accelerate evalution
cd csrc/eval_cylib; make
Most of the configuration files that we provide, you can run this command for training market1501
bash scripts/train_openset.sh
Or you can just run code below to modify your cfg parameters
CUDA_VISIBLE_DEVICES='0,1' python tools/train.py -cfg='configs/softmax_triplet.yml' DATASETS.NAMES '("dukemtmc","market1501",)' SOLVER.IMS_PER_BATCH '256'
You can test your model's performance directly by running this command
CUDA_VISIBLE_DEVICES='0' python tools/test.py -cfg='configs/softmax_triplet.yml' DATASET.TEST_NAMES 'dukemtmc' \
MODEL.BACKBONE 'resnet50' \
MODEL.WITH_IBN 'True' \
TEST.WEIGHT '/save/trained_model/path'
size=(256, 128) batch_size=64 (16 id x 4 imgs) | ||||
---|---|---|---|---|
softmax? | ✔︎ | ✔︎ | ✔︎ | ✔︎ |
label smooth? | ✔︎ | ✔︎ | ||
triplet? | ✔︎ | ✔︎ | ✔︎ | |
ibn? | ✔︎ | ✔︎ | ||
gcnet? | ✔︎ | |||
Market1501 | 93.4 (82.9) | 94.2 (86.1) | 95.4 (87.9) | 95.2 (88.7) |
DukeMTMC-reid | 84.7 (72.7) | 87.3 (76.0) | 89.5 (79.7) | 90.0 (80.2) |
CUHK03 |
🔥Any other tricks are welcomed!