• Stars
    star
    110
  • Rank 314,910 (Top 7 %)
  • Language
    Python
  • License
    MIT License
  • Created over 4 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The 2nd place submission for AICity Challenge 2020 ReID track, VOC-ReID: Vehicle Re-identification based on Vehicle-Orientation-Camera

VOC-ReID: Vehicle Re-identification based on Vehicle-Orientation-Camera

This repo includes the 2nd place solution for AICity2020 Challenge ReID track. Our paper

Update

  • In ECCV VisDA 2020 Person ReID challenge, all the top3 teams adopt camera bias post-process. It brings 5%-10% increment in challenge.

Introduction

Our work aims to eliminate the bias posed by similar background and shape

This project is mainly based on reid-strong-baseline and deep-person-reid

TODO

  • FP16 training (30% faster with no precision drop)
  • circle loss (borrowed from fast-reid)
  • more metric learning methods (GeM, arcface, batch_soft)
  • more backbones (OSNet, ResNest, RegNet)
  • Experiments on Person-ReID

requirement

  1. pytorch>=1.2.0
  2. yacs
  3. apex (optional for FP16 training, if you don't have apex installed, please turn-off FP16 training by setting SOLVER.FP16=False)
$ git clone https://github.com/NVIDIA/apex
$ cd apex
$ pip install -v --no-cache-dir --global-option="--cpp_ext" --global-option="--cuda_ext" ./
  1. python>=3.7
  2. cv2

Reproduce the result on AICity 2020 Challenge

Please see AICity2020.md for details.

Train

We use ResNet-ibn as backbone which proves to be quite robust on Person ReID. Download ImageNet pretrain model at here

  • Vehicle ReID.
bash ./scripts/aicity20/train.sh
  • Orientation ReID Train orientation ReID model
bash ./scripts/aicity20/ReOriID.sh
  • Camera ReID Train camera ReID model
bash ./scripts/aicity20/ReCamID.sh

you can either download our trained models

Test

  • generate orientation and camera similarity matrix
# ReCamID
python tools/test.py --config_file='configs/aicity20.yml' \
MODEL.DEVICE_ID "('1')" \
MODEL.NAME "('resnet50_ibn_a')" \
MODEL.MODEL_TYPE "baseline" \
DATASETS.TRAIN "('aicity20',)" \
DATASETS.TEST "('aicity20',)" \
DATASETS.ROOT_DIR "('/home/zxy/data/ReID/vehicle')" \
MODEL.PRETRAIN_CHOICE "('self')" \
TEST.WRITE_RESULT True \
TEST.WEIGHT "('./output/aicity20/0409-ensemble/ReCamID/best.pth')"

python ./tools/aicity20/compute_distmat_from_feats.py --src_dir ./output/aicity20/0409-ensemble/ReCamID/

# ReOriID
python tools/test.py --config_file='configs/aicity20.yml' \
MODEL.DEVICE_ID "('2')" \
MODEL.NAME "('resnet50_ibn_a')" \
MODEL.MODEL_TYPE "baseline" \
DATASETS.TRAIN "('aicity20',)" \
DATASETS.TEST "('aicity20',)" \
DATASETS.ROOT_DIR "('/home/zxy/data/ReID/vehicle')" \
MODEL.PRETRAIN_CHOICE "('self')" \
TEST.WRITE_RESULT True \
TEST.WEIGHT "('./output/aicity20/0409-ensemble/ReOriID/best.pth')"

python ./tools/aicity20/compute_distmat_from_feats.py --src_dir ./output/aicity20/0409-ensemble/ReOriID/
  • Vehicle ReID based on orientation and camera
python tools/aicity20/submit.py --config_file='configs/aicity20.yml' \
MODEL.DEVICE_ID "('1')" \
MODEL.NAME "('resnet50_ibn_a')" \
MODEL.MODEL_TYPE "baseline" \
DATASETS.TRAIN "('aicity20',)" \
DATASETS.TEST "('aicity20',)" \
DATASETS.ROOT_DIR "('/home/zxy/data/ReID/vehicle')" \
MODEL.PRETRAIN_CHOICE "('self')" \
INPUT.SIZE_TRAIN '([320, 320])' \
INPUT.SIZE_TEST '([320, 320])' \
TEST.DO_RERANK True \
TEST.RERANK_PARAM "([50, 15, 0.5])" \
TEST.FLIP_TEST True \
TEST.WRITE_RESULT True \
TEST.USE_VOC True \
TEST.CAM_DIST_PATH './output/aicity20/0409-ensemble/ReCamID/feat_distmat.npy' \
TEST.ORI_DIST_PATH './output/aicity20/0409-ensemble/ReOriID/feat_distmat.npy' \
TEST.WEIGHT "('./output/aicity20/0409-ensemble/r50-320-circle/best.pth')"

Performance

Ablation study on AICity 2020 validation dataset

method mAP Rank1 comment
BagOfTricks 21.6% 42.1% reid-strong-baseline
+Arcface 26.2% 46.7% Arcface loss
+Circle 29.7% 50.8% circle loss
+Syn 39.5% 64.0% Syn denotes Synthetic dataset VehicleX
+WeaklyAug 44.4% 65.3% WeaklyAug denotes weakly supervised crop augmentation
+Orientation 47.0% 70.5% penalized by Orientation ReID
+Camera 50.8% 75.5% penalized by Camera ReID

AICITY2020 Challange Track2 Leaderboard

TeamName mAP Link
Baidu-UTS 84.1% code
RuiYanAI(ours) 78.1%
DMT 73.1% code

Results on VeRi

method mAP Rank1 comment
resnet50 - - P=4,K=16,Size=[256, 256]
ResNet50_ibn_a 81.6% 96.8% P=4,K=16,Size=[320, 320], log
+Orientation 82.8% 97.6% distmat - 0.1 * ori_distmat, log
+Camera - -

Failure cases that rectified by Orientation and Camera information

Citation

If you find our work helpful, please cite it

@inproceedings{
 title={VOC-ReID: Vehicle Re-identification based on Vehicle-Orientation-Camera},
 author={Zhu, Xiangyu and Luo, Zhenbo and Fu, Pei and Ji, Xiang},
 booktitle={Proc. CVPR Workshops},
 year={2020}
}