ResNext论文链接

ResNext提出的主要原因

传统的模型想要提高准确率,都是加深或加宽网络,但是随着超参数数量的增加(比如通道数,卷积尺寸等),网络设计的难度和计算开销也会增加。因此ResNext论文中提出的ResNext结构可以在不增加参数复杂度的前提下提高准确率,同时还减少了超参数的数量(主要的得益模块子结构)。

ResNext介绍

ResNext同时采用VGG堆叠思想和Inception的split-transform-merge思想,但是比起Inception可扩展性很强,可以认为是在增加准确率的同时基本不改变或降低模型的复杂度。

文中提到一个名词cardinality,原文的解释是the size of set transformatons(可以理解为子结构的个数),如下图所示,右边部分表示cardinality=32的结构,其中每一个被聚合的拓扑结构都是一样的(这样比起Inception可以减轻设计负担)。

深度学习_经典网络_ResNext详解
文中实验表明使用cardinality比增加深度和宽度更有效。

论文中指出ResNext-101可以达到比ResNet-200更好的效果但是参数量只有ResNet-200的一半。

下图是ResNet-50和ResNext-50的结构对比图:

深度学习_经典网络_ResNext详解

从表中可以看出,两者的参数复杂度差别不大。

ResNext的子结构具体介绍

深度学习_经典网络_ResNext详解
上面的图中展示了三种等价的ResNext blocks。(a)就是一开始讲的aggregated residual transformations。(b)则采用两层卷积后concatenate,再卷积,有点类似Inception-ResNet,只不过这里的paths都是相同的拓扑结构。(c)采用的是grouped convolutions,这个group参数就是caffe的convolusion层的group参数,用来限制本层卷积核的输入channels的卷积,最早是在AlexNet上使用,可以减少计算量。这里采用32个 group,每个 group 的输入输出 channels 都是4,最后把channels合并。

录完呢汇总展示了(c)的结构。因为(c)结构比较简洁而且速度更快。

在实验中作者说明ResNext-50/101和ResNet-50/101的区别仅仅在于其中的block,其他都不变。如下图所示:

深度学习_经典网络_ResNext详解
其中,32×4d32\times 4d表示32个paths,每个path的宽度为4。实验结果表明ResNeXt和ResNet的参数复杂度差不多,但是其训练误差和测试误差都降低了。

下面的实验结果说明增加cardinality和增加深度或宽度的区别,增加宽度就是简单地增加通道数。第一个是基准模型,增加深度和宽度的分别是第三个和第四个,可以看出误差分别降低了0.3%和0.7%。但是第五个加倍了cardinality,则降低了1.3%,第六个cardinality加到64,则降低了1.6%。显然增加cardianlity比增加深度或宽度更有效。

深度学习_经典网络_ResNext详解

ResNext的核心创新点

论文中提出了aggregrated transformations(聚合变换),用一种平行堆叠相同拓扑结构的blocks代替原来ResNet的三层卷积的block,在不明显增加参数量的情况下提升了模型的准确率,同时由于拓扑结构相同,超参数也减少了,便于模型移植。

相关文章: