MobileNet
MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
We present a class of efficient models called MobileNets for mobile and embedded vision applications. MobileNets are based on a streamlined architecture that uses depthwise separable convolutions to build light weight deep neural networks. We introduce two simple global hyperparameters that efficiently trade off between latency and accuracy. These hyper-parameters allow the model builder to choose the right sized model for their application based on the constraints of the problem. We present extensive experiments on resource and accuracy tradeoffs and show strong performance compared to other popular models on ImageNet classification. We then demonstrate the effectiveness of MobileNets across a wide range of applications and use cases including object detection, finegrain classification, face attributes and large scale geo-localization.
Implementations
from keras.applications.mobilenet import MobileNet
MobileNet(input_shape=None, alpha=1.0, depth_multiplier=1, dropout=1e-3, include_top=True, weights='imagenet', input_tensor=None, pooling=None, classes=1000)
MobileNet model, with weights pre-trained on ImageNet.
Note that this model only supports the data format 'channels_last'
(height, width, channels).
The default input size for this model is 224x224.
Arguments
- input_shape: optional shape tuple, only to be specified if
include_top
isFalse
(otherwise the input shape has to be(224, 224, 3)
(with'channels_last'
data format) or(3, 224, 224)
(with'channels_first'
data format). It should have exactly 3 inputs channels, and width and height should be no smaller than 32. E.g.(200, 200, 3)
would be one valid value. - alpha: controls the width of the network.
- If
alpha
< 1.0, proportionally decreases the number of filters in each layer. - If
alpha
> 1.0, proportionally increases the number of filters in each layer. - If
alpha
= 1, default number of filters from the paper are used at each layer.
- If
- depth_multiplier: depth multiplier for depthwise convolution (also called the resolution multiplier)
- dropout: dropout rate
- include_top: whether to include the fully-connected layer at the top of the network.
- weights:
None
(random initialization) or'imagenet'
(ImageNet weights) - input_tensor: optional Keras tensor (i.e. output of
layers.Input()
) to use as image input for the model. - pooling: Optional pooling mode for feature extraction when
include_top
isFalse
.None
means that the output of the model will be the 4D tensor output of the last convolutional layer.'avg'
means that global average pooling will be applied to the output of the last convolutional layer, and thus the output of the model will be a 2D tensor.'max'
means that global max pooling will be applied.
- classes: optional number of classes to classify images into, only to be specified if
include_top
isTrue
, and if noweights
argument is specified.
Returns
A Keras Model
instance.
(@ keras.io) https://keras.io/applications/#mobilenet