Home

Awesome

Joint Generative and Contrastive Learning for Unsupervised Person Re-identification

This is the official PyTorch implementation of the CVPR 2021 paper Joint Generative and Contrastive Learning for Unsupervised Person Re-identification.

[Video] [Poster]

<p float="left"> <img src="figs/supp1.png" height="350" alt='missing'> <img src="figs/supp3.png" height="350" alt='missing'> </p>

Installation

Install GCL

Requirements

git clone https://github.com/chenhao2345/GCL
cd GCL
python setup.py develop

Prepare Datasets

cd examples && mkdir data

Download the raw datasets DukeMTMC-reID, Market-1501, MSMT17, and then unzip them under the directory like

GCL/examples/data
├── dukemtmc-reid
│   └── DukeMTMC-reID
├── market1501
└── msmt17
    └── MSMT17_V1(or MSMT17_V2)

Install HMR for Mesh Estimation

Download our extracted meshes from Google Drive. Unzip them under the directory like

GCL/examples/mesh
├── dukeMTMC
├── market
└── msmt17

Or refer to HMR ro get meshes for ReID datasets.

Train GCL

Only support 1 GPU (GPU memory > 20GB) training for the moment.

Stage 1: Warm up identity encoder

Train a ResNet50 with an unsupervised method, for example, JVTC(or download our trained models from Google Drive) and MLC.

GCL/examples/logs
└── JVTC
    └── market
        └── resnet50_market075_epoch00045.pth
    └── duke
        └── resnet50_duke075_epoch00040.pth

Stage 2: Warm up structure encoder and discriminator

Adjust path for dataset, mesh, pre-trained identity encoder.

sh train_stage2_market.sh

Stage 3: Joint training

sh train_stage3_market.sh

TensorBoard Visualization

Stage 2:

For example,

tensorboard --logdir logs/market_init_JVTC_unsupervised/

Stage 3:

For example,

tensorboard --logdir logs/market_init_JVTC_unsupervised/stage3/

Citation

@InProceedings{Chen_2021_CVPR,
    author    = {Chen, Hao and Wang, Yaohui and Lagadec, Benoit and Dantcheva, Antitza and Bremond, Francois},
    title     = {Joint Generative and Contrastive Learning for Unsupervised Person Re-Identification},
    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
    month     = {June},
    year      = {2021},
    pages     = {2004-2013}
}