DetNAS
DetNAS copied to clipboard
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_valminusminivalas 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
hostandlog_dirin the config filedistributed_arch_search/arch_search_config.py. bash distributed_arch_search/run_search.sh- (
run_search.shrequires no GPUs.)
Step 5: start new tmuxs for model evaluation (concurrent with Step 4)
tmux new -s server_x- modify
config-fileandMODEL.WEIGHTin the script filedistributed_arch_search/run_server.sh. bash distributed_arch_search/run_server.sh- (You can start more than one
run_server.shto 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},
}