Adhiraj Ghosh1,2, Kuruparan Shanmugalingam1,3, Wen-Yan Lin1
1Singapore Management University 2University of Tübingen 3University of New South Wales
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.
- 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.
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 ..
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.
- 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'.
python main.py --config_file configs/veri_r101.yml MODEL.RPTM_SELECT 'min'
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
- VeRi776: 88.0%
- VehicleID (query size 800): 84.8%
- VehicleID (query size 1600): 81.2%
- VehicleID (query size 2400): 80.5%
- DukeMTMC: 89.2%
GMS Feature Matching Algorithm taken from: https://github.com/JiawangBian/GMS-Feature-Matcher
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}
}
If you have any questions, please feel free to contact us. E-mail: Adhiraj Ghosh , Wen-Yan Lin