该文章针对resnet中的三个主要模块:信息流的传递、残差模块和跳层连接( Our proposed improvements address all three main components of a ResNet: the flow of information through the network layers, the residual building block, and the projection shortcut)
特点:提升精度的同时不提升模型复杂度
跳过1.Introduction2 Related Work,直接看
3 Improved residual networks
3.1 Improved information flow through the network
首先介绍了一下原始的resnet,这里不做记录了,网上有很多讲的很好。原始的resnet的每一个resblock bottleneck包括了三个卷积层,两个1×1的和一个3×3的.还有三个BN层和Relu**层。这里存在一个问题即relu特别是在主传播路径中会将负信号直接置为零从而对信息传播造成负面影响,在训练刚开始时尤为重要。因为在训练开始一段时间后网络会更新权重以输出不受relu干扰的正信号。有一些研究将最后的BN层和relu层移到网络开始处来降低这个影响。
总体来说有两个问题:一个是在总体信号上没有BN层,随着块的添加,信号会变得不标准,使得学习变得困难。在原始的resnet和pre-act 中都存在这个问题。二是主路径上的四个1*1conv,没有非线性,限制了学习能力。。这里存在一个疑问:主路径指的是哪里????感觉并没有conv
It is important to point out that our proposed solution does not increase the model complexity没有增加参数和模块,只是将模块的位置进行了变动 contain the same number of components and the same number of parameters. Only the arrangement of the components is changed. 这里存在一个疑问:相比还是增加或减少了模块的conv。是总体的模块数没有增加吗
比较一下
将resnet分离成不同的阶段。例如table1,根据输出空间大小和通道数来决定如何划分不同的阶段,当其发生变化时,标志着一个新阶段的产生。resnet中有四个主阶段,一个开始阶段一个结束阶段。四个主阶段中都包含了大量的resnet block[3,4,6,3].每一个主阶段都被分成了三部分,
- one Start ResBlock
- a number of Middle ResBlocks (which can be any number; in the case of ResNet-50 there are [1, 2, 4, 1] Middle ResBlocks for the corresponding stages) ,也就是每个主阶段里包含的那一堆block除了一个开始和一个结束,剩下的全是middle resblock
- one End ResBlock
3.2 Improved projection shortcut
首先明白这个模块提升的是网络的哪一部分
改进的样子如下
原始的因为采样,stride=2会造成一个信息丢失。带来噪声和信息的损失,扰动主信息流在网络中的传播。
proposed:建立了一个标准,从原图中得到最active的元素,
3.3 Grouped building block
提出ResGroup block
The main idea of grouped convolution is to split the input channels into several groups and perform convolution operations independently for each group.
个人理解,在一些特定情景下,尤其是需要网络从头开始训练,可能会受影响更大。