date: 2019/07/24


MobileNet自2017年发布v1以来就被广泛应用在移动端,随后又分别在2018年和2019年发布了v2和v3。去年《MobileNets v1模型解析 | Hey~YaHei!》一文中已经讨论过v1的主要贡献,趁着前阵子(已经是两个月前了其实)刚刚发布v3,不妨把整个MobileNet家族放在一起稍作讨论。


MobileNet v1


论文:《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications(2017)


主要贡献


  1. 用深度可分离卷积(DW卷积提取特征+点卷积组合特征)取代传统的卷积,大幅提升特征提取的效率
  2. 进而利用深度可分离卷积设计出高效的直筒式网络MobileNet


深度向卷及分解

模型结构

此处为语雀文档,点击链接查看:https://www.yuque.com/yahei/hey-yahei/mobilenetv1


MobileNet v2


论文:《MobileNetV2: Inverted Residuals and Linear Bottlenecks(2018)


主要贡献


  1. 取消通道收缩时的激活层:通道收缩时使用非线性激活会带来信息丢失
  2. 将relu改为relu6以限制激活的输出范围
  3. 引入反残差结构:MobileNet本身通道数量较少,引入“通道扩增-特征提取-通道收缩”的反残差结构有助于提高特征提取的能力


通道收缩时使用非线性激活带来信息丢失


用一个随机矩阵T,将一个初始的二维螺旋映射到一个n维空间后,经过一个非激活单元ReLU,再由反映射回二维空间。可以观察到,当n比较小(如n=2,3)时,反映射后的图形已经完全不像一个螺旋,出现明显的信息丢失:而当n比较大时,由于足够的冗余信息的存在,可以有效抵抗非线性单元带来的信息丢失:

relu_information_loss.jpg


反残差结构


v2参考了resnet,引入了shortcut设计,但不同的是:



inverted_residual.jpg

inverted_residual2.jpg


同时可以看到,与残差结构不同,反残差结构在elt+的输入都是通道扩增前的小通道特征图,可以说对带宽是比较友好的。

对于通道扩增的倍数,论文里建议是取5-10,如MobileNet v2里取t=6。


模型结构


MobieleNet_v2.jpg


MobileNet v3


论文:《Searching for MobileNetV3(2019)


主要贡献


  1. 用NAS搜索整体的网络架构
  2. 用NetAdapt搜索合适的网络宽度
  3. 引入注意力机制的SE模块
  4. 引入h-swish激活函数


网络搜索


正如论文标题所示,MobileNet v3的结构主要是通过Network Architecture Search(NAS)和NetAdapt搜索出来的。不过也有手工调整的部分,比如最后一个stage,作者将全局平均池化提前,并取消其中繁冗的特征提取、通道收缩过程,从而进一步提高的模型的效率。

v3_last_stage.jpg


注意力机制:SE模块


v3引入了《Squeeze-and-Excitation Networks(2017)》的SE模块,通过全连接层对全局平均池化后的特征图进行通道重要性的评估,并将权重应用到特征图的通道上。

v3_block.jpg


h-swish激活函数


Sigmoid-weighted linear units for neural network function approximation in reinforcement learning(2017)》提出了新型激活函数swish并取得不错的效果——

其中为sigmoid函数,


不过sigmoid函数的指数运算终究太麻烦了,于是v3提出了hard-swish,通过分段函数ReLU6和相应的线性变换来近似sigmoid函数:


sigmoid和h-sigmoid、swish和h-swish的比较如下

h-swish.jpg


作者发现,


  1. 近似版本的h-swish能起到跟swish十分接近的作用
  2. h-swish无论在软件还是硬件层面都非常容易实现,而且解决了量化网络时sigmoid的近似实现带来的数值精度损失问题


模型结构


左图为large版本,右图为small版本——

MobileNet_v3.jpg


  1. 是否使用SE是platform-aware NAS权衡速度和精度之后做出的选择
  2. 由于h-swish的速度比relu慢,而浅层的特征图比较大,所以网络的浅层更倾向于更快的relu,只有在深层使用h-swish;不过第一层卷积的通道数比较少,再加上这里h-swish替代relu有比较好的效果,所以v3还是倾向于第一层卷积依旧使用h-swish
  3. 尽管3x3卷积已经成为手工设计网络主流,但似乎5x5卷积也有用武之地


FD-MobileNet


论文:《FD-MobileNet: Improved MobileNet with a Fast Downsampling Strategy(2018)


Fast-Downsample MobileNet是MobileNet-v1的一个变种,采用快速下采样策略(提前下采样)来减小特征图尺寸,并增大网络宽度提高模型的特征提取能力,FD-MobileNet1.0和MobileNet0.5的比较——

FD-MobileNet.jpg


ImageNet上的实验结果


MobileNet v1


v1_experiment.jpg


MobileNet v2


v2_experiment.jpg


MobileNet v3


v3_experiment.jpg


FD-MobileNet


FD_experiment.jpg