深度学习论文精读(3):MobileNets

深度学习论文精读(3):MobileNets

论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications

参考博文1:https://blog.csdn.net/wfei101/article/details/78310226

参考博文2:https://blog.csdn.net/t800ghb/article/details/78879612

1 总体介绍

  • 在移动端或嵌入式设备上使用CNN存在困难,对模型大小、计算力都有限制。

  • 深度学习模型通常模型较大,计算力需求过高。难以部署在移动端或嵌入式设备上。

  • 提出了使用depth-wise separable convolutions (深度可分离卷积结构) 构建的小权重DNN的精简构架。

  • 在网络中设置两个超参数(width multiplier, resolution multiplier)来平衡准确率和模型大小。

  • 起到的效果:

    • 显著减小后的模型也能在ImageNet上取得很好的效果。

2 Depthwise Separable Convolution

Depthwise Separable Convolution的主旨是通过拆分standard convlution(标准卷积) 为depthwise convlution 和 pointwise convlution两个过程,以达到减少计算量的目的。其中:

  • 输入: D F ⋅ D F ⋅ M D_F\cdot D_F\cdot M DFDFM,其中 D F D_F DF为输入尺寸( H , W H,W H,W), M M M为输入通道数(channel)。
  • 输出: D F ⋅ D F ⋅ N D_F\cdot D_F\cdot N DFDFN,其中 D F D_F DF为输出尺寸( H , W H,W H,W), N N N为输出通道数(channel)。
2.1 标准卷积

1542616800474

  • 卷积核: N N N D K ⋅ D K ⋅ M D_K\cdot D_K\cdot M DKDKM
  • 输入: D F ⋅ D F ⋅ M D_F\cdot D_F\cdot M DFDFM, 输出: D F ⋅ D F ⋅ N D_F\cdot D_F\cdot N DFDFN
  • 计算量:
    • FLOTS(参考链接,包括乘与加): ( 2 ⋅ D K ⋅ D K ⋅ M − 1 ) ⋅ N ⋅ D F ⋅ D F (2\cdot D_K \cdot D_K \cdot M -1)\cdot N\cdot D_F\cdot D_F (2DKDKM1)NDFDF
    • 仅乘(论文中采用方式): D K ⋅ D K ⋅ M ⋅ N ⋅ D F ⋅ D F D_K\cdot D_K\cdot M\cdot N \cdot D_F\cdot D_F DKDKMNDFDF
2.2 Depthwise Separable Convolution
2.2.1 depthwise convlution

1542618349754

  • 卷积核: M M M D K ⋅ D K ⋅ 1 D_K\cdot D_K\cdot 1 DKDK1
  • 输入: D F ⋅ D F ⋅ M D_F\cdot D_F\cdot M DFDFM, 输出: D F ⋅ D F ⋅ M D_F\cdot D_F\cdot M DFDFM
  • 计算量: D K ⋅ D K ⋅ M ⋅ D F ⋅ D F D_K\cdot D_K\cdot M\cdot D_F\cdot D_F DKDKMDFDF
  • 直观理解:将输入的 D F ⋅ D F ⋅ M D_F\cdot D_F\cdot M DFDFM看做 M M M D F ⋅ D F D_F\cdot D_F DFDF的feature-map,然后分别用 M M M D K ⋅ D K D_K\cdot D_K DKDK的卷积核对其进行卷积。直观上即理解为将feature-map从通道上进行分解并分别标准卷积。
2.2.2 pointwise convlution

1542619364761

  • 卷积核: N N N 1 ⋅ 1 ⋅ M 1\cdot 1\cdot M 11M
  • 输入: D F ⋅ D F ⋅ M D_F\cdot D_F\cdot M DFDFM, 输出: D F ⋅ D F ⋅ N D_F\cdot D_F\cdot N DFDFN
  • 计算量: M ⋅ N ⋅ D F ⋅ D F M\cdot N\cdot D_F\cdot D_F MNDFDF
  • 直观理解:将 M M M层feature-map以 1 ⋅ 1 1\cdot 1 11卷积的方式产生新的 N N N层feature-map。
2.3 计算量对比

Depthwise Separable Convolution的总计算量为: D K ⋅ D K ⋅ M ⋅ D F ⋅ D F + M ⋅ N ⋅ D F ⋅ D F D_K\cdot D_K\cdot M\cdot D_F\cdot D_F+M\cdot N\cdot D_F\cdot D_F DKDKMDFDF+MNDFDF

Standard Convolution的计算量为: D K ⋅ D K ⋅ M ⋅ N ⋅ D F ⋅ D F D_K\cdot D_K\cdot M\cdot N \cdot D_F\cdot D_F DKDKMNDFDF

