ResNext(2017)解读

论文链接
看网络的名字,可以推想出,它是在ResNet(2016)的升级版。在网络结构上,它和ResNet相似,采用短路连接(shortcut connection).那么它有什么不同点呢?先看下这两个网络的一个block的结构,如下图。直观的感觉,ResNext变宽了,而且卷积层的输入输出通道数不一样。
ResNext(2017)解读
         图 1
网络结构设计的规则主要是:

  1. 沿用VGG/ResNet高度模块化的设计
    网络由一些残差块(residual block)堆叠而成,这些残差块有相同的拓扑结构,而且受VGG/ResNet启发:1)如果经过残差块得到的特征图尺寸相同,那么这些残差块有相同的超参数(卷积核的数量和尺寸相同)。2)每经过一次下采样,残差块的宽度*2(这使得不同残差块间的计算复杂度-FLOPs相同。).
  2. 每个模块采用Splitting-Transforming-Aggregating(划分-变换-整合)操作
    ResNext(2017)解读
                 图2
    这三个步骤与单个神经元的计算过程相似。
  • Splitting:xx——>xix_{i}

  • Transforming:对xix_{i}做线性变换wixiw_{i}x_{i}

  • Aggregating:对所有变形后的结果求和Σi=1D\Sigma_{i=1}^{D}
    ResNext(2017)解读
    将这个想法应用到ResNext中就变成了:
    F(x)=Σi=1cTi(x)F(x) = \Sigma_{i=1}^{c}T_{i}(x)

  • Splitting: 图一右侧的一个个分支

  • Transforming:Ti(x)T_{i}(x).文中所有的Ti(x)T_{i}(x)有相同的拓扑结构

  • Aggregating:对所有变形后的结果求和Σi=1C\Sigma_{i=1}^{C}
    最终,一个残差块的作用可看成:
    F(x)=x+Σi=1cTi(x)F(x) = x +\Sigma_{i=1}^{c}T_{i}(x)
    C是基数(cardinality),即分支数
    模型的每个分支都相同,figure3(a)可以等价成figure3(b)和figure3(c).
    ResNext(2017)解读

  • 模型参数量的计算。以图1右侧的结构为例

  • C是基数-32,d是宽度-4
    ResNext(2017)解读
    ResNet-50与ResNext-50对比
    ResNext(2017)解读
    ResNext中的一些技巧:

  1. 随机裁剪为224*224
  2. Scale and aspect ratio augmentation
  3. 初始化方式(参考1),解释参考
  4. BN及ReLU的位置
    ResNext(2017)解读

  1. Delving Deep into Rectifiers: Surpassing Human-Level Performance on ImageNet Classification ↩︎