deep-person-reid
This repo contains pytorch implementations of deep person re-identification approaches.
We will actively maintain this repo.
Install
cd
to the folder where you want to download this repo.- run
git clone https://github.com/KaiyangZhou/deep-person-reid
.
Prepare data
Create a directory to store reid datasets under this repo via
cd deep-person-reid
mkdir data/
Market1501 [7]:
- download dataset to
data/
from http://www.liangzheng.org/Project/project_reid.html. - extract dataset and rename to
market1501
.
MARS [8]:
- create a directory named
mars/
underdata/
. - download dataset to
data/mars/
from http://www.liangzheng.com.cn/Project/project_mars.html. - extract
bbox_train.zip
andbbox_test.zip
. - download split information from https://github.com/liangzheng06/MARS-evaluation/tree/master/info and put
info/
indata/mars
. (we want to follow the standard split in [8])
Models
models/ResNet.py
: ResNet50 [1], ResNet50M [2].models/DenseNet.py
: DenseNet121 [3].
Train
Training codes are implemented in
train_img_model_xent.py
: train image model with cross entropy loss.train_img_model_xent_htri.py
: train image model with combination of cross entropy loss and hard triplet loss.train_vid_model_xent.py
: train video model with cross entropy loss.train_vid_model_xent_htri.py
: train video model with combination of cross entropy loss and hard triplet loss.
For example, to train an image reid model using ResNet50 and cross entropy loss, run
python train_img_model_xent.py -d market1501 -a resnet50 --max-epoch 60 --train-batch 32 --test-batch 32 --stepsize 20 --eval-step 20 --save-dir /log/resnet50 --gpu-devices 0
Test
Results
Setup
- Image size: 256-by-128
- Batch: 32
- Optimizer: Adam [6]
- Loss functions:
xent: cross entropy + label smoothing regularizer [5]
htri: triplet loss with hard positive/negative mining [4]
Image person reid
Market1501
Model | Size (M) | Loss | Rank-1 / -5 / -10 (%) | mAP (%) | Reported Rank | Reported mAP |
---|---|---|---|---|---|---|
ResNet50 [1] | 25.05 | xent | 85.8 / 94.4 / 96.3 | 70.1 | ||
ResNet50M [2] | 30.01 | xent | 88.8 / 95.3 / 97.0 | 74.4 | 89.9 / - / - | 75.6 |
DenseNet121 [3] | 7.72 | xent |
Video person reid
MARS
Pretrained models
You can use wget
to download the following models.
Model | Loss | Dataset | Download |
---|---|---|---|
ResNet50 | xent | Market1501 | |
ResNet50M | xent | Market1501 | |
DenseNet121 | xent | Market1501 |
References
[1] He et al. Deep Residual Learning for Image Recognition. CVPR 2016.
[2] Yu et al. The Devil is in the Middle: Exploiting Mid-level Representations for Cross-Domain Instance Matching. arXiv:1711.08106.
[3] Huang et al. Densely Connected Convolutional Networks. CVPR 2017.
[4] Hermans et al. In Defense of the Triplet Loss for Person Re-Identification. arXiv:1703.07737.
[5] Szegedy et al. Rethinking the Inception Architecture for Computer Vision. CVPR 2016.
[6] Kingma and Ba. Adam: A Method for Stochastic Optimization. ICLR 2015.
[7] Zheng et al. Scalable Person Re-identification: A Benchmark. ICCV 2015.
[8] Zheng et al. MARS: A Video Benchmark for Large-Scale Person Re-identification. ECCV 2016.