MobileNet 论文阅读 #paper reading

最近做笔试题考了一道这样的选择题:
用CPU和GPU分别跑以下网络,如果时间分别为X和Y,以下哪个网络的X/Y最大?
A、AlextNet B、VGG19 C、ResNet101 D、MobileNet
仔细一想,其实就是考察哪个网络的参数最多,需要的计算量最大,其实这些网络差别还是比较大的,特别是ResNet,网络非常深,所以不需要具体的计算参数量,只需要大体的计算一个深度就可以(个人理解,可能有错误)。但是对MobileNet不是很熟悉,所以第一时间要读一下,另外就是MobileNet V2、V3版本似乎是自动学出来的?也还是蛮有兴趣。
这个名字的由来,就是因为这个网络使得CNN部署在移动端、嵌入式等设备成为了可能,因此取名“Mobile” Net。那么这篇论文是怎么减少网络参数,降低了训练的复杂度的呢?这还要从神经网络FLOPS的计算说起:
对于一个神经网络,最主要的计算来自于乘法,像是卷积层的卷积操作,和全连接层的全连接操作等,一般来说,计算神经网络的FLOPS,是忽略掉池化、激活函数和偏置这些操作的,因为其实这些操作并不会占很大的比例。(其实全连接层也没有占很大,主要来自于卷积操作)。对于一个卷积层,我们假设这一层的输入特征大小是 ( D F , D F , M ) (D_{F},D_{F},M) (DF,DF,M),输出的特征大小是 ( D G , D G , N ) (D_{G},D_{G},N) (DG,DG,N),这其中有一个维度变化,因此需要一个卷积核来执行升维(降维),卷积核大小为 ( D K , D K , M , N ) (D_{K},D_{K},M,N) (DK,DK,M,N),一般来说,输入输出的特征、卷积核的长和宽都是相等的。那么这层卷积的FLOPS为:
D G ∗ D G ∗ D K ∗ D K ∗ M ∗ N ( 1 ) D_{G}\ast D_{G}\ast D_{K}\ast D_{K}\ast M\ast N(1) DGDGDKDKMN1
怎么来的呢,首先,输入图像的像素点,需要与卷积核进行卷积操作,一个像素点的卷积操作,需要的FLOPS数量为 D K ∗ D K D_{K}\ast D_{K} DKDK,那么一共有多少个点需要做卷积操作呢,一共有 D G ∗ D G ∗ N D_{G}\ast D_{G}\ast N DGDGN个像素点,也就是输出的每一个像素值,都是经过一次卷积操作得到的,所以最终需要 D G ∗ D G ∗ D K ∗ D K ∗ M ∗ N D_{G}\ast D_{G}\ast D_{K}\ast D_{K}\ast M\ast N DGDGDKDKMN的FLOPS,如果加上偏置,那么就需要 D G ∗ D G ∗ D K ∗ D K ∗ M ∗ N + D G ∗ D G ∗ N D_{G}\ast D_{G}\ast D_{K}\ast D_{K}\ast M\ast N+D_{G}\ast D_{G}\ast N DGDGDKDKMN+DGDGN
为什么要详细算一下这个公式呢,因为MobileNet是从这个公式出发,用两个超参数对这个公式进行了处理优化,使得总的公式不变的条件下,计算量大大降低。MobileNet使用了叫做Depthwise separable convolution的模块,这个模块包括两个卷积操作:一个叫做depthwise convolution,使用的卷积核大小为 ( D K , D K , M ) (D_{K},D_{K},M) (DK,DK,M),这个卷积核的作用是,输出一个与输入特征维度相同,与目标输出长宽相同的中间特征 ( D G , D G , M ) (D_{G},D_{G},M) (DG,DG,M),也就是输入特征的每一个channel(1~M),与对应的卷积核的每一个channel做卷积,计算量为 D G ∗ D G ∗ D K ∗ D K ∗ M D_{G}\ast D_{G}\ast D_{K}\ast D_{K}\ast M DGDGDKDKM;另一个卷积操作叫做pointwise convolution,作用是升维(降维),卷积核大小为 ( 1 , 1 , M , N ) (1,1,M,N) (1,1,M,N),计算量为 D G ∗ D G ∗ M ∗ N D_{G}\ast D_{G}\ast M\ast N DGDGMN 1 ∗ 1 1\ast1 11的卷积核常常用来做升维、降维)。那么总的FLOPS,就是两部分相加: D G ∗ D G ∗ D K ∗ D K ∗ M + D G ∗ D G ∗ M ∗ N ( 2 ) D_{G}\ast D_{G}\ast D_{K}\ast D_{K}\ast M+D_{G}\ast D_{G}\ast M\ast N(2) DGDGDKDKM+DGDGMN2
比较一下式(1)和式(2), D G ∗ D G ∗ D K ∗ D K ∗ M + D G ∗ D G ∗ M ∗ N D G ∗ D G ∗ D K ∗ D K ∗ M ∗ N = 1 N + 1 D K ∗ D K \frac{D_{G}\ast D_{G}\ast D_{K}\ast D_{K}\ast M+D_{G}\ast D_{G}\ast M\ast N}{D_{G}\ast D_{G}\ast D_{K}\ast D_{K}\ast M\ast N}=\frac{1}{N}+\frac{1}{D_{K}\ast D_{K}} DGDGDKDKMNDGDGDKDKM+DGDGMN=N1+DKDK1,可以看出完全是成倍的降低了运算量,同时卷积的输出并没有什么改变。文章提到,在第一部分使用 3 ∗ 3 3\ast3 33的卷积核,可以降低8~9倍的计算量,同时精度只会有略微的降低。
普通卷积,和文章提出的depthwise separable convolution的对比
具体网络架构:
MobileNet包括了一层的传统卷积层(第一层),和一个全连接层(最后一层),这个与ResNet是一样的。剩余的都是包括两层卷积操作的Depthwise separable convolution模块,这两层卷积每一层后面都加了一个BN和Relu(第一层传统卷积层也是有BN和Relu的,但是全连接层没有,全连接层加的是softmax)。
Depthwise separable convolution模块中的两个卷积,每一层后面都加了BN和Relu
如果一个Depthwise separable conbolution模块计算为两层卷积,那么MobileNet网络一共有28层。
除去图中的Avg Pool和Softmax,一共有28层(图中有十层折叠起来了)
有了这些之后,作者还是不满意,表示还有很多应用环境之下,要求模型需要更快,计算量更少,于是引入了第一个超参(width multiplier) α \alpha α。这个 α \alpha α作用在channel上,是一个0~1之间的系数,每一层都使用同样的 α \alpha α,添加之后计算量的公式为: D G ∗ D G ∗ D K ∗ D K ∗ α M + D G ∗ D G ∗ α   M ∗ α N D_{G}\ast D_{G}\ast D_{K}\ast D_{K}\ast\alpha M+D_{G}\ast D_{G}\ast\alpha\ M\ast\alpha N DGDGDKDKαM+DGDGα MαN
也就是每一层中的每一个channel,M和N之前都乘一个系数 α \alpha α,这个系数可以看作与剪枝、dropout相似,是为了降低模型的复杂性,抛弃一部分维度,做速度和精度的折衷。引入 α \alpha α后,计算量减少 α 2 \alpha^{2} α2
有了第一个超参,用同样的思想,很自然的就能想到去降低分辨率,也就是特征图的大小,来降低计算量。于是文章引入了第二个超参(resolution multiplier) ρ \rho ρ,作用在特征图上,引入第二个超参之后,计算量:
ρ D G ∗ ρ D G ∗ D K ∗ D K ∗ α M + ρ D G ∗ ρ D G ∗ α   M ∗ α N \rho D_{G}\ast\rho D_{G}\ast D_{K}\ast D_{K}\ast\alpha M+\rho D_{G}\ast\rho D_{G}\ast\alpha\ M\ast\alpha N ρDGρDGDKDKαM+ρDGρDGα MαN
具体实现来说,就是直接把输入特征大小限制一下就可以了,比如原本输入是224×224( ρ = 1 \rho=1 ρ=1),我们把输入改为112*112( ρ = 0.5 \rho=0.5 ρ=0.5),当然后面的特征大小也都要改变。同样的,引入第二个超参可以降低模型计算量 ρ 2 \rho^{2} ρ2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值