作者 | SH Tsang
在本文,我们ResNet进行了回顾。通过学习残差表征函数而不是直接学习目标表征,ResNet可以拥有多达152层的非常深的网络。
ResNet引入了跳过连接(或快捷方式连接)以适应从前一层到下一层的输入,而无需修改输入。跳过连接可以实现更深入的网络,最终ResNet成为ILSVRC 2015在图像分类,检测和定位方面的赢家,和MS COCO 2015检测和分割的获胜者。
ILSVRC 2015图像分类排名
ImageNet是一个包含超过1500万个标记的高分辨率图像的数据集,包含大约22,000个类别。 ILSVRC在1000个类别中的每一个中使用大约1000个图像的ImageNet子集。总共有大约120万个训练图像,50,000个验证图像和100,000个测试图像。
本文涉及
- 普通网络的存在的问题(梯度消失/梯度爆炸)
- 残差网络中的跳跃/短连接(ResNet)
- ResNet架构
- 瓶颈Bottleneck的设计
- 消融研究(实验对比)
- 与最新方法的比较(图像分类)
- 与最新方法的比较(目标检测)
1、普通网络的存在的问题
对于传统的深度学习网络,它们通常具有卷积层,完全连接(FC)层,用于分类任务,如AlexNet,ZFNet和VGGNet,没有任何跳跃/短连接,我们称之为普通网络。当普通网络更深(层数增加)时,会出现梯度消失/梯度爆炸的问题。
Vanishing / Exploding Gradients 梯度消失/爆炸
在反向传播期间,当误差函数相对于每次训练迭代中的当前权重的求偏导数时,通过n层网络会导致将这些小/大梯度数值被乘上n倍的梯度效果。
当网络很深时,这些小数字乘n变成零(消失)。
当网络很深时,这些大数的乘n变得特别大(爆炸)。
我们一般会期望更深的网络有更准确的预测。但是,下面一个反例说明,20层普通网络比56层普通网络具有更低的训练误差和测试误差,这是梯度消失而出现性能退化问题。
CIFAR-10数据集的普通网络
2、残差网络中的跳跃/短连接(ResNet)
为了解决消失/爆炸梯度的问题,添加了 跳跃/短连接 skip / shortcut 在几个权重层之后将输入x加到输出上,如下所示:
残余网络的构建模块
因此,输出H(x)= F(x) + x。
权重层实际上是学习一种残差映射:F(x)=H(x)-x
( 反向传播时)即使权重层有梯度消失现象,我们仍然总是将x转移回较早的层。
3、ResNet架构
具有跳跃/短连接的34层ResNet(顶部),34层普通网络(中部),19层VGG-19(底部)
上图显示了ResNet架构。
- VGG-19 [2](底部)是ILSVRC 2014中最先进的方法。
- 34层普通网络(中间)被视为比VGG-19的更深的网络,即更多卷积层。
- 34层剩余网络(ResNet)(顶部)是普通网络添加了跳跃/短连接
对于ResNet构建模块,当输入尺寸小于输出尺寸时,有3种类型的 跳跃/短连接。
(A)短连接Shortcut执行映射恒等映射(identity mapping),使用额外的零填充zero padding来增加维度。因此没有额外增加参数。
(B)一个投影短连接projection shortcut仅用于增加尺寸,其他短连接shortcut还是恒等的连接。网络需要额外的参数。
(C)所有短连接都是投影连接。额外需要的参数多于(B)。
4、瓶颈Bottleneck的设计
由于现在网络很深,时间复杂度很高。瓶颈Bottleneck设计用于降低复杂性,如下所示:
基本块(左)和论文所提出的瓶颈块设计(右)
如图(右)所示,1×1转换层被添加到网络的开始和结束。这是Network In Network和GoogLeNet(Inception-v1)中建议的技术。事实证明,1×1转换可以减少连接数(参数),同时不会降低网络性能。 (如果感兴趣,请访问我的评论。)
用瓶颈模块,34层ResNet成为50层ResNet。而且文章还给出更深层的网络与瓶颈设计:ResNet-101和ResNet-152。所有网络的整体架构如下:
所有网络的整体架构
值得注意的是,VGG-16/19有15.3 / 196亿FLOPS。 ResNet-152的复杂程度仍低于VGG-16/19 !!!!
5、消融实验
5.1 传统网络 VS 残差网络
验证错误率:18层和34层普通网络(左),18层和34层ResNet(右)
使用10种作物测试的Top-1错误率
当使用普通网络时,由于梯度消失问题,18层优于34层。
当使用ResNet时,34层优于18层,消失梯度问题已通过跳过连接解决。
如果我们比较18层普通网络和18层ResNet,没有太大区别。这是因为浅层网络不会出现消失梯度问题。
6、与最先进方法的比较(图像分类)
6.1 ILSVRC 数据
10种作物测试结果
通过比较ResNet-34 A,B和C,得出B略好于A,C略好于B,这是因为B引入了额外的参数。ResNet-A,B,C都获得了大约7%的错误率。
通过将网络深度增加到152层,获得5.71%的Top5错误率,这比VGG-16,GoogLeNet(Inception-v1)和PReLU-Net好得多。
多尺度信息全卷积网络在10种作物数据的测试结果
此时,ResNet-152可以获得4.49%的错误率。
10种作物测试+全卷积网络,具有多尺度信息+6模型集成的结果
增加了6种模型的集成后,错误率为3.57%。
6.2 CIFAR-10 数据集
CIFAR-10结果
通过跳过连接,我们可以建立更深的模型。然而,当层数从110到1202时,发现错误率从6.43%增加到7.93%,这扔为本文中的一个未决问题。然而,ResNet-1202没有优化难度,即它仍然可以收敛。
7、与最先进方法(物体检测)的比较
PASCAL VOC 2007/2012 数据 mAP (%)
MS COCO mAP (%)
通过将ResNet-101用于faster R-CNN [3-4],ResNet获得了比VGG-16更好的性能。
ResNet最终赢得了ImageNet检测,定位,COCO检测和COCO分割的第一名!