又一个 ResNet 改进版来了!IResNet:可训练超 3000 层网络!

技术讨论 kira ⋅ 于 2个月前 ⋅ 608 阅读
来源:AI深度视线

本文是ResNet的改进版,并为CNN的深度建立了一个新的里程碑:IResNet成功地在ImageNet上训练了404层网络,并在CIFAR-10和CIFAR-100上成功训练了3002层网络,而原ResNet却无法在这样的极端深度收敛。

先清波兵线出个“摘要”鞋

file

残差网络(ResNets)是一种强大的卷积神经网络(CNN)体系结构,已广泛用于各种任务中。在这篇论文中,作者提出了ResNets的改进版本——IResNet。针对ResNet的三个主要组成部分都提出了改进措施:

  • 通过网络层的信息流

  • 残差构建块

  • projection shortcut

这些改进措施可以比原始ResNet有更高的准确性和更好的持续学习收敛性。例如,在ImageNet数据集上,使用具有50层的ResNet,对于top-1精度,本文方法可以比基线提高1.19%,而另一种配置则提高约2%。重要的是,无需增加模型复杂性即可获得这些改进

2. 四级了,推几路“Relate Work”塔

残差网络(ResNets)[6]对于训练深度架构进行视觉识别非常有效。ResNets使用short-cut连接来促进信号在网络上的传播。有许多工作致力于改进这个强大的架构

  • pre-activation ResNets[文献7]

[7]的工作引入了预激活重定向,提出了一个新的组件顺序,以改善信号在网络中的传播。与[7]不同的是,本文是将网络划分为不同的阶段,并为阶段的每个部分提出不同的块:开始、中间和结束

  • grouped  convolution [文献35]

[35]也使用组卷积,将卷积计算分割到两个gpu上,目的是提高ResNet架构的识别性能。作者这篇文章里也利用了分组卷积,不同的是,提出了一种新的积木式结构,网络形状不同,引入了比[35]多两倍的空间滤波器,表现出更好的性能。

  • queeze-and-excitation  and  non-local  blocks [文献10和33]

工作[10]和[33]通过引入queeze-and-excitation和non-local  blocks来改善重网格。然而,这些额外的块需要插入到网络中,这增加了模型和计算复杂度。而作者改进的方法很大的优点就是,不增加模型复杂度

3. 装备出差不多了,团推“IResNet”高地

3.1 改进 information flow

file

我们知道ResNet的主要结构是ResBlock块,如上图(a)中所示。ResNet的特定设计是为了方便信息在网络中进行前向传播和反向传播。通过图1(a)中可以看到,每个ResBlock包含三个卷积(2个1×1和1个3×3),然后加3个ReLU层。

  • 存在的问题:

其中灰色大箭头表示信息的直连,可以看出,在这个灰色箭头的主通道上也有一个ReLU激活层。这个位置的ReLU因为会对负权值清零而对信息传播带来负面影响,尤其再刚开始训练的时候,因为会存在很多的负权值

  • pre-act的改进方式

[7]才提出一种预激活的方式进行改进,如上图中(b)所示,通过改变BN和ReLU的位置,将直连通道上的ReLU拿掉,放到ResBlock中。但是[7]这种方式有两个问题:

  • 一是因为直连通道上没有了BN,使得全信号部分没有被归一化,也就增加了学习的难度。
  • 二是四个ResBlock都以一个1*1conv结束,几个Block之间缺少非线性,又限制了学习能力。

相当于从ResNet一个极端,走向了另一个极端。

  • 本文改进

作者为了解决这个问题,提出了一种分段的组织结构,以ResNet-50为例,如图1中(c)所示:

(1) 把网络结构分为三个部分,四个主要stages(其中包含ResBlocks)和一个启动和结束阶段。

(2) 四个主要阶段中的每个stage都可以包含若干Blocks;stage1有3个ResBlock, stage2有4个,stage3有6个,stage4有3个。

(3) 每个stage又分为三个部分:一个开始ResBlock,若干个中间ResBlock(可以是任意数量;在ResNet-50的情况下,有[1,2,4,1]对应stage的中间ResBlock)和一个结束ResBlock。说白了,就是根据stage不同位置,每个ResBlock都有不同的设计

