热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CVPR2016(classification):论文解读《DeepResidualLearningforImageRecognition》

文章目录原文地址论文阅读方法初识(Abstract&Introduction&Conclusion)相知(Body)2.RelatedWork3.DeepResidualLearn


文章目录




    • 原文地址

    • 论文阅读方法

    • 初识(Abstract & Introduction & Conclusion)

    • 相知(Body)


      • 2. Related Work

      • 3. Deep Residual Learning


        • 3.1 Residual Learning

        • 3.2 Identity Mapping by Shortcut

        • 3.3 Network Architecture

        • 3.4 Implementation


      • 4. Experiments


        • 4.1 ImageNet Classification![在这里插入图片描述](https://img-blog.csdnimg.cn/20200701214121314.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2NTYwODk0,size_16,color_FFFFFF,t_70)

        • 4.2 CIFAR-10 and Analysis



    • 回顾(Review)

    • 代码




原文地址

https://arxiv.org/abs/1512.03385



论文阅读方法

三遍论文法



初识(Abstract & Introduction & Conclusion)

这篇文章就是大名鼎鼎的ResNet,属于CV领域必看经典,目前也是很多任务常用的backbone。获得了CVPR2016的Best Paper Award,这也是Kai Ming He大佬的第二篇Best Paper。

这篇文章主要解决的问题在于:当神经网络的层数加深时,模型效果出现了退化的问题(能力反而变差),如上图所示,将20层神经网络加深到56层之后,模型的training error和test error反而更高了。

首先一个阻碍层数增加的原因是:当层数变多时,会出现梯度消失的现象,这个可以通过Batch Normalization来解决,使得模型能够正常收敛。即使模型通过批次标准化可以正常收敛,但是另一个问题也随之暴露:模型能力退化,并且这个退化不是由过拟合导致的,因为从上图可以看到,56-layer的深层模型在训练集的error rate也增加了,证明模型的拟合能力确实出现了问题。

深层模型出现的退化问题表明了一个现象:并不是所有的模型都同样容易优化的。比如,我们现在要加深一个网络,先将原来的网络完全复制过来,再让新增的层作为恒等映射(恒等映射的简单理解:就是输入X,经过这些层最后还是输出X),按理说,这样构成的模型不可能比原先的网络效果差。但事实证明,在有限的时间内,优化器的无法训练到这种效果(模型反而出现退化)。这也就意味着,深层模型的优化是很困难的。

为了解决深层模型的优化问题,本文提出了一个残差结构:让新增的层不再去拟合基础映射(underlying mapping),而是拟合残差映射(residual mapping)。什么意思呢?例如,我们要学习H(x),让新增的非线性层去拟合映射F(x)=H(x)-x,H(x)就变成了F(x)+x。为什么这么设计呢,因为作者认为这样会使得模型的优化变得更容易,极端地说,假设新增的层为恒等映射才使得模型最优(即原始的网络就已经为最优模型,无论再怎么新增层数也不无法提升性能),那么,新增的非线性层在残差结构下学习如何变为0要比在非残差结构下学习恒等映射容易的多。

F(x)+x的实现如上图所示,使用了"shortcut connections",将恒等映射(identity mapping)与新增层的输出相加,这样既不增加参数量,也不增加计算复杂度。作者利用该网络在ImageNet上进行了实验,证明了自己的残差结构能够很容易优化深层模型,并且随着深度的增加,准确率也逐渐提升。利用该结构,在各个赛道上取得了很牛逼的结果,有多牛逼呢?贴段原文感受下:Our ensemble has 3.57% top-5 error on the ImageNet test set, and won the 1st place in the ILSVRC 2015 classification competition. The extremely deep representations also have excellent generalization performance on other recognition tasks, and lead us to further win the 1st places on: ImageNet detection, ImageNet localization, COCO detection, and COCO segmentation in ILSVRC & COCO 2015 competitions。



相知(Body)



2. Related Work

Residual Representation:首先介绍之前应用残差结构的工作,并且指出本文与他们的不同,说明良好的重构确实对模型的优化是有利的。

Shortcut Connection:与“highway”网络做了对比:本文的残差结构无需额外的参数,且无门控机制,网络永远在学习残差表示。



3. Deep Residual Learning



3.1 Residual Learning

这一部分简单地介绍了残差学习:理论上,多个非线性层能够拟合任意的复杂函数。假设,我需要让新增的非线性层去近似一个函数H(x)(原来的网络输出x),那么可以在残差结构下,让它去近似函数F(x)=H(x)-x。虽然最后的期望映射都为H(x),但是它们学习的难易程度不一样。

之前提到过,如果原来的模型已经是最优,那么新增的非线性层就要学会恒等映射,相比之下,在残差结构下让新增非线性层的权重变为零显然比学习恒等映射更容易。但是在现实情况中,往往已得到的模型不是最优的,这时期望通过增加层数来优化模型。如果最优模型需要新增的非线性模块接近恒等映射(但不是恒定映射,即非线性层学习的不是零映射),那么在残差结构下去学习与恒等映射之间的扰动比重新学习一个新函数要简单的多。



3.2 Identity Mapping by Shortcut

如图2所示,作者定义了一个残差模块,其公式如下:

x,y分别代表了对应层的输入输出向量,其中F(x,{wi})代表所学习的残差映射。

但在式子(1)中,x和F最后为直接的相加,所以它们的空间维度大小必须一致。对于不一致的情况,作者额外定义了一个残差公式:

使用一个线性映射Ws来调整x的维度大小。当然,矩阵Ws也可以用于x和F空间大小一致的情况,但从实验结果(下文)来看,恒等映射就已经可以很好地解决模型退化问题,并且不耗费算力。所以,Ws只用于匹配维度。

关于残差函数F的形式其实是很灵活的,本文的实验包含了2层或者3层,当然更多层也是可以的。如果只包含一层,其实残差模块就会退化成线性映射:W1 x + b,从实验现象来看,这种构造并没有任何优势。



3.3 Network Architecture

Plain Network: 中间为本文实验中的Plain Network(图中),它借鉴了VGG16的网络结构(图左)。主要由多个3x3卷积构成,主要有两点设计原则:1)对于输出同等特征图尺寸的层,它们的卷积核数量一致(输出通道数量相同)。2)特征图尺寸减半,对应的卷积核数量翻倍,保持每层的计算复杂度。下采样用的并不是max poolling,而是直接用步幅长度为2的卷积层替代。网络最后用了一个全局平均池化层+具有softmax的1000维的全连接层。值得注意的是,构造的Plain Network相比于VGG16, 卷积核数量更少,时间复杂度也更少。