则比值为: D K ⋅ D K ⋅ M ⋅ D F ⋅ D F + M ⋅ N ⋅ D F ⋅ D F D K ⋅ D K ⋅ M ⋅ N ⋅ D F ⋅ D F = 1 N + 1 D K 2 {\Large\frac{D_K\cdot D_K\cdot M\cdot D_F\cdot D_F+M\cdot N\cdot D_F\cdot D_F}{D_K\cdot D_K\cdot M\cdot N \cdot D_F\cdot D_F} = \frac{1}{N}+\frac{1}{D_K^2}} DKDKMNDFDFDKDKMDFDF+MNDFDF=N1+DK21

3 ⋅ 3 3\cdot 3 33的卷积核为例,Depthwise Separable Convolution可以以微小的准确率损失为代价,将计算量减少到 1 8 {\large \frac{1}{8}} 81 1 9 {\large \frac{1}{9}} 91之间。

3 Two Hyper-parameters

3.1超参数width multiplier: α \alpha α
  • 用来对每一层的输入输出宽度进行缩减(channel)。比如该层原始input channel为 M M M,output channel为 N N N。添加width multiplier α \alpha α后,input channel 变为 α M \alpha M αM, output channel 变为 α N \alpha N αN。其中, α ∈ ( 0 , 1 ] \alpha \in (0, 1] α(0,1]

  • 添加width multiplier α \alpha α后,Depthwise Separable Convolution计算量减少为:

    D K ⋅ D K ⋅ α M ⋅ D F ⋅ D F + α M ⋅ α N ⋅ D F ⋅ D F D_K\cdot D_K\cdot \alpha M\cdot D_F\cdot D_F+\alpha M\cdot \alpha N\cdot D_F\cdot D_F DKDKαMDFDF+αMαNDFDF

3.2超参数resolution multiplier: ρ \rho ρ
  • 用来调节输入图片的分辨率。如原始图片为 H ∗ W H*W HW,添加resolution multiplier ρ \rho ρ后,图片变为 ρ H ∗ ρ W \rho H*\rho W ρHρW

  • 添加resolution multiplier ρ \rho ρ后,Depthwise Separable Convolution计算量减少为:

    D K ⋅ D K ⋅ α M ⋅ ρ D F ⋅ ρ D F + α M ⋅ α N ⋅ ρ D F ⋅ ρ D F D_K\cdot D_K\cdot \alpha M\cdot \rho D_F\cdot \rho D_F+\alpha M\cdot \alpha N\cdot \rho D_F\cdot \rho D_F DKDKαMρDFρDF+αMαNρDFρDF

要注意,调节了width multiplier: α \alpha α或resolution multiplier: ρ \rho ρ后,需要从头训练网络。

4 MobileNet结构

4.1 卷积层结构

采用Depthwise Separable Convolution。采用 C o n v − B N − R e L U Conv-BN-ReLU ConvBNReLU

1542632132565

4.2 总体结构

1542632201608

除第一个卷积层外,均使用Depthwise Separable Convolution。

4.3 资源分配情况

1542632827237

  • 几乎所有的计算量、75%的参数,都在 1 ∗ 1 1*1 11卷积层内。
  • 由于 1 ∗ 1 1*1 11卷积层直接使用高度优化的数学库来完成。因此Depthwise Separable Convolution不仅减少了计算量,也在计算层面上有巨大的优化。在以Caffe为例,如果要使用这些数学库,要首先使用im2col的方式来对数据进行重新排布,从而确保满足此类数学库的输入形式。

5 总结

  • 提出了基于Depthwise Separable Convolution实现的MobileNet,减少了计算量和参数,降低了延迟。
  • 提出了width multiplier α \alpha α 和 resolution multiplier ρ \rho ρ,用来平衡准确率和模型大小延迟。
  • 减小模型主要由两条路,一条是压缩参数,如剪纸,蒸馏,压缩参数的精度等。另一条是发现新的更优的结构,如文中的分离卷积。本文主要是第二条路。

单词整理:

  • embedded 嵌入式的
  • streamline 精简
  • sparable(sprase)可分离的,稀疏的
  • latency 延迟
  • extensive 广泛的
  • demonstrate 展示,演示
  • timely 适当的
  • restriction 限制
  • factorized 分解,因式分解
  • shrink 压缩,缩小
  • distillation 蒸馏
  • complementary 补充
  • drastically 大幅
  • spatial 空间
  • multiplicatively 乘法
  • topology 拓扑
  • contrast 对比
  • uniformly 平均,均匀地
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值