Aggregated Residual Transformations for Deep Neural Networks
文章目录
- 这篇是对ResNet的一个改进参考了Inception v4的思想(v1是GoogleNet),对其ResNet的卷积结构进行横向拆解再相加,做到不增加计算量的同时增加精确度。
参考
基本结构
-
文中作者提出了一个新的概念:cardinality:the size of the set of transformations,翻译过来叫基数,我们可以从他的基本结构得到她的具体意思:
- 下图中,左侧是一个普通的ResNet结构,而右侧则是作者提出来的ResNeXt结构,注意红色箭头,我们可以看到所谓cardinality就是把原来的filter个数给分掉,拆成分枝,每个分支的filter数=原有filter数/cardinality,如cardinality=32就是32个分支
- 但是我觉得这个图还是有点问题,因为如果要保持参数相同左侧的out channels应该是128才是(4*32),不过不碍事,意思表达到了就行
-
-
这种分支结构的理论支撑是:Multi-branch convolutional networks——也就是 Inception models(前身是GoogleNet)
公式推导
-
全链接结构想必都很熟悉,作者的公式推导可以从一个全链接开始
-
-
其公式为:
-
y = ∑ i = 1 D w i x i y = \sum^D_{i=1}w_ix_i y=i=1∑Dwixi
-
每一个分支的式子可以抽象为 w i x i w_ix_i wixi,当我们把分支化成Figure 1 中的分支结构时,将分支表达式记为: T ( x ) \Tau (x) T(x)
-
-
于是表达式就变为:
- F ( x ) = ∑ i = 1 C T i ( x ) F(x) = \sum_{i=1}^C \Tau_{i}(x) F(x)=i=1∑CTi(x)
-
下面的图把残差去掉是不是就符合上面的式子了
-
-
然后我们加上残差结构的式子,就成了
-
F ( x ) = x + ∑ i = 1 C T i ( x ) F(x) = x + \sum_{i=1}^C \Tau_{i}(x) F(x)=x+i=1∑CTi(x)
-
-
与Inception-ResNet的联系
-
Figure 3 b 中给出了ResNeXt的第二种结构,这种结构和Inception-ResNet十分相似,我们可以对比得知区别与联系:
-
-
与Inception-ResNet的区别
- 1.ResNeXt的分支的拓扑结构是相同的,Inception V4需要人工设计;
- 2.ResNeXt是先进行 1x1 卷积然后执行单位加(add),Inception V4是先拼接(concat)再执行 1x1 卷积
-
与分组卷积的联系
-
分组卷积是介于普通卷积核深度可分离卷积的一种折中方案,不是彻底的将每个channel都要单独赋予一个独立的卷积核也不是整个Feature Map使用同一个卷积核。
-
除上述两种以外,分组卷积的另外一种变形是将开始的 1x1 卷积也合并到一起:
-
-
如上图所示,一开始的1x1是合并的,中间的3x3分开,然后进行concat(也可能是add,这里没说)之后再进行一个1x1卷积,最后连上一个残差边,这就是ResNeXt的最终形态
-
实验结果
-
参数量与计算量基本相近(与ResNet)
-
-
下图对比了增加Cardinality和width和deep的效果,可知Cardinality的效果OK
-
-
下图对比了有无残差边的效果,证实残差的有效性
-