【论文泛读】轻量化之MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications(下)

简介: 【论文泛读】轻量化之MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications(下)

网络架构和训练 Network Structure and Training


MobileNet除了第一层是完全卷积之外,MobileNet结构是基于深度可分离卷积的。在图中定义了MobileNet体系结构。所有层后面都跟着一个Batch和ReLU非线性激活函数,但最后的全连接层除外,它没有非线性并将其输入softmax层进行分类。



dad7cff38d77f36ece2fa84cd2ec7820.png


Left: Standard convolutional layer with batchnorm and ReLU. Right: Depthwise Separable convolutions with Depthwise and Pointwise layers followed by batchnorm and ReLU.

并且在最后的平均池化将空间分辨率降低到1,将深度卷积和逐点卷积作为单独的层计算,MobileNet有28层。


9955e21c7b7457fe3e9832daa25b521d.png

在论文中,作者说,除了用深度可分离卷积来减少加法和乘法之外,还有一些有效的方法。比如系数矩阵比密集矩阵计算慢,在模型中几乎把所有的计算量放在了1x1的点卷积中,可以通过高度优化的矩阵乘法(GEMM)函数来实现。卷积通常由GEMM实现,但需要在内存中进行im2col的初始重新排序,以便将其映射到GEMM,并且1x1卷积还不需要进行重新排序,因为1x1得到的已经就是1维的了,可以直接用GEMM加速(GEMM是一种最优化的数值线性代数算法)。MobileNet花费95%的计算时间在1x1卷积中,其中也有75%的参数,其他几乎所有剩余的参数都在全连接层中,这可以从下图看出来。


be3bf64c6e3d279cf08d4a973bed06dc.png

作者是在TensorFlow中训练MobileNet模型,使用RMSprop进行异步梯度下降,类似于Inception V3。然而,与训练大模型相反,我们使用较少的正则化和数据增强技术,因为小模型的过拟合问题较少。在训练Mobike/net,我们发现在深度卷积上放置很少或没有权重衰减(weight decay)(也就是L2正则化)是很重要的,因为它们的参数是如此之少。对于下一节中的ImageNet基准测试,所有模型都使用相同的训练参数进行训练,而不考虑模型的大小。


宽度超参数 Width Multiplier: Thinner Models


虽然基本的MobileNet架构已经很小而且延迟很低,但是很多时候,特定的用例或应用程序可能需要模型更小和更快。为了构建这些更小和计算成本更低的模型,我们引入了一个非常简单的参数α,称为宽度因子。宽度因子的作用是在每一层上均匀地收缩网络大小。这里举个例子,对于我们输入通道为M MM的图片来说,我们会变成α M,并且输出也会变为α N ,其实本质上就是卷积核的个数变为原来α 倍所以相应的我们的计算量就会变成

