当前位置:网站首页>轻量级网络(一):MobileNet V1,V2, V3系列

轻量级网络(一):MobileNet V1,V2, V3系列

2022-08-11 08:11:00 陶将

轻量级网络(一):MobileNet V1,V2, V3系列


在实际应用中,不仅要关注模型的精度,还需要关注模型的速度。在既要精度又要速度的考量中,轻量化网络应运而生。轻量级网络拥有不差于笨重模型的性能,但相比于笨重模型,有更少的参数和计算量,对硬件更友好。轻量级网络发展至今,已经涌现了SqueezeNet系列,MobileNet系列,ShuffleNet系列,EfficientNet等等系列。这篇文章仅仅阐述MobileNet从V1到V3的发展历程。

MobileNet V1

MobileNet V1版本的主要创新点在于将标准卷积替换为深度可分离卷积。深度可分离卷积相比于标准卷积,能够有效地减少计算量和模型参数。如下表所示,使用深度可分离卷积的MobileNet,相比于使用标准卷积的MobileNet,在ImageNet数据集上的精度下降了1.1%,但是模型参数减少了约7倍,加乘计算量减少了约9倍。
在这里插入图片描述

卷积计算量

标准卷积

假设一个标准卷积的输入特征图 F F F D F × D F × M D_{F} \times D_{F} \times M DF×DF×M,输出特征图 G G G D F × D F × N D_{F} \times D_{F} \times N DF×DF×N,其中是 D F D_{F} DF表示特征图的宽和高, M M M N N N是特征图的通道数目。假设卷积核为 K K K,尺寸为 D K × D K × M × N D_{K} \times D_{K} \times M \times N DK×DK×M×N,其中 D K D_{K} DK是卷积核宽和高。

那么一个标准的卷积运算,stride设为1,padding使得输出特征图长宽和输入特征图一样,那么标准卷积的计算量 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

深度可分卷积

深度可分卷积(depthwise separable convolution )是一种可分解卷积形式,它将标准卷积分解为一个**深度卷积(depthwise convolution)**和一个 1 × 1 1 \times 1 1×1卷积,其中 1 × 1 1 \times 1 1×1卷积被称为pointwise convolution。深度卷积的filters尺寸大小为 D K × D K × 1 × M D_{K} \times D_{K} \times 1 \times M DK×DK×1×M,它在每一个输入通道上应用一个单独的fliter,pointwise convolution利用 1 × 1 1 \times 1 1×1卷积将深度卷积的输出通道融合起来。这样分解,能够有效地减少计算量和减少模型大小。

假设一个深度可分卷积的输入特征图为 D F × D F × M D_{F} \times D_{F} \times M DF×DF×M,其输出特征图为 D F × D F × M D_{F} \times D_{F} \times M DF×DF×M,其中是 D F D_{F} DF表示特征图的宽和高, M M M N N N是特征图的通道数目。

  1. 深度卷积: 卷积核为 D K × D K × 1 × M D_{K} \times D_{K} \times 1 \times M DK×DK×1×M,那么输出特征图大小为 D F × D F × M D_{F} \times D_{F} \times M DF×DF×M
  2. 1*1卷积:卷积核为 1 × 1 × M × N 1 \times 1 \times M \times N 1×1×M×N,最后的输出为 D F × D F × M D_{F} \times D_{F} \times M DF×DF×M

深度可分卷积的计算量是深度卷积和pointwise 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

下述公式计算深度可分卷积的计算量和标准卷积的计算量的比率,可以看出深度可分卷积是标准卷积的 1 N + 1 D K 2 \frac{1}{N} + \frac{1}{D_{K}^{2}} N1+DK21。一般情况下,卷积核大小为 3 × 3 3 \times 3 3×3,为 D K 2 = 9 D_{K}^{2} = 9 DK2=9,卷积核的通道数 N N N的取值一般会大于9,那么 1 N + 1 D K 2 > 1 9 \frac{1}{N} + \frac{1}{D_{K}^{2}} > \frac{1}{9} N1+DK21>91
深度可分卷积 标准卷积 = 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{深度可分卷积}{标准卷积}=\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

MobileNet V1的网络架构图如下所示:
在这里插入图片描述

模型瘦身

从上述深度可分卷积和标准卷积计算量的对比,我们发现MobileNet架构相比于其他卷积网络结构具有较少的参数和计算量,但是仍然有很多场景需要更小更快的模型。为了得到更小的模型,论文里面引入两个超参,宽度倍增器(width multiplier, α \alpha α)和分辨率倍增器(Resolution Multiplier, ρ \rho ρ),对模型进行瘦身。宽度倍增器作用的是每层的通道数,分辨率倍增器作用的是输入图像的分辨率大小。

宽度倍增器

α \alpha α被称为宽度倍增器(width multiplier),作用是对网络瘦身。对于某一层,定义宽度倍增器 α \alpha α,那么输入通道数 M M M则变成 α M \alpha M αM,输出通道数 N N N将变成 α N \alpha N αN α ∈ ( 0 , 1 ] \alpha \in \left(0, 1 \right] α(0,1],一般取 1 , 0.75 , 0.5 , 0.25 1, 0.75, 0.5 , 0.25 1,0.75,0.5,0.25,当时 α = 1 \alpha =1 α=1是基础版MobileNet,当 α < 1 \alpha < 1 α<1时是缩减版mobileNet。缩减后的深度可分卷积的计算量如下公式所示,计算量缩减了 α 2 \alpha^{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 D_{F} \cdot D_{F} + \alpha M \cdot \alpha N \cdot D_{F} \cdot D_{F} DKDKαMDFDF+αMαNDFDF

分辨率倍增器

ρ \rho ρ被称为分辨率倍增器(Resolution Multiplier),输入大小增大/缩小 ρ \rho ρ倍,那么网络中的每一层也随之增大/缩小 ρ \rho ρ倍。 ρ ∈ ( 0 , 1 ] \rho \in \left(0, 1 \right] ρ(0,1],网络的输入分辨率一般取 224 , 192 , 160 , 128 224, 192, 160 , 128 224,192,160,128。当时 ρ = 1 \rho =1 ρ=1为基础版MobileNet,当 ρ < 1 \rho < 1 ρ<1时为缩减版mobileNet。缩减后的深度可分卷积的计算量如下公式所示,可见计算量缩减了 ρ 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

MobileNet V2

MobileNet V2 的创新点在于带有线性瓶颈的反残差模块( the inverted residual with linear bottleneck)。在论文中,作者发现在低维空间使用非线性函数会损失一些信息,但在高维空间,损失相对少一些。因此,引入反残差(Inverted Residuals)的概念,先升维再做卷积,相对能够较好地保存特征。升维会增加计算量,因此需要降维,又因为非线性会损失信息,所以采用线性的方式进行降维,被称为线性瓶颈(Linear Bottlenecks)。

Bottleneck residual block

在这里插入图片描述
MobileNetV2和MobileNetV1相比,如上图所示,保留了深度卷积和 1 × 1 1 \times 1 1×1卷积,增加了 1 ∗ 1 1*1 11卷积的线性层,MobileNet V2的基础组件称为Bottleneck residual block。不过 1 × 1 1 \times 1 1×1卷积是在输入之后,深度卷积之前,目的是为了扩张维度。实验验证,使用 1 × 1 1 \times 1 1×1线性卷积的目的是为了阻止非线性破坏过多的信息。strides为1时,借鉴残差结构,不过不同于残差结构通道数的先降后升,MobileNetV2则是先升通道后降通道数。

假设输入特征图大小为 h × w × k h \times w \times k h×w×k,首先经过一个 1 × 1 1 \times 1 1×1大小的卷积,输出特征图的大小为 h × w × ( t k ) h \times w \times \left(tk\right) h×w×(tk),其中 t t t是膨胀系数,MobileNet V2网络架构中取 t = 6 t=6 t=6。随后紧接一个 3 × 3 3 \times 3 3×3大小的卷积,步数为 s s s,输出特征图大小为 h s × w s × ( t k ) \frac{h}{s} \times \frac{w}{s} \times \left( tk \right) sh×sw×(tk),最后经过一个 1 × 1 1 \times 1 1×1大小的线性卷积,得到最后的输出,输出特征图大小为 h × w × k ′ h \times w \times {k}' h×w×k

在这里插入图片描述

模型架构

MobileNet V2的网络架构如下图所示,其实 t t t为膨胀系数, c c c是通道数, n n n是重复次数, s s s是步数。

在这里插入图片描述

MobileNet V3

MnasNet在MobileNet V2 Bottleneck block的基础上加入SE模块引入轻量级注意力,如上图所示,为了将注意力应用到最大表示上,SE模块用在膨胀的深度可分卷积后。MobileNet V3网络架构中包括MnasNet和MobileNet V2基础块。

在这里插入图片描述
MobileNet V3网络架构的构造包含两个步骤:首先,由platform-aware NAS和NetAdapt算法复合网络搜索搜索基本架构;然后再引入几个新组件改进模型性能,形成最终模型。platform-aware NAS通过优化每一个网络块搜索全局网络结构,NetAdapt算法搜索每一层的filter数量。MobileNet V3中引入了一个新的非线性函数,h-swish(swish的改进版),它能够更快阶段,并且量化更友好。MobileNet V3 在保持准确率的前提下,重新设计了计算昂贵的网络开端和末端层,减少延迟。这个具体见论文。

s w i s h    x = x ⋅ σ ( x ) h − s w i s h [ x ] = s R e L U 6 ( x + 3 ) 6 swish \; x = x \cdot \sigma \left( x \right) \\ h-swish\left[ x \right] = s \frac{ReLU6\left( x + 3 \right)}{6} swishx=xσ(x)hswish[x]=s6ReLU6(x+3)

MobileNet V3有两个模型:MobileNetV3-Large 和 MobileNetV3-Small。大小模型的网络结构分表如下表所示,它们分别针对高和低资源用例。其中SE表示在block中是否包括Squee-And-Excite。NL是非线性类型,其中HS表示h-swish,RE表示ReLU。NBN表示没有BN操作。

MobileNetV3-Large网络结构如下所示:

MobileNet V3 Large
MobileNet V3 small网络结构如下所示:
MobileNet V3 Small

MobileNet V1,V2,V3对比

以下是MobileNetV1-V3各网络在ImageNet-1k上的top-1精度和参数两对比。

NetworkTop-p1Params
MobileNetV170.64.2M
MobileNetV272.03.4M
MobileNetV2(1.4)74.76.9M
MobileNetV3-Large(1.0)75.25.4M
MobileNetV3-Large(0.75)73.34.0M
MobileNetV3-Small(1.0)67.42.5M
MobileNetV3-Small(0.75)65.42.0M

参考

  1. MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications
  2. MobileNetV2: Inverted Residuals and Linear Bottlenecks
  3. Searching for MobileNetV3
原网站

版权声明
本文为[陶将]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_42111770/article/details/126243703