Skip to content
PyTorch MobileNet Implementation of "MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications"
Branch: master
Clone or download
Latest commit 4e45645 Jul 1, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md Update README.md Jul 1, 2017
benchmark.py batchsize = 1 , test May 4, 2017
main.py fix a problem in main.py, version 0.1 Apr 19, 2017
run.sh

README.md

Implementation of MobileNet, modified from https://github.com/pytorch/examples/tree/master/imagenet. imagenet data is processed as described here

nohup python main.py -a mobilenet ImageNet-Folder > log.txt &

Results

  • sgd : top1 68.848 top5 88.740 download
  • rmsprop: top1 0.104 top5 0.494
  • rmsprop init from sgd : top1 69.526 top5 88.978 donwload
  • paper: top1 70.6

Benchmark:

Titan-X, batchsize = 16

  resnet18 : 0.004030
   alexnet : 0.001395
     vgg16 : 0.002310
squeezenet : 0.009848
 mobilenet : 0.073611

Titan-X, batchsize = 1

  resnet18 : 0.003688
   alexnet : 0.001179
     vgg16 : 0.002055
squeezenet : 0.003385
 mobilenet : 0.076977

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()

        def conv_bn(inp, oup, stride):
            return nn.Sequential(
                nn.Conv2d(inp, oup, 3, stride, 1, bias=False),
                nn.BatchNorm2d(oup),
                nn.ReLU(inplace=True)
            )

        def conv_dw(inp, oup, stride):
            return nn.Sequential(
                nn.Conv2d(inp, inp, 3, stride, 1, groups=inp, bias=False),
                nn.BatchNorm2d(inp),
                nn.ReLU(inplace=True),
    
                nn.Conv2d(inp, oup, 1, 1, 0, bias=False),
                nn.BatchNorm2d(oup),
                nn.ReLU(inplace=True),
            )

        self.model = nn.Sequential(
            conv_bn(  3,  32, 2), 
            conv_dw( 32,  64, 1),
            conv_dw( 64, 128, 2),
            conv_dw(128, 128, 1),
            conv_dw(128, 256, 2),
            conv_dw(256, 256, 1),
            conv_dw(256, 512, 2),
            conv_dw(512, 512, 1),
            conv_dw(512, 512, 1),
            conv_dw(512, 512, 1),
            conv_dw(512, 512, 1),
            conv_dw(512, 512, 1),
            conv_dw(512, 1024, 2),
            conv_dw(1024, 1024, 1),
            nn.AvgPool2d(7),
        )
        self.fc = nn.Linear(1024, 1000)

    def forward(self, x):
        x = self.model(x)
        x = x.view(-1, 1024)
        x = self.fc(x)
        return x
You can’t perform that action at this time.