Awesome
<div align='center'> <h2 align="center"> Relation Preserving Triplet Mining for Stabilising the Triplet Loss in Re-identification Sytems </h2> <h3 align="center">WACV 2023</h3><a href="https://adhirajghosh.github.io/">Adhiraj Ghosh</a><sup>1,2</sup>, <a href="https://kuruparan.github.io/">Kuruparan Shanmugalingam</a><sup>1,3</sup>, <a href="https://www.kind-of-works.com/">Wen-Yan Lin</a><sup>1</sup>
<sup>1</sup>Singapore Management University <sup>2</sup>University of Tübingen <sup>3</sup>University of New South Wales
<a href="https://pytorch.org/get-started/locally/"><img alt="PyTorch" src="https://img.shields.io/badge/PyTorch-ee4c2c?logo=pytorch&logoColor=white"></a>
The official repository for Relation Preserving Triplet Mining for Stabilising the Triplet Loss in Re-identification Sytems. Our work achieves state-of-the-art results and provides a faster optimised and more generalisable model for re-identification.
</div>Network Architecture
Preparation
Installation
- Install CUDA compatible torch. Modify based on CUDA version.
conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia
- Install other dependencies.
pip install -r requirements.txt
- Install apex (optional but recommended)
Follow the installation guidelines from https://github.com/NVIDIA/apex Then set SOLVER.USE_AMP as True in the config files directly or via command line.
Prepare Datasets
mkdir data
Download the vehicle reID datasets VehicleID and VeRi-776, and the person reID datasets DukeMTMC-reID. Follow the structure and naming convention as below.
data
├── duke
│ └── images ..
├── vehicleid
│ └── images ..
└── veri
└── images ..
Prepare GMS Feature Matches
mkdir gms
You need to download the GMS feature matches for VeRi, VehicleID and DukeMTMC: GMS.
The folder should follow the structure as shown below:
gms
├── duke
│ └── 0001.pkl ..
├── vehicleid
│ └── 00001.pkl ..
└── veri
└── 001.pkl ..
You can also create your own GMS matches for VeRi-776, VeRi-Wild and VehicleID by running the following script: utils/create_gms_index.py
. You can edit which Dataset to build GMS matches for by editing the initial parameters inside the script.
Running RPTM
- Training
python main.py --config_file configs/veri_r101.yml
The above command trains a baseline using our RPTM algorithm for VeRi. Note that after training, the model provides evaluation results, both qualitative as well as quantitative.
- RPTM Thresholding Strategies
In Section 4.2 of our paper, we defined a thresholding strategy for better anchor-positive selections. We define this in config files as MODEL.RPTM_SELECT. While it is set to 'mean', feel free to work with 'min' and 'max'.
Min Thresholding
python main.py --config_file configs/veri_r101.yml MODEL.RPTM_SELECT 'min'
Max Thresholding
python main.py --config_file configs/veri_r101.yml MODEL.RPTM_SELECT 'max'
- Testing
mkdir logs
python main.py --config_file configs/veri_r101.yml TEST.WEIGHT '<path to trained model>' TEST.EVAL True
Mean Average Precision(mAP) Results
- VeRi776: 88.0%
- VehicleID (query size 800): 84.8%
- VehicleID (query size 1600): 81.2%
- VehicleID (query size 2400): 80.5%
- DukeMTMC: 89.2%
Acknowledgement
GMS Feature Matching Algorithm taken from: https://github.com/JiawangBian/GMS-Feature-Matcher
Citation
If you find this code useful for your research, please cite our paper
@InProceedings{Ghosh_2023_WACV,
author = {Ghosh, Adhiraj and Shanmugalingam, Kuruparan and Lin, Wen-Yan},
title = {Relation Preserving Triplet Mining for Stabilising the Triplet Loss In re-Identification Systems},
booktitle = {Proceedings of the IEEE/CVF Winter Conference on Applications of Computer Vision (WACV)},
month = {January},
year = {2023},
pages = {4840-4849}
}
Contact
If you have any questions, please feel free to contact us. E-mail: Adhiraj Ghosh , Wen-Yan Lin