/PAST-ReID

Self-Training with Progressive Augmentation for Unsupervised Cross-Domain Person Re-identification

Primary LanguagePythonMIT LicenseMIT

PAST

Self-Training With Progressive Augmentation for Unsupervised Cross-Domain Person Re-identification (Accepted by ICCV19)

[PDF] [Project]

This code is ONLY released for academic use.

This version is ONLY containing testing process. The training code will be released later.

Pipeline

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

  1. Run git clone https://github.com/zhangxinyu-xyz/PAST-ReID.git

  2. 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 $PAST/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
  1. 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

Will be released later. Please wait.

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{zhang2018selftraining,
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 ={ICCV},
year={2019}
}

Contact

If you have any questions, please do not hesitate to contact us.

Chunhua Shen

Xinyu Zhang