lucifer443 / SpineNet-Pytorch

This project is a kind of implementation of SpineNet(CVPR 2020) using mmdetection.
Apache License 2.0
96 stars 11 forks source link
cvpr2020 detection mmdetection nas pytorch spinenet

SpineNet-Pytorch

SpineNet is a CVPR 2020 paper for object detection. This project is a kind of implementation of SpineNet using mmdetection.

It is based on the

Models

Variant mAP Params FLOPs mAP in paper Params in paper FLOPs in paper
SpineNet-49S 39.1 11.15M 30.04B 39.9 12.0M 33.8B
SpineNet-49 42.7 28.31M 83.7B 42.8 28.5M 85.4B
SpineNet-96 —— 42.74M 261.35B 47.1 43.0M 265.4B
SpineNet-143 —— —— —— 48.1 66.9M 524.4B
SpineNet-190 —— —— —— —— 163.6M 1885B

Note: The parameters and flops are a little different from paper, so I think there are some difference between my code and official's code. More information about models can see in MODEL_DETAILS.md

Usage

  1. Install mmdetection

    This implementation is based on mmdetection(v1.1.0+8732ed9). Please refer to INSTALL.md for installation and dataset preparation.

  2. Copy the codes to mmdetection directory

    cp -r mmdet/ ${MMDETECTION_PATH}/
    cp -r configs/ ${MMDETECTION_PATH}/
    1. Prepare data

      The directories should be arranged like this:

      mmdetection ├── mmdet ├── tools ├── configs ├── data │ ├── coco │ │ ├── annotations │ │ ├── train2017 │ │ ├── val2017 │ │ ├── test2017

    2. Train D0 with 4 GPUs

    CONFIG_FILE=configs/spinenet/spinenet_49_B_8gpu.py
    ./ tools/dist_train.py ${CONFIG_FILE} 4
    1. Calculate parameters and flops

      python tools/get_flops.py ${CONFIG_FILE} --shape $SIZE $SIZE
  3. Test

    python tools/test.py ${CONFIG_FILE} ${CHECKPOINT_FILE} --out  ${OUTPUT_FILE} --eval bbox

More usages can reference mmdetection documentation.

Update log