【论文泛读】 ResNet:深度残差网络

简介: 【论文泛读】 ResNet:深度残差网络

当大家还在惊叹 GoogLeNet 的 inception 结构的时候,微软亚洲研究院的研究员已经在设计更深但结构更加简单的网络 ResNet,并且凭借这个网络子在 2015 年 ImageNet 比赛上大获全胜,除此之外,在那时的五个比赛都拿了第一名


d8618b3084bf589c8a52152eb819264c.png

接下来我们仔细阅读以下这篇论文


摘要 Abstract


更深的神经网络更难训练。我们提出了一个残差学习框架,以简化比以前使用的网络更深的网络的训练。我们明确地将层重新表述为参考层输入学习残差函数,而不是学习未引用的函数。我们提供了全面的经验证据,表明这些残差网络更容易优化,并且可以从显着增加的深度中获得准确性。在 ImageNet 数据集上,我们评估了深度高达 152 层的残差网络——比 VGG 网络深 8 倍 ,但仍然具有较低的复杂性。这些残差网络的集合在 ImageNet 测试集上实现了 3.57% 的错误率。该结果在 ILSVRC 2015 分类任务中获得第一名。我们还对具有 100 层和 1000 层的 CIFAR-10 进行了分析。 表示的深度对于许多视觉识别任务至关重要。仅由于我们极深的表示,我们在 COCO 对象检测数据集上获得了 28% 的相对改进。深度残差网络是我们向 ILSVRC & COCO 2015 竞赛提交的基础,我们还在 ImageNet 检测、ImageNet 定位、COCO 检测和 COCO 分割任务中获得了第一名。


介绍 Introduction


在前期的深度学习的发展中,网络深度至关重要,并且出现的VGG和GoogLeNet等深度模型更是说明了very deep的重要性

那这样理解的话,作者就提出一个问题,那否说明我们可以靠堆叠简单的神经网络可以达到很高的准确率呢,但是事实并非如此,作者做了一个实验,依据CIFAR-10数据集,用了一个堆叠的20-layer神经网络和56-layer神经网络,结果非常amazing


f4728a89bfdf01b51acf59e9a0296db6.png


从实验结果我们可以看出来,更深的网络并不能给我们带来更优的模型,反而20-layer的模型更优一点,这出现了什么问题呢


其实,更好的网络不是靠堆叠更多的层就可以实现的


堆叠网络的缺点:


网络难以收敛,梯度消失/爆炸在一开始就阻碍网络的收敛。


传统解决办法:

通过适当权重初始化+Batch Normalization 就可以很大程度上解决,这使得数十层的网络能通过具有反向传播的随机梯度下降(SGD)开始收敛。


出现退化问题(degradation problem):随着网络深度的增加,准确率达到饱和(这可能并不奇怪)然后迅速下降。意外的是,这种下降不是由过拟合引起的,并且在适当的深度模型上添加更多的层会导致更高的训练误差


由于这个退化问题,作者就进行了一个思考:假设我们训练了一个浅层网络,那么在其后面直接添加多层恒等映射层(本身)而构成的一个深层网络,那这个深层网络最起码也不能比浅层网络差。我们这样做了以后,起码我们加深模型至少不会使得模型变得更差,这样我们就可以加深我们的深度。


残差结构的提出


为了解决我们的退化问题,我们提出了一个残差结构

在过去的网络结构中,我们会去拟合我们的期望的底层映射H(x),但是对于我们的是拟合我们的残差F ( x ) = H ( x ) − x


这样我们最后得到的映射是F ( x ) + x ,我们假设残差的映射比原来的更容易优化。**在极端情况下,如果一个恒等映射是最优的,那么将残差置为零比通过一堆非线性层来拟合恒等映射更容易。**并且对于我们来说,我们多加一个捷径连接(shortcut connections),在下面这种情况下,我们是用恒等映射就是自己本身,这样既不增加额外的参数也不增加计算复杂度。(默认加法不会影响太大的复杂度)这样我们的网络还是可以用带有反向传播的SGD进行我们的训练