Residual Network: 在Plain网络中插入Shortcut Connection,就能转换成与之对应的残差版本(图右)。式(1)可以直接在输入输出维度相等的层中(图中的实线);当维度增加时(图中虚线),作者考虑了两种方案:**A)shortcut仍让执行恒等映射,对于额外的维度用0填充,这种方法不需要增加参数量;B)使用式(2)进行升维(1x1卷积)。**不管哪种方法,当shortcut跨越两种尺寸的feature map时,步幅都为2。



3.4 Implementation

训练基本上是跟随AlexNet、VGG来配置,a) 将最短边随机缩放至[256, 480]区间内用于尺度增强; b) 在图像和对应的水平翻转上进行224x224的随机剪裁; c) 减去各通道像素均值; d) ALexNet中的颜色增强;e) 不同的是,在卷积后**函数前使用了Batch Normalization;f) He初始化方法;g) mini batch=2565的SGD优化,初始学习率为0.1,当error rate不再下降时,除以10,weight decay=0.0001,momentum=0.9;h) 没有使用dropout。

在测试阶段,使用AlexNet中的10-crop测试方法(四个角的224x224 + 中心的224x224,以及它们的水平翻转),并且还采用了类似VGG中的全卷积形式,将平均得分作为输出结果(按最短边{224,256,384,480,640}进行缩放)。



4. Experiments



4.1 ImageNet Classification

上图为实验所构造的Plain Network和对应的ResNet(在每个残差模块加入shortcut connection)详细结构,自50-layer之后,残差函数的结构发生了变化,由两层变为了三层,具体结构也可见下图。

Plain Network: 上图左边就是Plain Network的实验结果,细线为training error,粗线为validation error。可以看到模型从18层变为34层时出现了退化的情况,并且作者在结构中加了Batch Normalization,所以这种退化并不是梯度消失引起的。

Residual Networks: 使用shortcut connection(option A)将网络变为对应的ResNet之后,上图右边即为实验结果。从上图和Table 2中可以得到以下几个结论:1)退化问题在Residual Learning结构下被解决;2)残差学习在深度模型中十分有效的;3)Residual Learning能够使模型更快收敛。
Identity vs. Projection Shortcuts: 接下来比较了Identity Shortcuts和Projection Shortcuts(之前的公式2),其中设计了三种网络:A)仍为Identity Shortcuts,但用零填充增加维度,无需额外参数;B)Projection Shortcut用来增加维度,其他部分仍为Identity Shortcuts;C)所有的Shortcuts均为Projection Shortcuts。

