2.1.11 ResNeXt
ResNeXt(Xie et al.,2017)是ResNet的另一改进。之前的深度学习算法通常靠加深或加宽网络来提升性能,但计算开销也会随之增加。ResNeXt 旨在不改变模型复杂度的情况下提升性能。受精简而高效的Inception模块启发,ResNeXt 将 ResNet中的残差分支从一个分支变为多个分支,最终将多个分支的结果相加合并;受简单而有效的VGGNet 网络的启发,ResNeXt中每个分支采用相同的网络结构,并且重复堆叠相同的模块,特征空间维度减半时,特征通道数加倍。如图2-15所示,图2-15(a)是ResNet中残差模块的结构,图2-15(b)是ResNeXt中改进的残差模块的结构。相比于增加网络宽度或深度,ResNeXt通过增加分支数,可以更加高效地提升准确率。
图2-15 ResNeXt的等价实现
ResNeXt中的模块和Inception模块不同之处有3点:
● ResNeXt的每个分支的结构都相同,感受野也相同,而 Inception的每个分支结构不同,由于不同分支的卷积层的卷积核维度不同,每个分支的感受野大小也不同。
● ResNeXt的各个分支通过相加的方式合并,而 Inception的各个分支通过特征拼接的方式合并。
● ResNeXt中使用了短路连接,而 Inception 没有使用短路连接。
为了方便实现,ResNeXt 对其中的计算进行等价变换,如图2-15所示。首先,由于卷积是线性操作,先对每个分支进行卷积,再将结果相加(见图2-15(b)),等价于先将各个分支特征拼接在一起,再进行卷积(见图2-15(c))。图2-16 展示了这个等价过程,以两个分组为例,假设分组卷积的两个分组的卷积核分别为,输入特征的两个分组对应空间位置的特征为,因此分组卷积的输出分别是,特征相加之后的结果为
图2-16 分组卷积之后相加等价于特征拼接之后卷积
(2.5)
如果首先将特征进行拼接,卷积层的卷积核也相应地进行卷积核拼接,卷积结果为
(2.6)
两者计算是等价的。
其次,每个分支分别进行卷积之后再进行卷积,等价于整体进行卷积之后分组,然后进行分组卷积(见图2-15(d)),其中分组的组数等于ResNeXt的分支数。最终,ResNeXt的结构可以巧妙地使用分组卷积进行实现。
总之,ResNeXt 综合了ResNet和Inception的优点,并巧妙地利用分组卷积进行实现。ResNeXt 发现,增加分支数是比加深或加宽更有效地提升网络性能的方式,例如,ResNeXt-101 复杂度只有 ResNet-200的一半,但是准确率更高。ResNeXt的命名旨在说明这是下一代(NeXt)的ResNet。