特别说明的是:这个改进看着复杂了,但其实并没有增加复杂度,这几个网络的参数量都一样,只是组件的编排方式变了。

3.2 改进 projection shortcut

原始ResNet架构中,如下图(a)所示,由于x和输出维度不匹配,所以就用了一个步长为2的1*1的卷积进行维度调整,这样channel和spacial matching信息就都由这个1*1conv完成。

  • 这会导致什么问题呢?

作者认为原来架构中步长为2的1*1 conv会丢失75\%的重要信息,而留下的25\%的信息也没有设计什么有意义的筛选标准,这会引入噪声和造成信息丢失,对主要通道流信息造成负面影响。
file

  • 作者的改进方法:

如图中(b)所示。对于spacial projection,作者使用stride=2的3×3max pooling层,然后,对于channel projection使用stride=1的1×1 conv,然后再跟BN。

  • 这样做的好处:

spacial projection将考虑来自特征映射的所有信息,并在下一步中选择激活度最高的元素,减少了信息的损失,后面的实验结果也证明了这点。

另外:

这样改进后的projection shortcut,在通道流程上可以看作是“软下采样(conv3*3)”和“硬下采样(3*3max pooling)”两种方式的结合,是两种方式优势的互补。“硬采样”有助于分类(选择激活程度最高的元素),而“软采样”也有助于不丢失所有空间背景(因此,有助于更好的定位,因为元素之间可以进行过渡比较平滑)。

同样这个改进并不增加模型复杂度和模型参数量,非常实惠。

3.3 Grouped building blockt

原始ResNet中的Block:

  • 首先包含一个1×1的conv来减少通道的数量
  • 然后是一个3×3的conv瓶颈来操作最小数量的输入/输出通道
  • 最后是一个1×1的conv来增加通道的数量回到原来的数量。

  • 这样设计的原因是为了在较少的通道上运行3×3 conv,以保持计算成本和控制参数的数量。

存在的问题:

然而,3×3 conv是非常重要的,因为它是唯一能够学习空间模式的组件,但在上面设计中,它接收的输入/输出通道数量较少,反而限制了它的学习能力。

改进的方法:

作者在这一部分提出了分组卷积ResGroup Block来改变3×3 conv参数量较少的情况。将1×1 conv变为3×3的重分组块,如图3所示,3×3具有最多的通道和更高的空间模式学习能力。该方法比原来的ResNet多引入了4倍的空间信道,比[35]多引入了2倍的空间信道:

file

分组卷积的主要思想是将输入信道分成若干组,分别对每组进行卷积运算。通过这种方式,参数和浮点运算(FLOPs)量可以减少分组的组数倍。和原始的ResNet-50相比,参数量增多的也有限。如下表所示:  
file

4. 团战胜利,点“IResNet”水晶

file

CIFAR-10:不同网络深度对比

file

InamgeNet:不同网络深度对比曲线

file

网络层数增加到302和404

file

iResNet视频识别

file

用了iResNet的SSD

file

与各大backbone的比较

5. 总个结还是要有的

主要贡献:

(1)提出了一种基于分段的残差学习网络结构。该方法为信息在网络各层间的传播提供了更好的途径,从而简化了学习过程。

(2)提出了一种改进的投影直连方式,减少了信息损失,提供了更好的结果。

(3)提出了一种可大大增加学习更强大空间模式的空间通道的构建块。

(4)本文方法在基线的基础上提供了一种改进,这些改进是在不增加模型复杂性。

通过比较6个数据集的结果(4个用于图像,2个用于大型视频分类),该网络架构,能够有效地训练非常深入的CNNs,并成功地在ImageNet数据集上训练了一个404层的深度CNN,在CIFAR-10和CIFAR-100上训练了一个3002层的网络,而在这种深度下,原始ResNet都无法收敛。据目前所知,这些是在这些数据集上训练过的最深入的网络。

传送门

论文链接:
https://arxiv.org/abs/2004.04989

代码链接:
https://github.com/iduta/iresnet

成为第一个点赞的人吧 :bowtie:
回复数量: 0
暂无回复~
您需要登陆以后才能留下评论!