c3e5f354737d57b52a1a4a0cb60a6070.png


这里有一个点是很重要的,对于我们的第二个layer,它是没有relu激活函数的,他需要与x相加最后再进行激活函数relu


作者对ImageNet进行测试,对于我们残差网络来说,总结以下几个优点


易于优化

解决退化问题

我们可以用很深的网络,并且准确率大大提升

最后作者试着利用残差网络在CIFAR-10数据集中搭建了超过1000层的神经网络,很好的解决了梯度消失和退化问题,并且利用残差网络ResNet-152,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。


残差结构的一些问题


首先我们用残差结构这种方法,我们一定要保证F(x)和x 有相同的维度,简单来说,因为如此我们才可以相加,所以我们的维度必须要保持一致


image.png

然后对于我们来说,我们的F FF之中至少要有两层,因为如果我们只有一层的话,我们的输出类似于线性函数y = W 1 x + x ,这就还是线性模型,如此便没有任何的优势,所以对于我们的特征映射来说,我们至少是需要两层的。


深度残差网络


从VGG的启发出发,我们构建一个简单的卷积神经网络,之后用一下两个设计规则设计出我们的残差网络:

  • 对于相同的输出特征图尺寸,层具有相同数量的滤波器
  • 如果特征图尺寸减半,则滤波器数量加倍,以便保持每层的时间复杂度。我们通过步长为2的卷积层直接执行下采样。
  • 最后的网络会以全局平均池化层和具有softmax的1000维全连接层结束


8c42dd8c94624d2baaf89bb221967a98.png


其中一个网络我们会插入捷径连接(shortcuts connection),这里面会出现一个问题,因为我们需要我们的输入和输入都有相同的维度,但是对于我们经过池化下采样的操作之后,我们的维度变了,在这里面的残差模块就有一些不同了,作者给出两种选择


快捷连接仍然执行恒等映射,额外填充零输入以增加维度。此选项不会引入额外的参数

用1x1的卷积核进行降维

对于这两种做法,都有一个相同点,步长都为2


在实现的时候


对数据集进行了数据增强等方法,比如随机裁剪,尺度增强等

用Batch Normalization(注意:dropout 和 BN不能同时使用)在每一个卷积核后,激活函数前。

最终结果用多尺度裁剪和融合,去多尺度的平均值


实验结果


模型构建好后进行实验,在plain上观测到明显的退化现象,而且ResNet上不仅没有退化,34层网络的效果反而比18层的更好,而且不仅如此,ResNet的收敛速度比plain的要快得多。


1b573d6258caf4df4627f63c3eb662dc.png


c7a2ebc54143ddda8969d3c4759ce887.png

对于普通的模型中,我们发现,更深的模型的训练误差结果更大,作者经过判定,这不是由于梯度消失的问题,他大胆做了一个推测,随着普通模型的加深,模型的收敛会指数级降低,这个问题也是一个很好的问题。


对于我们的残差网络来说,我们是用第一个选择,也就是用0padding填充的,所以几乎没有额外参数,根据实验结果,我们可以得出结论:带残差的深度模型收敛的更快


ResNet 的探究


考虑到我们能承受的模型的训练时间,我们将原来的residual结构改为了瓶颈结构。对于每个残差函数F,我们使用3层堆叠而不是2层


这是在 Network In Network 和 GoogLeNet (Inception-v1)中提出的一种技术。结果表明,1× 1conv 可以减少网络的连接数(参数) ,同时不会大大降低网络的性能。三层是1×1,3×3和1×1卷积,其中1×1层负责减小然后增加(恢复)维度,使3×3层成为具有较小输入/输出维度的瓶颈。


其中,这种bottleneck模型,我们会在深层残差网络会用到,比如ResNet-50/101/152中


