GitXplorerGitXplorer
g

MSDNet

public
462 stars
93 forks
7 issues

Commits

List of commits on branch master.
Verified
0589d1768b33cc41aa49aa77d4a52c0bc62bd54c

PyTorch implementation link

ggaohuang committed 6 years ago
Verified
52e83cba976204d057bb5c95265b1eb2bf6146fd

pretrained model

ggaohuang committed 6 years ago
Verified
b53447af952fd4d4453739531ce6836027a617fd

link for pretrained models

ggaohuang committed 6 years ago
Unverified
ce7818dabd0c4bacc97307cb2789dcb80314648c

Merge branch 'master' of https://github.com/gaohuang/MSDNet

ggaohuang committed 7 years ago
Unverified
fc149205788cde79c681a8c4b183c2224aa616e7

fix initChannels

ggaohuang committed 7 years ago
Unverified
90b7991a33c43e1673201210adb5ffa55ca59bbf

update FAQ

ttaineleau committed 7 years ago

README

The README file for this repository.

MSDNet

This repository provides the code for the paper Multi-Scale Dense Networks for Resource Efficient Image Classification.

Update on April 3, 2019 -- PyTorch implementation released!

A PyTorch implementation of MSDNet can be found from here.

Introduction

This paper studies convolutional networks that require limited computational resources at test time. We develop a new network architecture that performs on par with state-of-the-art convolutional networks, whilst facilitating prediction in two settings: (1) an anytime-prediction setting in which the network's prediction for one example is progressively updated, facilitating the output of a prediction at any time; and (2) a batch computational budget setting in which a fixed amount of computation is available to classify a set of examples that can be spent unevenly across 'easier' and 'harder' examples.

Figure 1: MSDNet layout (2D).

Figure 2: MSDNet layout (3D).

Results

(a) anytime-prediction setting

Figure 3: Anytime prediction on ImageNet.

(b) batch computational budget setting

Figure 4: Prediction under batch computational budget on ImageNet.

Figure 5: Random example images from the ImageNet classes Red wine and Volcano. Top row: images exited from the first classification layer of an MSDNet with correct prediction; Bottom row: images failed to be correctly classified at the first classifier but were correctly predicted and exited at the last layer.

Usage

Our code is written under the framework of Torch ResNet (https://github.com/facebook/fb.resnet.torch). The training scripts come with several options, which can be listed with the --help flag.

th main.lua --help

Configuration

In all the experiments, we use a validation set for model selection. We hold out 5000 training images on CIFAR, and 50000 images on ImageNet as the validation set.

Training recipe

Train an MSDNet with 10 classifiers attached to every other layer for anytime prediction:

th main.lua -netType msdnet -dataset cifar10 -batchSize 64 -nEpochs 300 -nBlocks 10 -stepmode even -step 2 -base 4

Train an MSDNet with 7 classifiers with the span linearly increases for efficient batch computation:

th main.lua -netType msdnet -dataset cifar10 -batchSize 64 -nEpochs 300 -nBlocks 7 -stepmode lin_grow -step 1 -base 1

Pre-trained ImageNet Models

  1. Download model checkpoints and the validation set indeces.

  2. Testing script: th main.lua -dataset imagenet -testOnly true -resume <path-to-.t7-model> -data <path-to-image-net-data> -gen <path-to-validation-set-indices>

FAQ

  1. How to calculate the FLOPs (or mul-add op) of a model?

We strongly recommend doing it automatically. Please refer to the op-counter project (LuaTorch), or the script in ConDenseNet (PyTorch). The basic idea of these op counters is to add a hook before the forward pass of a model.