MobileNets(v1): —移动视觉应用的高效卷积神经网络
论文结构
-
摘要:介绍移动计算背景,提出MobileNet模型,在移动端部器复杂神经网络。
-
相关介绍:神经网络正确率与高效的矛盾,提出构建小型,低延时,易融合框架。
-
PriorWork:轻量网络分类及不足MobileNet设计思想。
-
MobileNet Architecture:深度可分离卷积,MobileNet内部结构,宽度分辨率超参数设计。
-
Experiments:验证深度可分离卷积,超参数设置及MobileNets结构在不同视觉任务上的表现。
-
结论:总结与进行展望。
摘要总结
- 提出了针对于移动和嵌入式视觉应用的高效神经网络MobileNets
- 以深度可分离卷积为主体构建网络结构
- 引入两个全局超参数实现准确率与延时性平衡(深度超参数,分辨率超参数)
- 详实的实验验证了MobileNets的高效性
MobileNets的整体结构
在论文中给出了整体网络结构的模型示意图:我们将dw和s1看作一个整体作为深度可分离卷积,每一个组合包括两层来组成。
1 + 13 x 2 + 1 (只算全连接层) =28
整个的结构包括28个卷积层组成。
整个模型的卷积块的特点可以包括以下的几个部分:
-
引入深度可分离卷积,将普通卷积替换为深度卷积和点卷积
-
除第一个卷积层和最后全连接层之外,所有卷积层后都有BN,ReLU相连
整个降采样的操作并没有采用池化的操作来完成,而是通过设计降采样步长来完成最终的操作的。
n + 2 p − f s + 1 × n + 2 p − f s + 1 \frac{n+2 p-f}{s}+1 \times \frac{n+2 p-f}{s}+1 sn+2p−f+1×sn+2p−f+1
输入信息:224×224x3 输出信息:1x1x1024
深度可分离卷积 — Depthwise Separable Convolution
普通形式的卷积情况分析:
- 输入特征F:DF x DF x M
- 卷积核K:Dk x Dk x M x N
- 输出特征G:DF x DF x N
输入和输出之间的连接是一个较为稀疏的连接方式,而通道数之间的连接则是属于密集的连接方式。
总结:卷积核channel=输入特征矩阵channel。输出特征矩阵channel=卷积核个数
深度可分离卷积的情况分析:
同样也是:
- 输入特征F:DFxDFxM
- 输出特征G:DFxDFxN
卷积过程:
- 深度卷积:深度卷积都是通道数为一的卷积核,负责一个通道
- 点卷积:逐点卷积卷积核大小为1×1xM,每次卷积一个像素的区域(需要的是N个1x1xM的卷积核)
DW卷积—Depthwise Conv
卷积核channel=1 输入特征矩阵channel=卷积核个数=输出特征矩阵channel
PW卷积—Pointwise Conv
通过这两个卷积之后的输出达到的结构是完全相同的。
参数量的分析
标准卷积的计算量
论文中给出了标准卷积的整体的一个计算公式:
G k , l , n = ∑ i , j , m K i , j , m , n ⋅ F k + i − 1 , l + j − 1 , m \mathbf{G}_{k, l, n}=\sum_{i, j, m} \mathbf{K}_{i, j, m, n} \cdot \mathbf{F}_{k+i-1, l+j-1, m} Gk,l,n=i,j,m∑Ki,j,m,n⋅Fk+i−1,l+j−1,m
参数量 G也就是K卷积核 i j 位置下的第m个通道,n代码的是有n个卷积核,ij表示的是像素的位置:
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} DK⋅DK⋅M⋅N⋅DF⋅DF
深度可分离卷积的计算量
论文中给出了深度卷积(DW
)的整体的一个计算公式:
G ^ k , l , m = ∑ i , j K ^ i , j , m ⋅ F k + i − 1 , l + j − 1 , m \hat{\mathbf{G}}_{k, l, m}=\sum_{i, j} \hat{\mathbf{K}}_{i, j, m} \cdot \mathbf{F}_{k+i-1, l+j-1, m} G^k,l,m=i,j∑K^i,j,m⋅Fk+i−1,l+j−1,m
Depthwise convolution is extremely efficient relative to standard convolution. However it only filters input chan-nels, it does not combine them to create new features. So an additional layer that computes a linear combination of the output of depthwise convolution via 1 × 1 convolution is needed in order to generate these new features.
深度卷积相对于标准卷积非常有效。 然而,它仅过滤输入通道,不会将它们组合起来创建新功能。 因此,需要一个额外的层来通过 1 × 1 卷积计算深度卷积输出的线性组合,以生成这些新特征。
显然我们的pw卷积的计算公式为:
M ⋅ N ⋅ D F ⋅ D F M \cdot N \cdot D_{F} \cdot D_{F} 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 \begin{aligned} & \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}} \end{aligned} =DK⋅DK⋅M⋅N⋅DF⋅DFDK⋅DK⋅M⋅DF⋅DF+M⋅N⋅DF⋅DFN1+DK21
理论上普通卷积计算量是DW+PW的8到9倍
通过实验也可以看出相比较于VGG16网络我们的MobileNet网络的准确率只有一点下降,但运算量确实之前的1/32 .
MobileNets超参数
- 宽度超参数
- 分辨率超参数
宽度超参数-Width Multiplier
-
为了构造更小型,更实时的网络模型满足实际应用需求
-
引入宽度超参数α统一规范每层的特征输入输出维度,α∈(0.1],常设为1,0.75,0.5,0.25
- input channel:M—>aM output channel:N—>aN
D K ⋅ D K ⋅ M ⋅ D F ⋅ D F + M ⋅ N ⋅ D F ⋅ D F ⟶ 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} \longrightarrow 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} DK⋅DK⋅M⋅DF⋅DF+M⋅N⋅DF⋅DF⟶DK⋅DK⋅αM⋅DF⋅DF+αM⋅αN⋅DF⋅DF
算力消耗约减少为原来的α2
分辨率超参数 - Resolution Multiplier
-
为了继续减少算力消耗引入分辨率超参数p统一规范特征表示的分辨率大小,p∈(0.11通常跟随输入图像分辨率间接得到。
-
Feature size: DFx DF—>pDFx pDF
算力消耗约减少为原来的p2
通过论文中给出的图表数据可以更近一步的感受到,使用了两个超参数之后,更进一步的减少了计算量
但导致了准确率的一点下降。
不足:depthwise部分的卷积核容易费掉,即卷积核参数大部分为零。