【论文泛读】 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)就是残差。

相关文章
|
15天前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
60 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
4月前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】31. 卷积神经网络之残差网络(ResNet)介绍及其Pytorch实现
【从零开始学习深度学习】31. 卷积神经网络之残差网络(ResNet)介绍及其Pytorch实现
|
5月前
|
机器学习/深度学习 计算机视觉 知识图谱
【YOLOv8改进】MobileViT 更换主干网络: 轻量级、通用且适合移动设备的视觉变压器 (论文笔记+引入代码)
MobileViT是针对移动设备的轻量级视觉Transformer网络,结合CNN的局部特征、Transformer的全局注意力和ViT的表示学习。在ImageNet-1k上,它以600万参数实现78.4%的top-1准确率,超越MobileNetv3和DeiT。MobileViT不仅适用于图像分类,还在目标检测等任务中表现出色,且优化简单,代码已开源。YOLOv8引入了MobileViT块,整合卷积和Transformer结构,提升模型性能。更多详情可参考相关专栏和链接。
|
2月前
|
机器学习/深度学习 算法 网络架构
神经网络架构殊途同归?ICML 2024论文:模型不同,但学习内容相同
【8月更文挑战第3天】《神经语言模型的缩放定律》由OpenAI研究人员完成并在ICML 2024发表。研究揭示了模型性能与大小、数据集及计算资源间的幂律关系,表明增大任一资源均可预测地提升性能。此外,论文指出模型宽度与深度对性能影响较小,较大模型在更多数据上训练能更好泛化,且能高效利用计算资源。研究提供了训练策略建议,对于神经语言模型优化意义重大,但也存在局限性,需进一步探索。论文链接:[https://arxiv.org/abs/2001.08361]。
33 1
|
4月前
|
机器学习/深度学习 人工智能 算法
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集('蜜蜂', '甲虫', '蝴蝶', '蝉', '蜻蜓', '蚱蜢', '蛾', '蝎子', '蜗牛', '蜘蛛')进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一张昆虫图片识别其名称。
298 7
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
|
3月前
|
计算机视觉 网络架构
【YOLOv8改进 - 卷积Conv】DWRSeg:扩张式残差分割网络,提高特征提取效率和多尺度信息获取能力,助力小目标检测
YOLO目标检测专栏探讨了YOLO的创新改进,如多尺度特征提取的DWRSeg网络。该网络通过区域残差化和语义残差化提升效率,使用DWR和SIR模块优化高层和低层特征。DWRSeg在Cityscapes和CamVid数据集上表现优秀,速度与准确性兼备。论文和代码已公开。核心代码展示了一个包含DWR模块的卷积层。更多配置详情见相关链接。
|
2月前
|
人工智能 算法 安全
【2023 年第十三届 MathorCup 高校数学建模挑战赛】C 题 电商物流网络包裹应急调运与结构优化问题 赛后总结之31页论文及代码
本文总结了2023年第十三届MathorCup高校数学建模挑战赛C题的解题过程,详细阐述了电商物流网络在面临突发事件时的包裹应急调运与结构优化问题,提出了基于时间序列预测、多目标优化、遗传算法和重要性评价模型的综合解决方案,并提供了相应的31页论文和代码实现。
54 0
|
4月前
|
Web App开发 自然语言处理 算法
一文搞懂:【论文笔记】BINE:二分网络嵌入
一文搞懂:【论文笔记】BINE:二分网络嵌入
34 0
|
5月前
|
机器学习/深度学习 数据可视化 计算机视觉
【YOLOv8改进】MCA:用于图像识别的深度卷积神经网络中的多维协作注意力 (论文笔记+引入代码)
YOLO目标检测专栏介绍了YOLO的创新改进和实战案例,包括多维协作注意力(MCA)机制,它通过三分支架构同时处理通道、高度和宽度注意力,提高CNN性能。MCA设计了自适应组合和门控机制,增强特征表示,且保持轻量化。该模块适用于各种CNN,实验证明其在图像识别任务上的优越性。此外,文章还展示了如何在YOLOv8中引入MCA层的代码实现和相关任务配置。
|
5月前
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】 YOLOv8 更换骨干网络之GhostNetV2 长距离注意力机制增强廉价操作,构建更强端侧轻量型骨干 (论文笔记+引入代码)
该专栏聚焦YOLO目标检测的创新改进与实战,介绍了轻量级CNNs和注意力机制在移动设备上的应用。文章提出了一种名为GhostNetV2的新架构,结合了硬件友好的DFC注意力机制,强化了特征表达能力和全局信息捕获,同时保持低计算成本和高效推理。GhostNetV2在ImageNet上以167M FLOPs达到75.3%的top-1准确率,优于同类模型。创新点包括DFC注意力、模型结构优化和效率提升。源代码可在GitHub和MindSpore平台上找到。此外,还提到了YOLOv8的相关实现和任务配置。

热门文章

最新文章

下一篇
无影云桌面