MobileNets论文总结

MobileNets简介

       \space\space\space\space\space\space       MobileNets使用深度可分离卷积,构建一种轻量级的深度卷积网络,这样可以将其运用于移动端和嵌入式视觉应用程序。论文引入两个全局超参数,有效地在延迟和准确性之间进行权衡。

MobileNets细节

深度可分离卷积

       \space\space\space\space\space\space       MobileNets基于深度可分离卷积。深度可分离卷积将标准卷积分解为一个深度卷积(depthwise convolution)和一个1 × \times × 1的逐点卷积(pointwise convolution)。深度卷积对特征图的每个通道使用一个卷积核作卷积操作。然后,逐点卷积再对深度卷积输出的特征图用1 × \times × 1的卷积核作卷积操作,将分开运算的各通道特征图重新组合在一起,形成一个新特征图。具体过程如下图所示。
       \space\space\space\space\space\space       假设输入和输出特征图的大小保持一致。对于一个 D F × D F × M D_F\times D_F\times M DF×DF×M的特征图,一个标准的 D k × D k × M D_k\times D_k\times M Dk×Dk×M大小的卷积核对原始特征图作卷积操作,生成一个 D F × D F × 1 D_F\times D_F\times 1 DF×DF×1的特征图,标准卷积将卷积运算和通道组合在一步(层)做完;而深度可分离卷积将这一步拆为两步(层):先用 M M M D k × D k × 1 D_k\times D_k\times 1 Dk×Dk×1的卷积核对 D F × D F × M D_F\times D_F\times M DF×DF×M的特征图的 M M M个通道分别作卷积运算,产生 D F × D F × M D_F\times D_F\times M DF×DF×M的特征图(深度卷积过程,进行卷积运算);然后再用 1 × 1 × M 1\times1\times M 1×1×M的卷积核将 D F × D F × M D_F\times D_F\times M DF×DF×M的特征图的 M M M个通道结合起来,生成一个 D F × D F × 1 D_F\times D_F\times 1 DF×DF×1的特征图(逐点卷积过程,进行通道合并)。
       \space\space\space\space\space\space       这样的分解将极大的减少计算量以及模型尺寸。
