ResNeXt - Aggregated Residual Transformations for Deep Neural Networks

《Aggregated Residual Transformations for Deep Neural Networks》是Saining Xie等人于2016年公开在arXiv上:
https://arxiv.org/pdf/1611.05431.pdf

创新点
1.在传统Resnet基础上采用group convolution,在不增加参数量的前提下,获得更强的representation能力

命名
本文提出了Resnet的改进网络——ResNeXt,之所以命名为ResNeXt,是因为提出了一个新的参数——Cardinality,作者认为Cardinality是从另外一个维度衡量网络模型,所以命名为ResNeXt (suggesting the next dimension)

一、Introduction

图像识别任务从以往的“搞基”(特征工程)转向设计新的网络模型以获得更好的representation。设计网络有太多超参数,如(width,filter-size, strides等)。VGG这样采用了一个简单的策略,很奏效,即:stacking building blocks of the same shape,也就是重复的使用相同的block。作者认为,这个策略可以减少网络的over-adapting. Inception系列的优点在于精心设计网络的拓扑结构,最重要的特点在于 split-transform-merge 思想。

split-transform-merge操作的优点: The split-transform-merge behavior of Inception modules is expected to approach the representational power of large and dense layers, but at a considerably lower computational complexity。

二、Related work

蜻蜓点水般的介绍了一些关于Multi-branch convolutional networks ;Grouped convolutions;Compressing convolutional networks. Ensembling.的工作,我认为最重要的是这一句:

But we argue that it is imprecise to view our method as ensembling, because the members to be aggregated are trained jointly, not independently.
(大家自行体会~~哈哈)

三、Method

3.1 template
借鉴VGG和Resnet,设计block遵循以下两个规则:
第一是:若block输出的空间尺寸一样,则这些block拥有相同的超参数(width和filter size),也就是卷积核大小一样,卷积核个数一样

第二是:每当feature map分辨率缩减一半,通道数增一倍。这个规则保证了每个block的计算复杂度几乎一致!

3.2 Revisiting Simple Neurons

作者采用单个神经元的计算模型来分析 splitting, transforming, and aggregating.
如下图所示,一个神经元的输入为X,X是一个D维的向量,神经元的输出为X与权值W的内积,即: Ci=1wixi
这里写图片描述

一个神经元的操作就可以分为(1) splitting (2)transforming (3) aggregating
(1) splitting: 输入X被分为了D个部分
(2) transforming: 对于被划分的部分进行缩放,也就是用wi与之相乘
(3) aggregating: 最后把所有结果再聚集(相加)起来,得到最终输出: Ci=1wixi

3.3 Aggregated Transformations

介绍了单个神经元的 splitting-transforming-aggregating,就要进行拓展了~

首先一个输入X进行splitting成C份;splitting之后对其进行transforming,这里采用Ti(x
)来表示;最后求和,即aggregating。具体公式如下: F(x)=Ci=1Ti(x)

这里的C就表示Cardinality ,Cardinality 意思是 the size of the set of transformations,是针对ResNeXt这类网络的一个参数,该参数可理解为分组的组数,如本文实验C=32

公式 F(x)=Ci=1Ti(x) 就表达了splitting-transforming-aggregating操作,则ResneXt的一个block的输出为: y=x+32i=1Ti(x) ,block示意图如下图所示:
这里写图片描述

第一项x表示 identity mapping,即最右边那条线;剩下的就是对x进行splitting-transforming-aggregating 操作了。这里C=32,所以是32项相加。

上图所示ResneXt的一个block还是太“臃肿”,其实可以更简洁一些,如下图所示,最终可以变化成下图(c)
这里写图片描述

先看图(a),第一行32个(256,1*1,4)表示splitting操作;第二行32个(4,3*3,4)表示transforming;

第三行以及那个+号,表示aggregating;

图(b)是将 aggregating给整合了,先将transforming得到的feature map进行concatenate,然后用(128,1*1,256)的操作进行输出;

图(c)在图(b)的基础上,进一步“简化”,将splitting操作放到了transforming里边,这样就可以用一个(256,1*1,128)对输入进行splitting的准备,经过图(c)第一行(256,1*1,128)之后获得128个feature map,再通过group convolution的操作实现spliiting,共32个group,每个group对4个feature map进行操作;

猜你喜欢

转载自blog.csdn.net/u011995719/article/details/78948776