Awesome
PAST
Self-Training With Progressive Augmentation for Unsupervised Cross-Domain Person Re-identification (Accepted by ICCV19)
This code is ONLY released for academic use.
Pipeline
<div align=center> <img src='imgs/pipline.png' width='800'> </div>Installation
- Python 3.6.5
- Pytorch 0.4.1
- Torchvision 0.2.1
- Please refer to
requirements.txt
for the other packages with the corresponding versions.
Preparation
-
Run
git clone https://github.com/zhangxinyu-xyz/PAST-ReID.git
-
Prepare dataset
a. Download datasets: Market-1501, DukeMTMC-reID, CUHK03
b. Move them to
$PAST/data/
c. Insure the data folder like the following structure (otherwise you should modify the data path in
~/reid/datasets/[DATANAME].py
):
$PAST/data
Market-1501-v15.09.15
bounding_box_train
bounding_box_test
query
DukeMTMC-reID
bounding_box_train
bounding_box_test
query
cuhk03-np
detected
bounding_box_train
bounding_box_test
query
-
Prepare initial files
a. Download initial model: source-M.pth.tar (trained on Market-1501), source-D.pth.tar (trained on DukeMTMC-reID). Move them to
$PAST/initialization/pretrained_model/
b. Download initial feature: D-M_M-t-feature.mat (directly transfer from DukeMTMC-reID to Market-1501), M-D_D-t-feature.mat (directly transfer from Market-1501 to DukeMTMC-reID). Move them to
$PAST/initialization/initial_feature/
c. Download initial distmat: D-M_M-t-rerank-distmat.mat (directly transfer from DukeMTMC-reID to Market-1501, after re-rank), M-D_D-t-rerank-distmat.mat (directly transfer from Market-1501 to DukeMTMC-reID, after re-rank). Move them to
$PAST/initialization/initial_distmat/
d. If you just want to test our method, you can download our model: D-M_best-model.pth.tar (transfer from DukeMTMC-reID to Market-1501), M-D_best-model.pth.tar (transfer from Market-1501 to DukeMTMC-reID). Move them to
$PAST/best_model/
Train
You can directly run train_*.sh
file for the transferring training process.
sh train_D2M.sh ### from Duke to Market1501
sh train_M2D.sh ### from Market1501 to Duke
You can also modify the s_name
and name
with the corresponding initial files to run other transferring processes.
With Pytorch 0.4.1, we shall get about 78.0%/54.0% rank-1/mAP on Market-1501 (from DukeMTMC-reID to Market-1501) and 72.0%/54.0% rank-1/mAP on DukeMTMC-reID (from Market-1501 to DukeMTMC-reID).
Note that we use 2 GPUs.
Test
You can simply run test_*.sh
file for the transferring testing process.
sh test_D2M.sh ### from Duke to Market1501
sh test_M2D.sh ### from Market1501 to Duke
We shall get about 78.38%/54.62% rank-1/mAP on Market-1501 (from DukeMTMC-reID to Market-1501) and 72.35%/54.26% rank-1/mAP on DukeMTMC-reID (from Market-1501 to DukeMTMC-reID).
Results (rank1/mAP)
Model | M-->D | D-->M | C-->M | C-->D |
---|---|---|---|---|
PCB (Direct Transfer) | 42.73(25.70) | 57.57(29.01) | 51.43(27.28) | 29.40(16.72) |
PCB-R (+Re-rank) | 49.69(39.38) | 59.74(41.93) | 55.91(38.95) | 35.19(26.89) |
PCB-R-CTL+RTL (+Conservative Stage) | 71.63(52.05) | 74.26(50.59) | 77.70(54.36) | 65.71(46.58) |
PCB-R-PAST (+Promoting Stage) | 72.35(54.26) | 78.38(54.62) | 79.48(57.34) | 69.88(51.79) |
References
[1] Our code is conducted based on PCB_RPP_for_reID.
[2] Beyond Part Models: Person Retrievalwith Refined Part Pooling(and A Strong Convolutional Baseline), ECCV2018
[3] Self-training With progressive augmentation for unsupervised cross-domain person re-identification, ICCV2019
Citation
If you find this code useful in your research, please kindly consider citing our paper:
@inproceedings{zhang2019self,
title={Self-training with progressive augmentation for unsupervised cross-domain person re-identification},
author={Zhang, Xinyu and Cao, Jiewei and Shen, Chunhua and You, Mingyu},
booktitle={Proceedings of the IEEE International Conference on Computer Vision},
pages={8222--8231},
year={2019}
}
Contact
If you have any questions, please do not hesitate to contact us.