Unsupervised Person Re-identification via Multi-Label Prediction and Classification based on Graph-Structural Insight
This paper addresses unsupervised person re-identification (Re-ID) using multi-label prediction and classification based on graph-structural insight. Our method extracts features from person images and produces a graph that consists of the features and a pairwise similarity of them as nodes and edges, respectively. Based on the graph, the proposed graph structure based multi-label prediction (GSMLP) method predicts multi-labels by considering the pairwise similarity and the adjacency node distribution of each node. The multi-labels created by GSMLP are applied to the proposed selective multi-label classification (SMLC) loss. SMLC integrates a hard-sample mining scheme and a multi-label classification. The proposed GSMLP and SMLC boost the performance of unsupervised person Re-ID without any pre-labelled dataset. Experimental results justify the superiority of the proposed method in unsupervised person Re-ID by producing state-of-the-art performance.
This project mainly complied with Python3.6, Pytorch 1.3. All details are included in the 'requirement.txt'
#Setting the environment
pip install -r requirements.txt
├── data #Extract dataset to this directory.
├── experiments
├── lib
├── logs
├── models
│ └── imagenet #Extract backbone network checkpoint here
├── output # Extract the checkpoints to reproduct the results.
├── run_scripts
└── tools
Refer ECN to prepare DukeMTMC-ReID dataset, Market-1501 dataset,and MSMT17 dataset. Extract dataset files to './data'.
You can download the backbone network model from here. Save the weight file on './models/imagenet'
#Train
python tools/train.py --experiments ./experiments/***.yml --gpus 0,1
#Test
python tools/test.py --experiments ./experiments/***.yml --gpus 0,1
You can use script files on './run_scripts' direcory.
You can download the checkpoint files to reproduct the experiment results from here. After download it. Extract the file under the './outputs'.
#For Duke
python ./tools/test.py --experiments/duke_eval.yml --gpus 0,1
#For Market-1501
python ./tools/test.py --experiments/market_eval.yml --gpus 0,1
#For MSMT17
python ./tools/test.py --experiments/msmt17_eval.yml --gpus 0,1
The look-up table for GSMLP has been implemented based on GPU, so it has been being easily occurred that a segment fault by the out of VGA memory. We will fix this issue by adding a look-up table module based on DRAM in a future.