A pytorch Implementation of VoVNet Backbone Networks

July 23, 2019 ยท View on GitHub

This is a pytorch implementation of VoVNet backbone networks as described in the paper An Energy and GPU-Computation Efficient Backbone Network for Real-Time Object Detection. This is implemented through pytorch/vision style.

What does this repo provide?

This repo provides VoVNet-39/57 models trained on ImageNet classification dataset with same training protocols as pytorch/examples/imagenet (e.g., 128 batch size, 90 epoch, data augmentations, lr_policy, etc) and compares to ResNet and DenseNet.

ImageNet results

Notes:

  • For fair comparison, same training protocols used as pytorch/examples/imagenet
    • 90 epoch
    • step learning rate schedule (learning rate decayed at every 30 epoch)
    • 256 batch size
    • default augmentations (e.g., crop, flip, same mean/std normalization)
    • @224x224 training/validation
  • Inference time is measured on TITAN X PASCAL GPU
    • CUDA v9.2, cuDNN v7.3, pytorch 1.0
ModelTop-1Top-5Inference time
ResNet-5023.85%7.13%12 ms
DenseNet-20122.80%6.43%39 ms
VoVNet-3923.23%6.57%10 ms
ResNet-10122.63%6.44%20 ms
DenseNet-16122.35%6.20%27 ms
VoVNet-5722.27%6.28%13 ms

Pretrained models

Training & Inferecne

Installation

  1. python 3.6
  2. Install pytorch > 0.4
  3. git clone https://github.com/stigma0617/VoVNet.pytorch.git
  4. install depenecies : pip install -r requirements.txt

Imagenet data preparation

You can follow the instruction of pytorch/examples/imagenet

Train

run main.py specifying data path, the desired model name--arch, and save-directory--savedir.

python main.py [imagenet-folder with train and val folders] --arch vovnet39 --savedir VoVNet39

VoVNet-Detectron VoVNet-DeepLabV3

TO DO

  • VoVNet-27-slim
  • VoVNet-27-slim-depthwise
  • VoVNet-99