论文阅读|图像分类ResNeXt

论文相关信息

1.论文题目:Aggregated Residual Transformations for Deep Neural Networks

2.发表时间:201611

3.文献地址:https://arxiv.org/abs/1611.05431

4.论文源码:https://github.com/facebookresearch/ResNeXt

介绍

文章提出了一种用于图像分类的简单且高度模块化的网络架构,该网络由一种固定结构的构建模块(building block)重复堆叠构成,这种构建模块以相同的拓扑结构聚合了一系列的变换。这种简单的堆叠思想继承自VGG,能够减少模型的超参数设置对于某个特定数据集的过度拟合。同时继承了Inception models中split-transform-merge策略的思想,但是相比Inception models中的split-transform-merge 策略更加简单和具有扩展性——每个模块先分割成若干low-dimensional embedding,然后在这些embedding上执行transformations(变换集合),最后通过相加的方式聚合这些输出。这里,用于聚合的每个变换集合都采用了相同的拓扑结构,这种简单设置使得网络能够更容易扩展得到更大数量的transformations。而Inception models中则是每个变换集合中的filter都需要特殊定制,更复杂,且不好泛化到其它数据集。ResNexXt的building block见下图:

在这里插入图片描述

我们将构建模块中变换集的尺寸称作cardinality,作为网络除了深度和宽度外的另一个关键要素。网路有多个分支,具有同质性,因此整个网络需设置的超参数很少。实验证明增加cardinality能够增加分类精度,同时在相同的网络容量下,增加cardinality比增加深度或宽度提升的精度更多。

在相同的计算复杂度和模型尺寸下,ResNext表现比ResNet更好,和Inception models相比更加简单。

宽度指的是某layer中channel的数量。

比较有趣的是,按照上面的描述,我们的building block还有其他的两种实现形式,如下图中的b和c。需要注意的是这三种形式是严格相等的,得到的结果相同,而文中的实验采用的是图中的c(组卷积的方式),因为c的实现方式更简洁,也更快。

在这里插入图片描述

Note:

由于每个模块中的拓扑结构固定,每个模块的输入输出width固定,所以bottleneck的width可以独立出来设置,文中将bottleneck的width独立出来叫做width,单独作为一个超参数;而且cardinality也可以独立出来作为一个超参数。于是一个ResNeXt网络的命名形式为ResNeXt-50 (32×4d),代表 cardinality = 32 and bottleneck width = 4d且深度为50的ResNeXt网络。

Related Work

多分支的卷积网络:Inception models是多分枝的成功体现,但是每个分支都是特殊定制的,比较复杂。而ResNet也可以看作是一个二分支的网络,其恒等映射即可看作是第二个分支。此外还有深度神经决策林(不作详细了解)。

组卷积(Grouped convolutions):组卷积的使用最早可以追溯到AlexNet的提出,其作者Krizhevsky将模型分布到两个GPU上计算时将通道分成了两部分。随后探索组卷积来提升精度的比较少。一个特殊的组卷积则是channel-wise的卷积。

组装(Ensembling):将一系列独立训练的网络聚合起来。对一系列独立训练的网络的结果取平均值是提高精度的有效方式。但是ResNeXt中的每个path都是关联训练的,所以不叫作组装。

原文中还提到了压缩卷积,但是我没有理解到它的压缩卷积体现在哪,所以省略。

Method

模板(Template)

采用高度模块化的方案,由一系列的残差模块堆叠而成,每个模块具有相同的拓扑结构。这些模块的设计服从VGG/ResNets中的连个简单规则:

  1. 如果生成的是同样空间尺寸的特征图,那么模块应该有相同的超参数(宽度和卷积核的尺寸)。
  2. 生成特征图的空间尺寸每缩小(下采样)一倍,则模块的宽度(通道数/卷积核的数量)增加一倍。

第二条规则确定了模型的计算复杂度,就浮点运算(FLOPs)来说,每个模块几乎相同。

因此,在这两个规则下,只需设计一个模板,然后整个网络的架构就能确定了,根据这两条规则设计得到的ResNeXt结构见下表:

在这里插入图片描述

Experiments

模型是是现实采用的是上面提到的三种实现方式中的方法三,即组卷积的方式。在每个building block之后执行batch normalization(BN),然后接着跟上ReLU。
学习率这些忽略。

Cardinality vs. Width

评估了 cardinality C 和 bottleneck width之间的权衡,实验表面在相同复杂度下增加cardinality 比增加bottleneck width带来的精度更高。但是bottleneck width不能减少太小,最少应该为4.

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yanghao201607030101/article/details/111997385