重磅!MobileNetV3 来了!

在现代深度学习算法研究中,通用的骨干网+特定任务网络head成为一种标准的设计模式。比如VGG + 检测Head,或者inception + 分割Head。

在移动端部署深度卷积网络,无论什么视觉任务,选择高精度的计算量少和参数少的骨干网是必经之路。这其中谷歌家去年发布的 MobileNetV2是首选。

在MobileNetV2论文发布时隔一年4个月后,MobileNetV3 来了!

这必将引起移动端网络升级的狂潮,让我们一起来看看这次又有什么黑科技!

昨天谷歌在arXiv上公布的论文《Searching for MobileNetV3》,详细介绍了MobileNetV3的设计思想和网络结构。

先来说下结论:MobileNetV3 没有引入新的 Block,题目中Searching已经道尽该网络的设计哲学:神经架构搜索

研究人员公布了 MobileNetV3 有两个版本,MobileNetV3-Small 与 MobileNetV3-Large 分别对应对计算和存储要求低和高的版本。

下图分别是MobileNetV3两个版本与其他轻量级网络在Pixel 1 手机上的计算延迟与ImageNet分类精度的比较。可见MobileNetV3 取得了显著的比较优势。

下图是ImageNet分类精度、MADD计算量、模型大小的比较,MobileNetV3依然是最优秀的。

高效的网络构建模块

前面已经说过,MobileNetV3 是神经架构搜索得到的模型,其内部使用的模块继承自:

1. MobileNetV1 模型引入的深度可分离卷积(depthwise separable convolutions);

2. MobileNetV2 模型引入的具有线性瓶颈的倒残差结构(the inverted residual with linear bottleneck);

3. MnasNet 模型引入的基于squeeze and excitation结构的轻量级注意力模型。

这些被证明行之有效的用于移动端网络设计的模块是搭建MobileNetV3的积木。

互补搜索

在网络结构搜索中,作者结合两种技术:资源受限的NAS(platform-aware NAS)与NetAdapt,前者用于在计算和参数量受限的前提下搜索网络的各个模块,所以称之为模块级的搜索(Block-wise Search) ,后者用于对各个模块确定之后网络层的微调。

这两项技术分别来自论文:

M. Tan, B. Chen, R. Pang, V. Vasudevan, and Q. V. Le. Mnasnet: Platform-aware neural architecture search for mobile. CoRR, abs/1807.11626, 2018. 

T. Yang, A. G. Howard, B. Chen, X. Zhang, A. Go, M. Sandler, V. Sze, and H. Adam. Netadapt: Platform-aware neural network adaptation for mobile applications. In ECCV, 2018

前者相当于整体结构搜索,后者相当于局部搜索,两者互为补充。

到这里,我们还没看到算法研究人员的工作在哪里(启动训练按钮?)

继续往下看。

网络改进

作者们发现MobileNetV2 网络端部最后阶段的计算量很大,重新设计了这一部分,如下图:

这样做并不会造成精度损失。

另外,作者发现一种新出的激活函数swish x 能有效改进网络精度:

但就是计算量太大了。

于是作者对这个函数进行了数值近似:

事实证明,这个近似很有效:


从图形上看出,这两个函数的确很接近。

MobileNetV3 网络结构!

这就是今天的主角了!

使用上述搜索机制和网络改进,最终谷歌得到的模型是这样(分别是MobileNetV3-Large和MobileNetV3-Small):


内部各个模块的类型和参数均已列出。

谷歌没有公布用了多少时间搜索训练。

目前谷歌还没有公布MobileNetV3的预训练模型,不过读者可以按照上述结构构建网络在ImageNet上训练得到权重

实验结果

作者使用上述网络在分类、目标检测语义分割三个任务中验证了MobileNetV3的优势:在计算量小、参数少的前提下,相比其他轻量级网络,依然在在三个任务重取得了最好的成绩。

下图是ImageNet分类Top-1精度、计算量、参数量及在Pixel系列手机实验的结果:


下图是与前一代MobieNetV2的比较结果:

这是使用其构筑的SSDLite目标检测算法在MS COCO数据集上的比较结果:

V3-Large取得了最高的精度,V3-Small 取得了V2近似的精度,速度却快很多。

另外作者基于MobieNetV3设计了新的轻量级语义分割模型Lite R-ASPP:

下图是使用上述分割算法在CItyScapes验证集上的结果比较:

精度提升不明显,速度有显著提升。

下图是与其他轻量级语义分割算法的比较,MobileNetV3取得了不小的优势。

总结一下:

MobileNetV3-Large在ImageNet分类上的准确度与MobileNetV2相比提高了3.2%,同时延迟降低了15%。

MobileNetV3-large 用于目标检测,在COCO数据集上检测精度与MobileNetV2大致相同,但速度提高了25%。

在Cityscapes语义分割任务中,新设计的模型MobileNetV3-Large LR-ASPP 与 MobileNetV2 R-ASPP分割精度近似,但快30%。


期待谷歌早日将其预训练模型开源~


神经架构搜索火了,但感觉是不是算法设计也越来越乏味了。。。

欢迎发表你的看法。

我爱计算机视觉
我爱计算机视觉

关注计算机视觉与机器学习技术的最前沿,“有价值有深度”,分享开源技术与最新论文解读,传播计算机视觉与机器学习技术的业内最佳实践。

理论神经网络架构
2
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

局部搜索技术

在计算机科学中,局部搜索是解决最优化问题的一种元启发式算法。局部搜索从一个初始解出发,然后搜索解的邻域,如有更优的解则移动至该解并继续执行搜索,否则返回当前解。局部搜索的优点是简单、灵活及易于实现,缺点是容易陷入局部最优且解的质量与初始解和邻域的结构密切相关。常见的改进方法有模拟退火、禁忌搜索等。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

VGG技术

2014年,牛津大学提出了另一种深度卷积网络VGG-Net,它相比于AlexNet有更小的卷积核和更深的层级。AlexNet前面几层用了11×11和5×5的卷积核以在图像上获取更大的感受野,而VGG采用更小的卷积核与更深的网络提升参数效率。VGG-Net 的泛化性能较好,常用于图像特征的抽取目标检测候选框生成等。VGG最大的问题就在于参数数量,VGG-19基本上是参数量最多的卷积网络架构。VGG-Net的参数主要出现在后面两个全连接层,每一层都有4096个神经元,可想而至这之间的参数会有多么庞大。

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

SSD技术

一种计算机视觉模型。论文发表于 2015 年(Wei Liu et al.)

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

语义分割技术

语义分割,简单来说就是给定一张图片,对图片中的每一个像素点进行分类。图像语义分割是AI领域中一个重要的分支,是机器视觉技术中关于图像理解的重要一环。

目标检测技术

一般目标检测(generic object detection)的目标是根据大量预定义的类别在自然图像中确定目标实例的位置,这是计算机视觉领域最基本和最有挑战性的问题之一。近些年兴起的深度学习技术是一种可从数据中直接学习特征表示的强大方法,并已经为一般目标检测领域带来了显著的突破性进展。

推荐文章
暂无评论
暂无评论~