论文链接
看网络的名字,可以推想出,它是ResNet(2016)的升级版。在网络结构上,它和ResNet相似,采用短路连接(shortcut connection).那么它有什么不同点呢?ResNet的F(x)和x是相加的,F(x)+x,而ResNext是合并的[x,F(x)]。先看下这两个网络的一个block的结构,如下图。直观的感觉,ResNext变宽了,而且卷积层的输入输出通道数不一样。
图 1
网络结构设计的规则主要是:
- 沿用VGG/ResNet高度模块化的设计
网络由一些残差块(residual block)堆叠而成,这些残差块有相同的拓扑结构,而且受VGG/ResNet启发:
1)如果经过残差块得到的特征图尺寸相同,那么这些残差块有相同的超参数(卷积核的数量和尺寸相同)。
2)每经过一次下采样,残差块的宽度*2(这使得不同残差块间的计算复杂度-FLOPs相同。). - 每个模块采用Splitting-Transforming-Aggregating(划分-变换-整合)操作
图2
这三个步骤与单个神经元的计算过程相似。
-
Splitting: x x x——> x i x_{i} xi
-
Transforming:对 x i x_{i} xi做线性变换 w i x i w_{i}x_{i} wixi
-
Aggregating:对所有变形后的结果求和 Σ i = 1 D \Sigma_{i=1}^{D} Σi=1D
将这个想法应用到ResNext中就变成了:
F ( x ) = Σ i = 1 c T i ( x ) F(x) = \Sigma_{i=1}^{c}T_{i}(x) F(x)=Σi=1cTi(x) -
Splitting: 图一右侧的一个个分支
-
Transforming: T i ( x ) T_{i}(x) Ti(x).文中所有的 T i ( x ) T_{i}(x) Ti(x)有相同的拓扑结构
-
Aggregating:聚集所有变形后的结果 Σ i = 1 C \Sigma_{i=1}^{C} Σi=1C
最终,一个残差块的作用可看成:
F ( x ) = x + Σ i = 1 c T i ( x ) F(x) = x +\Sigma_{i=1}^{c}T_{i}(x) F(x)=x+Σi=1cTi(x)
C是基数(cardinality),即分支数
模型的每个分支都相同,figure3(a)可以等价成figure3(b)和figure3(c).
-
模型参数量的计算。以图1右侧的结构为例
-
C是基数-32,d是宽度-4
ResNet-50与ResNext-50对比
ResNext中的一些技巧:
相对于ResNet中求和 x = F ( x ) + x x = F(x) + x x=F(x)+x,ResNext中变成了[x,F(x)],连接的方式.后者可以增加特征图的数量