MobileNets

MobileNet是专用于移动和嵌入式视觉应用的卷积神经网络,是基于一个流线型的架构,它使用深度可分离的卷积来构建轻量级的深层神经网络。通过引入两个简单的全局超参数,MobileNet在延迟度和准确度之间有效地进行平衡。MobileNets在广泛的应用场景中有效,包括物体检测、细粒度分类、人脸属性和大规模地理定位。

来源:arXiv
简介

MobileNets的是一个用于移动和嵌入式视觉应用的高效模型。 MobileNets是基于一个流线型的架构,它使用深度可分离的卷积来构建轻量级的深层神经网络。该模型引入两个简单的全局超参数,在延迟度和准确度之间有效地进行平衡。这两个超参数允许模型构建者根据问题的约束条件,为其应用选择合适大小的模型。作者进行了资源和精度权衡的广泛实验,与ImageNet分类上的其他流行的网络模型相比,MobileNets表现出很强的性能。MobileNets在广泛的应用场景中的有效性,包括物体检测,细粒度分类,人脸属性和大规模地理定位。

image.png 随着深度学习的发展,卷积神经网络变得越来越普遍。当前发展的总体趋势,是通过更深和更复杂的网络来得到更高的精度,但是这种网络往往在模型大小和运行速度上没多大优势。一些嵌入式平台上的应用比如机器人和自动驾驶,它们的硬件资源有限,就十分需要一种轻量级、低延迟(同时精度尚可接受)的网络模型,这就是MobileNets的主要工作。

在建立小型和有效的神经网络上,已经有了一些工作,比如 SqueezeNet,Google Inception,Flattened network等等。大概分为压缩预训练模型和直接训练小型网络两种。MobileNets主要关注优化延迟,同时兼顾模型大小。

MobileNets模型结构

深度可分解卷积

MobileNets模型基于深度可分解的卷积,它可以将标准卷积分解成一个深度卷积和一个点卷积(1 × 1卷积核)。深度卷积将每个卷积核应用到每一个通道,而1 × 1卷积用来组合通道卷积的输出。论文《MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications》也证明,这种分解可以有效减少计算量,降低模型大小。图2 说明了标准卷积是如何进行分解的。

Image.jpg直观上来看,这种分解在效果上是等价的。比如,把上图的代号化为实际的数字,输入图片维度是11 × 11 × 3,标准卷积为3 × 3 × 3 ×16(假设stride为2,padding为1),那么可以得到输出为6 × 6 × 16的输出结果。现在输入图片不变,先通过一个维度是3 × 3 × 1 × 3的深度卷积(输入是3通道,这里有3个卷积核,对应着进行计算,理解成for循环),得到6 × 6 × 3的中间输出,然后再通过一个维度是1 × 1 × 3 ×16的1 ×1卷积,同样得到输出为6 × 6 × 16。

首先是标准卷积,假定输入F的维度是 D_F×D_F×M ,经过标准卷积核K得到输出G的维度 D_G×D_G×N,卷积核参数量表示为 D_K×D_K×M×N 。如果计算代价也用数量表示,应该为 D_K×D_K×M×N×D_F×D_F 。

现在将卷积核进行分解,那么按照上述计算公式,可得深度卷积的计算代价为 D_K×D_K×M×D_F×D_F ,点卷积的计算代价为 M×N×D_F×D_F 。

将二者进行比较,可得:

Image.jpg

MobileNets使用了大量的3 × 3的卷积核,极大地减少了计算量(1/8到1/9之间),同时准确率下降的很少。

模型结构和训练

MobileNets结构建立在上述深度可分解卷积中(只有第一层是标准卷积)。该网络允许算法探索网络拓扑,找到一个适合的良好网络。其具体架构在表1说明。除了最后的全连接层,所有层后面跟了batchnorm和ReLU,最终输入到softmax进行分类。图3对比了标准卷积和分解卷积的结构,二者都附带了BN和ReLU层。按照原文的计算方法,MobileNets总共28层(1 + 2 × 13 + 1 = 28)。

Image.jpgImage.jpg MobileNet将95%的计算时间用于有75%的参数的1×1卷积,在论文中,采用tensorflow框架进行训练。

