论文深入分析了inverted residual block的设计理念和缺点,提出更适合轻量级网络的sandglass block,基于该结构搭建的MobileNext。根据论文的实验结果,MobileNext在参数量、计算量和准确率上都有更优的表现,唯一遗憾的是论文没有列出在设备上的实际用时,如果补充一下更好了
来源:晓飞的算法工程笔记 公众号
论文: Rethinking Bottleneck Structure for Efficient Mobile Network.pdf
在介绍MobileNext前,先回顾一下bottleneck结构:
尽管Inverted residual block性能不错,但中间需要将特征先降到较低的维度,会导致以下几个问题:
为了解决上述问题,论文提出了设计更优的sandglass block,结构如图3c,基于此搭建了MobileNeXt,在性能和计算量上都优于MobileNetV2。
论文的主要贡献如下:
Sandglass Block的设计核心主要基于以下两个想法,也是与其他轻量级结构的主要区别:
inverted residual block先进行维度扩展,最后再进行缩减,根据设计核心将两个pointwise卷积的顺序互换。定义sandglass block的输入和输出为和,则维度变化可表示为:
和为用于维度扩展和缩减的pointwise卷积。这样的设计将bottleneck保持在residual path中间能够减少参数量和计算量,最重要的是,能将shortcut建立在维度较大的特征上。
shortcut不再连接低维度的bottleneck,而是连接维度较高的和。能够更好地传递信息和回传梯度。
pointwise卷积只能捕捉通道间特征,缺乏空间特征的捕捉能力。可以像inverted residual block那样中间使用depthwise卷积来显示地提取空间特征,如图3a所示。但由于sandglass block中间是bottleneck,中间添加的depthwise卷积的卷积核数量很少,只能捕捉少量空间信息。通过实验也发现,这样设计的准确率会比MobileNetV2下降1%。
因此,sandglass block将depthwise卷积置于residual path的开头和结尾,如图3b所示,可表示为:
和代表个pointwise卷积和depthwise卷积。对比inverted residual block,由于现在depthwise卷积的输入为高维度特征,可以提取更丰富的空间信息。
有研究发现,使用线性bottleneck能够防止特征值变为零,减少信息丢失。根据这一建议以及实验结果,sandglass block仅在第一个depthwise卷积后面和第二个pointwise卷积后面添加激活层,其余的均不添加。
sandglass block的结构如表1所示,当输入和输出维度不一样时,不添加shortcut,depthwise卷积采用卷积核,在需要的地方采用BN+ReLU6的组合。
基于sandglass block,构建了如表2所示的MobileNeXt,开头是32维输出的卷积,后续是sandglass block的堆叠,最后是全局平均池化,将二维的特征图压缩为一维,最后再由全连接层输出每个类别的分数。
尽管shortcut连接有助于梯度的回传,但论文通过实验发现,其实不需要保持完整的特征去跟residual path结合。为了让网络对移动设备更友好,论文提出超参数identity tensor multiplier ,用于控制shortcut传递的特征维度。
定义为residual path的转换函数,原来的residual block计算可表示为,加上超参数后,residual block变为:
下标代表通道,使用较小的有两个好处:
与MobileNetV2在ImageNet上进行对比。
与其他网络在ImageNet上进行对比。
不同identity tensor multiplier的对比。
作为检测网络的主干网络的对比。
论文深入分析了inverted residual block的设计理念和缺点,提出更适合轻量级网络的sandglass block,基于该结构搭建的MobileNext。sandglass block由两个depthwise卷积和两个pointwise卷积组成,部分卷积不需激活以及shorcut建立在高维度特征上。根据论文的实验结果,MobileNext在参数量、计算量和准确率上都有更优的表现,唯一遗憾的是论文没有列出在设备上的实际用时,如果补充一下更好了。
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】
work-life balance.
留言与评论(共有 0 条评论) “” |