论文:Improved Residual Networks for Image and Video Recognition(2020.4)
作者:Ionut Cosmin Duta, Li Liu, Fan Zhu, Ling Shao
链接:https://arxiv.org/abs/2004.04989
代码:https://github.com/iduta/iresnet
文章目录
- 1、算法概述
- 2、前置知识-ResNet
- 3、IResNet细节
- 3.1 Improved information flow through the network
- 3.2 Improved projection shortcut
- 3.3 Grouped building block
- 4、实验
1、算法概述
IResnet是对Resnet进行改进的算法,作者从三个部分进行优化改进:1、网络中的信息流;2、残差子模块设计;shortcut连接方式;作者通过在以上三部分做出改进,使得IResnet的准确性和学习收敛性方面显示出比较大的提升。具体来说,对于分类任务,同样模型复杂度下,超出Resnet-50 1.19%的top1准确率。对于Resnet网络,训练非常深的网络,例如400层或者500层,会出现严重的优化问题,但是作者提出的网络结构可以实现训练非常深的网络结构。最终,作者建立了404层的卷积神经网络用于训练ImageNet数据集,3002层卷积神经网络训练CIFAR-10和CIFAR-100。
2、前置知识-ResNet
Resnet由大量的残差模块(blocks)组成,它的核心就是在模块中加入恒等映射(the identity mapping)用来使得网络学习更加容易。恒等映射是通过使用shortcut/skip connection来实现的:将block的输入添加到其学习输出中。理论上,网络可以自己学习自身的映射,不需要这些捷径。然而,在实践中,优化器学习恒等映射并不容易。这被称为退化问题。Resnet论文实验指出,较深的网络甚至比较浅的网络精度反而更差,与理论上严重不符合,而这个原因就是网络的退化问题造成的。Resnet的提出缓解了部分网络退化问题,但没有完全解决;例如当Resnet深度从152增加到200时,ImageNet上分类结果变差,优化困难,这表明,当层数增加时,ResNet仍然会损害信息通过网络的传播。
在Resnet中,当前后block输入尺度不一致时,就会采用projection shortcut。可见projection shortcut在Resnet处理网络退化问题中没有充当重要角色。然而,作者认为projection shortcut在网络架构中扮演着重要的角色,因为它们存在于主要的信息传播路径上,因此很容易干扰信号或造成信息丢失。作者通过引入改进版本的projection shortcut,在不增加参数的情况下能带来非常大的提升。在原始Resnet中,瓶颈模块用来控制网络的参数量,模块中只有卷积负责学习空间特征,所以通道数量非常重要,通道数量越多,学习的特征越丰富,作者通过改进,通道可以扩大到原始版本的4倍。
所以,相对于原始ResNet,作者改进:
1、 提出一种基于stage的残差学习网络结构。所提出的方法通过为信息在网络层之间传播提供更好的路径,从而促进了网络优化。
2、 提出了一种改进的projection shortcut,减少了信息丢失,提供了更好的结果。
3、 提出了一个block,能学习更强大的空间特征。
4、 提出的网络结构能在各个数据集中相对于基准Resnet结果都得到了提升。
3、IResNet细节
3.1 Improved information flow through the network
Resnet由很多个残差模块构成,残差模块可以由下图(a)所示:
用公式可表示为:
其中x[l] 和x[l+1] 表示为第l个残差模块的输入与输出,ReLU代表激活函数,F(x[l] ,{wi[l] })代表含有多个层的可学习的残差映射函数。
原始版Resnet由两个1x1卷积和一个3x3卷积组成并且每个卷积层后都跟随一个bn层和ReLU激活层,大的灰色箭头表示shortcut连接;这条链路只包含一个ReLU激活函数,该ReLU可以通过将负信号归零来潜在地对信息的传播产生负面影响。这在训练开始时尤其重要(一段时间后,网络可能开始调整权重以输出一个在通过ReLU时不受影响的正信号)。这个影响在何凯明的另一篇论文[1]中提出了改进方式,叫做预激活,即通过将BN层和ReLU层前移,如下图(b)所示。
原始版本的ResNet(图a)在主路径上设置了太多的门(ReLU),这会阻碍信息的传播,改进版本图b,又使得信息畅通无阻,不受任何控制,这两种极端的shortcut设置都不是最理想的,并且呈现出不同的问题。在预激活版本图b中引发出两个问题:
1、网络的4个stage都没有对完整信号进行BN归一化,全部的bn操作都在分支中进行,因此,当我们增加blocks时也在同时增加完整信号的非归一化(unnormalized),也就造成了网络学习困难。这个问题在图a和图b两种结构都体现出来了。
2、预激活版本(图b)的主路径是学习恒等映射的,每个block连接处缺少非线性映射,这限制了学习能力。作者针对以上两点进行改进,按stage切分为start、Middle、end,并且在每个stage的最后一个block后加入BN用于稳定训练和加入ReLU激活用于增加网络表达能力。如图c的End ResBlock。通过以上改进,既能保证完整信息在网络中高效流动也能有效控制它。
3.2 Improved projection shortcut
在原始Resnet版本中,当输入x与F的输出维度不匹配时,就需要对x进行projection shortcut操作。如下图a所示,作者认为原来架构中步长为2的1x1 conv会丢失75%的重要信息,而留下的25%的信息也没有设计什么有意义的筛选标准,这会引入噪声和造成信息丢失,对主要通道流信息造成负面影响。
作者的改进方式是空间和通道适配分别用maxpooling和1x1卷积操作,而不是原版中用1x1卷积同时完成,即对于spacial projection,使用stride=2的3×3 max pooling层,对于channel projection使用stride=1的1×1 conv,然后再跟BN。这样做的优点是:spacial projection将考虑来自特征映射的所有信息,并在下一步中选择激活度最高的元素,减少了信息的损失,后面的实验结果也证明了这点。
这样改进后的projection shortcut,在通道流程上可以看作是 软下采样(3x3 conv) 和 硬下采样(3x3 max pooling)两种方式的结合,是两种方式优势的互补。“硬采样”有助于分类(选择激活程度最高的元素),而“软采样”也有助于不丢失所有空间背景(因此,有助于更好的定位,因为元素之间可以进行过渡比较平滑)。同样这个改进并不增加模型复杂度和模型参数量,非常实惠。
3.3 Grouped building block
在原始Resnet版本中引入瓶颈构建块是出于实际考虑,在增加网络深度的同时保持合理的计算成本。在瓶颈残差块中,先使用1x1减低通道数,然后使用3x3卷积提取特征,最后用1x1卷积提升通道数恢复原来的信息量,这样做是为了控制计算量和参数量,但是3x3卷积是在空间学习中占用非常重要的角色,瓶颈残差块中却限制了其输入输出通道的数量。
作者就基于这一点提出了改进,保证了3x3卷积以最大的输入输出通道进行计算,为了保证不增加计算量和参数量,作者这里采用了分组卷积(grouped convolution)。作者叫它ResGroup block。作者基于Resnet-50为基准,根据每个stage的group设置数量分别给出了固定版本ResGroupFix-50和变化版本ResGroup-50结构,如下表所示:
通过引入ResGroup block这种方法,3x3卷积拥有最多的通道和更高的学习空间特征的能力。其引入的空间通道是原始Resnet的四倍,是ResNeXt的两倍。这对于提高性能非常重要,因为3x3 conv是负责学习空间特征的唯一组件,因此,为3x3 conv提供最大数量的通道可以提高检测空间特征的能力。在实验部分,作者展示了该方法的有效性。如下图所示:
4、实验
ImageNet上分类实验
可以看到,IResNet随着网络层数增加,结果都在持续变好,并且比原始Resnet版本和预激活版本都好。
IResnet和Resnet的训练曲线对比如下:
当网络深度达到302和404层的时候,Imagenet测试集表现如下:
和200层的效果比较,top1 error也是在随着网络层数增加在不断减小的。
CIFAR-10/100数据,网络上千层测试效果:
从表中可以看出,原始版的Resnet,当网络从164层增加到1001层时,已经表现出严重的网络退化现象,而IResnet表现随着层数增加,错误率在减小。当网络层数增加到2000层时,原始版Resnet直接收敛失败,表现出严重的优化问题,而IResnet版本则到了3002层才开始表现出下降(文中表示可能过拟合了)。所以可以得出,随着网络层数增加,IResnet的效果会更好,不会出现网络退化问题。
文献:
[1] He, K., Zhang, X., Ren, S., Sun, J.: Identity mappings in deep residual networks. In: ECCV (2016)