ResNext论文理解:
原理非常简单,一张图即可搞明白,其实就是增加了group conv的技巧:
提出来 cardinality 的概念,在上图左右有相同的参数个数,其中左边是 ResNet 的一个区块,右边的 ResNeXt 中每个分支一模一样,分支的个数就是 cardinality。此处借鉴了 GoogLeNet 的 split-transform-merge,和 VGG/ResNets 的 repeat layer。 所谓 split-transform-merge 是指通过在大卷积核层两侧加入 1x1 的网络层,控制核个数,减少参数个数的方式。借鉴 fei-fei li 的 cs231n 课件1:
而 repeat layer 则是指重复相同的几层,前提条件是这几层的输出输出具有相同的维度,一般在不同的 repeat layers 之间使用 strip=2 降维,同时核函数的个数乘 2。
这种思想可以有三种实现形式:
作者实验发现,三种形式效果差不多,考虑计算性能,选择第三种。
a 就是所说的aggregated residual transformations。 b 则采用两层卷积后 concatenate,再卷积,有点类似 Inception-ResNet,只不过这里的 paths 都是相同的拓扑结构。c采用的是grouped convolutions,这个 group 参数就是 caffe 的 convolution 层的 group 参数,用来限制本层卷积核和输入 channels 的卷积,可以减少计算量。这里 c 采用32个 group,每个 group 的输入输出 channels 都是4,最后把channels合并。这张图的 c 和 fig1 的左边图很像,差别在于fig c的中间 filter 数量(此处为128,而fig 1中为64)更多。个人理解还是采用group conv的trick,减少了参数数量,
作者提出一个概念:把上述building block中除了short-cut以外的支路数量称为cardinality(基数)。作者把cardinality和depth、width两个概念并列,并在实验中证明增加cardinality比增加depth或width更加有效。