This repo is implemented based on detectron2 and CenterNet
What's new
- Support imgaug data augmentation
- Support swa
- Support Knowledge Distill, teacher-student, designed by myself
- Support other LR_SCHEDULER
- Support Optimizer RangerLars, not convergence in COCO
- We provide some examples and scripts to convert centerX to Caffe, ONNX and TensorRT format in projects/speedup
What's comming
Requirements
- Python >= 3.7
- PyTorch >= 1.5
- torchvision that matches the PyTorch installation.
- OpenCV
- pycocotools
pip install cython; pip install 'git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI'
gcc --version
pip install -U 'git+https://github.com/CPFLAME/detectron2.git'
pip install git+https://github.com/pabloppp/pytorch-tools -U
Data prepare
the same as detectron2
Training
modify your yamls in run.sh
sh run.sh
Testing and Evaluation
modify your yamls in run.sh,
add eval-only and MODEL.WEIGHTS in your setting
sh run.sh
Performance
coco
This repo use less training time to get a competitive performance compared to other versions
Backbone ResNet-50
Code |
mAP |
epoch |
centerX |
33.2 |
70 |
centerX |
34.3 |
140 |
centernet-better |
34.9 |
140 |
Backbone ResNet-18
centerX_KD means ResNet-50(33.2) as teacher, ResNet-18(27.9) as student, Knowledge Distill for 70 epoch in coco.
Code |
mAP |
epoch |
centerX |
30.2 |
140 |
centerX |
27.9 |
70 |
centerX_KD |
31.0 |
70 |
centernet-better |
29.8 |
140 |
centernet |
28.1 |
140 |
crowd human
- optim: SGD
- lr: 0.02
- scheduler: WarmupMultiStepLR ,drop 0.1 in (50, 62) for 80 epoch; (90 ,120) for 140 epoch
- train size: 512 max size
- test size: 512 max size
- batch size: 64
- woGT: KD only use teacher loss
Backbone |
mAP |
mAP50 |
mAP75 |
epoch |
teacher |
student_pretrain |
resdcn18 |
31.2 |
56.6 |
30.8 |
80 |
- |
- |
resdcn18_swa |
31.1 |
56.6 |
30.4 |
80 |
- |
- |
resdcn18_syncBN |
31.3 |
56.6 |
30.7 |
80 |
- |
- |
resdcn18_imgaug |
29.6 |
54.7 |
28.9 |
80 |
- |
- |
resdcn18_KD |
34.5 |
60.2 |
34.3 |
80 |
resdcn50 |
resdcn18 |
resdcn18_KD_woGT |
33.0 |
58.3 |
32.7 |
80 |
resdcn50 |
resdcn18 |
resdcn18_KD_woGT_scratch |
32.8 |
58.1 |
32.6 |
140 |
resdcn50 |
imagenet |
resdcn50 |
35.1 |
61.2 |
35.3 |
80 |
- |
- |
KD exp
crowd human KD
Generalization performance for Knowledge Distill
Backbone |
crowd mAP |
coco_person mAP |
epoch |
teacher |
student_pretrain |
train_set |
resdcn50 |
35.1 |
35.7 |
80 |
- |
- |
crowd |
resdcn18(baseline) |
31.2 |
31.2 |
80 |
- |
- |
crowd |
resdcn18_KD |
34.5 |
34.9 |
80 |
resdcn50 |
resdcn18 |
crowd |
resdcn18_KD_woGT_scratch |
32.8 |
34.2 |
140 |
resdcn50 |
imagenet |
crowd |
resdcn18_KD_woGT_scratch |
34.1 |
36.3 |
140 |
resdcn50 |
imagenet |
crowd+coco |
multi teacher KD
Backbone |
mAP crowd |
mAP coco_car |
epoch |
teacher |
student_pretrain |
train_set |
1.resdcn50 |
35.1 |
- |
80 |
- |
- |
crowd |
2.resdcn18 |
31.7 |
- |
70 |
- |
- |
crowd |
3.resdcn50 |
- |
31.6 |
70 |
- |
- |
coco_car |
4.resdcn18 |
- |
27.8 |
70 |
- |
- |
coco_car |
resdcn18_KD_woGT_scratch |
31.6 |
29.4 |
140 |
1,3 |
imagenet |
crowd+coco_car |
Backbone |
mAP crowd_human |
mAP widerface |
epoch |
teacher |
student_pretrain |
train_set |
1.resdcn50 |
35.1 |
- |
80 |
- |
- |
crowd |
2.resdcn18 |
31.7 |
- |
70 |
- |
- |
crowd |
3.resdcn50 |
- |
32.9 |
70 |
- |
- |
widerface |
4.resdcn18 |
- |
29.6 |
70 |
- |
- |
widerface |
5.resdcn18_ignore_nolabel |
29.1 |
24.2 |
140 |
- |
- |
crowd+wider |
6.resdcn18_pseudo_label |
28.9 |
27.7 |
140 |
- |
- |
crowd+wider |
7.resdcn18_KD_woGT_scratch |
31.3 |
32.1 |
140 |
1,3 |
imagenet |
crowd+wider |
License
centerX is released under the Apache 2.0 license.
Acknowledgement