前 言
随着深度学习的火热,计算机视觉领域内的卷积神经网络模型也层出不穷。从1998年的LeNet,到2012年引爆深度学习热潮的AlexNet,再到后来2014年的VGG,2015年的ResNet,深度学习网络模型在图像处理中应用的效果越来越好。神经网络体积越来越大,结构越来越复杂,预测和训练需要的硬件资源也逐步增多,往往只能在高算力的服务器中运行深度学习神经网络模型。移动设备因硬件资源和算力的限制,很难运行复杂的深度学习网络模型。
![f688656022b60754c5c0caf94ea7e91b.png](https://img-blog.csdnimg.cn/img_convert/f688656022b60754c5c0caf94ea7e91b.png)
深度学习领域内也在努力促使神经网络向小型化发展。在保证模型准确率的同时体积更小,速度更快。到了2016年直至现在,业内提出了SqueezeNet、ShuffleNet、NasNet、MnasNet以及MobileNet等轻量级网络模型。这些模型使移动终端、嵌入式设备运行神经网络模型成为可能。而MobileNet在轻量级神经网络中较具代表性。
谷歌在2019年5月份推出了最新的MobileNetV3。新版MobileNet使用了更多新特性,使得MobileNet非常具有研究和分析意义,本文将对MobileNet进行详细解析。
MobileNet的优势
MobileNet网络拥有更小的体积,更少的计算量,更高的精度。在轻量级神经网络中拥有极大的优势。
1、更小的体积
![0baac0cc47f145ad5c7ec643837fc53f.png](https://img-blog.csdnimg.cn/img_convert/0baac0cc47f145ad5c7ec643837fc53f.png)
MobileNet相比经典的大型网络,参数量明显更少,参数量越少模型体积越小。
2、更少的计算量
![1fa1fd0e9521ff5a0fcb0dddbc0bc529.png](https://img-blog.csdnimg.cn/img_convert/1fa1fd0e9521ff5a0fcb0dddbc0bc529.png)
MobileNet优化网络结构使模型计算量成倍下降。
3、更高的准确率
![9611f5b6ec117d694ae9c33498ece994.png](https://img-blog.csdnimg.cn/img_convert/9611f5b6ec117d694ae9c33498ece994.png)
MobileNet凭借网络结构优化,在更少的参数及更少的计算量情况下,网络精度反而超过了部分大型神经网络。在最新的MobileNetV3-Large中,实现ImageNet数据集Top1准确率达到75.2%。
4、更快的速度
![26d20dedfbca6f5f6a7fb004e53eb5f7.png](https://img-blog.csdnimg.cn/img_convert/26d20dedfbca6f5f6a7fb004e53eb5f7.png)
使用Google Pixel-1手机测试,MobileNet各版本都能保持运行时间在120ms以下,最新版MobileNetV3-Large运行时间达到66ms,参数量和计算量更低的MobileNetV3-Small更是能达到22ms;GoogleNet运行速度约为250ms,而VGG-16由于一次性需要加载至内存的空间已超过500MB,手机系统会报内存溢出错误导致无法运行。
5、多种应用场景
MobileNet可以在移动终端实现众多的应用,包括目标检测,目标分类,人脸属性识别和人脸识别等。
![5d7da87c2f24715f97594965fded8339.png](https://img-blog.csdnimg.cn/img_convert/5d7da87c2f24715f97594965fded8339.png)
MobileNet各版本介绍
1、MobileNetV1网络结构
![41db0d0d50d6191e0e516ad64ba51fdb.png](https://img-blog.csdnimg.cn/img_convert/41db0d0d50d6191e0e516ad64ba51fdb.png)
- 整个网络不算平均池化层与softmax层,共28层;
- 在整个网络结构中步长为2的卷积较有特点,卷积的同时充当下采样的功能;
- 第一层之后的26层都为深度可分离卷积的重复卷积操作;
- 每一个卷积层(含常规卷积、深度卷积、逐点卷积)之后都紧跟着批规范化和ReLU激活函数;
- 最后一层全连接层不使用激活函数。
2、MobileNetV2网络结构
![d263e01fb23c56a55a9847900865d444.png](https://img-blog.csdnimg.cn/img_convert/d263e01fb23c56a55a9847900865d444.png)
MobileNetV2中主要引入线性瓶颈结构和反向残差结构。
MobileNetV2网络模型中有共有17个Bottleneck层(每个Bottleneck包含两个逐点卷积层和一个深度卷积层),一个标准卷积层(conv),两个逐点卷积层(pw conv),共计有54层可训练参数层。MobileNetV2中使用线性瓶颈(Linear Bottleneck)和反向残差(Inverted Residuals)结构优化了网络,使得网络层次更深了,但是模型体积更小,速度更快了。
3、MobileNetV3网络结构
![a8e4e5381bbb21ae91e870ab12767bd1.png](https://img-blog.csdnimg.cn/img_convert/a8e4e5381bbb21ae91e870ab12767bd1.png)
MobileNetV3分为Large和Small两个版本,Large版本适用于计算和存储性能较高的平台,Small版本适用于硬件性能较低的平台。
- Large版本共有15个bottleneck层,一个标准卷积层,三个逐点卷积层。
- Small版本共有12个bottleneck层,一个标准卷积层,两个逐点卷积层。
MobileNetV3中引入了5×5大小的深度卷积代替部分3×3的深度卷积。引入Squeeze-and-excitation(SE)模块和h-swish(HS)激活函数以提高模型精度。结尾两层逐点卷积不使用批规范化(Batch Norm),MobileNetV3结构图中使用NBN标识。
![efa6f5d84fb97b81eb29f75463f3cf53.png](https://img-blog.csdnimg.cn/img_convert/efa6f5d84fb97b81eb29f75463f3cf53.png)
(图片来源https://arxiv.org/pdf/1905.02244.pdf)
网络结构上相对于MobileNetV2的结尾部分做了优化,去除三个高阶层,如上图所示。去除后减少了计算量和参数量,但是模型的精度并没有损失。
值得一提的是,不论是Large还是Small版本,都是使用神经架构搜索(NAS)技术生成的网络结构。
4、MobileNet各版本特性
MobileNet实现计算量减小、参数量减少的同时保证了较高的准确率,这和其拥有的特性息息相关:
MobileNetV1提出的特性
![d61b705dcfd35c55eb74a6dd024a71e4.png](https://img-blog.csdnimg.cn/img_convert/d61b705dcfd35c55eb74a6dd024a71e4.png)
MobileNetV2提出的特性
![daeb5c6cd5794186cc29db58eca88077.png](https://img-blog.csdnimg.cn/img_convert/daeb5c6cd5794186cc29db58eca88077.png)
MobileNetV3提出的特性
![cd4203d846de3b348d6fcef658fca18a.png](https://img-blog.csdnimg.cn/img_convert/cd4203d846de3b348d6fcef658fca18a.png)
MobileNet各个版本拥有的特性汇总
![63cf34d9d8bc3f10ae15ba5a93e8e4f3.png](https://img-blog.csdnimg.cn/img_convert/63cf34d9d8bc3f10ae15ba5a93e8e4f3.png)
下文将对上表中的各个特性详细阐述。
MobileNet的特性详解
1、深度可分离卷积
从MobileNetV1开始,到V2、V3的线性瓶颈结构都大量使用了深度可分离卷积。
深度可分离卷积(Depthwise Separable Convolution)是一种卷积结构。它是由一层深度卷积(Depthwise convolution)与一层逐点卷积(Pointwise Convolution)组合而成的,每一层卷积之后都紧跟着批规范化和ReLU激活函数。跟标准卷积的区别就是精度基本不变的情况下,参数与计算量都明显减少。
![64bfec5ef2f095dd8b7204a2418d4c0e.png](https://img-blog.csdnimg.cn/img_convert/64bfec5ef2f095dd8b7204a2418d4c0e.png)
深度卷积