MobileNets论文总结_第1张图片
标准卷积的计算如下(步长为1, 1 × 1 1\times 1 1×1的padding):
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\limits_{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
这里, G k , l , n G_{k,l,n} Gk,l,n表示输出特征图 G G G的第 k k k行第 l l l列第 n n n个通道元素的值; K i , j , m , n K_{i,j,m,n} Ki,j,m,n表示第n个卷积核 K K K的第 i i i行第 j j j列第 m m m个通道的值; F k + i − 1 , l + j − 1 , m F_{k+i-1,l+j-1,m} Fk+i1,l+j1,m表示输入特征图 F F F k + i − 1 k+i-1 k+i1行第 l + j − 1 l+j-1 l+j1列(因为有padding所以减1)第 m m m个通道的值。
标准卷积的计算量为: 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
       \space\space\space\space\space\space       深度可分离卷积将标准卷积的运算分解为两步:深度卷积(过滤特征filtering)和逐点卷积(组合特征combining)。在每一步(层)中都运用了batch normalization和ReLU激活函数。
深度卷积的计算如下(步长为1, 1 × 1 1\times 1 1×1的padding):
G ^ k , l , m = ∑ i , j K ^ i , j , m ⋅ F k + i − 1 , l + j − 1 , m \hat{G}_{k,l,m}=\sum\limits_{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
其中, G ^ k , l , n \hat{G}_{k,l,n} G^k,l,n表示输出特征图 G ^ \hat{G} G^的第 k k k行第 l l l列第 m m m个通道元素的值; K ^ i , j , m \hat{K}_{i,j,m} K^i,j,m表示第m个卷积核 K ^ \hat{K} K^的第 i i i行第 j j j列的值; F k + i − 1 , l + j − 1 , m F_{k+i-1,l+j-1,m} Fk+i1,l+j1,m表示输入特征图 F F F k + i − 1 k+i-1 k+i1行第 l + j − 1 l+j-1 l+j1列(因为有padding所以减1)第 m m m个通道的值。
深度卷积的计算量为: D K ⋅ D K ⋅ M ⋅ D F ⋅ D F D_K\cdot D_K\cdot M\cdot D_F\cdot D_F DKDKMDFDF
       \space\space\space\space\space\space       通过对比可以发现,深度卷积的计算量比标准卷积减少了 N N N倍。然而这一层只是对输入特征图逐通道地进行了卷积运算,还没有将各通道的特征图组合产生新的特征。所以添加逐点卷积层,用 1 × 1 1\times 1 1×1的卷积将深度卷积层输出的特征图线性组合在一起产生新特征。
       \space\space\space\space\space\space       综上,深度可分离卷积的计算量是深度卷积层的计算量与逐点卷积层计算量之和,即 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。深度可分离卷积的计算量与标准卷积对比如下:
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 \dfrac{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}=\dfrac{1}{N}+\dfrac{1}{D_K^2} DKDKMNDFDFDKDKMDFDF+MNDFDF=N1+DK21
       \space\space\space\space\space\space       MobileNets中深度可分离卷积使用 3 × 3 3\times 3 3×3大小的卷积核,相比标准卷积,计算量减少了8~9倍,且准确率只有很小的损失。

MobileNets的网络结构

       \space\space\space\space\space\space       MobileNets的网络结构如下所示。除了第一层卷积使用标准卷积外,其他层均使用深度可分离卷积。每一个卷积层后都跟有BN层和ReLU非线性激活函数,最后一层全连接层没有非线性激活函数。下采样操作通过将卷积的步长设为2来实现(对于深度可分离卷积是在深度卷积层将步长设为2)。
MobileNets论文总结_第2张图片
       \space\space\space\space\space\space       下图是标准卷积层与深度可分离卷积层的对比图。
MobileNets论文总结_第3张图片
       \space\space\space\space\space\space       整个网络的参数和计算量分布如下图所示。可以看到整个网络的计算量集中在 1 × 1 1\times 1 1×1的卷积上。一般来说,卷积操作会通过一种叫im2col方式进行内存重组,然后才可以用一种高效的矩阵乘法函数GEMM进行矩阵运算。但对于 1 × 1 1\times 1 1×1的卷积,不需要进行内存重组就可以直接用GEMM进行矩阵运算,底层实现更快。
MobileNets论文总结_第4张图片

宽度乘数(Width Multiplier)

       \space\space\space\space\space\space       虽然MobileNets体量已经很小,延迟也很低,但是一些应用所需要的模型可能要求体量更小,速度更快。为了进一步缩小模型和减少计算量,文章引入了宽度乘数 α \alpha α,来减少每一层输入和输出特征图的通道数。如果输入特征图的通道数为 M M M,输出特征图的通道数为 N N N,那么加入宽度乘数后,输入和输出特征图的通道数变为 α M \alpha M αM α N \alpha N αN
深度可分离卷积加入宽度乘数后的计算量: 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
这里 α ∈ ( 0 , 1 ] \alpha\in(0,1] α(0,1],通常取1、0.75、0.5、0.25。宽度乘数 α \alpha α将计算量和参数量减少了大约 α 2 \alpha^2 α2倍。

分辨率乘数(Resolution Multiplier)

       \space\space\space\space\space\space       另一个可以减少计算量的超参数是分辨率乘数 ρ \rho ρ。通过确定输入图像的分辨率大小, ρ \rho ρ的大小也就隐含的确定了,而且中间生成的特征图也隐式的乘了分辨率乘数 ρ \rho ρ。比方说,不加入分辨率乘数 ρ \rho ρ时,输入图像的分辨率大小是 224 × 224 224\times 224 224×224;现在将输入图像的分辨率大小设置为 192 × 192 192\times 192 192×192,那么此时就隐式的设 ρ ≈ 0.857 \rho\approx0.857 ρ0.857,随后的特征图也相当于隐式的乘了 ρ ≈ 0.857 \rho\approx0.857 ρ0.857,例如第二层原来的输入大小为 112 × 112 112\times 112 112×112,现在变为 96 × 96 96\times 96 96×96 ρ ∈ ( 0 , 1 ] \rho\in(0,1] ρ(0,1],通常输入图像分辨率取224、192、160、128来隐式的设置 ρ \rho ρ。分辨率乘数 ρ \rho ρ将计算量减少了大约 ρ 2 \rho^2 ρ2倍。
深度可分离卷积加入宽度乘数和分辨率乘数后的计算量: 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

文章举了一个例子来说明深度可分离卷积可以很大程度减少计算量和参数量,如下图所示。(输入特征图大小为 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
MobileNets论文总结_第5张图片
1、标准卷积
a)计算量: 3 × 3 × 512 × 512 × 14 × 14 ≈ 462 3\times 3\times 512\times 512\times 14\times 14\approx462 3×3×512×512×14×14462M
b)参数量: 3 × 3 × 512 × 512 ≈ 2.36 3\times 3\times 512\times 512\approx2.36 3×3×512×5122.36M
2、深度可分离卷积
a)计算量: 3 × 3 × 512 × 14 × 14 + 512 × 512 × 14 × 14 ≈ 52.3 3\times 3\times 512\times 14\times 14+512\times 512\times 14\times 14\approx52.3 3×3×512×14×14+512×512×14×1452.3M
b)参数量: 3 × 3 × 512 + 1 × 1 × 512 × 512 ≈ 0.27 3\times 3\times 512+1\times 1\times 512\times 512\approx0.27 3×3×512+1×1×512×5120.27M
2、深度可分离卷积+宽度乘数
a)计算量: 3 × 3 × 512 × 0.75 × 14 × 14 + 512 × 0.75 × 512 × 0.75 × 14 × 14 ≈ 29.6 3\times 3\times 512\times 0.75\times 14\times 14+512\times 0.75\times 512\times 0.75\times 14\times 14\approx29.6 3×3×512×0.75×14×14+512×0.75×512×0.75×14×1429.6M
b)参数量: 3 × 3 × 512 × 0.75 + 1 × 1 × 512 × 0.75 × 512 × 0.75 ≈ 0.15 3\times 3\times 512\times 0.75+1\times 1\times 512\times 0.75\times 512\times 0.75\approx0.15 3×3×512×0.75+1×1×512×0.75×512×0.750.15M
2、深度可分离卷积+宽度乘数+分辨率乘数
a)计算量: 3 × 3 × 512 × 0.75 × 14 × 0.714 × 14 × 0.714 + 512 × 0.75 × 512 × 0.75 × 14 × 0.714 × 14 × 0.714 ≈ 15.1 3\times 3\times 512\times 0.75\times 14\times 0.714\times 14\times 0.714+512\times 0.75\times 512\times 0.75\times 14\times 0.714\times 14\times 0.714\approx15.1 3×3×512×0.75×14×0.714×14×0.714+512×0.75×512×0.75×14×0.714×14×0.71415.1M
b)参数量: 3 × 3 × 512 × 0.75 + 1 × 1 × 512 × 0.75 × 512 × 0.75 ≈ 0.15 3\times 3\times 512\times 0.75+1\times 1\times 512\times 0.75\times 512\times 0.75\approx0.15 3×3×512×0.75+1×1×512×0.75×512×0.750.15M

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

你可能感兴趣的:(深度学习)