【论文泛读】轻量化之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在应用于各种任务时的有效性。

相关文章
|
12天前
|
机器学习/深度学习 移动开发 算法
【博士每天一篇文献-模型】Deep learning incorporating biologically inspired neural dynamics and in memory
本文介绍了一种结合生物学启发的神经动力学和内存计算的深度学习方法,提出了脉冲神经单元(SNU),该单元融合了脉冲神经网络的时间动力学和人工神经网络的计算能力,通过实验分析显示,在手写数字识别任务中,基于SNU的网络达到了与循环神经网络相似或更高的准确性。
8 1
【博士每天一篇文献-模型】Deep learning incorporating biologically inspired neural dynamics and in memory
|
11天前
|
机器学习/深度学习 算法 调度
【博士每天一篇文献-算法】Neurogenesis Dynamics-inspired Spiking Neural Network Training Acceleration
NDSNN(Neurogenesis Dynamics-inspired Spiking Neural Network)是一种受神经发生动态启发的脉冲神经网络训练加速框架,通过动态稀疏性训练和新的丢弃与生长策略,有效减少神经元连接数量,降低训练内存占用并提高效率,同时保持高准确性。
16 3
|
12天前
|
机器学习/深度学习 存储 人工智能
【博士每天一篇文献-综述】Brain-inspired learning in artificial neural networks a review
这篇综述论文探讨了如何将生物学机制整合到人工神经网络中,以提升网络性能,并讨论了这些整合带来的潜在优势和挑战。
17 5
|
3月前
|
Python
[Knowledge Distillation]论文分析:Distilling the Knowledge in a Neural Network
[Knowledge Distillation]论文分析:Distilling the Knowledge in a Neural Network
24 1
|
9月前
|
机器学习/深度学习 算法 数据处理
Stanford 机器学习练习 Part 3 Neural Networks: Representation
从神经网络开始,感觉自己慢慢跟不上课程的节奏了,一些代码好多参考了别人的代码,而且,让我现在单独写也不一定写的出来了。学习就是一件慢慢积累的过程,两年前我学算法的时候,好多算法都完全看不懂,但后来,看的多了,做的多了,有一天就茅塞顿开。所有的困难都是一时的,只要坚持下去,一切问题都会解决的。没忍住发了点鸡汤文。
28 0
|
机器学习/深度学习 自然语言处理 算法
【论文泛读】 知识蒸馏:Distilling the knowledge in a neural network
【论文泛读】 知识蒸馏:Distilling the knowledge in a neural network
【论文泛读】 知识蒸馏:Distilling the knowledge in a neural network
|
机器学习/深度学习 PyTorch 测试技术
SegNeXt: Rethinking Convolutional Attention Design for Semantic Segmentation 论文解读
我们提出了SegNeXt,一种用于语义分割的简单卷积网络架构。最近的基于transformer的模型由于在编码空间信息时self-attention的效率而主导了语义分割领域。在本文中,我们证明卷积注意力是比transformer中的self-attention更有效的编码上下文信息的方法。
328 0
|
机器学习/深度学习 算法
Keyphrase Extraction Using Deep Recurrent Neural Networks on Twitter论文解读
该论文针对Twitter网站的信息进行关键词提取,因为Twitter网站文章/对话长度受到限制,现有的方法通常效果会急剧下降。作者使用循环神经网络(recurrent neural network,RNN)来解决这一问题,相对于其他方法取得了更好的效果。
73 0
|
机器学习/深度学习 存储 编解码
【论文泛读】轻量化之MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications(上)
【论文泛读】轻量化之MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
【论文泛读】轻量化之MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications(上)
|
机器学习/深度学习 搜索推荐 算法
【推荐系统论文精读系列】(十)--Wide&Deep Learning for Recommender Systems
具有非线性特征转化能力的广义线性模型被广泛用于大规模的分类和回归问题,对于那些输入数据是极度稀疏的情况下。通过使用交叉积获得的记忆交互特征是有效的而且具有可解释性,然后这种的泛化能力需要更多的特征工程努力。在进行少量的特征工程的情况下,深度神经网络可以泛化更多隐式的特征组合,通过从Sparse特征中学得低维的Embedding向量。可是,深度神经网络有个问题就是由于网络过深,会导致过度泛化数据。
158 0
【推荐系统论文精读系列】(十)--Wide&Deep Learning for Recommender Systems