卷积神经网络之5:ResNet

本文主要分析残差网络(ResNet)及其变种的结构。残差网络在论文Deep Residual Learning for Image Recognition中被提出。论文链接:https://arxiv.org/pdf/1512.03385.pdf

1. Building block和Bottleneck结构 


首先resnet由building block或bottleneck组成。building block的结构如下: 

building block结构包含一个残差支路和short-cut支路,比传统的卷积结构多了一个short-cut支路,用于传递低层的信息使得网络能够训练地很深。 

 ResNet学习的是残差函数F(x) = H(x) - x, 这里如果F(x) = 0, 那么就是上面提到的恒等映射。事实上,resnet是“shortcut connections”的在connections是在恒等映射下的特殊情况,它没有引入额外的参数和计算复杂度。 假如优化目标函数是逼近一个恒等映射, 而不是0映射, 那么学习找到对恒等映射的扰动会比重新学习一个映射函数要容易。从下图可以看出,残差函数一般会有较小的响应波动,表明恒等映射是一个合理的预处理。

它有二层,如下表达式,其中σ代表非线性函数ReLU

F=W_{2}\delta (W_{1}x)

然后通过一个shortcut,和第2个ReLU,获得输出y

H=F(x,W_{i})+X

当需要对输入和输出维数进行变化时(如改变通道数目),可以在shortcut时对x做一个线性变换Ws,如下式,然而实验证明x已经足够了,不需要再搞个维度变换,除非需求是某个特定维度的输出,如文章开头的resnet网络结构图中的虚线,是将通道数翻倍。

H=F(x,W_{i})+W_{s}X

实验证明,这个残差块往往需要两层以上,单单一层的残差块(y=W1x+x)并不能起到提升作用。
 

bottleneck的结构如下: 

 

 bottleneck先通过一个1x1的卷积减少通道数,使得中间卷积的通道数减少为1/4;中间的普通卷积做完卷积后输出通道数等于输入通道数;第三个卷积用于增加(恢复)通道数,使得bottleneck的输出通道数等于bottleneck的输入通道数。这两个1x1卷积有效地较少了卷积的参数个数和计算量。 

在网络中当网络的维度变大时,如何进行连接,两种方式
1.额外使用填充零输入以增加纬度,此时不会引入额外的参数
2.使用Ws投影快连接用于匹配纬度,使用1*1的卷积来完成。执行是步长为2
不同数量的building block或bottleneck组成了不同的resnet: 

 

从上图可以看到,ResNet共有5组卷积。第一组卷积的输入大小是224x224,第五组卷积的输出大小是7x7,缩小了32(2^5)倍。每次缩小2倍,总共缩小5次,且每次都是在每组卷积的第一层上使stride为2。
实际使用中,很多网络几乎原封不动地使用resnet中的卷积层结构,上图中的resnet-50和resnet-101的在各种任务重是很常见的。为了提高应用能力,上面中卷积层的个数有必要记下来。上图中第一栏layer name分为5组,feature map的通道数依次乘2。由于上下组的卷积层通道数不同(类似于VGG网络通道数的特点),使得短路连接不能直接相加,故需要在后四组连接上一组的第一个卷积层的短路连接通路添加投影卷积。

2. ResNet与Batch Normalization 
由于ResNet的结构有别于传统的卷积结构,使得信号的前向传播和梯度的反向传播变得更复杂。为了稳定训练时信号的前向传播和梯度的反向传播,从ResNet开始,网络普遍使用Batch Normalization。

3. ResNet-V2 
当然,上面的ResNet的结构并非就是完美的了,因此有些论文中对resnet的结构略微进行了修改(仍属于resnet结构)。修改存在两方面,一方面是修改building block本身的结构,另一种是修改上面各组卷积层的数量搭配。 
何凯明在论文Identity Mappings in Deep Residual Networks中修改了残差块的结构,结构如下图: 
 

 新结构将relu移到残差支路,有利于信号的前向传播和梯度的反向传播,这篇文章的数学表示是比较漂亮的,论文下载地址:https://arxiv.org/abs/1603.05027 
虽然ResNet-V2似乎有以上优点,但在各种任务中较少用来用作backbone网络。

4. SphereFaceNet 
SpherefaceNet也是一个修改ResNet结构的实际例子,残差块结构比较接近上面的ResNet-V2。它也将building block中relu从加号后放到了残差支路,使得训练的收敛速度加快。而且,它还修改了各组卷积层的卷积层个数,当然,它的每组卷积层个数和通道数的变化趋势还是跟上表中的安排比较一致的:都是倒数第二组卷积层最多且通道数随组递增。sphereface的结构如下表: 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值