ResNet论文解读/总结

Posted 耿鬼喝椰汁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ResNet论文解读/总结相关的知识,希望对你有一定的参考价值。

此文章为深度学习在计算机视觉领域的图片分类经典论文ResNet(Deep Residual Learning for Image Recognition)论文总结。

此系列文章是非常适合深度学习领域的小白观看的图像分类经典论文。系列文章如下:

 AlexNet:AlexNet论文解读/总结_耿鬼喝椰汁的博客-CSDN博客

VGGNet:VGGNet论文解读/总结_耿鬼喝椰汁的博客-CSDN博客

GoogLeNet:GoogLeNet(Inception)v1 论文解读/总结_耿鬼喝椰汁的博客-CSDN博客

ResNet:ResNet论文解读/总结_耿鬼喝椰汁的博客-CSDN博客


文章目录


摘要

      (一)通常情况下,神经网络的深度越深,越难以训练,本文提出了一种残差神经网络来解决这个问题,它的优化更简单,并且可以在深层的神经网络中也相应获得更高的准确度。这种深度残差神经网络在ImageNet等数据集的测试效果均为第一名。

      (二)更深的神经网络更加难以训练,残差网络主要用来减轻训练的网络,这些网络比之前使用的网络都要深得多。

     (三)在ImageNet的的数据集中网络层数达到了152层,前一年夺冠的VGG只有19层。在COCO物体检测数据集上获得了28%的相对改进。

(一)论文要解决问题

(1)论文首先说明:一味地加深网络深度会使得网络达到了一种饱和状态,而导致精度的下降。

(2)在以往的知识中,深度学习层数越深,提取的特征越多。如下图所示,并非网络层数越多越好。引起这部分的原因,这种现象主要是退化:随着网络层数的加深,准确性会达到饱和,梯度传播过程中会逐渐消失,导致无法对前面的网络层权重进行调整,训练误差加大,结果也随之变差。(并非过拟合,如果过拟合,训练的时候误差很小,但是测试的时候误差就很大)

       由下图可以看出,56-layer(层)的网络比20-layer的网络在训练集和测试集上的表现都要差。注意:这里不是过拟合(过拟合是在训练集上表现得好,而在测试集中表现得很差),说明如果只是简单的增加网络深度,可能会使神经网络模型退化,进而丢失网络前面获取的特征。

 (二)解决方法

       为了解决上面提到的退化,引入一个[深度残差网络].gray (理论上深层次网络和浅层的网络性能一样,但现实卷积层层数越到后面会出现退化)

残差深度学习

       本文提出了深度残差学习(deep residual learning)框架来解决上图中的问题,如下图所示,通过前馈神经网络的shortcut connections来跨过一个层或者多个层,将前层的输出直接与卷积层的输出叠加,相当于做了个恒等映射。

       在极端情况下,如果恒等映射最优,可以将残差设置为0就简单地实现了恒等映射。简单来说,残差学习就是将一层的输入与另一层的输出结果一起作为一整个块的输出。

      整体的网络架构如下:使用两层卷积加relu激活函数,经过第一层的时候输出 F(x),之后在经过第二层(此处增加了shortcut connection),将其shortcut connection连接到第二层的激活函数之前,输出结果变为H(x)=F(x)+x(恒等映射)

        大致参数如下:浅层网络的输出为:x,要学习的目标值为H(x),那么就让该层网络学习一个残差目标值F(x) = H(x)- x,最后的输出为F(x) + x, identity 恒等映射。

       残差网络作用:(1)残差网络比较容易优化,普通网络架构(简单的堆叠层)在训练的时候容易出现较高的误差。(2)残差网络随着深度的增加,准确性、精度也会提高

      残差:也就是真实值和预测值的偏差,类似数据的回归,作用:(1)修正上一层的错误。(2)防止梯度消失(以往的线性结构训练,梯度都是越来越小)

残差网络的定义如下:

   (1)当结构块的输入和输出一致时,恒等映射直接叠加到输出上:

 (2)当结构块的输入和输出不一致时,使用x进行线性映射之后,叠加到输出中:

