[论文笔记] MobileNet 系列论文笔记

随着算力的不断提升,人们所提出的网络模型越发的庞大,但是实际应用中,往往无法提供较强的计算资源。于是网络轻量化又成为了大家关注的热点,而 Google 所提出的 Mobile Net,因其性能良好也受到众多研究者的喜爱。

目录

1. MobileNet
2. MobileNet v2

1. Mobile Net

论文题目:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
论文作者:Andrew G. Howard, Menglong Zhu, Bo Chen, Dmitry Kalenichenko, Weijun Wang, Tobias Weyand, Marco Andreetto, Hartwig Adam
所属机构:Google
论文链接:https://arxiv.org/pdf/1704.04861.pdf

(1) 摘要:

2017年,Google 提出了 MobileNet,一种基于 streamlined architecture 并采用 depthwise separable convolution 的轻量化网络。此外,作者在论文中提出了两个超参数:Width Multiplier 和 Resolution Multiplier,使得人们可以根据任务需要与实际场景对模型进行 latency 和 accuracy 的权衡。

[论文笔记] MobileNet 系列论文笔记_第1张图片

个人想法:
虽然随着深度学习的发展,神经网络在许多任务上都已取得不错的表现,但实际落地的却寥寥无几。我认为主要原因在于现在大家所推出的神经网络往往大而复杂,需要很大的内存与很强的计算能力,这些在实际应用中往往很难提供,毕竟你不能各个产品都装个 GPU 吧,也不现实。
而目前对于轻量化神经网络也成为一个热门的话题,目前关于这个研究应该主要分为两个主流方向:

  1. 对训练好的复杂模型进行压缩
  2. 设计小模型(层数少,参数少)

当然,不论采用哪种方向,目标都是在保持模型性能的前提下,降低模型大小,提高模型速度。

(2) 模型结构:

关于 Depthwise Separable Convolution:

Depthwise Separable Convolution 其实是将 Standard Convolution 拆分成两个部分:Depthwise Convolution 和 Pointwise Convolution。

其实这个概念不难理解,只需要看作者所提供的图就好了:

原先的 Standard Convolution 中每个 Filter 的 shape 为 ( D k , D k , M ) (D_k,D_k,M) (Dk,Dk,M),其中 M M M 为所输入 Feature Map 的 channel 数。每个 Filter 在所输入的 Feature Map 上进行卷积,输出的 shape 为 ( D o u t , D o u t , 1 ) (D_{out},D_{out},1) (Dout,Dout,1),如果有 N N N 个 Fliter,则输出的 shape 为 ( D o u t , D o u t , N ) (D_{out},D_{out},N) (Dout,Dout,N)

反观 Depthwise Separasble Convolution:在 Depthwise Convolution 阶段,每个 Depthwise Convolution Fliter 的 shape 为 ( D k , D k , 1 ) (D_k,D_k,1) (Dk,Dk,1),共有 M M M 个 Filer,则输出结果的 shape 为 ( D o u t , D o u t , M ) (D_{out},D{out},M) (Dout,Dout,M);接着在 Pointwise Convolution 阶段, 每个 Pointwise Convolution Filter 的 shape 为 ( 1 , 1 , M ) (1,1,M) (1,1,M),共有 N N N 个 Filter,则输出结果的 shape 为 ( D o u t , D o u t , N ) (D_{out},D_{out},N) (Dout,Dout,N)

[论文笔记] MobileNet 系列论文笔记_第2张图片

可以明显看出,Standard Convolution 所需参数为 D k ∗ D k ∗ M ∗ N D_k*D_k*M*N DkDkMN,而 Depthwise Separable Convolution 所需参数为 D k ∗ D k ∗ M + M ∗ N = M ∗ ( D k ∗ D k + N ) D_k*D_k*M + M*N = M*(D_k*D_k+N) DkDkM+MN=M(DkDk+N),与 Standard Convolution 相比,所减少的参数数量为 ( N − 1 ) ∗ D k ∗ D k − N (N-1)*D_k*D_k-N (N1)DkDkN

作者在论文中,也分别对 Standard Convolution 和 Depthwise Separable Convolution 的计算代价做了对比:

[论文笔记] MobileNet 系列论文笔记_第3张图片

关于 MobileNet:

[论文笔记] MobileNet 系列论文笔记_第4张图片
[论文笔记] MobileNet 系列论文笔记_第5张图片

关于 Width Multiplier:

作者在论文中提出,可以利用超参数 α \alpha α 控制 MobileNet 的通道数,使得输入 Feature Map 的 channel 数变为 α M \alpha M αM,输出 Feature Map 的 channel 数变为 α N \alpha N αN
其中, α = 1 \alpha=1 α=1为 baseline MobileNet, α < 1 \alpha<1 α<1为 reduced MobileNet。

[论文笔记] MobileNet 系列论文笔记_第6张图片

关于 Resolution Multiplier:

作者在论文中提出,可以利用超参数 ρ \rho ρ 控制 MobileNet 的 resolution。
其中, ρ = 1 \rho=1 ρ=1为 baseline MobileNet, ρ < 1 \rho<1 ρ<1为 reduced MobileNet。

