MobileNet v2:https://arxiv.org/abs/1801.04381
概述
MobileNetV2 以 MobileNetV1 的理念为基础,使用深度可分离卷积作为高效构建块。此外,V2 在架构中引入了两项新功能:
- Depth-wise convolution之前多了一个1*1的“扩张”层,目的是为了提升通道数,获得更多特征;
- 在pointwise convolution不采用Relu,而是Linear,目的是防止Relu破坏特征。
借鉴了ResNet, 在步长为1的深度可分离卷积模块中加入了shortcut,但是直接把depth-wise separable convolution应用到 residual block中,会碰到如下问题:
- DWConv layer层提取得到的特征受限于输入的通道数,若是采用以往的residual block,先“压缩”,再卷积提特征,那么DWConv layer可提取得特征就太少了,因此一开始不“压缩”,MobileNetV2反其道而行,一开始先“扩张”,本文实验“扩张”倍数为6。 通常residual block里面是 “压缩”→“卷积提特征”→“扩张”,MobileNetV2就变成了 “扩张”→“卷积提特征”→ “压缩”,因此称为 Inverted residuals
- 当采用“扩张”→“卷积提特征”→ “压缩”时,在“压缩”之后会碰到一个问题,那就是Relu会破坏特征。为什么这里的Relu会破坏特征呢?这得从Relu的性质说起,Relu对于负的输入,输出全为零;而本来特征就已经被“压缩”,再经过Relu的话,又要“损失”一部分特征,因此这里不采用Relu, 实验结果表明这样做是正确的,这就称为 Linear bottlenecks
Inverted残差单元结构如图:
另外,对于每个bottleneck,若输入尺寸为h×w, 扩张因子为t, 卷积核大小为k, 输入通道数为 d′ , 输出通道数为d′′ , 则总的MAdd为h · w · d′ · t(d′ + k^2 + d′′),
而MobileNet v1的MAdd为h · w · d′ · (d′′ + k^2), 从公式看其计算量增加了,但实际上MobileNet v2的输出滤波器个数较少,也就是d′′较小,所以实际上参数量更少。
.
其他具体细节请参考:
轻量级神经网络MobileNet,从V1到V3