MobileNet-V1 阅读记录

个人学习笔记
如有错误,请指正;
如有侵权,请联系删除;

MobileNet-V1

MobileNet 提出使用深度可分例卷积,将一个标准卷积分解成一个只对单通道卷积的 Depthwise Convolutional 和一个 1 × 1 1\times 1 1×1的 Pointwise Conv,可以牺牲少量性能而大大降低计算量。
但是深度可分离卷积也存在隐患:Depthwise 的 kernel 只有单通道,维度太小,在 Relu 激活后很容易变成 0,会训废掉,在 ShuffleNet 和 Xception 中都提到了在 Depthwise 后面不加非线性激活。
论文地址
官方github

Abstract & Introduction

MobileNet是一种流线型架构,使用深度可分离卷积(depthwise separable convolutions)来构建轻型深度神经网络,推出了两个超参 α 、 ρ \alpha 、\rho αρ来平衡网络性能和准确率,适用于移动端嵌入式视觉应用,包括目标检测、细粒度分类、人脸属性、大规模地理位置定位等。

Prior Work

构建小型高效神经网络的方法:

  • 压缩预训练网络
  • 直接训练小网络

MobileNet提出了一种新的网络架构,可以让开发者根据硬件情况,调节两个超参 α 、 ρ \alpha 、\rho αρ来设定网络的计算量。

在MobileNet之前的轻型网络有:

获得小网络的方法:

  • 收缩 (shrinking)
  • 分解(factorizing)
  • 压缩预训练网络
    • 乘积量化(product quantization)
    • 哈希(hashing)
    • 剪枝(pruning)
    • 矢量量化(vector quantization)
    • 霍夫曼编码(Huffman coding)
  • 蒸馏(distillation): 大网络teach小网络(大网络给出label,小网络拟合?好像不是)
  • low bit network

MobileNet Architecture

Depthwise Separable Convolution

深度可分离卷积:将一个标准卷积分解成一个深度(depthwise)卷积和一个逐点(pointwise)卷积,depthwise卷积在每个通道使用一个滤波器,pointwise卷积使用 1 × 1 1 \times 1 1×1的卷积组合depthwise卷积的输出,如下图所示:


深度可分离卷积

标准卷积将输入同时进行滤波和组合,提取到一个新的集合中,深度可分离卷积将这一步分成了两层,depthwise用于过滤,pointwise用于组合。

下面说明MobileNet的深度可分离卷积是怎么降低计算量的:
设定输入特征图大小为 D F × D F × M D_F \times D_F \times M DF×DF×M(长-宽-通道数),输出特征图大小为 D G × D G × N D_G \times D_G \times N DG×DG×N(长-宽-通道数),标准卷积的卷积核大小为 D K × D K × M × N D_K \times D_K \times M \times N DK×DK×M×N

标准卷积的计算公式为
G k , l , n = ∑ i , j , m K i , j , m , n ⋅ F k + i − 1 , l + j − 1 , m G_{k,l,n}=\sum_{i,j,m} K_{i,j,m,n} \cdot F_{k+i-1,l+j-1,m} Gk,l,n=i,j,mKi,j,m,nFk+i1,l+j1,m,其中, K K K为卷积核, F F F为输入的特征图。
计算代价为
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
标准卷积的计算代价与输入、输出通道数 M 、 N M、N MN,卷积核大小、输入大小有关。
深度卷积计算公式为
G ^ k , l , m = ∑ i , j K ^ i , j , m ⋅ F k + i − 1 , l + j − 1 , m \hat{G}_{k,l,m}=\sum _{i,j} \hat{K}_{i,j,m} \cdot F_{k+i-1,l+j-1,m} G^k,l,m=i,jK^i,j,mFk+i1,l+j1,m
计算代价为
D K × D K × M × D F × D F D_K \times D_K \times M \times D_F \times D_F DK×DK×M×DF×DF
深度卷积可以输入特征图的每一个通道进行特征提取,但是无法组合不同通道的特征以产生新的特征,所以需要逐点卷积来组合通道信息,产生新的特征。
深度可分离卷积的计算代价为
D K × D K × M × D F × D F + 1 × 1 × M × N × D F × D F D_K \times D_K \times M \times D_F \times D_F+1 \times 1 \times M \times N \times D_F \times D_F DK×DK×M×DF×DF+1×1×M×N×DF×DF

标准卷积与深度可分离卷积计算代价比较:
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 \frac{D_K \times D_K \times M \times D_F \times D_F+ M \times N \times D_F \times 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} DKDKMNDFDFDK×DK×M×DF×DF+M×N×DF×DF=N1+DK21

Network Structure and Training

网络架构:


MobileNet网络架构