[论文笔记] MobileNet 系列论文笔记_第7张图片

(3) 实验结果:

[论文笔记] MobileNet 系列论文笔记_第8张图片
[论文笔记] MobileNet 系列论文笔记_第9张图片
[论文笔记] MobileNet 系列论文笔记_第10张图片
[论文笔记] MobileNet 系列论文笔记_第11张图片

2. Mobile Net v2

论文题目:MobileNetV2: Inverted Residuals and Linear Bottlenecks
论文作者:Mark Sandler, Andrew Howard, Menglong Zhu, Andrey Zhmoginov, Liang-Chieh Chen
所属机构:Google
论文链接:https://arxiv.org/pdf/1801.04381.pdf

(1) 摘要:

2018年,Google 在 MobileNet 基础上提出了新的模型 MobileNet v2,其中,提出了新的结构 Inverted Residuals and Linear Bottlenecks,并利用MobileNet v2 实现分类/目标检测/语义分割多目标任务。

(2) 模型结构:

关于 Inverted Residuals and Linear Bottlenecks:

首先,先讲清楚什么是 Inverted Residuals and Linear Bottlenecks 结构:

下图是 Residual block 与 Invereted residual block 的区别,可以看到原先的 Residual block 是先降 channel 再升 channel 的,不过现在 Inverted residual block 却是先升 channel 再降 channel 的。

[论文笔记] MobileNet 系列论文笔记_第12张图片

其次是 Linear 的部分,作者在文中指出 ReLU 的使用将会使得 low-dimension channel tensor 产生崩塌,造成信息损失,故将最后的 ReLU6 去掉,直接进行线性输出。(关于 ReLU6:卷积之后通常会接一个ReLU非线性激活,在Mobile v1里面使用ReLU6,ReLU6就是普通的ReLU但是限制最大输出值为6(对输出值做clip),这是为了在移动端设备float16的低精度的时候,也能有很好的数值分辨率,如果对ReLU的激活范围不加限制,输出范围为0到正无穷,如果激活值非常大,分布在一个很大的范围内,则低精度的float16无法很好地精确描述如此大范围的数值,带来精度损失。)

作者对于这部分做了详细的实验与推导,在此我尽量进行描述:

作者首先提到** It has been long assumed that manifolds of interest in neural networks could be embedded in low-dimensional subspaces. **,其次利用实验探究 ReLU 所带来的信息损失:

[论文笔记] MobileNet 系列论文笔记_第13张图片

他人见解:

  1. 这意味着,在较低维度的张量表示(兴趣流形)上进行ReLU等线性变换会有很大的信息损耗。因而本文提出使用线性变换替代Bottleneck的激活层,而在需要激活的卷积层中,使用较大的M使张量在进行激活前先扩张,整个单元的输入输出是低维张量,而中间的层则用较高维的张量。
  2. 用线性变换层替换channel数较少的层中的ReLU,这样做的理由是ReLU会对channel数低的张量造成较大的信息损耗。我个人的理解是ReLU会使负值置零,channel数较低时会有相对高的概率使某一维度的张量值全为0,即张量的维度减小了,而且这一过程无法恢复。张量维度的减小即意味着特征描述容量的下降。

关于这部分我的理解比较肤浅,建议大家阅读论文,并查阅他人的见解:

To summarize, we have highlighted two properties that are indicative of the requirement that the manifold of interest should lie in a low-dimensional subspace of the higher-dimensional activation space:

  1. If the manifold of interest remains non-zero volume after ReLU transformation, it corresponds to a linear transformation.
  2. ReLU is capable of preserving complete information about the input manifold, but only if the input manifold lies in a low-dimensional subspace of the input space.

关于 Mobile Net v2:

[论文笔记] MobileNet 系列论文笔记_第14张图片
[论文笔记] MobileNet 系列论文笔记_第15张图片

(3) 实验结果:

ImageNet Classification:

[论文笔记] MobileNet 系列论文笔记_第16张图片
[论文笔记] MobileNet 系列论文笔记_第17张图片

Object Detection:

作者基于 SSD,提出了一个对手机设备友好的 SSDLite 模型,用于解决 Object Detection 任务。

[论文笔记] MobileNet 系列论文笔记_第18张图片

Semantic Segmentation:

作者将 DeepLabv3 与 Mobile Net 进行结合,用于解决 Semantic Segmentation 任务。

[论文笔记] MobileNet 系列论文笔记_第19张图片

参考资料:

  • CNN模型之MobileNet
  • 轻量级网络–MobileNet论文解读
  • 轻量级网络–MobileNetV2论文解读
  • MobileNetV2阅读笔记
  • 如何评价mobilenet v2 ?
  • [论文笔记](MobileNet V2)Inverted Residuals and Linear Bottlenecks: Mobile Networks for Classification, Detection and Segmentation

如果你看到了这篇文章的最后,并且觉得有帮助的话,麻烦你花几秒钟时间点个赞,或者受累在评论中指出我的错误。谢谢!

作者信息:
LeetCode:Tao Pu
CSDN:Code_Mart
Github:Bojack-want-drink

你可能感兴趣的:(Paper,AI,杂谈)