- 论文题目:Seaching for MobileNet v3
- 论文作者:
- 相关代码:
摘要
本文展示了基于网络搜索技术和新的网络结构设计的下一代的MobileNet(轻量级网络)。MobileNet v3结合了硬件网络结构搜索(NAS)和NetAdapt算法,并且通过新的网络结构来改进。本文开始介绍了如何自动进行网络搜索,然后通过调整互补的方法来整体上提升网络的性能。通过这个方法,文章介绍了基于资源多少情况下的两种新的轻量级网络:MobileNet v3-Large 和MobileNet v3-Small。对于语义分割(或者其他密集像素预测)的task而言,我们提出了一个新的有效的分割decoder,Lite Reduced Atrous Spatial Pyramid Pooling(LR-ASPP) 轻量ASPP。MobileNetv3 -large 比 MobileNetv2 在imageNet上的准确度提高了3.2%, 速度(计算复杂度)提高了 20%;MobileNetv3 -small 比 MobileNetv2 在imageNet上的准确度提高了6.6% ;MobileNetv3 -large 比 MobileNetv2 在COCO上的检测速率快了25%,准确率二者相当;MobileNetv3 -large LR-ASPP比 MobileNetv2 R-ASPP 在 Cityspace 分割人物快了34%,准确率两者相当。
Introduction
这篇文章主要说的就是针对于前两代轻量级网络的改进。在手机上运行的神经网络对网络运行的速度和准确度都有很高的要求。本文介绍的就是MobileNetv3-Large和MobileNetv3-Small两种新的网络结构。
这篇文章的目标是最有限程度地开发的在移动设备上运行平衡准确率和运行复杂度的计算机视觉神经网络。本文介绍了:(1)互补的搜索技术【这里的互补说的是啥?】(2)新的有效的在移动设备上的神经网络中的非线性设置;(3)新的有效的神经网络设计(4)新的有效的分割decoder。本文通过实验来证明每一个技术的有效性。
本文的结构是- 介绍相关工作->对于轻量级模型有效的blocks-> 回顾网络搜索模型 -> 介绍新的改进效率的模型 ->展示实验结果->结论和未来工作
Related Works
Efficient Mobile Building Blocks
这部分说明的是在轻量级网络中有效的模块。
MobileNet v1
MobileNet v1主要介绍了 depthwise separable convolution作为传统的卷积网络的替代品。 depthwise separable convolution主要由两部分构成:depthwise 卷积 和 pointwise卷积。 Depthwise卷积主要是将包含多个参数的filter简化为一个轻量级的空间特征生成器;pointwise卷积则是将第一步生成的每一个channel的特征量通过 $1\times1$ 的卷积结合起来。
MobileNet v2
MobileNet v2主要介绍了线性的bottleneck结构和inverted residual structure。如图所示的bottle neck结构先是连接了一个$1\times1$ 的扩展卷积层,之后跟了一个depthwise的卷积核一个 $1\times1$ 的pointwise卷积。当输入层和输出层的channel数相等时由residual连接,这个结构保持了输入和输出层比较compact的表示形式, 在bottleneck结构内部拓展feature层的数量来提高非线性层各channel的表现力
MnasNet
MnasNet是在MobileNet2基础上引入了基于squeeze和excitation模块的轻便注意力模块。一个注意力模块在ResNet中是放在不同位置的。在MnasNet中这个注意力模块是放置在depthwise卷积后面的, 使注意力模块可以用在更丰富的channel上。
MobileNetV3
对于MobileNetV3来讲,我们把这些模块都结合起来,来建立一个效率更高的模型。这些模型中每一层的非线性引入方程由ReLu变为了swish模块。所有的squeeze和excitation还有swish模块中运用的sigmoid都换成了hard sigmoid,来改变sigmoid本身在计算时的低效性同时保证模型的准确率,这部分在section 5会进一步介绍。
Network Search
网络搜索是发现和优化神经网络的一个很重要的方法。对于MobileNetV3来说,本文运用了平台类(platform-aware)的NAS 来寻找可以优化各个网络模块的结构。之后本文运用了NetAdapt算法在每一层寻找合适的filter的数量。这些方法都是互补的并且可以结合起来为一个给出的硬件平台找到最优模型。
Platform-Aware NAS for Block-wise search
NetAdapt for Layer-wise Search
Network Improvements
除了网络搜索,本文同样介绍了一些新的模块来做进一步的改进。本文重新设计了在网络结构的开始和结尾处计算复杂度比较高的层。本文同样介绍了新的非线性模块,h-swish,是对于swish模块的改进,同样计算的速度更快,并且更好quantization
Redesigning Expensive Layer
当通过搜索结构找到合适的模型后,作者发现一些网络结构最后的几层和最开始的基层的运算复杂度比较高。所以就对这些层做了一些改进来减少这些层中的参数,提高计算效率的同时保持精确度。这些改进是在网络搜索下不能做到的。
第一个改进是如何让最后的几层相互作用使得最终更有效地生成的features。目前基于MobileNetV2的模型的倒置bottleneck结构和用 $1\times1$ 卷积作为最后的一层来拓展到高维特征空间。这一层对于生成丰富的特征用来预测最终结果至关重要。然而这一层会带来很多等待的时间。
为了减少最后这一层的计算复杂度,同时保持高纬度的特征,我们将这一层通过最后的average 池化层个。这最后的特征集现在由 $1\times1$ 的卷积计算,而不是 $7\times7$ 的卷积层计算。这个设计的结果是,对于特征的计算基本上接近于没有。
一旦这个生成特征的层被改进,之前的bottleneck projection也可以去掉了。这个发现可以让我们去掉之前的projection和过滤层,进一步简化计算过程。初始的结构和简化过后的结构可以在下图显示,改进过后的更有效的最后一层减少了11%的时间,但准确度并没有下降。
另一个计算复杂度比较高的一层是最开始的一组过滤器。目前的轻量级网络模型倾向于使用32个 $3\times3$ 的卷积来建立最开始的来检测边缘的filters。这些filters通常是他们的mirror图片(?)。我们通过各种各样的实验减少filter的数量并且运用不同的nonlinearity来减少计算复杂度。最后 hard-swish可以将filter的数量减少到16个,并且可以保持准确率不变
Nonlinearities
之前用来代替ReLu非线性模块的是swish模块,这个swish模块极大程度上提高了神经网络的准确度。
swish的定义为:$ swish x = x \cdot \sigma(x)$
这个非线性模块可以提升准确度,随之而来的是在环境下的非零cost,因为sigmoid function在移动设备上的计算比较expensive。我们通过两种方法来处理这个问题
- 将sigmoid方程换成硬性的 piece-wise的ReLu线性方程。这样的话,$h-swish[x] = x\frac{ReLU6(x+3)}{6}$
- 应用非线性的cost会随着深入神经网络而降低,因为每一层的激活层的储存都会在分辨率下降的时候减半。因此我们意识到,当我们在更深层次运用swish模块时,可以在最大程度上显示他的优点。所以在我们的模型中,我们只在后半部分使用h-swish模块。
Large Squeeze-and-excite
squeeze-and-excite的bottleneck结构和卷积的bottleneck结构相关。我们将他们全都替换成了expansion层的1/4,可以提高准确率。
MobileNet V3 definitiong
有两个MobileNet V3的结构,一个是大,一个是小。两种结构针对于可应用资源的多少而生。
Experiments
这部分主要介绍了将MobileNet V3运用在不同的task:分类,检测,分割,上时的准确度
Classification
测试数据:ImageNet
模型参数:
框架: Tensorflow
优化方法:RMSProp Optimizer, momentum = 0.9
学习率:0.1,每3个epoch减小0.01
batchsize:4096
dropoff: 0.8
Detection
检测部分将MobileNetV3作为SSDLite结构的特征提取的backbone,利用的测试数据是COCO dataset