一 为什么读这篇
大名鼎鼎的MobileNets,一个专门用于移动端的网络,算是专门做移动端网络的先驱吧。网络结构和Xception也很像,都是深度可分卷积,读完Xception后接着看这个没毛病。
二 截止阅读时这篇论文的引用次数
2019.3.15 1263次。没有想象中的高。不过是Xception的2倍。
三 相关背景介绍
Google出品,17年4月挂到arXiv上,尴尬的是,挺有影响力的一个网络,居然一个会都没中。之前看过一作Andrew G. Howard独立发表的《Some Improvements on Deep Convolutional Neural Network Based Image Classification》,这哥们也是神奇,这么多年总共就发了这两篇文章。总共有8个作者。。
四 关键词
MobileNets
移动端
五 论文的主要贡献
1 深度可分卷积在移动端的成功应用
六 详细解读
0 摘要
MobileNets是基于使用深度可分卷积的流线型架构来构建轻量深度神经网络。本文介绍了两种简单的全局超参,可以有效地在延迟和准确率之间进行权衡,这些超参可以使模型基于其问题的限制选择合适的模型大小。
1 介绍
为了达到更高的准确率,通常的趋势是使网络变得更深更复杂,然而,这些提升准确率的进步并不一定使网络在大小和速度方面更有效。现实世界的很多应用(机器人,自动驾驶,增强现实等)需要在资源受限的平台上跑。
2 先前工作
前辈们有SqueezeNet,XnorNet等,这些方法都可以归结为压缩预训练网络或直接训练小的网络。本文提出的网络架构可以让模型开发者基于他们的应用选择符合资源限制(延迟,大小)的小网络。MobileNets首先聚焦于优化延迟,同时也会生成小网络。然而许多关于小网络的研究仅考虑大小而没有考虑速度。
MobileNets主要由深度可分卷积构建,随后跟着BN用于减少前几层的计算。
获得小网络的一种方法是缩小,分解或压缩预训练网络。压缩基于乘积量化,哈希,剪枝,向量量化和霍夫曼编码。另一种方法是蒸馏,它通过更大的网络来教更小的网络。还有一种新兴方法是低位网络。
3 MobileNet架构
3.1 深度可分卷积
MobileNet是基于深度可分卷积的。depthwise卷积是对每个输入通道使用一个滤波器,pointwise卷积是应用1x1卷积组合depthwise卷积的输出。标准卷积用一个步骤过滤并将输入组合为一组新的输出。深度可分卷积将这一步分为两层,一层用于过滤,一层用于组合。这种分解极大的减少了计算和模型大小。图2展示了将一个标准卷积分解为depthwise卷积和1x1 pointwise卷积。
mobilenets-fig2.png标准卷积层以大小为的特征图作为输入,生成大小为的特征图。
标准卷积层的参数化通过大小为的卷积核来实现。
标准卷积输出的特征图通过下式得到:
其计算代价为:
MobileNets首先使用深度可分卷积切断了输出通道和卷积核大小的交互。
深度可分卷积由depthwise卷积和pointwise卷积两个层组成。depthwise卷积是对每个输入通道应用一个滤波器,pointwise卷积是一个简单的1x1卷积,用于创建depthwise层输出的线性组合。MobileNets对每个层都使用BN和ReLU。
每个通道一个滤波器的depthwise卷积如下定义:
其中为大小为的depthwise卷积核。
depthwise的计算代价如下:
相对标准卷积,depthwise卷积相当有效,然而它仅仅是过滤输入通道,并不对它们组合以生成新特征。所以需要额外的层来计算depthwise卷积输出的线性组合,这通过1x1卷积实现。
深度可分卷积计算代价如下:
3x3的深度可分卷积计算量省了8-9倍。
3.2 网络结构和训练
mobilenets-table1.png除了最后一层外,所有的层都跟着BN和ReLU。
mobilenets-fig3.png下采样通过depthwise卷积的跨步来实现,将depthwise和pointwise卷积视为独立的层,MobileNets有28层。
GEMM:general matrix multiply
MobileNets在1x1卷积上花了95%的计算时间,有75%的参数量。
mobilenets-table2.png在TF上用RMSprop训练MobileNet,以及和Inception V3类似的异步梯度下降。同时因为小模型更不容易过拟合,所以减少了正则化和数据增强。发现很重要的一点就是对depthwise滤波器不要或少用权重衰减,因为它们的参数很少。
3.3 Width Multiplier:更薄的模型
为了得到更小,计算代价更少的模型,本文引入一种非常简单的,称为width multiplier的参数,该参数的作用是均匀地让网络的每一层更薄。对于给定的层和,输入通道变为,输出通道变为。计算代价如下:
其中,通常设置为1, 0.75, 0.5和0.25。
这一节感觉有点凑数,想让模型变小可不是得减少filter个数吗。给起了个高大上的名字,也是套路。
3.4 Resolution Multiplier:减少表示
第二个减少计算代价的超参是resolution multiplier 。
其中,通常是隐式的设置以便网络的输入分辨率为224, 192, 160, 128。
表3的输入特征图大小为14 x 14 x 512,卷积核大小为3 x 3 x 512 x 512。
4 实验
4.1 模型选择
mobilenets-table4.png相比非深度可分卷积,准确率只低了1个点,但是运算次数和参数量都大大减少了。
mobilenets-table5.png由表5可见,薄比浅好。
4.2 模型收缩超参
mobilenets-table6.png mobilenets-table7.png由表7可见,再一次证明了,分辨率越高效果越好。
mobilenets-fig4.png mobilenets-fig5.png mobilenets-talbe8.png mobilenets-table9.png4.3 细粒度识别
先用web上含噪声的数据预训练一个狗的细粒度识别模型,再用斯坦福狗数据集在这个模型上微调。
mobilenets-table10.png4.4 大规模地理定位
mobilenets-table11.png4.5 面部属性
mobilenets-table12.png4.6 目标检测
mobilenets-table13.png看起来在目标检测上的效果差别较大。
4.7 面部嵌入
mobilenets-table14.png该表有bug,行名写重了。
七 读后感
MobileNet的成功更有可能是起名的成功,本身没有多少创新的地方,就是重度用了深度可分卷积,以及对减小输入分辨率和filter个数包装了一个漂亮的说法。作者说出发点是从节省计算量的角度出发,而不是单纯的压缩模型。其实深度可分卷积的核心也就是将乘法运算变为加法运算。初看感觉公式很多,有点复杂,细度起来其实没那么难,都是纸老虎。最后MobileNet也是个论据,再一次告诉我们压缩模型的时候,变薄比变浅要好。
素质四连
要解决什么问题
在计算资源受限的移动端用什么网络好。
用了什么方法解决
提出MobileNet,其实就是深度可分卷积的应用。
效果如何
参数量和计算量都大大降低,准确率却降的不多。
还存在什么问题
准确率还是低了点。
网友评论