1 摘要
该文章为图像分类提出了一种简单并且高度模块化的网络结构。该网络由具有相同拓扑结构的转换块堆叠而成,这样简化的设计得到了一个一致的、多分枝的网络结构并且具有很少的超参数。这样的方法同时增加了一个叫做“基数”(cardinality)的维度,其含义是转换集的大小,它是除了网络宽度和深度之外的另一个必要的因素。在ImageNet-1K数据集上,若固定计算复杂度,则增加基数,能够改善分类精度。在增加分类能力的时候,增加基数的值要比增加网络的深度或者宽度更有效率。
2 介绍
该文章采用了与VGG和ResNet相同的策略——重复执行“分离-转换-合并”,如图1,左边是ResNet采用的块结构,对于256维的输入,其先通过F1(1*1)的滤波器(卷积算子)降低为64维,如果是这样做,考虑到图像为2-D结构,其输入应该256=16*16,那么用F1做卷积,其步长应该为2,相当于进行了采样;然后再用F2(3*3)做卷积,由于输入维与输出维相同,所以对输入图像进行了填边。而最后的F3(1*1)则相当于上采样或者反卷积操作。右边为ResNeXt采用的结构,首先将256为的向量输入到32个相同的支路中,每条支路采用与ResNet类似的结构——重复“下采样-卷积-上采样”操作,然后在每个支路的结尾进行相加。在每个卷积子层之间都有非线性化的操作,该文章采用ReLU激活函数。
3 聚集转换
对于内积
我们可以将其看做如下“分离-转换-合并”过程,如图2:
1)分离:将向量x嵌入较低的维度,得到各个分量的x_i;
2)转换:在低维空间中分别对x_i进行变换,对于上述内积,其变换为w_i*x_i;
3)合并:将所有低维空间的分量聚集在一起,对上述内积为直接求和。
图2-一个简单的神经网络
对于该文章的网络结构而言,其聚集变换可以写作如下形式:
其中tau_i(x)可以为任意函数,tau_i具有相同的拓扑结构;C是前文中所提到的基数,它是至关重要的一个维度,要比网络的深度和宽度更有效率。相应的残差函数可以写为:
其中,y是输出。与ResNet类似,该结构也有3种等价的拓扑结构,如图3。
图3-ResNeXt的3种等价的网络结构
其网络的整体结构可由表1来描述,表1中略去了激活函数层,其构造有与VGG/ResNet类似的两条规则:1)如果产生相同尺寸的空间映射,那么瓶状块具有相同的超参数;2)每次进行步长为2的下采样后,瓶状块的宽度翻倍。从浮点操作的角度来看,第二条规则确保了所有的瓶状块具有相同的计算复杂度。
表1-ResNet和ResNeXt的网络结构
分析一下如何得到输入输出的尺寸。首先原始的输入尺寸为228*228,所以经过第一个卷积层时,会有填充,取滑动步长为2,得到尺寸减半的输出图像;而后的每一层做卷积时都有填充,在每一个瓶状块中,应该都包括“下采样-卷积-上采样”的过程,方能得到与表1中相同的输出尺寸。在输出到每一个瓶状块之前,都有批量归一化(Batch
Normalization,BN)的操作,实际上也可以看作一层。
文章的模型在保持模型复杂性和参数数量的同时提高了准确性。这不仅在实践中很有意义,更重要的是参数的复杂性和数量代表了模型的内在能力,因此经常被作为深度网络的基本属性进行调研。
表2-瓶颈宽度和基数C之间的关系
当在保存复杂度的同时评估不同的基数C时,最小化其他超参数的修改。因此选择调整瓶颈的宽度,因为它可以与块的输入和输出隔离。这个策略不会改变其他超参数。
在图1(左)中,原始ResNet瓶颈块具有256·64 + 3·3·64·64 + 64·256≈70k参数和比例FLOPs。图1(右)中的模板具有:
C ·(256·d+3·3·d·d+d·256) (4)
参数和比例FLOPs。当C = 32和d = 4时,公式(4)≈70k。
4.实验实施细节
对于代码的实现,遵循fb.resnet.torch的公共可用代码。在ImageNet数据集上,输入224×224图像,使用缩放和增强纵横比,随机裁剪来调整图像的大小。捷径除了增加的投影尺寸也用于确认链接。conv3,4和5的下采样通过在每个阶段的第一个块的3×3层中,通过2层卷积完成。在8个GPU上使用SGD,最小批量为256,体重衰减为0.0001,动量为0.9。先从0.1的学习率开始,计划将其分为三次,采用权重初始化。在所有的消融比较中,从短边为256的图像评估单个224×224中心物的误差。
模型的实现形式如图3(c),卷积后立即执行批量归一化(BN),在每个BN之后立即执行ReLU,期望在添加到捷径之后执行ReLU的块的输出,训练了所有三种形式并获得了相同的结果。
5 实验结果
实验结果主要有三个,一是说明效果略优于ResNet,二是说明基数C对于网络的作业,最后就是在其它各种数据集上的结果。
5.1 在imageNet-1K上的实验
(1) 实验模型:ResNeXt-50 和ResNeXt-100
(2) 网络的“基数”和宽度对比
a)setting一列的说明:n*md意味着网络模块的”基数”为n网络的宽度为m。例如1*64d说明网络的模块为”基数”为1,宽度为64。
b)在比较网络模块的”基数”和宽度的前提是整个网络的复杂度要相同,也就是说整个网络的参数数量要大致相同,从表格3可以观察到无论是ResNeXt-50 还是ResNeXt-100,随着网络模块的宽度减少和”基数”的增加,在imageNet-1K上的错误率不断减少。
c)随着网络模块的”基数”增加,网络的错误率接近于饱和,因此不需要关注更低的”基数”。
a)从上述实验结果中可以观察到在相同的模型复杂度和训练迭代次数的前提下,ResNeXt-50和ResNeXt-100的训练误差比ResNet-50 和ResNet-100要低。
b)与此同时,由于ResNeXt-50 和ResNeXt-100的错误率更低,可以推断出ResNeXt-50 还是ResNeXt-100比ResNet-50 和ResNet-100获得更多的数据的隐含信息。
(3)增加”基数”和增加网络的深度和宽度的比较
a)实验中无论增加”基数”、深度或者宽度,整个网络结构的参数要大致相同,维持在大约150亿FLOPs。
b)增加网络的深度,从ResNet-101的101层的深度到ResNet-200的200层的深度,可以观察到top-1的错误率只降低了0.3%。
c)增加网络的宽度,从ResNet-101的宽度从64维扩展到100维,从图中观察到top-1的错误率只降低了0.7%。
d)增加网络的”基数”,2×64d ResNeXt-101的网络结构比1×64d
ResNeXt-101网络结构的错误率降低了1.3%。与此同时,64×4d ResNeXt-101的网络结构的错误率降低到了20.4%。
e)除上述之外,table-4中能观察到32×4d
ResNeXt-101的网络结构的的参数的数量只有ResNet-200和ResNet-101,wider的一半,但是错误率却比更深和更宽的网络的错误率要低。
(4)残差连接
a)残差连接对于ResNet-50和ResNeX-50t都而言,都可以降低错误率的。
b)无论是否有残差连接存在,ResNeXt-50比ResNet-50的错误率都低,说明ResNeXt-50从数据中获得更多的潜在信息。
(5)性能
在NVIDIA M40的8块GPU上,在相同的模型参数总数上,训练32×4d ResNeXt-101在每个batch上会花费0.95秒, 与之相对应的训练ResNet-101
将会花费0.7秒。同时作者强调在torch中没有实现完全的并行,实际性能还需之后探索。
(6)和最新的不同网络的结果之间的比较
a)ResNeXt-101在于ResNet-101和ResNext-200的比较中,错误率比较低。
b)于此同时和其他模型(Inception-v3等)相比,ResNeXt-101不仅仅错误率上比其他模型要低,同时还比这些模型更加简单和更少的人工设定的参数。
5.2在imageNet-5K上的实验
作者观察到模型在imageNet-1K上的性能达到了饱和的原因不在于模型的能力不足,而在于数据的复杂程度不够。因此作者在分类标签为5000个的imageNet-5K上训练模型。imageNet-5K的训练图片数量比imageNet-1K多5倍,其中1K大小的图像是来自于原始的imageNet-1K,其余4000分类标签的样本来自于ImageNet-22K的数据集中。由于没有验证集和测试集的存在,本次实验中将imageNet-1K数据集中的数据作为验证集和测试集。
a)在比较imageNet-1K和imageNet-5K的性能的前提在于模型在两个数据库的运算复杂度相同,也就是说imageNet-5K的运算次数是imageNet-1K的1/5。
b)从Figure-6中观察到在imageNet-5K数据集中,ResNeXt-101的错误率还是比ResNet-101低。
c)从Table-6中观察到在imageNet-5K数据集中训练得到的模型,imageNet-1K(22.2%/5.7%)上的分类效果比在imageNet-1K数据集上训练得到的模型(21.2%/5.6%)的分类效果要好。
5.3 在CIFAR上的实验
作者在CIFAR-10和[13]中的100个数据集上进行实验,使用了[14]中提到结构,并用
代替残块,网络使用了3x3卷及多项式层,之后的3个阶段每个有3个残块,最后有一个平均池和一个全分类器(总共29层深),采用和[14]中相同的平移和翻转数据增量。
实验比较了基于上述基线的情况下,增加复杂性增加的两个案例: (i)增加基数并修复所有宽度,或者(ii)增加瓶颈的宽度和固定基数= 1,在这些变化下训练和评估一系列网络。图7显示了测试错误率与模型大小的比较。实验发现,增加cardi-
nality比增加宽度更有效,与我们在ImageNet-1K上观察到的一致。表7显示了结果和模型的大小,与Wide ResNet [43]相比,这是最好的记录。在大小为34.4M的模型下,本文提出的模型优于Wide ResNet。该方法在CIFAR-10上的测试错误率达到3.58%,在CIFAR-100达到17.31%。
5.4 COCO对象检测的实验
这部分内容对COCO对象检测集[27]进行了概括性的评估。本文在80k训练集和35k val子集上训练模型,并对一个5k val子集(称为最小子集)进行评估,评估了COCO- styleAverage Precision (AP)和AP@IoU=0.5,采用了R-CNN[32],并将ResNet/ResNeXt插入其中,模型在ImageNet-1K上进行预训练,并对检测集进行微调。
比较结果见图8,在50层基线上,ResNeXt将[email protected]提高2.1%,对AP提高1.0%,且不会增加复杂性。ResNeXt在101层基线上改进较小,由此推测,更多的训练数据将导致更大的差距,就像在ImageNet-5K集上观察到的那样。同样值得注意的是,最近ResNeXt已经被采用在Mask R-CNN[12]中,它在COCO实例分割和对象检测任务方面取得了最先进的结果。