DetNAS
This project provides the implementation for DetNAS: Backbone Search for Object Detection. As we originally conducted the experiments in the paper using the internal framework Brain++, this project is a reimplemented version on PyTorch. In addition, this project is based on maskrcnn-benchmark.
Installation
- Modify the path to your coco dataset in config.sh.
bash config.sh
Trained Models
Model | ImageNet err | AP (minival) | GoogleDrive |
---|---|---|---|
DetNAS-COCO-FPN-300M | 26.2 | 36.6 | ImageNet COCO |
DetNAS-COCO-FPN-1.3G | 22.8 | 40.3 | ImageNet COCO |
DetNAS-COCO-FPN-3.8G | 21.6 | 42.0 | ImageNet COCO |
DetNAS-COCO-RetinaNet-300M | 26.0 | 34.1 | ImageNet COCO |
The training scripts of these model are in the dirctory scripts/
. For training,
- Download the ImageNet model to the directory
ImageNet-Pretrain-models/
. bash scripts/run_detnas_coco_fpn_300M.sh
Search for networks
Step 1: setup Dataset
- We have splitted 5000 images from
coco_2014_train
+coco_2014_valminusminival
as the validation set for search. The remainings are used for supernet training. - Download the splitted train and val json files (GoogleDrive) to
datasets/coco/annotations
. - (You can replace them with your own datasets.)
Step 2: Supernet training
ImageNet pre-training
- Download the ImageNet supernet model (GoogleDrive) to the directory
ImageNet-Pretrain-models/
. - If necessary, you can also train models ImageNet by yourselves. Please refer to the folder
Supernet-ImageNet/
.
COCO training
bash scripts/run_detnas_coco_fpn_300M_search.sh
- ('-search' in cfg.MODEL.BACKBONE.CONV_BODY is to distinguish supernet training from single model.)
Step 3: setup a server for the distributed search
tmux new -s mq_server
sudo apt update
sudo apt install rabbitmq-server
sudo service rabbitmq-server start
sudo rabbitmqctl add_user test test
sudo rabbitmqctl set_permissions -p / test '.*' '.*' '.*'
Step 4: start a new tmux for search
tmux new -s search
- modify
host
andlog_dir
in the config filedistributed_arch_search/arch_search_config.py
. bash distributed_arch_search/run_search.sh
- (
run_search.sh
requires no GPUs.)
Step 5: start new tmuxs for model evaluation (concurrent with Step 4)
tmux new -s server_x
- modify
config-file
andMODEL.WEIGHT
in the script filedistributed_arch_search/run_server.sh
. bash distributed_arch_search/run_server.sh
- (You can start more than one
run_server.sh
to speed up, if you have enough GPUs and memory researces.)
Citation
Please cite DetNAS in your publications if it helps your research.
@misc{chen2019detnas,
title={DetNAS: Backbone Search for Object Detection},
author={Yukang Chen, Tong Yang, Xiangyu Zhang, Gaofeng Meng, Xinyu Xiao, Jian Sun},
year={2019},
booktitle = {NeurIPS},
}