682e21863ab423b46001bcb3396a204a.png


这是在ImageNet数据集中更深的残差网络的模型


2158610746c42b9312053d8ddd7ad9e4.png


ResNet-50:我们用3层瓶颈块替换34层网络中的每一个2层块,得到了一个50层ResNe。我们使用1x1卷积核来增加维度。该模型有38亿FLOP。


ResNet-101/152:我们通过使用更多的3层瓶颈块来构建101层和152层ResNets。值得注意的是,尽管深度显著增加,但152层ResNet(113亿FLOP)仍然比VGG-16/19网络(153/196亿FLOP)具有更低的复杂度。


与先进的模型比较


对于我们的ResNet来说,与先进的方法比较,ResNet几乎超过了所有过去模型的结果,通过将网络深度增加到152层,获得了5.71% 的 top-5错误率,比 VGG-16、 GoogLeNet (Inception-v1)和 PReLU-Net 都要好得多,用六种模型集合最后在2015年ILSVRC中荣获了第一名。


45a38cb320a8fdf6a5bbfc308c6276ad.png


在CIFAR-10进行探究


在CIFAR-10数据集上探究是因为,我们想研究对更深的网络上会有什么样的效果。

因为CIFAR-10图片为32x32x3,在探究的过程发现了一个很有趣的现象,当我们运用1202层的模型去训练时,我们并没有优化困难,并且我们的模型也能达到收敛,但是最后这个1202层网络的测试结果比我们的110层网络的测试结果更差,虽然两者都具有类似的训练误差。


原因分析:


我们认为这是因为过拟合。对于这种小型数据集,1202层网络可能是不必要的大(19.4M)。在这个数据集应用强大的正则化,如maxout或者dropout来获得最佳结果


这是我们在CIFAR-10上的结果

1e25df3d14f17f52d4c5663feb509944.png


模型配置


我们使用的权重衰减为0.0001和动量为0.9,并采用BN中的权重初始化,但没有使用丢弃Dropout。

这些模型在两个GPU上进行训练,批处理大小为128。

我们开始使用的学习率为0.1,在32k次和48k次迭代后学习率除以10,并在64k次迭代后终止训练,这是由45k/5k的训练/验证集分割决定的。

我们用简单数据增强进行训练:每边填充4个像素,并从填充图像或其水平翻转图像中随机采样32×32的裁剪图像。


在PASCAL和MS COCO上的目标检测


我们通过将 ResNet-101引入到更快的 R-CNN 中,可以获得比 VGG-16更好的性能。而 ResNet 最终在 ImageNet 检测、定位、 COCO 检测和 COCO 分割中获得第一名! ! !


4289cc27be2930617685bc91829f0d08.png

935d3cce31765ba57bae6db3f74ad006.png

具体更多的实现细节都在论文的附录


总结


在ResNet网络中有如下几个亮点:


(1)提出residual结构(残差结构),并搭建超深的网络结构(突破1000层)


(2)使用Batch Normalization加速训练(丢弃dropout)


在ResNet网络提出之前,传统的卷积神经网络都是通过将一系列卷积层与下采样层进行堆叠得到的。但是当堆叠到一定网络深度时,就会出现两个问题。


(1)梯度消失或梯度爆炸。


(2)退化问题(degradation problem)。


在ResNet论文中说通过数据的预处理以及在网络中使用BN(Batch Normalization)层能够解决梯度消失或者梯度爆炸问题,residual结构(残差结构)来减轻退化问题。此时拟合目标就变为F(x),F(x)就是残差。

