DetNAS

April 16, 2020 · View on GitHub

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.

introduce image

Installation

  • Modify the path to your coco dataset in config.sh.
  • bash config.sh

Trained Models

ModelImageNet errAP (minival)GoogleDrive
DetNAS-COCO-FPN-300M26.236.6ImageNetCOCO
DetNAS-COCO-FPN-1.3G22.840.3ImageNetCOCO
DetNAS-COCO-FPN-3.8G21.642.0ImageNetCOCO
DetNAS-COCO-RetinaNet-300M26.034.1ImageNetCOCO

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.)
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 '.*' '.*' '.*'
  • tmux new -s search
  • modify host and log_dir in the config file distributed_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 and MODEL.WEIGHT in the script file distributed_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.)

search_process

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},
}