原文: MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

论文链接https://arxiv.org/abs/1704.04861

开源测试代码与预训练模型(caffe版本)https://github.com/shicai/MobileNet-Caffe

原文链接https://blog.csdn.net/hongbin_xu/article/details/82957426

1、四个问题


1.1、要解决什么问题?
在现实场景下,诸如移动设备、嵌入式设备、自动驾驶等等,计算能力会受到限制,所以本文的目标就是构建一个小且快速(small and low latency)的模型。


1.2、用了什么办法解决?
提出了MobileNet架构,使用深度可分离卷积(depthwise separable convolutions)替代传统卷积。
在MobileNet网络中还引入了两个收缩超参数(shrinking hyperparameters):宽度乘子(width multiplier)和分辨率乘子(resolution multiplier)。


1.3、效果如何?
在一系列视觉任务如ImageNet分类、细粒度分类、目标检测等等上,显著降低模型大小的同时也取得了不错的效果。


1.4、还存在什么问题?(参考自知乎)
MobileNet v1的结构过于简单,是类似于VGG的直筒结构,导致这个网络的性价比其实不高。如果引入后续的一系列ResNet、DenseNet等结构(复用图像特征,添加shortcuts)可以大幅提升网络的性能。
Depthwise Convolution存在潜在问题,训练后部分kernel的权值为0。

2、网络结构
2.1、Depthwise Separable Convolution
轻量化网络:MobileNet v1解析

2.1.1、标准卷积

轻量化网络:MobileNet v1解析

轻量化网络:MobileNet v1解析

2.1.2、深度可分离卷积


分为两部分:depthwise卷积和pointwise卷积。
depthwise卷积:对每个输入通道单独使用一个卷积核处理。
pointwise卷积:1×1 1 \times 11×1卷积,用于将depthwise卷积的输出组合起来。
轻量化网络:MobileNet v1解析

轻量化网络:MobileNet v1解析

2.1.3、标准卷积与深度可分离卷积计算量的比较

轻量化网络:MobileNet v1解析

轻量化网络:MobileNet v1解析

轻量化网络:MobileNet v1解析

Depthwise Separable Convolution结构如下:

轻量化网络:MobileNet v1解析

2.2、MobileNet结构

轻量化网络:MobileNet v1解析

轻量化网络:MobileNet v1解析

2.4、控制MobileNet模型大小的两个超参数

2.4.1、宽度因子(Width Multiplier):更薄的模型
如果需要模型更小更快,可以定义一个宽度因子,这个宽度因子可以让网络的每一层都变的更薄。如果input的channel是就变为,如果output channel是N就变为,那么在有宽度因子情况下的深度分离卷积运算的计算量公式就成了如下形式:

轻量化网络:MobileNet v1解析

轻量化网络:MobileNet v1解析,一般取值为1,0.75,0.5或者0.25。如果为1就是基本的mobilenet,如果小于1就是缩减了的mobilenet。宽度因子会缩小网络的计算量和参数,能够让原来的模型变成一个更小的模型,但是在精确度和模型尺寸之间需要权衡。而且如果修改了宽度因子,网络需要重头开始训练。

该参数用于控制特征图的维数,即通道数。

2.4.2、分辨率因子(Resolution Multiplier):减少表达力
第二个减少计算量的超参数就是分辨率因子,这个因子是和input的长宽相乘,会缩小input的长宽而导致后面的每一层的长宽都缩小。

轻量化网络:MobileNet v1解析

轻量化网络:MobileNet v1解析,一般让input的长宽为224,192,160和128。

该参数用于控制特征图的宽/高,即分辨率。

相关文章: