Skip to content

adhirajghosh/RPTM_reid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Relation Preserving Triplet Mining for Stabilising the Triplet Loss in Re-identification Sytems

WACV 2023

Adhiraj Ghosh1,2, Kuruparan Shanmugalingam1,3, Wen-Yan Lin1

1Singapore Management University 2University of Tübingen 3University of New South Wales

PWC PWC

PyTorch

[Paper] [Video]

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.

Network Architecture

Architecture

Preparation

Installation

  1. Install CUDA compatible torch. Modify based on CUDA version.
conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia
  1. Install other dependencies.
pip install -r requirements.txt
  1. 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

  1. 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.

  1. 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'
  1. 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

  1. VeRi776: 88.0%
  2. VehicleID (query size 800): 84.8%
  3. VehicleID (query size 1600): 81.2%
  4. VehicleID (query size 2400): 80.5%
  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