# MobileNetV2

**MobileNetV2: Inverted Residuals and Linear Bottlenecks ****(CVPR 2018)**

In this paper we describe a new mobile architecture, MobileNetV2, that improves the state of the art performance of mobile models on multiple tasks and benchmarks as well as across a spectrum of different model sizes. We also describe efficient ways of applying these mobile models to object detection in a novel framework we call SSDLite. Additionally, we demonstrate how to build mobile semantic segmentation models through a reduced form of DeepLabv3 which we call Mobile DeepLabv3.

### Implementations

```
from keras.applications.mobilenet_v2 import MobileNetV2
MobileNetV2(input_shape=None, alpha=1.0, depth_multiplier=1, include_top=True, weights='imagenet', input_tensor=None, pooling=None, classes=1000)
```

MobileNetV2 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, to be specified if you would like to use a model with an input img resolution that is not (224, 224, 3). It should have exactly 3 inputs channels (224, 224, 3). You can also omit this option if you would like to infer input_shape from an input_tensor. If you choose to include both input_tensor and input_shape then input_shape will be used if they match, if the shapes do not match then we will throw an error. E.g.
`(160, 160, 3)`

would be one valid value. - alpha: controls the width of the network. This is known as the width multiplier in the MobileNetV2 paper.
- 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)
- include_top: whether to include the fully-connected layer at the top of the network.
- weights: one of
`None`

(random initialization), 'imagenet' (pre-training on ImageNet), or the path to the weights file to be loaded. - 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`

is`False`

.`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`

is True, and if no`weights`

argument is specified.

### Returns

A Keras model instance.

### Raises

ValueError: in case of invalid argument for `weights`

, or invalid input shape or invalid depth_multiplier, alpha, rows when weights='imagenet'

(@ keras.io) https://keras.io/applications/#mobilenetv2