Image.jpg

宽度乘数

这里介绍模型的第一个超参数,即宽度乘数 α。为了构建更小和更少计算量的网络,作者引入了宽度乘数 αα ,作用是改变输入输出通道数,减少特征图数量,让网络变瘦。在 α 参数作用下,MobileNets某一层的计算量为:

D_K×D_K×\alphaM×D_F×D_F+\alphaM×\alphaN×D_F×D_F

Image.jpg

其中,α 取值是0~1,应用宽度乘数可以进一步减少计算量,大约有 α_2 的优化空间。

分辨率乘数

第二个超参数是分辨率乘数 ρρ ,分辨率乘数用来改变输入数据层的分辨率,同样也能减少参数。在 α 和 ρ共同作用下,MobileNets某一层的计算量为:


D_K×D_K×\alphaM×\rhoD_F×\rhoD_F+\alphaM×\alphaN×\rhoD_F×\rhoD_F

Image.jpg

其中,ρ 是隐式参数,ρ 如果为{1,6/7,5/7,4/7},则对应输入分辨率为{224,192,160,128},ρ 参数的优化空间同样是 ρ_2 左右。 表3可以看出两个超参数在减少网络参数的上的作用。

Image.jpg【出处:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications; URL: https://arxiv.org/abs/1704.04861  

发展历史

描述

深度学习是一种功能十分多样和强大的技术,但是运行神经网络对计算能力、能耗及磁盘空间要求甚高。这对于在具有大型硬盘和多个 GPU 的服务器上运行的云应用来说一般不是问题。

不幸的是,在移动设备上运行神经网络并非易事。事实上,尽管智能手机的功能越来越强大,它们的计算能力、电池寿命及可用的磁盘空间依然十分有限,特别是那些非常依赖轻便性的应用。把应用做得轻便可以加快下载速度,减少更新,并且延长电池寿命,而这些都是用户迫切需要的。

总体趋势是构建更深入,更复杂的网络,以实现更高的准确度。然而,这些提高准确度的进步并不一定使网络在尺寸和速度方面更有效。在许多现实世界的应用中,例如机器人,自动驾驶汽车和增强现实,需要在计算受限的平台上及时地执行识别任务。

在最近的文献中,人们对建立小而有效的神经网络越来越感兴趣,例如:《Flattened convolutional neural networks for feedforward acceleration》;《Squeezenet: Alexnet-level accuracy with 50x fewer parameters and¡ 1mb model size》;《Xnornet: Imagenet classification using binary convolutional neural networks.》《Factorized convolutional neural networks.》《Quantized convolutional neural networks for mobile devices.》。许多不同的方法通常可以分为压缩预训练网络或直接训练小网络。

MobileNets主要专注于优化延迟,但也会产生小型网络。小型网络上的许多论文只关注大小但不考虑速度。SqueezeNet,Google Inception,Flattened network等等。大概分为压缩预训练模型和直接训练小型网络两种。MobileNets主要关注优化延迟,同时兼顾模型大小,不像有些模型虽然参数少,但是也慢的可以。

MobileNets主要由最初在《Rigid-motion scattering for image classification.》中引入的深度可分离卷积构建,随后用于Inception模型《Batch normalization: Accelerating deep network training by reducing internal covariate shift》,以减少前几层中的计算。扁平化网络《Flattened convolutional neural networks for feedforward acceleration.》利用完全分解的卷积构建网络,并展示了极其分解网络的潜力。Factorized Networks 《Factorized convolutional neural networks.》引入了类似的因式化卷积以及拓扑连接的使用。

随后,Xception网络《Xception: Deep learning with depthwise separable convolutions.》演示了如何扩展深度可分离滤波器以执行Inception V3网络。

