这篇文章在MobileNet v2的基础上提出了一个新型的轻量级网络结构MobileNet v3。其是用NAS与NetAdapt两个算法搜索出来的。这篇文章针对MobileNet v3给出了两个版本的实现MobileNetV3-Large和MobileNetV3-Small,分别应对资源消耗高低的场景。这两个网络结构成功用于目标检测与语义分割任务中。对于语义分割任务文章提出了一个新的高效解码器LR-ASPP(Lite Reduced Atrous Spatial Pyramid Pooling)。相对MobileNet v2这篇文章给出的两种网络结构分别提升了4.6%与3.2%,速度上快了5%与15%。在检测与分割任务上使用large的版本比MobileNet v2在相同精度下快了25%和30
文章的主要工作内容:
- 1)使用互补的网络搜索方法搜索得到轻量级的网络;
- 2)采用了新的非线性激活层h-swish;
- 3)一个新型的高效网络设计;
- 4)新型的语义分割解码器;
文章提出的网络性能:
2. 网络设计
2.1 高效的网络构建模块
前面内容已经提到,MobileNetV3 是神经架构搜索得到的模型,其内部使用的模块继承自:
1)MobileNetV1 模型引入的深度可分离卷积(depthwise separable convolutions);
2)MobileNetV2 模型引入的具有线性瓶颈的倒残差结构(the inverted residual with linear bottleneck),其结构见下图3所示;
MnasNet 模型引入的基于squeeze and excitation结构的轻量级注意力模型,这篇文章引入的位置与原论文中的位置并不相同,其引入的结构见图4所示。
这些被证明行之有效的用于移动端网络设计的模块是搭建MobileNetV3的积木。
网络(互补)搜索
在网络结构搜索中,作者结合两种技术:资源受限的NAS(platform-aware NAS)与NetAdapt,前者用于在计算和参数量受限的前提下搜索网络的各个模块,所以称之为模块级的搜索(Block-wise Search) ,后者用于对各个模块确定之后网络层的微调,主要是确定每层的filter数量(Layer-wise Search)。
2.3 网络优化
除了使用搜索算法搜索网络的整体结构之外,文章还从如下的两个方面进行改进:重新设计网络开始和结束位置处开销大的层;改进swish激活函数,使其能够快速高效计算。
2.3.1 重新设计开销大层
文中指出网络的开端和结尾存在开销较大的层,这是在现有的网络搜索空间中无法找到的,所以这里对其进行了手工改进。
文中对网络的最后一个stage进行了改进,作者首先移动average pooling层,使得最后特征的集合分辨率得以降低到1x1。由于特征生成层的cost被减少,之前的bottleneck也不再需要了,这就使得可以移除之前bottleneck中的层进一步减少计算量(带来15%的时间节省,10ms),从新得到的最后stage结构如下所示:
对于网络的头部一般的channel是32,这里使用改进的hard swish与channel为16的卷积去替换,从而进一步减少3ms。