【ResNeXt】Aggregated Residual Transformations for Deep Neural Networks (2017) 全文翻译

作者

Saining Xie 1 Ross Girshick 2 Piotr Dollar 2 Zhuowen Tu 1 Kaiming He 2
1 UC San Diego {s9xie,ztu}@ucsd.edu
2 Facebook AI Research {rbg,pdollar,kaiminghe}@fb.com

摘要

我们提出了一个简单、高度模块化的图像分类网络体系结构。我们的网络是通过重复一个构建块来构建的,该构建块聚合了具有相同拓扑结构的一组转换。我们简单的设计结果是一个同质的、多分支的体系结构,它只需要设置几个超参数。这个策略暴露了一个新的维度,我们称之为“基数”(转换集的大小),作为深度和宽度维度之外的一个基本因素。在ImageNet-1K数据集上,我们的经验表明,即使在保持复杂性的限制条件下,增加基数也能提高分类精度。此外,当我们增加容量时,增加基数比深入或扩大更有效。我们的模型,名为ResNeXt,是我们进入ILSVRC 2016分类任务的基础,我们获得了第二名。我们在ImageNet-5K集和COCO检测集上进一步研究ResNeXt,也显示出比ResNet对应集更好的结果。代码和模型在网上公开(https://github.com/facebookresearch/ResNeXt)。

引言

视觉识别的研究正经历着从“特征工程”到“网络工程”的转变[25,24,44,34,36,38,14]。与传统的手工设计特征(如SIFT[29]和HOG[5])不同,由神经网络从大规模数据中学习的特征[33]在训练过程中需要最少的人工参与,并且可以转移到各种识别任务[7,10,28]。然而,人类的努力已经转移到为学习表示设计更好的网络架构上。
随着超参数(宽度(宽度是指层中的通道数)、过滤器大小、跨距等)数量的增加,设计体系结构变得越来越困难,尤其是在有许多层的情况下。VGG网络[36]展示了一种简单而有效的构建深度网络的策略:堆叠相同形状的构建块。这种策略由ResNets[14]继承,ResNets将同一拓扑结构的模块堆叠起来。这个简单的规则减少了超参数的自由选择,深度作为神经网络的一个基本维度被揭示出来。此外,我们认为该规则的简单性可能会降低超参数过度适应特定数据集的风险。VGG网络和resnet的鲁棒性已经被各种视觉识别任务[7,10,9,28,31,14]和涉及语音[42,30]和语言[4,41,20]的非视觉任务所证明。
与VGG网络不同,初始模型家族[38、17、39、37]已经证明,精心设计的拓扑能够以较低的理论复杂度实现令人信服的精确度。初始模型是随着时间的推移而发展的[38,39],但是一个重要的共同属性是分割-转换-合并策略。在初始模块中,输入被分成几个低维的嵌入部分(通过1×1卷积),通过一组特殊的滤波器(3×3、5×5等)进行变换,然后通过级联进行合并。结果表明,该体系结构的解空间是在高维嵌入上操作的单个大层(如5×5)解空间的严格子空间。初始模块的分离-转换-合并行为有望接近大型密集层的表示能力,但计算复杂度要低得多。
尽管精度很高,但初始模型的实现伴随着一系列复杂的因素——过滤器的数量和尺寸是为每个单独的转换而定制的,模块是逐步定制的。尽管这些组件的仔细组合会产生优秀的神经网络配方,但通常不清楚如何使初始架构适应新的数据集/任务,尤其是在需要设计许多因素和超参数的情况下。
本文提出了一种简单的体系结构,采用VGG/ResNets的重复层策略,并以一种简单、可扩展的方式利用了分割-变换-合并策略。我们网络中的一个模块执行一组转换,每一个都在低维嵌入上,其输出通过求和来聚合。我们追求这个想法的一个简单实现-要聚合的转换都是相同的拓扑(例如,图1(右))。这种设计允许我们扩展到任何数量的转换,而无需专门的设计。
有趣的是,在这种简化的情况下,我们发现我们的模型有另外两种等价形式(图3)。图3(b)中的重新表述似乎类似于初始ResNet模块[37],因为它连接了多个路径;但是我们的模块与所有现有的初始模块不同,因为我们的所有路径共享相同的拓扑结构,因此可以很容易地将路径数作为要研究的因素隔离开来。在更简洁的重新表述中,我们的模块可以通过Krizhevsky等人的分组卷积[24](图3(c))进行重塑,然而,这是作为工程折衷方案而开发的。
我们从经验上证明,即使在保持计算复杂度和模型大小的限制条件下,我们的聚合变换仍优于原始的ResNet模块,例如,图1(右)的设计是为了保持图1(左)的FLOPs复杂性和参数数量。我们强调,虽然通过增加容量(深入或更广)来提高精度相对容易,但在保持(或降低)复杂性的同时提高准确性的方法在文献中并不多见。
我们的方法表明,除了宽度和深度维度之外,基数(变换集的大小)是一个具体的、可测量的维度,它是最重要的。实验表明,增加基数是获得精度的一种更有效的方法,而不是更深入或更广,特别是当深度和宽度开始给现有模型的回报递减时。
我们的神经网络名为ResNeXt(表示下一个维度),在ImageNet分类数据集上的表现优于ResNet-101/152[14]、ResNet-200[15]、Inception-v3[39]和Inception-ResNet-v2[37]。特别是,101层ResNeXt能够获得比ResNet-200[15]更好的精度,但复杂性只有50%。此外,ResNeXt展示了比所有初始模型更简单的设计。RESBAST是我们提交ILSRC 2016分类任务的基础,我们获得了第二位。本文在更大的ImageNet-5K集和COCO对象检测数据集[27]上进一步评估ResNeXt,显示出始终比ResNet对应的精度更好。我们希望ResNeXt也能很好地推广到其他视觉(和非视觉)识别任务。

图1. 左图:一块ResNet[14]。右:一个基数为32的ResNeXt块,其复杂度大致相同。图层显示为(#输入通道,过滤器大小,#输出通道)

2. 相关工作

多分支卷积网络。 Inception模型[38、17、39、37]是成功的多分支架构,每个分支都经过精心定制。ResNets[14]可以看作是两个分支网络,其中一个分支是身份映射。深层神经决策森林[22]是具有学习分裂函数的树状多分支网络。
分组卷积。 分组卷积的使用可以追溯到AlexNet的论文[24],如果不是更早的话。Krizhevsky等人给出的动机。[24]用于将模型分发到两个GPU上。分组卷积由Caffe[19]、Torch[3]和其他库支持,主要是为了与AlexNet兼容。据我们所知,很少有证据表明利用分组卷积来提高精度。分组卷积的一个特例是信道卷积,其中组的数目等于信道的数目。信道卷积是[35]中可分离卷积的一部分。
压缩卷积网络。 分解(在空间[6,18]和/或信道[6,21,16]级)是一种广泛采用的技术,用于减少深卷积网络的冗余并加速/压缩它们。Ioannou等人。[16] 为了减少计算量,提出了一种“根”型网络,根中的分支通过分组卷积实现。这些方法[6,18,21,16]已经显示出精确性与较低复杂性和较小模型尺寸之间的优雅折衷。我们的方法不是压缩,而是一种在经验上显示出更强的表现力的架构。
集成。 对一组独立训练的网络求平均值是提高精度的有效方法[24],在识别比赛中被广泛采用[33]。Veit等人[40]将单个ResNet解释为浅层网络的集合,这是ResNet加性行为的结果[15]。我们的方法利用加法来聚合一组转换。但我们认为,将我们的方法视为集合是不精确的,因为要聚合的成员是联合训练的,而不是独立训练的。

3. 方法
3.1 模板

我们采用了一个高度模块化的设计,遵循VGG/resnet。我们的网络由一堆剩余的块组成。这些块具有相同的拓扑结构,并受VGG/ResNets启发的两个简单规则的约束:(i)如果生成相同大小的空间地图,则块共享相同的超参数(宽度和过滤器大小),以及(ii)每次将空间地图向下采样时,块的宽度乘以因子2。第二条规则确保所有块的计算复杂度(浮点运算,乘法加运算)大致相同。
根据这两个规则,我们只需设计一个模板模块,就可以确定网络中的所有模块。所以这两条规则极大地缩小了设计空间,让我们可以关注一些关键因素。由这些规则构造的网络如表1所示。

表1.(左)ResNet-50。(右)使用32×4d模板的ResNeXt-50(使用图3(c)中的重新公式)。括号内是剩余块的形状,括号外是舞台上堆叠的块数。“C=32”表示分组卷积[24],共32组。这两种模型的参数数目和触发器数目相似

3.2 重温简单神经元

人工神经网络中最简单的神经元执行内积(加权和),这是由完全连接和卷积层完成的基本变换。内积可以看作是一种聚合转化的形式:
∑ i = 1 D w i x i . . . . . . . . . . . . . . . . . . . . . ( 1 ) \sum_{i=1}^Dw_ix_i.....................(1) i=1Dwixi.....................(1)
其中 x = [ x 1 , x 2 , … , x D ] x=[x_1, x_2, …, x_D] x=[x1,x2,,xD]是神经元的D通道输入向量, w i w_i wi是第i个通道的滤波器权重。这种操作(通常包括一些输出非线性)被称为“神经元”。见图2。

图2. 执行内积的简单神经元

上面的操作可以改写为拆分、转换和聚合的组合。(i)分裂:向量X被切成低维嵌入,在上面,它是一维维子空间 x i x_i xi。(二)变换:对低维表示进行变换,在上面,它被简单地缩放: w i x i w_ix_i wixi。(iii)聚合:所有嵌入中的转换按 ∑ i = 1 D \sum_{i=1}^D i=1D聚合。

3.3 聚合转换

鉴于以上对简单神经元的分析,我们考虑用一个更通用的函数代替初等变换( w i x i w_ix_i wixi),它本身也可以是一个网络。与“网络中的网络”[26]相比,我们发现我们的“神经元网络”沿着一个新的维度扩展。
在形式上,我们将聚合转换表示为:
F ( x ) = ∑ i = 1 C T i ( x ) . . . . . . . . . . . . . . . . . . . . . . . ( 2 ) F(x)=\sum_{i=1}^CT_i(x).......................(2) F(x)=i=1CTi(x).......................(2)
其中 T i ( x ) T_i(x) Ti(x)可以是任意函数。类似于一个简单的神经元, T i T_i Ti应该将 x x x投射到(可选的低维)嵌入中,然后对其进行变换。
在等式(2)中,C是要聚合的一组转换的大小。我们称C为基数[2]。在等式(2)中,C的位置类似于等式(1)中的D,但C不必等于D,并且可以是任意数。虽然宽度维度与简单转换(内积)的数量有关,但我们认为基数维度控制更复杂的转换数量。我们通过实验证明基数是一个必要的维度,比宽度和深度维度更有效。
在本文中,我们考虑了一种设计转换函数的简单方法:所有 T i T_i Ti都具有相同的拓扑结构。这扩展了VGG样式的策略,即重复相同形状的层,这有助于隔离一些因素并扩展到任何大量的转换。我们将单个转换 T i T_i Ti设置为瓶颈形状的体系结构[14],如图1(右图)所示。在这种情况下,每个Ti中的第一个1×1层产生低维嵌入。

图3. ResNeXt的等效构建块。(a) :聚合剩余变换,与右图1相同。(b) :相当于(A)的块,作为早期连接实现。(c) :相当于(A,b)的块,实现为分组卷积[24]。粗体文本中的符号突出显示重新制定的更改。层表示为(#输入通道,滤波器大小,#输出通道)

等式(2)中的聚合变换用作残差函数[14](图1右):
y = x + ∑ i = 1 C T i ( x ) . . . . . . . . . . . . . . . . . . . . . . ( 3 ) y=x+\sum_{i=1}^CT_i(x)......................(3) y=x+i=1CTi(x)......................(3)
其中y是输出。
与Inception-ResNet的关系。 一些张量操作表明,图1(右)(也在图3(a)中示出)中的模块等效于图3(b)(一个非正式但描述性的证据如下。注意等式: A 1 B 1 + A 2 B 2 = [ A 1 , A 2 ] [ B 1 ; B 2 ] A_1B_1+A_2B_2=[A_1, A_2][B_1;B_2] A1B1+A2B2=[A1,A2][B1B2],其中[,]是水平连接,[;]是垂直连接。设 A i A_i Ai为最后一层的权重, B i B_i Bi为块中最后第二层的输出响应。在 C = 2 C=2 C2的情况下,图3(a)中的元素加法是 A 1 B 1 + A 2 B 2 A_1B_1+A_2B_2 A1B1+A2B2,图3(b)中最后一层的权重是 [ A 1 , A 2 ] [A_1,A_2] [A1A2],图3(b)中最后第二层的输出的级联是 [ B 1 ; B 2 ] [B_1;B_2] [B1B2])。图3(b)与初始ResNet[37]块相似,因为它涉及剩余函数中的分支和连接。但与所有Inception或Inception ResNet模块不同,我们在多个路径中共享相同的拓扑。我们的模块需要最小的额外努力来设计每个路径。
与分组卷积的关系。 使用分组卷积的表示法,上述模块变得更加简洁[24](在分组卷积层[24]中,输入和输出信道被分成C组,并且在每个组中分别执行卷积)。图3(c)说明了这种重新表述。所有低维嵌入物(前1×1层)可由单个更宽的层代替(如图3(c)中的1×1128-d)。当分组卷积层将其输入信道分成组时,基本上是由分组卷积层完成的。图3(c)中的分组卷积层执行32组卷积,其输入和输出信道是4维的。分组卷积层将它们连接起来作为层的输出。图3(c)中的块看起来像图1(左)中的原始瓶颈残余块,除了图3(c)是更宽但稀疏连接的模块。
我们注意到,只有当块的深度≥3时,重构才会产生非平凡拓扑。如果块的深度为2(例如,[14]中的基本块),则重新公式将导致一个简单的宽而密的模块。如图4所示。

图4.(左):聚合深度为2的变换。(右):一个等效的块,它稍微宽一点

讨论。 我们注意到,尽管我们呈现呈现呈现串联(图3(b))或分组卷积(图3©)的重新表述,但是这种重新表述并不总是适用于等式(3)的一般形式,例如,如果变换Ti采用任意形式并且是异质的。在本文中,我们选择使用同质形式,因为它们更简单且可扩展。在这种简化的情况下,图3©形式的分组卷积有助于简化实现。

3.4 模型容量

我们在下一节中的实验将表明,我们的模型在保持模型复杂性和参数数量的情况下提高了精度。这不仅在实践中很有趣,而且更重要的是,参数的复杂性和数量代表了模型的固有能力,因此通常被视为深层网络的基本属性[8]。
当我们在保持复杂度的同时计算不同的基数C时,我们希望最小化对其他超参数的修改。我们选择调整瓶颈的宽度(例如图1(右图)中的4-d),因为它可以与块的输入和输出隔离开来。该策略对其他超参数(块的深度或输入/输出宽度)没有任何改变,有助于我们关注基数的影响。
在图1(左图)中,原始ResNet瓶颈块[14]具有 256 ⋅ 64 + 3 ⋅ 3 ⋅ 64 ⋅ 64 + 64 ⋅ 256 ≈ 70 k 256·64+3·3·64·64+64·256≈70k 25664+336464+6425670k参数和比例触发器(在相同的特征映射大小上)。对于瓶颈宽度d,图1(右)中的模板具有:
C ⋅ ( 256 ⋅ d + 3 ⋅ 3 ⋅ d ⋅ d + d ⋅ 256 ) . . . . . . . . . . . . . . . . . . . ( 4 ) C · (256 · d + 3 · 3 · d · d + d · 256)...................(4) C(256d+33dd+d256)...................(4)
参数和比例触发器。当 C = 32 , d = 4 C=32, d=4 C=32,d=4时,方程(4) ≈ 70 k ≈70k 70k。表2给出了基数C与瓶颈宽度d之间的关系。
因为我们在3.1节采用了两条规则,上述近似相等在ResNet瓶颈块和ResNeXt的所有阶段都有效(除了特征映射大小改变的子采样层)。表1比较了原始ResNet-50和我们的ResNeXt-50具有相似的容量(参数个数偏少和浮点数略高的主要原因是映射大小发生变化的块)。我们注意到复杂度只能近似地保持,但是复杂度的差异很小,并且不会影响我们的结果。

表2. 基数和宽度之间的关系(对于conv2的模板),以及残差块上大致保留的复杂性。conv2模板的参数数量为∼70k。失败次数为∼0.2亿(#参数×56×56,对于conv2)

4. 实现细节

我们的实现遵循[14]和fb.resnet.torch[11] 。在ImageNet数据集上,输入图像是224×224,使用由[11]实现的[38]的比例和纵横比增大从调整大小的图像中随机裁剪。快捷方式是身份连接,除了那些增加的维度是投影(类型B在[14])。conv3、4和5的下采样是在每个阶段的第一个块的3×3层中通过步幅2卷积来完成的,如[11]所示。我们在8个GPU(每个GPU 32个)上使用最小批大小为256的SGD。重量衰减为0.0001,动量为0.9。我们从0.1的学习率开始,使用[11]中的时间表将其除以10三次。我们采用[13]的权重初始化。在所有烧蚀比较中,我们评估了单个224×224中心裁剪的误差,该裁剪来自一个短边为256的图像。
我们的模型是以图3(c)的形式实现的。我们在图3(c)中的卷积之后立即执行批处理规范化(BN)[17](将BN加在BN的形式之后(在图3中,与BN相加是等价的))。每个BN之后都会执行ReLU,除了添加到快捷方式之后执行ReLU的块的输出,如下[14]。
我们注意到,当BN和ReLU如上文所述被适当地处理时,图3中的三种形式是严格等价的。我们训练了三种形式,结果都一样。我们选择用图3(c)实现,因为它比其他两种形式更简洁、更快。

5. 实验
5.1 在ImageNet-1K上的实验

我们在1000级ImageNet分类任务上进行烧蚀实验[33]。我们按照[14]构造了50层和101层剩余网络。我们只需将ResNet-50/101中的所有块替换为我们的块。
符号。 因为我们采用了第3.1节中的两个规则,所以我们可以通过模板来引用架构。例如,表1显示了由基数为32、瓶颈宽度为4d的模板构造的ResNeXt-50(图3)。为了简单起见,该网络被表示为ResNeXt-50(32×4d)。我们注意到模板的输入/输出宽度固定为256-d(图3),并且每次对特征映射进行二次采样时,所有宽度都加倍(见表1)。
基数与宽度。 我们首先评估基数C和瓶颈宽度之间的权衡,在表2所列的保留复杂性下。表3显示了结果,图5显示了误差与时间的曲线。与ResNet-50(上表3和图5左)相比,32×4d ResNeXt-50的验证误差为22.2%,比ResNet基线的23.9%低1.7%。随着基数C从1增加到32,同时保持复杂性,错误率不断降低。此外,32×4d ResNeXt的训练误差也比ResNet算法低得多,这表明其增益并非来自正则化,而是来自更强的表示。
在ResNet-101的情况下也观察到了类似的趋势(图5右,表3底部),其中32×4d ResNeXt-101的性能比ResNet-101的同类产品高出0.8%。虽然这种验证误差的改进小于50层情况,但训练误差的改善仍然很大(ResNet-101为20%,32×4d ResNeXt-101为16%,右图5)。事实上,更多的训练数据将扩大验证误差的差距,正如我们在下一小节的ImageNet-5K集合中所展示的那样。
表3还表明,在保持复杂性的情况下,以减小宽度为代价增加基数在瓶颈宽度很小时开始显示出饱和精度。我们认为,在这样的权衡中继续减小宽度是不值得的。所以我们在下面采用不小于4d的瓶颈宽度。

图5. ImageNet-1K上的训练曲线(左):ResNet/ResNeXt-50保留复杂度(∼41亿次浮点运算,∼2500万个参数);(右):保留复杂度的ResNet/ResNeXt-101(78亿次浮点运算,4400万个参数)

表3. ImageNet-1K上的烧蚀实验(上图):ResNet-50保留了复杂度(41亿次浮点运算);(下图):ResNet-101保持了复杂度(78亿次浮点运算)。在224×224像素的单个裁剪上计算了错误率

表4. 当flop数增加到ResNet-101的2倍时,在ImageNet-1K上进行了比较,在224×224像素的单次裁剪上计算了误码率。突出显示的因素是增加复杂性的因素

增加基数vs.更深/更广。 接下来,我们研究通过增加基数C或增加深度或宽度来增加复杂性。下面的比较也可以视为参考ResNet-101基线的2×FLOPs。我们比较了以下150亿次失败的变体。(i) 深入到200层。我们采用了在[11]中实现的ResNet-200[15]。(二)通过增加瓶颈宽度来扩大范围。(iii)通过加倍C来增加基数。
表4显示,与ResNet-101基线(22.0%)相比,增加2倍的复杂度可以持续降低误差。但当深入(ResNet-200,0.3%)或更广(ResNet-101更宽,0.7%)时,改善很小。
相反,增加基数C显示出比更深入或更广的结果。2×64d ResNeXt-101(即在1×64d ResNet-101基线上加倍C并保持宽度)可将top-1误差降低1.3%至20.7%。64×4d ResNeXt-101(即在32×4d ResNeXt-101上加倍C并保持宽度)将top-1误差降低到20.4%。
我们还注意到32×4d ResNet-101(21.2%)的性能优于较深的ResNet-200和更宽的ResNet-101,尽管它的复杂度只有∼50%。这再次表明基数比深度和宽度维度更有效。
残差连接。 下表显示了残差(短路)连接的效果:

删除ResNeXt-50中的快捷方式,误差增加3.9个百分点,达到26.1%。从相对应的ResNet-50中删除捷径的情况要糟糕得多(31.2%)。这些比较表明,剩余连接有助于优化,而聚合转换则是更强的表示,这一事实表明,它们的性能始终优于有或没有残余连接的对应项。
性能。 为了简单起见,我们使用Torch内置的分组卷积实现,无需特殊优化。我们注意到,这个实现是暴力的,不利于并行化。在NVIDIA M40的8个GPU上,表3中的32×4d ResNeXt-101每小批次需要0.95s,而ResNet-101基线具有类似的浮点运算时间为0.70s。我们认为这是一个合理的开销。我们期望精心设计的低层实现(例如,在CUDA中)将减少此开销。我们还期望CPU上的推理时间会带来更少的开销。训练2×复杂度模型(64×4d ResNeXt-101)每小批量需要1.7s,在8个gpu上总共需要10天。
与最新结果的比较。 表5显示了ImageNet验证集上的更多单作物测试结果。除了测试224×224作物外,我们还评估了320×320作物,如下[15]。我们的结果与ResNet、Inception-v3/v4和Inception-ResNet-v2相比,取得了4.4%的单作物前5名错误率。此外,我们的架构设计比所有的初始模型简单得多,并且需要手动设置的超参数要少得多。
ResNeXt是ILSRC 2016分类任务的基础,我们获得了第二的位置。我们注意到,许多模型(包括我们的模型)在使用多尺度和/或多作物测试后,在这个数据集上开始饱和。使用[14]中的多尺度密集测试,我们的单一模型top-1/top-5的错误率为17.7%/3.7%,与Inception-ResNet-v2采用多尺度、多作物测试的单模型结果17.8%/3.7%不相上下。在测试集上,我们得到了3.03%的top5错误,与获胜者的2.99%和Inception-v4/Inception-ResNet-v2的3.08%不相上下[37]。

表5. ImageNet-1K验证集上的最新模型(单作物测试)。ResNet/ResNeXt的测试尺寸为224×224和320×320,如[15]所示,初始模型的测试尺寸为299×299

图6. ImageNet-5K实验。模型在5K集上进行训练,并在原始的1K验证集上进行评估,绘制成1K路分类任务。ResNeXt和它的ResNet对应物具有相似的复杂性

表6. ImageNet-5K上的错误(%)。模型在ImageNet-5K上训练,并在ImageNet-1K val集合上进行测试,在测试时被视为5K方向分类任务或1K方向分类任务。ResNeXt和它的ResNet对应物具有相似的复杂性。在224×224像素的单个裁剪上对误差进行了评估

5.2 ImageNet-5K上的实验

ImageNet-1K上的性能似乎已经饱和。但我们认为这不是因为模型的能力,而是因为数据集的复杂性。接下来,我们在一个更大的ImageNet子集上评估我们的模型,这个子集有5000个类别。
我们的5K数据集是完整ImageNet-22K集的一个子集[33]。5000个类别包括原始的ImageNet-1K类别和附加的4000个类别,它们在整个ImageNet集合中拥有最多的图像。5K集有680万张图像,约为1K集的5倍。没有正式的列车/val拆分可用,因此我们选择在原始ImageNet-1K验证集上进行评估。在这个1K类val集合上,模型可以在测试时评估为5K方式分类任务(预测为其他4K类的所有标签自动错误)或1K方式分类任务(softmax仅适用于1K类)。
实现细节与第4节相同。5K训练模型都是从零开始训练的,训练的小批量与1K训练模型(so 1/5×epochs)相同。表6和图6显示了在保持复杂度下的比较。与ResNet-50相比,ResNeXt-50减少了3.2%的5K-way-top-1误差,ResNetXt-101比ResNet-101减少了2.3%的5K-way-top-1误差。在1K方向误差上也观察到类似的间隙。这些都显示了ResNeXt更强的表现力。
此外,我们发现,在5K集上训练的模型(表6中1K路径误差为22.2%/5.7%)与在验证集上相同的1K分类任务上训练的模型(表3中的21.2%/5.6%)相比,具有竞争性。这一结果在不增加训练时间(由于相同的小批量数量)和无需微调的情况下实现。我们认为这是一个很有希望的结果,因为5K分类的训练任务是一个更具挑战性的任务。

表7. CIFAR上的测试错误(%)和模型大小。我们的结果是平均10次

5.3 CIFAR上的实验

我们对CIFAR-10和100个数据集进行了更多的实验[23]。我们使用[14]中的架构,并通过瓶颈模板重新放置基本残差块
[ 1 × 1 , 64 3 × 3 , 64 1 × 1 , 256 ] \begin{bmatrix} 1×1,&64 \\ 3×3,&64 \\ 1×1,&256 \\ \end{bmatrix} 1×13×31×16464256
我们的网络从一个3×3 conv层开始,然后是3个阶段,每个阶段有3个剩余块,最后是平均池和一个完全连接的分类器(共29层深),如下[14]。我们采用了与[14]相同的翻译和翻转数据扩充。实施细节见附录。
我们比较了基于上述基线的两种增加复杂性的情况:(i)增加基数并固定所有宽度,或(ii)增加瓶颈宽度并修复基数=1。我们在这些变化下训练和评估一系列的网络。图7显示了测试错误率与模型大小的比较。我们发现增加基数比增加宽度更有效,这与我们在ImageNet-1K上观察到的结果一致。表7显示了结果和模型大小,与最优秀的发布记录Wide ResNet[43]相比。我们的模型具有相似的模型大小(34.4米)显示的结果比宽ResNet好。我们的较大方法在CIFAR-10上达到3.58%的测试错误(平均10次运行),在CIFAR-100上达到17.31%。据我们所知,这些是文献中最先进的结果(具有类似的数据扩充),包括未出版的技术报告。

图7. CIFAR-10上的测试错误与型号大小。结果用10次运行计算,用标准误差条显示。标签显示模板的设置

表8. COCO-minival集合上的目标检测结果。ResNeXt和它的ResNet对应物具有相似的复杂性

5.4 在COCO数据集目标检测上的实验

接下来,我们评估COCO-ob object detection set上的概化性[27]。我们在80k训练集和35k val子集上训练模型,并在5k val子集(称为minival)上进行评估,如下[1]。我们还评估了COCO风格的平均精度(AP)以及AP@IoU=0.5[27]。我们采用基本的更快的R-CNN[32],并按照[14]插入ResNet/ResNeXt。这些模型在ImageNet-1K上进行了预先训练,并在检测装置上进行了微调。实施细节见附录。
表8显示了比较结果。在50层的基线上,ResNeXt提高了AP@0.5在不增加复杂性的情况下,提高了2.1%和1.0%。ResNeXt显示101层基线上的较小改进。我们推测,更多的训练数据将导致更大的差距,正如在ImageNet-5K上观察到的那样。
另外值得注意的是,最近ResNeXt已经被Mask R-CNN[12]采用,在COCO实例分割和对象检测任务方面取得了最先进的结果。

致谢

S、 X.和Z.T.的研究得到了NSF IIS-1618477的部分支持。作者要感谢Tsung Yi Lin和Priya Goyal的宝贵讨论。

A. 实现细节:CIFAR

我们在50k训练集上训练模型,并在10k测试集上进行评估。输入图像为32×32,从一个零填充的40×40图像或其翻转中随机裁剪,如下[14]。不使用其他数据扩充。第一层为3×3conv,带64个滤波器。有3个阶段,每个阶段有3个剩余块,每个阶段的输出映射大小为32、16和8[14]。网络以一个全局平均池和一个完全连接的层结束。如第3.1节所述,当级改变时(下采样),宽度增加2倍。模型在8个GPU上训练,最小批量为128,重量衰减为0.0005,动量为0.9。我们从0.1的学习率开始,对300个时代的模型进行训练,在第150个和第225个时代降低了学习率。其他实现细节如[11]。

B. 实现细节:目标检测

我们采用更快的R-CNN系统[32]。为了简单起见,我们不共享RPN和Fast R-CNN之间的特性。在RPN步骤中,我们在8个GPU上进行训练,每个GPU每个小批量保存2个图像,每个图像包含256个锚。我们以0.02的学习率为120k个小批量训练RPN步骤,然后以0.002的速度训练60k。在快速的R-CNN步骤中,我们在8个GPU上训练,每个GPU保存1个图像,每个小批次包含64个区域。我们以0.005的学习率和0.0005的速度训练120k个小批次的快速R-CNN步骤,我们使用0.0001的权重衰减和0.9的动量。其他实现细节如中所示https://github.com/rbgirshick/py-faster-rcnn。

参考文献

在这里插入图片描述
在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页