38

GitHub - megvii-model/DetNAS

 4 years ago
source link: https://github.com/megvii-model/DetNAS
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md

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 acc AP (minival) GoogleDrive DetNAS-COCO-FPN-300M 26.2 36.6 ImageNetCOCO DetNAS-COCO-FPN-1.3G 22.8 40.3 ImageNetCOCO DetNAS-COCO-FPN-3.8G 21.6 42.0 ImageNetCOCO DetNAS-COCO-RetinaNet-300M 26.0 34.1 ImageNetCOCO

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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK