![深度学习视频理解](https://wfqqreader-1252317822.image.myqcloud.com/cover/920/43737920/b_43737920.jpg)
2.1.14 MobileNet V2/V3
(Sandler et al.,2018)发现,直接训练 MobileNet 倾向于让其中的Depthwise卷积的卷积核很多为0,由于ReLU 激活函数会将小于0 的特征直接置 0,当特征通道数比较少时,ReLU 带来的信息损失问题比较严重。因此,MobileNet V2(Sandler et al.,2018)在MobileNet的基础上引入了线性瓶颈(Linear Bottleneck)结构和倒置残差(Inverted Residual)结构,如图2-21所示。
![img](https://epubservercos.yuewen.com/E5C1AE/23020634309724506/epubprivate/OEBPS/Images/txt002_207.jpg?sign=1738838512-0hw30q8b09S4prwYv4vq1QSX15GAKK4z-0-baab2bee1d4b58e094edf612296ce2f1)
图2-21 MobileNet V2 网络结构图
由于MobileNet V2中的Depthwise卷积不改变通道数,输出通道数和输入通道数相同,如果输入通道数比较小,Depthwise卷积的效果会受影响。因此,MobileNet V2在Depthwise卷积之前先用卷积进行升维,使得输出通道数是输入通道数的6 倍,后续的Depthwise卷积再在一个通道数更高的空间中进行特征提取,最后通过一个
卷积恢复到原来的特征通道数。整体再加一个短路连接,如图2-21(a)所示;当需要空间维度减半时,由于输入和输出空间维度不一致,不使用短路连接,空间维度减半通过将 Dpethwise卷积中的步长设为2 实现,如图2-21(b)所示。
此外,MobileNet V2 第一个卷积层和Depthwise卷积层后都使用了ReLU6 激活函数,如图2-22所示,相比于标准 ReLU 激活函数
的取值范围为
,ReLU6 激活函数
限制了输出值的上限,取值范围为
,在低精度计算下具有更强的稳健性(Robustness)。MobileNet V2在第二个
卷积后使用线性激活函数,即不使用激活函数,这称为线性瓶颈,可以降低 ReLU 带来的信息损失。
![img](https://epubservercos.yuewen.com/E5C1AE/23020634309724506/epubprivate/OEBPS/Images/txt002_216.jpg?sign=1738838512-EDxUVIb0xyCd10IOSyDQxfz0zCjEvrws-0-f7df07b21ae00a50931304f501b3d287)
图2-22 ReLU和ReLU6 激活函数对比
整体上看,图2-21(a)和ResNet的带瓶颈的残差模块很相似,区别在于以下几点:
● 激活函数不同。ResNet 使用ReLU 激活函数,而 MobileNet V2 前两个卷积层后使用ReLU6 激活函数,第三个卷积层后使用线性激活函数。
● 卷积的作用不同。ResNet 先用
卷积降维到输入通道数的1/4,经过
卷积进行特征提取后,再用另一个
卷积升维到输入通道数,而 MobileNet 先用
卷积升维到输入通道数的6 倍,经过
卷积特征提取后,再用另一个
卷积降维到输入通道数。由于中间升降维顺序正好和ResNet的残差模块相反,因此 MobileNet中的结构称为倒置残差模块。
● 中间的卷积层不同。ResNet中间的卷积层是标准的卷积,而 MobileNet中间的卷积层是
的Depthwise卷积。
MobileNet V3(Howard et al.,2019)在MobileNet V2的基础上使用了硬件感知的网络结构搜索(Network Architecture Search,NAS),并将激活函数换成了Swish(Ramachandran et al.,2018),然后提出h-swish 近似 Swish,以及加入了SE模块等(见 2.1.12 节)。
其中,Swish 激活函数的形式为
![img](https://epubservercos.yuewen.com/E5C1AE/23020634309724506/epubprivate/OEBPS/Images/txt002_226.jpg?sign=1738838512-cbUMcx8B18VkY2TcNirluG1Cy6QJ6Qaa-0-7d81fe0484618d0c06757bf89fd28a0b)
(2.10)
表示 Sigmoid 激活函数,
是一个超参数,Swish 激活函数具有无上下界、光滑、非单调的特性,(Ramachandran et al.,2018)发现使用Swish 激活函数效果优于传统的ReLU 激活函数。h-swish 希望通过 ReLU6 激活函数逼近 Sigmoid 函数,这样可以降低计算量,h-swish 激活函数的形式为
![img](https://epubservercos.yuewen.com/E5C1AE/23020634309724506/epubprivate/OEBPS/Images/txt002_229.jpg?sign=1738838512-Ckt2uHHZ3eSWmjMK7pXQvPu3VrTLnvV7-0-879525f3bec8ce0b1f089d3ed6d56122)
(2.11)