相关文章
|
2月前
|
机器学习/深度学习 人工智能
类人神经网络再进一步!DeepMind最新50页论文提出AligNet框架:用层次化视觉概念对齐人类
【10月更文挑战第18天】这篇论文提出了一种名为AligNet的框架,旨在通过将人类知识注入神经网络来解决其与人类认知的不匹配问题。AligNet通过训练教师模型模仿人类判断,并将人类化的结构和知识转移至预训练的视觉模型中,从而提高模型在多种任务上的泛化能力和稳健性。实验结果表明,人类对齐的模型在相似性任务和出分布情况下表现更佳。
65 3
|
2月前
|
机器学习/深度学习 Web App开发 人工智能
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》这篇论文提出了一种基于YOLOv3-Tiny的轻量级目标检测模型Micro-YOLO,通过渐进式通道剪枝和轻量级卷积层,显著减少了参数数量和计算成本,同时保持了较高的检测性能。
39 2
轻量级网络论文精度笔(一):《Micro-YOLO: Exploring Efficient Methods to Compress CNN based Object Detection Model》
|
2月前
|
机器学习/深度学习 编解码 算法
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
MobileNetV3是谷歌为移动设备优化的神经网络模型,通过神经架构搜索和新设计计算块提升效率和精度。它引入了h-swish激活函数和高效的分割解码器LR-ASPP,实现了移动端分类、检测和分割的最新SOTA成果。大模型在ImageNet分类上比MobileNetV2更准确,延迟降低20%;小模型准确度提升,延迟相当。
67 1
轻量级网络论文精度笔记(三):《Searching for MobileNetV3》
|
3月前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
114 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
2月前
|
编解码 人工智能 文件存储
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
YOLOv7是一种新的实时目标检测器,通过引入可训练的免费技术包和优化的网络架构,显著提高了检测精度,同时减少了参数和计算量。该研究还提出了新的模型重参数化和标签分配策略,有效提升了模型性能。实验结果显示,YOLOv7在速度和准确性上超越了其他目标检测器。
53 0
轻量级网络论文精度笔记(二):《YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object ..》
|
2月前
|
机器学习/深度学习 API 算法框架/工具
残差网络(ResNet) -深度学习(Residual Networks (ResNet) – Deep Learning)
残差网络(ResNet) -深度学习(Residual Networks (ResNet) – Deep Learning)
58 0
|
2月前
|
机器学习/深度学习 编解码 自然语言处理
ResNet(残差网络)
【10月更文挑战第1天】
|
4月前
|
机器学习/深度学习 算法 网络架构
神经网络架构殊途同归?ICML 2024论文:模型不同,但学习内容相同
【8月更文挑战第3天】《神经语言模型的缩放定律》由OpenAI研究人员完成并在ICML 2024发表。研究揭示了模型性能与大小、数据集及计算资源间的幂律关系,表明增大任一资源均可预测地提升性能。此外,论文指出模型宽度与深度对性能影响较小,较大模型在更多数据上训练能更好泛化,且能高效利用计算资源。研究提供了训练策略建议,对于神经语言模型优化意义重大,但也存在局限性,需进一步探索。论文链接:[https://arxiv.org/abs/2001.08361]。
51 1
|
5月前
|
计算机视觉 网络架构
【YOLOv8改进 - 卷积Conv】DWRSeg:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
YOLO目标检测专栏探讨了YOLO的创新改进,如多尺度特征提取的DWRSeg网络。该网络通过区域残差化和语义残差化提升效率,使用DWR和SIR模块优化高层和低层特征。DWRSeg在Cityscapes和CamVid数据集上表现优秀,速度与准确性兼备。论文和代码已公开。核心代码展示了一个包含DWR模块的卷积层。更多配置详情见相关链接。
|
4月前
|
人工智能 算法 安全
【2023 年第十三届 MathorCup 高校数学建模挑战赛】C 题 电商物流网络包裹应急调运与结构优化问题 赛后总结之31页论文及代码
本文总结了2023年第十三届MathorCup高校数学建模挑战赛C题的解题过程,详细阐述了电商物流网络在面临突发事件时的包裹应急调运与结构优化问题,提出了基于时间序列预测、多目标优化、遗传算法和重要性评价模型的综合解决方案,并提供了相应的31页论文和代码实现。
81 0