Aggregated Residual Transformations for Deep Neural Networks Facebook AI Research 大牛 Ross Girshick Kaiming He 作品
官方代码 Torch: https://github.com/facebookresearch/ResNeXt
Caffe 代码:https://github.com/terrychenism/ResNeXt
1 Introduction 视觉识别研究正从特征工程向网络工程过渡。神经网络在各种识别任务中大行其道。研究人员的精力主要用于网络架构的设计。 VGG 网络展示了一种简单有效的策略来构建深度网络:组合相同形状的网络模块。ResNets 网络也继承了这个策略。这个简单的策略降低了超参数的选择,深度作为网络的一个基本维度。我们也认为这个策略的简洁些可能降低了超参数对特定数据库的过拟合。VGG 和 ResNets 在各种应用场合都展示了其鲁棒性。 不同于 VGG网络, Inception 模型 是经过精心设计达到高精度低复杂度。Inception 模型经过了几次发展演变。但是他们都采用了一个通用策略 split-transform-merge。在一个 Inception 模型中,输入(通过 1×1卷积)被切分到几个低维 embeddings,再经过一组特定滤波器映射变换,最后通过 concatenation 融合到一起。 Inception 模型期望通过较低的计算量来近似大的密集的滤波器的表达能力。 尽管 Inception 模型的精度不错,然是它的实现伴随着一系列复杂的因素:每个映射变换要量身定制滤波器数量、尺寸,模块在每一阶段都要改变。尤其将 Inception 模型 用于新的数据或者任务时如何修改并不清晰。 本文提出了一个简单架构,采用 VGG/ResNets 重复相同网络层的策略,以一种简单可扩展的方式延续split-transform-merge 策略。 我们网络中的一个模块可以进行一组映射变换,每个映射都是一个低纬 embedding,最后将输出组合起来。
很有意思的是我们发现上述网络结构有另外两个表达形式。
我们通过实验证明我们提出的这个网络模块要比原来的 ResNet 模块性能要好,在保持相同的计算复杂度和模型尺寸条件下。我们强调的是通过增加网络规模来提升性能是比较容易的,但是在保持计算复杂度(或降低)同时提升性能是很难的,这些以前的研究文献中很少。 除了网络的宽度和深度,我们发现 cardinality (the size of the set of transformations) 模块中相同映射的个数,也是一个很重要描述网络的指标。实验发现增加 cardinality 比增加深度或宽度对提升网络性能更有效。 我们的网络命名为 ResNeXt,在 ImageNet 分类数据库上,其性能超过额其他几个网络。
3 Method 3.1. Template 模板 我们采用了 VGG/ResNets 高度模块化设计。我们的网络由一组残差模块构成,这些模块具有相同的拓扑结构topology。 受VGG/ResNets启发, 遵循两个简单的原则: 1)if producing spatial maps of the same size, the blocks share the same hyper-parameters (width and filter sizes) 如果输出的空间尺寸一样,那么模块的超参数(宽度和滤波器尺寸)也是一样的。 2)each time when the spatial map is downsampled by a factor of 2, the width of the blocks is multiplied by a factor of 2. 当空间尺寸降采样2倍时,模块的宽度加倍。这样保持模块计算复杂度。
有了这两个原则,我们只需要设计一个模板模块就可以了,这样整个网络所有模块就定下来了。
3.2. Revisiting Simple Neurons
单个神经元是构建全链接和卷积网络层的基础元素。单个神经元主要是一个点乘运算,我们可以将上面的神经元运算分解为 splitting, transforming, and aggregating:1)splitting 将向量 x 分解为若干分量,2)transforming,每个分量乘以对于的权值稀疏,3)aggregating 求和
3.3. Aggregated Transformations 这里我们对神经元模型进行扩展,推导出我们的核心模块。
下图对应一个具体的网络模块结构。
上图中 一列对应一个 Ti。
5 Experiments