(三) 网络架构

      从Vgg的启发出发,我们构建一个简单的卷积神经网络。(后两个网络以全局平均池化层和具有softmax的1000维全连接层结束。 左:作为参考的VGG-19模型。中:具有34个参数层的简单网络 。右:具有34个参数层的残差网络 。)

      用两个设计规则设计出我们的残差网络:(1)对于相同的输出特征图尺寸,层具有相同数量的滤波器;   (2) 如果特征图尺寸减半,则滤波器数量加倍,以便保持每层的时间复杂度。我们通过步长为2的卷积层直接执行下采样。

     (一)VGG19的架构:(1).总共有5个block组成,所有的卷积都是3*3, block的卷积核个数以此为64、128、256、512、512 。(2)每个block之间通过下采样。 (3)特征图减半,步长加倍。(4)最后使用两个全连接层(输出1000个类别的概率).

    (二)Plain Network:受VGG网络(如下图左图)的影响,plain网络(如下图中间)的卷积层主要是3*3的滤波器,加权层的层数为34,在网络的最后是全局的平均pooling层和一个1000种类的包含softmax函数的全连接层。plain网络比VGG网络有更少的滤波器(卷积核后面的64,128,256等代表个数)和更低的计算复杂度。

   (三)Residual Network:在plain网络的基础上,加入shortcut连接,就变成了相应的残差网络,如上图右图所示,图中所加实线表明可以直接使用恒等shortcuts,虚线表示维度不匹配时的情况,需要先调整维度再相加。      调整维度的方法有两种:  (1)仍然使用恒等映射,只是在增加的维度上使用0来填充,这种方法不会引入额外的参数;    (2)使用1x1的卷积映射shortcut来调整维度保持一致。         (这两种方法都使用stride为2的卷积。)

(四)实验

      下面是基于ImageNet2012数据集进行评估实验,训练集包含128万张图像,验证集包含5万张图像,测试集有10万张图像,对top-1和top-5的错误率来评估。

plain网络:

      首先进行的实验是18层和34层的plain网络,实验结果如下表所示,产生了一种退化现象:在训练过程中34层的网络比18层的网络有着更高的训练错误率。 

 残差网络:

       接着对18层和34层的残差网络进行评估,为了保证变量的一致性,其基本框架结构和plain网络的结构相同,只是在每一对卷积层上添加了shortout连接来实现残差结构,对于维度不匹配的情况,使用0来填充维度(即上面介绍过的方法),因此也并没有添加额外的参数。训练效果如下图:

        结合下表验证集上的top-1错误率与前面两个表格,可以对比得到:

(1)与plain网络相反,34层的resnet网络比18层的错误率更低,表明可以通过增加深度提高准确率,解决了退化问题。

(2)与plain网络相比,层次相同的resnet网络二错误率更低,这也说明残差网络在深层次下仍然有效。

(3)对于18层的plain网络,它和残差网络的准确率很接近,但是残差网络的收敛速度要更快。

 (五)深度瓶颈结构(bottleneck)

       接下来介绍层次更多的模型,对于每一个残差块,不再使用两层卷积,而是使用三层卷积来实现,如下图所示。只需要将34层resnet网络中的残差模块从2层换成3层,整个网络就变成了50层的resnet。

       先用1x1降维,再用3x3处理数据,再用1x1升维。(结构主要用于Restnet50/101/152)

       实验结果表明 50/101/152层的resnet比34层resnet的准确率要高很多,解决了深层的退化问题。同时即使是152层resnet的计算复杂度仍然比VGG-16和VGG-19要小。

(六)总结

1、退化现象定义:随着网络深度的增加,准确率开始达到饱和并且在之后会迅速下降。

      判断方法:随着网络的加深,错误率不降反升,收敛速率也呈指数级下降。

      原因:网络过于复杂,训练不加约束。

      解决方案:使用残差网络结构。

2、在残差网络中得出的结论:(1)极深残差网络易于优化收敛;(2)解决了退化问题;(3)可以在很深的同时提升准确率。

3、本文提出两种残差结构,一种是两层卷积残差块,应用于ResNet-18和ResNet-34; 另一种是bottleneck三层卷积残差块(分别为1x1降维、3x3、1x1升维)。应用于ResNet-50、ResNet-101和ResNet-152。ResNet-50、ResNet-101、ResNet-152性能都比ResNet-34好。

4.论文成果:基于深度残差网络,在ILSVRC和COCO 2015竞赛中获得了多个赛道的第一名:ImageNet检测、ImageNet定位、COCO检测和COCO分割。

5.数据集:基于ImageNet2012数据集进行评估实验,训练集包含128万张图像,验证集包含5万张图像,测试集有10万张图像,对top-1和top-5的错误率来评估。开源了。


今天的学习总结就到这里啦!如果有什么问题可以在评论区留言呀~

如果帮助到大家,可以一键三连+关注 支持下~

以上是关于ResNet论文解读/总结的主要内容,如果未能解决你的问题,请参考以下文章

VGGNet论文解读/总结

SeNet论文解读/总结

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

GoogLeNet(Inceptionv1) 论文解读/总结

图像分类算法:ResNet论文解读

论文笔记系列:主干网络-- ResNet