除全连接层外,所有层后面都接着BN、Relu,如下图,全连接层接Softmax用于分类。
MobileNet共有28层。


层细节

实际运算速度不仅与乘-加(Mult-Adds)操作的次数有关,还与矩阵的稀疏度有关,非结构化稀疏矩阵的运算速度通常低于稠密矩阵的运算速度。矩阵运算时需要使用im2col将矩阵转化为列向量进行计算,im2col的示意图如下图所示:


im2col

但是MobileNet中使用的 1 × 1 1\times 1 1×1的卷积不需要im2col操作,可以节省大量时间,MobileNet花费95%的时间在 1 × 1 1\times 1 1×1的卷积上, 1 × 1 1\times 1 1×1的卷积上包含了75%的参数,剩下的参数大都在全连接层上,具体参数见下表。


参数量及计算时间

MobileNet使用的优化方法为asynchronous gradient descent,与Inception-V3相同,因为是小网络,不用担心过拟合,所以只使用少量/不用正则与数据增强。

Width Multiplier: Thinner Models

MobileNet提出的第一个超参:宽度乘子(width multiplier) α \alpha α ,用于减少通道数 M M M,加入 α \alpha α的深度可分离卷积的计算代价为
D K × D K × α M × D F × D F + α M × α N × D F × D F D_K \times D_K \times \alpha M \times D_F \times D_F+ \alpha M \times \alpha N \times D_F \times D_F DK×DK×αM×DF×DF+αM×αN×DF×DF
其中, α ∈ ( 0 , 1 ] \alpha \in (0,1] α(0,1],通常设置为 1 , 0.75 , 0.5 , 0.25 1, 0.75,0.5,0.25 10.750.50.25。该超参大约可以减少计算量 α 2 \alpha ^2 α2.

Resolution Multiplier: Reduced Representation

MobileNet提出的第二个超参:分辨率乘子(resolution multiplier) ρ \rho ρ ,用于减少输入图像及内部特征图的大小,在实践中,通过设置输入图像分辨率来隐性设置 ρ \rho ρ(这也算创新点???),加入 ρ \rho ρ的深度可分离卷积的计算代价为
D K × D K × α M × ρ D F × ρ D F + α M × α N × ρ D F × ρ D F D_K \times D_K \times \alpha M \times \rho D_F \times \rho D_F+ \alpha M \times \alpha N \times \rho D_F \times \rho D_F DK×DK×αM×ρDF×ρDF+αM×αN×ρDF×ρDF
其中, ρ ∈ ( 0 , 1 ] \rho \in (0,1] ρ(0,1],输入图像分辨率通常设置为 224 , 192 , 160 , 128 224, 192,160,128 224192160128。该超参大约可以减少计算量 ρ 2 \rho ^2 ρ2.

下表为在输入为 14 × 14 × 512 14\times 14 \times 512 14×14×512,卷积核为 3 × 3 × 512 × 512 3 \times 3 \times 512 \times 512 3×3×512×512情况下,标准卷积、标准深度可分离卷积、分别加入 α \alpha α ρ \rho ρ之后的深度可分离卷积的计算量与参数量比较。


计算量与参数量

Experiments

  • 与全卷积网络相比,可分离卷积的性能在ImageNet上只下降一点,但计算量与参数量大幅下降

    在这里插入图片描述

  • 深而窄(通道数少)的网络优于浅层网络

    在这里插入图片描述

  • 超参 α \alpha α可以牺牲少量性能来大幅减少计算量和参数量

    在这里插入图片描述

  • 超参 ρ \rho ρ 可以牺牲少量性能来大量减少计算量(乘-加运算),但参数量不变(参数量与输入的大小无关)

    在这里插入图片描述

  • 精度与计算量之间的关系

    在这里插入图片描述

  • 在宽度乘子为 α ∈ { 1 , 0.75 , 0.5 , 0.25 } \alpha \in \{1,0.75,0.5,0.25\} α{1,0.75,0.5,0.25},输入分辨率为 { 224 , 192 , 160 , 128 } \{224,192,160,128\} {224,192,160,128}时,精度与计算量之间的关系

    在这里插入图片描述

  • MobileNet的性能稍低于VGG,但计算量减少32倍;性能优于GoogleNet,计算量减少3.2倍

    在这里插入图片描述

  • 与当前流行的小模型的比较结果

    在这里插入图片描述

  • 细粒度识别,在 Stanford Dogs Dataset 数据集上识别狗的种类的结果

    在这里插入图片描述

  • 大规模地理定位

    在这里插入图片描述

  • 人脸识别

    在这里插入图片描述

  • 目标检测
  • 在这里插入图片描述

    在这里插入图片描述

  • Face Embedding
    distillation的方法,使用 L2 来拟合 FaceNet 的效果。

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值