• Stars
    star
    289
  • Rank 143,419 (Top 3 %)
  • Language
    Python
  • License
    MIT License
  • Created about 5 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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.

introduce image

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