_/ _/ _/_/_/_/ _/_/ _/_/_/
_/ _/ _/ _/ _/ _/ _/
_/_/_/_/ _/_/_/ _/_/_/_/ _/ _/
_/ _/ _/ _/ _/ _/ _/
_/ _/ _/_/_/_/ _/ _/ _/_/_/
This repository is the official implementation of "HEtero-Assists Distillation for Heterogeneous Object Detectors".
Download the MS-COCO dataset to data/coco
.
Download MMDetection
pretrained models to pretrained/mmdetection
mkdir -p pretrained/mmdetection
wget -P pretrained/mmdetection https://download.openmmlab.com/mmdetection/v2.0/faster_rcnn/faster_rcnn_r50_fpn_mstrain_3x_coco/faster_rcnn_r50_fpn_mstrain_3x_coco_20210524_110822-e10bd31c.pth
wget -P pretrained/mmdetection https://download.openmmlab.com/mmdetection/v2.0/third_party/mobilenet_v2_batch256_imagenet-ff34753d.pth
wget -P pretrained/mmdetection https://download.openmmlab.com/mmdetection/v2.0/retinanet/retinanet_r50_fpn_mstrain_3x_coco/retinanet_r50_fpn_mstrain_3x_coco_20210718_220633-88476508.pth
Download torchvision
pretrained models to pretrained/torchvision
mkdir -p ~/.cache/torch/hub/checkpoints
ln -s ~/.cache/torch/hub/checkpoints pretrained/torchvision
wget -P pretrained/torchvision https://download.pytorch.org/models/resnet18-f37072fd.pth
wget -P pretrained/torchvision https://download.pytorch.org/models/resnet50-0676ba61.pth
The directory tree should be like this
HEAD
├── data
│ └── coco -> ~/Developer/datasets/coco
│ ├── annotations
│ │ ├── instances_train2017.json
│ │ └── instances_val2017.json
│ ├── train2017
│ │ └── ...
│ └── val2017
│ └── ...
├── pretrained
│ ├── mmdetection
│ │ ├── faster_rcnn_r50_fpn_mstrain_3x_coco_20210524_110822-e10bd31c.pth
│ │ ├── mobilenet_v2_batch256_imagenet-ff34753d.pth
│ │ └── retinanet_r50_fpn_mstrain_3x_coco_20210718_220633-88476508.pth
│ └── torchvision -> ~/.cache/torch/hub/checkpoints
│ ├── resnet18-f37072fd.pth
│ └── resnet50-0676ba61.pth
└── ...
Create a conda environment and activate it.
conda create -n HEAD python=3.8
conda activate HEAD
Install MMDetection
following the official instructions.
For example,
pip install torch==1.9.1+cu102 torchvision==0.10.1+cu102 -f https://download.pytorch.org/whl/torch_stable.html
pip install -U openmim
mim install mmcv_full==1.4.6
pip install mmdet==2.20
Install todd
.
pip install todd_ai==0.2.3a9 -i https://pypi.org/simple
Note that the
requirements.txt
is not intended for users. Please follow the above instructions.
python tools/train.py configs/head/head_retina_faster_r18_fpn_mstrain_1x_coco.py --work-dir work_dirs/debug --seed 3407
For distributed training
bash tools/dist_train.sh configs/head/head_retina_faster_r18_fpn_mstrain_1x_coco.py 8 --work-dir work_dirs/debug --seed 3407
All logs and checkpoints can be found in the Google Drive.
Method | Student | Teacher | mAP | Config | Comment |
---|---|---|---|---|---|
FitNet | R18 RetinaNet | R50 RetinaNet | fitnet_retina | with weight transfer |
Teachers and students are all trained with multi-scale, for 3x and 1x schedulers respectively.
Student | Teacher | Assist | AKD | CKD | mAP | Config |
---|---|---|---|---|---|---|
R18 RetinaNet | refer to mmdetection | |||||
R18 RetinaNet | R50 Faster R-CNN | retina_faster_r18 | ||||
R18 RetinaNet | R50 Faster R-CNN | HEAD_dag_retina_faster_r18 | ||||
R18 RetinaNet | R50 Faster R-CNN | HEAD_retina_faster_r18 | ||||
MNv2 RetinaNet | retinanet_mnv2 | |||||
MNv2 RetinaNet | R50 Faster R-CNN | retina_faster_mnv2 | ||||
MNv2 RetinaNet | R50 Faster R-CNN | HEAD_dag_retina_faster_mnv2 | ||||
MNv2 RetinaNet | R50 Faster R-CNN | HEAD_retina_faster_mnv2 |
Coming soon...
pip install https://download.pytorch.org/whl/cpu/torch-1.9.1-cp38-none-macosx_11_0_arm64.whl
pip install https://download.pytorch.org/whl/cpu/torchvision-0.10.0-cp38-cp38-macosx_11_0_arm64.whl
pip install -e ./../mmcv
pip install mmdet==2.20
pip install commitizen
pip install -U pre-commit
pre-commit install
pre-commit install -t commit-msg
- complete distributed train/test guide
- more configs
- etc.