image.png

 α ∈ ( 0 , 1 之间,一般会设为1,0.75,0.5和0.25来减小MobileNet V1网络。宽度因子的引入使得计算量减小了大约α 倍,并且这个乘法因子可以利用在所有模型中,这样可以对模型的精读、准确率和延迟做一个trade off权衡。


分辨率超参数 Resolution Multiplier: Reduced Representation


 第二个减小网络计算成本的超参数是分辨率超参数ρ ,这个超参数应用在输入和中间层,隐式地设置了输入的分辨率。所以总的来说,加上两个超参数后,深度可分离卷积的计算量为


image.png

  ρ ∈ ( 0 , 1 ]隐式地将网络的输入分辨率设置为224,192,160或128。同样的,ρ \rhoρ参数也同样的将计算量减小为原来的ρ 2 倍。


作者为了更好的描述α 、 ρ,给出了原始的MobileNet和加上超参数的MobileNet的参数,展示深度可分离卷积如何修改参数。其中下表中输入的特征图为14 x 14 x 512,利用3 x 3 的卷积核,输出为 14 x 14 x 512第一行显示的是完整卷积的结果,第二行是原始的深度可分离卷积,第三行和第四行分别是加入超参数的结果。


c68707b5529e4a6843587e5e2b7d76cc.png

512, N = 512, DF = 14.

从图中的结果,我们可以看出来,进行了深度可分离卷积后,参数几乎减小到了标准卷积的零头,计算量也减小了十多倍,并且我们也可以通过调整两个超参数进行权衡参数计算量和准确率之间的关系。


可能有人好奇怎么算的,我这里给出我计算的公式,其实都是上面的公式计算就得出来了,我试验过了,大家也可以自行计算

c9aaee8120dc41b08392b90ce10d1784.png

实验 Experiment


在这一节中,作者首先研究深度卷积的影响,以及通过减少网络宽度而不是层数来选择收缩。然后,我们展示了基于两个超参数(宽度一直和分辨率因子)减少网络的权衡,并将结果与一些流行的模型进行比较。然后我们研究MobileNets应用于许多不同的应用。


模型选择 Model Choices


首先作者将MobileNet与全卷积的MobileNet进行比较,在ImageNet上进行训练,准确率只减少了1%,但是计算量和参数却都大大降低了。


1e33c5139257792cb325c274d147db53.png

接下来作者就测试加了两个超参数的MobileNet模型,以此压缩模型。并且作者尝试将模型表中5层5x5x512卷积层去掉了,让模型更浅,但是得到的结果更差了,说明在一定程度上,深度也同样重要,让网络更薄比让网络更浅更有效,准确率多增加了3%。


5cb954e0bdd6e46daeb17b6e30f8e7d2.png


首先对宽度超参数进行实验,权衡不同宽度超参数α \alphaα上准确性、计算量和尺寸上的影响。会发现准确率下降的很平滑,直到模型太小了,也就是α = 0.25 \alpha = 的时候。


8c0e66dd7ccacb3acd620356bbc72419.png

然后对分辨率超参数进行实验,权衡不同分辨率超参数ρ \rhoρ上准确性、计算量和尺寸上的影响,准确率会随着分辨率平滑下降。


38448cad515ff0d0f5bbabca5317385f.png

下图还显示了ImageNet精度和16个模型的计算之间的权衡,也就是α ∈ 1 , 0.75 , 0.5 , 0.25,分辨率为∈ 224 , 196 , 160 , 128。可以看到结果是对数线性的,并且在α =0.25时有个跳跃


48df7734188e631296ffd52c61ffcde9.png



20bbafd89bae5e0e28caad770029e9db.png


并且还将完整的MobileNet与原始的GoogleNet和VGG16进行比较。MobileNet几乎和VGG16一样精确,但比VGG16小32倍,计算强度小27倍。它比GoogleNet更精确,而且体积更小,计算量少2.5倍以上。


29f73123079695b1eb8a439bad5b032d.png


除此之外,比较了一下α = 0.5 和分辨率为160 × 160 160 的MobileNet和AlexNet、Squeezenet。MobileNet比AlexNet精度提升了4%的同时,并且计算量只有为AlexNet的9.4%,虽然参数量是AlexNet的45倍。对于差不多参数的Squeezenet来说,准确率高的同时,计算量减小了22倍左右。


a1151c4aeddc427cc3e0dcb6645e54bf.png

细粒度图像分类 Fine Grained Recognition


作者训练MobileNet对Stanford Dogs数据集进行细粒度识别(也就是对不同的狗进行细分类,因为狗有很多品种,虽然都是狗但是可以细分为很多类)。我们使用嘈杂的网络数据预先训练一个细粒度的狗识别模型,然后在Stanford Dogs训练集上对模型进行微调MobileNet几乎可以实现最先进的结果,并且大大减少的计算和大小。


32c99c7d25102cf7eee07e5a8b369d5e.png

以图搜地 Large Scale Geolocalizaton


这个任务简单来说就是把确定照片在地球上的哪里拍摄的任务作为一个分类问题。该方法将地球划分为地理单元网格,作为目标类,在数百万张带有地理标记的照片上并训练卷积神经网络。PlaNet已经被证明能够成功地定位大量不同的照片,并优于Im2GPS(一种传统算法)。在相同的数据上使用MobileNet架构重新训练PlaNet。而基于Inception V3架构的完整PlaNet模型[有5200万个参数和57.4亿个多重添加。MobileNet模型只有1300万个参数,通常有300万个参数用于中间层,1000万个参数用于最后一层,58万的计算量。由下图可以得出,与PlaNet相比,MobileNet版本的性能只是略有下降,尽管它更加紧凑。此外,它的表现仍然远远超过Im2GPS。

49cae172991fc2aa955e6469c170e421.png


人脸属性识别 Face Attributes


MobileNet的另一个用法是使用未知或深奥的训练程序压缩大型系。在一个人脸属性分类任务中,作者展示了MobileNet和知识蒸馏之间的协同关系,这是一种用于深度网络的知识转移技术。(也就像一个老师教一个学生,一个大网络教一个小网络)从小表可以看出,基于mobilenet的分类器对激进的模型收缩具有弹性,它实现了与内部分类器相似的跨属性平均精度(平均AP),而只消耗1%的multi - add。

86c527badbfc4a31910e71ed8ec6bfc2.png


目标检测 Object Detection


在现代目标检测系统中,MobileNet也可以作为一个有效的基础网络。MobileNet比较了在Faster-RCNN和SSD框架下的VGG和Inception V2。在我们的实验中,SSD以300输入分辨率(SSD 300)进行评估,fast - rcnn与300和600输入分辨率(Faster-RCNN 300, Faster- RCNN 600)进行比较。Faster - RCNN模型评估每个图像的300个RPN推荐框。


对于这两个框架,MobileNet仅用一小部分的计算复杂性和模型大小就实现了与其他网络相当的结果。


3c207332826c4fcfa36723e0a7af84d9.png

aa75304caf8c460d9e1605b5117c6d46.png


Face Embeddings


Face Embeddings 是利用了GoogLeNet的FaceNet进行人脸的特征提取,进行人脸的识别,并且利用知识蒸馏的方法,


3aa4dec6fac14842b1f4384e82f53c07.png


总结 Conclusion


我们提出了一种新的基于深度可分离卷积的模型架构叫MobileNets。我们研究了导致有效模型的一些重要设计。然后,我们演示了如何使用宽度超参数和分辨率超参数来构建更小、更快的mobilenet,通过权衡合理数量的精度来减少大小和延迟。然后,我们将不同的mobilenet与流行的模型(VGG,ResNet等)进行比较,这些模型显示出了较好的尺寸、速度和准确性特征。最后,作者展示了MobileNet在应用于各种任务时的有效性。

相关文章
|
机器学习/深度学习 存储 人工智能
基于内容的图像检索系统设计与实现(1)
基于内容的图像检索系统设计与实现(1)
基于内容的图像检索系统设计与实现(1)
|
10月前
|
机器学习/深度学习 资源调度 算法
YOLOv11改进策略【损失函数篇】| 引入Soft-NMS,提升密集遮挡场景检测精度,包括GIoU-NMS、DIoU-NMS、CIoU-NMS、SIoU-NMS、 EIou-NMS
YOLOv11改进策略【损失函数篇】| 引入Soft-NMS,提升密集遮挡场景检测精度,包括GIoU-NMS、DIoU-NMS、CIoU-NMS、SIoU-NMS、 EIou-NMS
3762 6
|
JSON 算法 vr&ar
目标检测笔记(五):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等
本文介绍了如何使用COCO评估器通过Detectron2库对目标检测模型进行性能评估,生成coco_instances_results.json文件,并利用pycocotools解析该文件以计算AP、AR、MR和DR等关键指标。
1023 1
目标检测笔记(五):查看通过COCOEvaluator生成的coco_instances_results.json文件的详细检测信息,包含AP、AR、MR和DR等
|
人工智能 异构计算 Python
解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
586 1
解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
|
11月前
|
机器学习/深度学习 人工智能 算法
技术项目经理TPM的日常任务:职责侧重与工作内容
技术项目经理是技术驱动型行业中的关键角色,是技术与管理的桥梁,负责识别和解决技术风险,提升团队技术能力,保证技术方案的稳定性和安全性。
617 2
技术项目经理TPM的日常任务:职责侧重与工作内容
|
小程序
新闻电影资讯类小程序模板源码
新闻电影资讯类小程序模板源码
2328 5
|
机器学习/深度学习
【Python-Keras】keras.layers.Dense层的解析与使用
关于Python-Keras库中keras.layers.Dense层的解析与使用。
775 1
|
机器学习/深度学习 算法 算法框架/工具
|
关系型数据库 MySQL 数据库
MySQL:union all与union区别详解
MySQL:union all与union区别详解
393 0
|
存储 缓存 NoSQL
了解Redis,第一弹,什么是RedisRedis主要适用于分布式系统,用来用缓存,存储数据,在内存中存储那么为什么说是分布式呢?什么叫分布式什么是单机架构微服务架构微服务的本质
了解Redis,第一弹,什么是RedisRedis主要适用于分布式系统,用来用缓存,存储数据,在内存中存储那么为什么说是分布式呢?什么叫分布式什么是单机架构微服务架构微服务的本质