另一个小型网络是Squeezenet 《Squeezenet: Alexnet-level accuracy with 50x fewer parameters and 1mb model size》,它使用bottleneck approach设计一个非常小的网络。其他减少的计算网络包括结构化变换网络《Structured transforms for small-footprint deep learning.》和《Deep fried convnets》。获得小型网络的另一种方法是缩减,分解或压缩预训练网络。如压缩《Quantized convolutional neural networks for mobile devices.》,散列《Compressing neural networks with the hashing trick.》,并且在文献《Deep compression: Compressing deep neural network with pruning, trained quantization and huffman coding.》中提出了修剪,矢量量化和霍夫曼编码。 另外,已经提出了各种因子来加速预训练网络《Speeding-up convolutional neural networks using fine-tuned cp-decomposition.》。 培养小型网络的另一种方法是distillation(提取)《Distilling the knowledge in a neural network.》,它是在神经网络中提取知识。

【出处:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications; URL: https://arxiv.org/abs/1704.04861  

2018,谷歌发布MobileNetV2:可做语义分割的下一代移动端计算机视觉架构。其在多任务和基准以及不同模型大小的范围上进一步刷新了移动端模型的当前最佳性能。MobileNetV2 架构基于反向残差结构,其中残差块的输入和输出是较短的瓶颈层,这与在输入中使用扩展表征的传统残差模型正相反。MobileNetV2 使用轻量级深度卷积过滤中间扩展层的特征。MobileNetV2 允许将输入/输出域与转换的表现性分开,从而为未来的分析提供一个简便的框架。并在 ImageNet 分类、COCO 目标检测、VOC 图像分割上测试了 MobileNetV2 的性能,同时也评估准确度、operations 数量(通过 MAdd 测量)以及参数量之间的权衡。

【机器之心: 谷歌发布MobileNetV2:可做语义分割的下一代移动端计算机视觉架构  】

主要事件

年份事件相关论文/Reference
2012ALEX等人提出ALEXNETKrizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). Imagenet classification with deep convolutional neural networks. In Advances in neural information processing systems (pp. 1097-1105).
2014Jin, J., Dundar, A., & Culurciello, E.提出flattened networkJin, J., Dundar, A., & Culurciello, E. (2014). Flattened convolutional neural networks for feedforward acceleration. arXiv preprint arXiv:1412.5474.
2016Iandola, F. N., Han, S., Moskewicz, M. W.等人提出SqueezenetIandola, F. N., Han, S., Moskewicz, M. W., Ashraf, K., Dally, W. J., & Keutzer, K. (2016). Squeezenet: Alexnet-level accuracy with 50x fewer parameters and< 0.5 mb model size. arXiv preprint arXiv:1602.07360.
2017Chollet, F.提出xceptionChollet, F. (2017). Xception: Deep learning with depthwise separable convolutions. arXiv preprint, 1610-02357.
2017Howard, A. G., Zhu, M.,等人提出mobilenetsHoward, A. G., Zhu, M., Chen, B., Kalenichenko, D., Wang, W., Weyand, T., ... & Adam, H. (2017). Mobilenets: Efficient convolutional neural networks for mobile vision applications. arXiv preprint arXiv:1704.04861.
2018谷歌发布MobileNetV2:可做语义分割的下一代移动端计算机视觉架构Sandler, M., Howard, A., Zhu, M., Zhmoginov, A., & Chen, L. C. (2018). MobileNetV2: Inverted Residuals and Linear Bottlenecks. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (pp. 4510-4520).

3. 发展分析

瓶颈

不管对什么网络来说,speed/memory/accuracy 之间的平衡一直是被关注的话题。在这里,mobile nets用尽管其他性能提高,但是准确率也有略微下降。并且MobileNetV1在移动视觉识别技术,包括分类、目标检测和语义分割还有待提升。

未来发展方向

而有些时候,这些协调工作speed/memory/accuracy 是根据具体场景动态变化的,如何在作出在合适的场景作出决策也是一个可以考虑的问题。

运行深度神经网络对计算能力、能耗及磁盘空间要求甚高,智能手机的计算资源十分有限,需要多种优化才能高效运行深度学习应用。如何在移动设备的各种指标之间取得平衡,在避免大幅度降低准确性的前提下构造更加轻便的神经网络,使得在移动设备上快速、准确地运行神经网络成为大家研究的热点。

【机器之心:极致的优化:智能手机是如何处理大型神经网络的

Contributor: Ruiying Cai

相关人物
Menglong Zhu
Menglong Zhu
François Chollet
François Chollet
Alex Krizhevsky
Alex Krizhevsky
简介
相关人物