研究人员利用神经架构搜索的方法得到了MobileNetV3网络。MobileNetV3包含两个版本MobileNetV3-Small与MobileNetV3-Large,别对应性能和存储量不同的场景。该网络相较于MobileNet前两个版本无论在计算延迟性上还是在计算精度上,都有较为明显的优势。
论文地址:
https://arxiv.org/abs/1905.02244
MobileNetV3性能与精度对比
Pixel 1手机上测试延迟与top-1 ImageNet准确度之间的权衡。所有模型都使用输入分辨率224。V3 large和V3 small使用乘数0.75,1和1.25来显示最佳边界。MobileNetV3优势明显。
MAdds和top-1准确度之间的权衡。这允许比较针对不同硬件或软件框架的模型。所有MobileNetV3都用于输入分辨率224并使用0.35,0.5,0.75,1和1.25倍系数。MobileNetV3优势明显。
搜索模型基础模块
MobileNetV3是在从多个模块搜索而来的,这些模块源自于多个网络结构。作者使用这些模块来组合构建网络结构,以便构建最有效的模型。
1、从MobileNetV1引入深度可分离卷积(Depthwise separable convolutions),深度可分离卷积通过将空间滤波与特征生成机制分离来有效地分解传统卷积。
2、从MobileNetV2引入线性瓶颈(linear bottleneck)和倒置残差结构(inverted residual structure)。以通过利用问题的低秩性质来制造更高效的层结构。
3、从MnasNet引入基于挤压和激发的轻量级注意模块到瓶颈结构中来。该模块放置在扩展中的深度滤波器之后,以便放大注意力特征。
搜索方式
网络搜索已经证明它是发现和优化网络架构的一个非常强大的工具。对于MobileNetV3,作者使用platform-aware NAS通过优化每个网络块来搜索全局网络结构。然后,作者使用NetAdapt算法在每层中搜索过滤器的数量。前者是整体搜索,后者是局部搜索。它们是互补的,可以组合起来有效地找到给定硬件平台的优化模型。
网络改进
重新设计网络层。如下图所示,优化了网络后端的部分,这样能够在不损失精度的前提下节省计算成本。
作者引入一种新的激活函数swish作为ReLU的替代品,该激活函数可以显著提升神经网络的准确性。该公式定义为:
虽然这种非线性提高了准确性,但它在嵌入式环境中具很高的成本,因为在移动设备上计算S形函数要消耗大量资源。作者以两种方式处理这个问题:
1、作者用它的分段线性硬模拟代替sigmoid函数。细微差别是作者使用ReLU6而不是自定义剪切常量。同样,swish的hard版本也变成了:
Hard版本的损失函数与原函数在外形上比较接近:
经测试,改进的激活函数很有效。
2、随着作者深入探究网络,应用非线性激活函数的成本会降低,因为每次分辨率下降时,每层激活内存通常会减半。作者发现只有在更深层次使用它们才能实现大部分益处。因此,在架构中,作者只在模型的后半部分使用h-swish。即使使用这些优化,h-swish仍然会引入一些延迟成本。然而,对准确性和延迟的影响是积极的,它为进一步的软件优化提供了一个场所:一旦平滑的sigmoid被分段线性函数取代,大部分开销都在内存访问中,这可能是通过将非线性与前一层融合来消除。
实验结果
扫码识别关注,获取更多论文解读