paper:Rethinking Bottleneck Structure for Efficient Mobile Network Design
official implementation:GitHub - zhoudaquan/rethinking_bottleneck_design
存在的问题
Inverted residual block广泛应用于近年来的移动网络,它通过引入两种设计规则来改变经典的residual bottleneck:学习inverted residual和使用linear bottleneck。和residual bottleneck相比,它将恒等映射identity mapping从高维表示移动到低维表示(即bottleneck)。但在thin bottlneck之间进行identity mapping将不可避免的导致信息损失,因为残差表示被压缩了。此外,由于压缩的特征维度导致的梯度混淆,也会削弱梯度在层间的传播能力,从而影响训练的收敛和模型的性能。
本文的创新点
针对上述问题,本文提出了一种新的bottleneck设计,称为sandglass block。与在linear bottleneck之间构建shortcut的Inverted residual block不同,sandglass block在线性高维表示之间建立shortcut,如图2(c)所示。
与反向残差块相比,这种结构保留了块之间更多的信息传递,同时由于高维残差可以反向传播更多的梯度从而更好的优化网络训练。
方法介绍
sandglass block的结构如图3(b)所示,与residual block相比,为了编码更多空间信息,sandglass block将深度卷积从bottleneck移到了residual path的首尾端。与inverted residual block相比,为了减少信息的丢失,将identity mapping从低维移到高维。
实验结果
作者基于sandglass block构建了MobileNeXt,并与MobileNetv2进行了对比,结果如下,可以看到不同的multiplier下,MobileNeXt都优于MobileNetv2。
与其它轻量模型的对比如下,其中 \(\dagger\) 表示添加了SE block。可以看到,MobileNeXt取得了最优的性能表现。
当作为pretrained backbone迁移到目标检测任务中,效果也很好,如下
作者还对sandglass block不同的变种进行了对比,如下,其中(d)是最终采用的结构。
结果如表10所示。
图4(a)是直接对经典的residual block进行的修改,用3x3深度卷积替换中间标准的3x3卷积,从结果可以看出,与sandglass block相比性能下降了约5%。作者认为这主要是因为深度卷积是在低维特征空间中进行的,因此无法捕获足够的空间信息。
图4(b)是在(a)的基础上额外添加了一个3x3深度卷积,从结果可以看出,与(a)相比top-1精度提高了超过1%,这表明编码更多的空间信息确实有帮助。
图4(c)是基于原始的inverted residual block,我们将深度卷积从高维移动到bottleneck位置,如图4(d)相比参数量差不多 计算量更大,但性能更差,这表明在高维表示之间构建shortcut更有利于网络性能。