https://arxiv.org/pdf/1905.02244.pdf
知识回顾:
MobileNetV1
提出了depthwise的卷积结构加速CNN的训练,depthwise的操作解释将通道全部独立开,做卷积期间通道数不变,可以理解为Group=In_channels的Group Conv,然后利用1X1的卷积实现通道之间的融合。这种方式比直接卷积省去很多参数。
MobileNetV2
为了解决v1一些卷积核训废的问题,原因为当通道数比较少的时候,ReLU激活函数会造成较多信息的丢失,于是提出了linear bottleneck layer和inverted residual block, [input]->[1X1卷积增加通道]->[ReLU6]->[depthwise conv]->[ReLU6]->[1X1 conv 降低通道数]->[Linear]->[Input]不再接ReLU层。
MnasNet:
用RL的方法进行网络搜索,加上了准确率和实时延迟的tradeoff,并不是搜索出一个或者几个cell然后重复堆叠成一个网络,而是简化每个cell的搜索空间但允许各个单元不同。google用TPU进行训练,资源消耗较大。
SeNet:
seNet中的squeeze-and-excite模块被加入到mobilenetv2中,squeeze-and-excite模块结合特征通道的关系来加强网络的学习能力。
Inception:
Inception结合不同尺度的特征信息,融合不同感受野的特征得到网络增益,resnet的shortcut结构,结合不同level的特征图来增强网络。
NetAdapt:
这篇文章主要涉及了一个平台算法,可以把一些非直接的变量整合进来,比如延时和能源消耗。做法就是直接把模型放到目标平台上训练然后反馈回数据,再对网络进行调整,直到满足设定的条件,优化结束。原文中有算法流程图,给定一个K conv and FC layers的网络Net0,在每一步的结构更改中,需要减少一个给定个值deltaR,然后调整每层的卷积核数,生成一个Net_simp集合,在这个集合中找到最高准确率的网络。保持循环,直到资源消耗满足给定条件,然后finetune网络。文章中有一些快速资源消耗估计的方法,如果有需要可以去仔细看看。
MobileNetV3
mobileNetV3=hardware-aware network architecture search(NAS)+NetAdapt+novel architecture advances
论文主要介绍了4个方面:
1.互补的搜索技术
2.非线性实用设置
3.新的高效网络设计
4.新的高效分割解码器
一、相关工作
有关网络优化的工作有:1.SqueezeNet 大量使用1X1的卷积来减少网络参数。2.减少MAdds的工作有,a,MobileNetV1利用depthwise separable conv来提升计算效率。 b,MobileNetV2利用倒残差模块和线性模块。c.shuffleNet利用group con和channel shuffle操作来降低MAdds.c.CondenseNet在训练阶段学习group conv,并且在层与层之间保持稠密的连接以便特征的重复使用.d,shiftNet提出一种shift操作和point-wise conv交错的网络结构替代昂贵的空间卷积。3.量化4.知识蒸馏等操作。
二、网络搜索
使用NAs通过优化每一个网络模块进行全局网路搜索,然后使用NetAdapt搜索每一层的filters,
1.Nas搜索网络模块
2.NetAdapt 层级网络搜索
与Nas互补,搜索过程如下:
a. 初始的网络结构有Nas搜索得到
b. i) 生成大量的proposal,每个proposal代表结构的一个修改(修改要减少至少delta的延迟)
ii) 利用上一步预训练的模型,并且填充新的proposal结构,截断并且随机初始化丢失的权重,进行T step微调每一个proposal得到大概的精度估计
iii)根据一些度量方法选择最好的proposal
c. 迭代以前的步骤直到相应的目标延迟达到了
最大化公式,latency满足b.i。
该论文中使用了两种proposal:
1. 缩小扩展层的大小
2. 缩小所有模块中同样bottleneck 大小的bottleneck。
三、网络提升
除了网络搜索,还用dao几个成分进一步提升最终的网络模型,重新设计网络中开始和结尾的计算复杂的层,并且引入了非线性的h-swish,
这种结构计算更快,量化更友好。
1.重新设计计算复杂的层
a. MobileNetV2中的倒残差结构和相关变体使用1X1的卷积作为最后一层,目的是为了扩展到高维的特征空间,该层比较重要带来丰富的特征进行prediction,但是同时带来延迟。
为了降低延迟和保留高维的特征,论文将该层移动到最后的average pooling之后,该特征最后经过1X1的空间卷积而不是7X7的空间卷积。一旦该特征生成层的延迟减少了,前面的bottleneck projection层就不需要了。修改之前的网络与修改之后的网络如下:
b. 另外一个复杂的操作就是filters的初始化。目前大量的手机模型倾向于在3X3的卷积中搭配使用32 个filters来构建用来进行边缘检测。通常这些filters含有大量冗余,在此使用hard swish nonlinwarity,能够将filetrs降低到16,同时保留了之前的精度。
Nonlinearities:swish
swish的定义:,swish能够提升精度并且计算不复杂,而sigmnoid函数计算复杂,因此用下面两种方式进行处理。
1. 用piece-wise linear hard analog 代替sigmoid。同样的hard-swish为:
。
2. Large aqueeze-and-excite
we replace them all to fixed to be 1/4 of the number of channels in expansion layer.
四。MobileNetV3的定义:
MobileNetV3-large
MobileNetV3-small
五。实验结果