VoVNet-v2 backbone networks in Detectron2

March 30, 2020 · View on GitHub

Efficient Backbone Network for Object Detection and Segmentation

[CenterMask(code)][CenterMask2(code)] [VoVNet-v1(arxiv)] [VoVNet-v2(arxiv)] [BibTeX]

In this project, we release code for VoVNet-v2 backbone network (introduced by CenterMask) in detectron2 as a extention form. VoVNet can extract diverse feature representation efficiently by using One-Shot Aggregation (OSA) module that concatenates subsequent layers at once. Since the OSA module can capture multi-scale receptive fields, the diversifed feature maps allow object detection and segmentation to address multi-scale objects and pixels well, especially robust on small objects. VoVNet-v2 improves VoVNet-v1 by adding identity mapping that eases the optimization problem and effective SE (Squeeze-and-Excitation) that enhances the diversified feature representation.

Highlight

Compared to ResNe(X)t backbone

  • Efficient : Faster speed
  • Accurate : Better performance, especially small object.

Update

  • Lightweight-VoVNet-19 has been released. (19/02/2020)
  • VoVNetV2-19-FPNLite has been released. (22/01/2020)
  • centermask2 has been released. (20/02/2020)

Results on MS-COCO in Detectron2

Note

We measure the inference time of all models with batch size 1 on the same V100 GPU machine.
We train all models using V100 8GPUs.

  • pytorch1.3.1
  • CUDA 10.1
  • cuDNN 7.3

Faster R-CNN

Lightweight-VoVNet with FPNLite

BackboneParam.lr schedinference timeAPAPsAPmAPldownload
MobileNetV23.5M3x0.02233.019.035.043.4model | metrics
V2-1911.2M3x0.03438.924.841.749.3model | metrics
V2-19-DW6.5M3x0.02736.722.740.046.0model | metrics
V2-19-Slim3.1M3x0.02335.221.737.344.4model | metrics
V2-19-Slim-DW1.8M3x0.02232.419.134.641.8model | metrics
  • DW and Slim denote depthwise separable convolution and a thiner model with half the channel size, respectively.
BackboneParam.lr schedinference timeAPAPsAPmAPldownload
V2-19-FPN37.6M3x0.04038.924.941.548.8model | metrics
R-50-FPN51.2M3x0.04740.224.243.552.0model | metrics
V2-39-FPN52.6M3x0.04742.727.145.654.0model | metrics
R-101-FPN70.1M3x0.06342.025.245.654.6model | metrics
V2-57-FPN68.9M3x0.05443.327.546.755.3model | metrics
X-101-FPN114.3M3x0.12043.027.246.154.9model | metrics
V2-99-FPN96.9M3x0.07344.128.147.056.4model | metrics

Mask R-CNN

Backbonelr schedinference timebox APbox APsbox APmbox APlmask APmask APsmask APmmask APldownload
V2-19-FPNLite3x0.03639.725.142.650.836.419.938.850.8model | metrics
V2-19-FPN3x0.04440.125.443.051.036.619.738.751.2model | metrics
R-50-FPN3x0.05541.024.943.953.337.218.639.553.3model | metrics
V2-39-FPN3x0.05243.827.647.255.339.321.441.854.6model | metrics
R-101-FPN3x0.07042.926.446.656.138.619.541.355.3model | metrics
V2-57-FPN3x0.05844.228.247.256.839.721.642.255.6model | metrics
X-101-FPN3x0.12944.327.547.656.739.520.742.056.5model | metrics
V2-99-FPN3x0.07644.928.548.157.740.321.742.856.6model | metrics

Panoptic-FPN on COCO

Name lr
sched
inference
time
(s/im)
box
AP
mask
AP
PQ download
R-50-FPN 3x 0.063 40.0 36.5 41.5 model | metrics
V2-39-FPN 3x 0.063 42.8 38.5 43.4 model | metrics
R-101-FPN 3x 0.078 42.4 38.5 43.0 model | metrics
V2-57-FPN 3x 0.070 43.4 39.2 44.3 model | metrics

Using this command with --num-gpus 1

python /path/to/vovnet-detectron2/train_net.py --config-file /path/to/vovnet-detectron2/configs/<config.yaml> --eval-only --num-gpus 1 MODEL.WEIGHTS <model.pth>

Installation

As this vovnet-detectron2 is implemented as a extension form (detectron2/projects) upon detectron2, you just install detectron2 following INSTALL.md.

Prepare for coco dataset following this instruction.

Training

ImageNet Pretrained Models

We provide backbone weights pretrained on ImageNet-1k dataset.

To train a model, run

python /path/to/vovnet-detectron2/train_net.py --config-file /path/to/vovnet-detectron2/configs/<config.yaml>

For example, to launch end-to-end Faster R-CNN training with VoVNetV2-39 backbone on 8 GPUs, one should execute:

python /path/to/vovnet-detectron2/train_net.py --config-file /path/to/vovnet-detectron2/configs/faster_rcnn_V_39_FPN_3x.yaml --num-gpus 8

Evaluation

Model evaluation can be done similarly:

python /path/to/vovnet-detectron2/train_net.py --config-file /path/to/vovnet-detectron2/configs/faster_rcnn_V_39_FPN_3x.yaml --eval-only MODEL.WEIGHTS <model.pth>

TODO

  • Adding Lightweight models
  • Applying VoVNet for other meta-architectures

Citing VoVNet

If you use VoVNet, please use the following BibTeX entry.

@inproceedings{lee2019energy,
  title = {An Energy and GPU-Computation Efficient Backbone Network for Real-Time Object Detection},
  author = {Lee, Youngwan and Hwang, Joong-won and Lee, Sangrok and Bae, Yuseok and Park, Jongyoul},
  booktitle = {Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops},
  year = {2019}
}

@article{lee2019centermask,
  title={CenterMask: Real-Time Anchor-Free Instance Segmentation},
  author={Lee, Youngwan and Park, Jongyoul},
  booktitle={CVPR},
  year={2020}
}