Table3展示了无论是A)B)C)那种方案,均优于plain network。其中,B)略优于A),作者认为这主要是由于A)中零填充的部分没有进行残差学习;C)略由于B),这可以归功于额外参数的引入。但是三者之间的差距很微小,这证明Projection Shortcuts对于解决Model的退化问题并不是必须的。
Deeper Bottleneck Architecutres: 如下图所示(Figure 5 右),随着网络层数的加深,考虑所能负担的训练时长,将Building Block修改为bottleneck设计。对于每一个残差函数F,使用3层代替2层,3层分别为:1x1,3x3以及1x1。1x1卷积层主要是用来减少/恢复特征图的维度,使得3x3层在进行卷积的时候,输入/输出维度都比较小。图5左右两种设计模式,虽然它们的层数不一样,但是它们的时间复杂度是相似的。同时,对于bottleneck网络来说,identity shortcuts是更高效的选择,由于shortcuts连接了两个高纬度的终端,如果使用Projection Shortcuts的话,时间复杂度和模型大小会加倍。

50-layer ResNet: 从50层之后,就开始使用”bottleneck“结构,具体结构见之前的结构图。

101-layer and 152-layer ResNets: 在Residual Learning结构下,模型只需要不断地加深,就可以获得更好的结果。并且即使模型的层数达到了152层,但从参数量来看,模型仍比VGG16/19要更小。

Comparisons with State-of-the-art Methods: 首先,ResNet在ImageNet竞赛classification赛道上荣登第一,然后在提交时,作者结合了6个不同深度的Model进行ensemble(其中有2个ResNet152)。



4.2 CIFAR-10 and Analysis

在CIFAR-10数据集上,作者还做了相应的实验,实验的目的是为了观察深层网络,并不是为了获得SOTA的结果。与之前用于ImageNet的Plain Network结构类似,这个的网络主要由3x3 Conv组成(见下图),经过卷积之后,会进行一个average pooling,10-way全连接+softmax。所以,总共有6n+2层权重层。

shortcut connection全用的为Identity Shortcuts,使得对应的ResNet与Plain Net复杂度一致。

左边为PlainNet在CIFAR-10上的结果,出现了model退化的结果,这证明model退化是一个基础问题;中间是ResNet的结果,解决了Model退化的问题;右边将ResNet增加到1202层,可以看到,虽然1202层和110层的training error很相近,但是ResNet-1202的test error比110要更高,这个现象可以归于过拟合,因为结构中没有用到maxout和dropout等强正则化的手段。

上图展示了每层响应的标准差,它是在BN层之后,ReLU之前的输出。对于ResNet来说,这展示残差函数的响应强度,结果展示,ResNet相比于它的Plain Network有更小的响应,这个结果也就支持了作者之前的动机:残差函数比原始函数更接近零(3.1节)。并且也说明,当层数越多时,ResNet每一层的改动幅度越小。



回顾(Review)

看完整篇论文,一个词:牛逼。全篇主要解决了的一个问题就是:随着模型层数的加深,优化越来越难,网络的性能出现了退化。这个问题如果让我去想,可能抠破脑袋也想不出,而ResNet解决了。ResNet并没有大多复杂的数学原理,只是改变了一下模型的表达形式:Residual Learning (H(x) -> H(x)=F(x)+x)。现在回顾这篇工作,可以发现深度学习领域也确实是从ResNet之后,才真正地变为“深度”学习:模型的层数变得越来越深,达到了百层以上。



代码

等我复现之后,贴上链接。当然,github上关于ResNet的复现代码也有很多。



以上为个人的浅见,水平有限,如有不对,望大佬们指点。

未经本人同意,请勿转载,谢谢。



推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
    这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • Learning to Paint with Model-based Deep Reinforcement Learning
    本文介绍了一种基于模型的深度强化学习方法,通过结合神经渲染器,教机器像人类画家一样进行绘画。该方法能够生成笔画的坐标点、半径、透明度、颜色值等,以生成类似于给定目标图像的绘画。文章还讨论了该方法面临的挑战,包括绘制纹理丰富的图像等。通过对比实验的结果,作者证明了基于模型的深度强化学习方法相对于基于模型的DDPG和模型无关的DDPG方法的优势。该研究对于深度强化学习在绘画领域的应用具有重要意义。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有