《Deep Residual Learning for Image Recognition》阅读笔记

论文标题

《Deep Residual Learning for Image Recognition》

  • 撑起CV界半边天的论文
  • Residual :主要思想,残差。

作者

何恺明,超级大佬。微软亚研院属实是人才辈出的地方。

初读

摘要

  • 提问题:

    更深层次的神经网络更难训练。

  • 提方案:

    提出了残差网络解决深层网络训练的问题。这也就是本文的主题。

    用 reference 的残差函数替代了 unreferenced 的函数。

  • 概况主要内容:

    通过实验证明残差的有效性。甚至在 CIFAR-10 上试到了 1000 层。

  • 秀成果:

    • 低复杂度:比 VGG 深 8 倍但复杂度更低。
    • 高精度:
      • 在 ImageNet 测试集上实现了 3.57% 的误差
      • 在 COCO 目标检测数据集上获得了 28% 的相对改进

结论

这篇文章比较别致,没有写结论。主要是受限于 CVPR 对论文篇幅的限制,把最后一段给了目标检测而没有写结论。为啥不再单写一篇目标检测的文章。

再读

Section 1 Introduction

  • 第一段主题:深度卷积好

    深度卷积神经网络好,好就好在能很深

  • 第二段主题:质疑“深就是好?

    稍微深点就遇到了梯度消失/爆炸的问题,这个问题通过初始化正则和中间正则解决

  • 第三段主题:深反倒不好

    网络深了精度反而会下降,深度深了之后训练误差和测试误差都上升了,说明变差还不是过拟合的锅。

    在这里插入图片描述

  • 第四段主题:深带来的问题

    新添加的层是恒等映射(identity mapping)[TODO],按理说不应该更差,但是现实就是优化不动。

  • 第五段主题:引入残差学习框架

    让残差块拟合 F ( X ) = H ( x ) − x F(X)=H(x)-x F(X)=H(x)x,而不是 H ( x ) H(x) H(x),最终再进行 F ( x ) + x F(x)+x F(x)+x 。假设残差映射优于原始映射。

    在这里插入图片描述

  • 第六段主题:残差学习的实现不会使模型复杂化

    上述的 F ( x ) + x F(x)+x F(x)+x 操作通过有捷径连接的前馈型神经网络实现。不会增加参数量和模型复杂度,仍可以由 SGD 进行优化。

  • 第七段主题:实验验证

    经过全面的实验显示:

    • 残差网络更容易优化
    • 残差网络可以从深度中获得精度增益
  • 第八段主题:超深层数探索

    在比较简单的 CIFAR-10 数据集上实验了超千层的模型。

  • 第九段主题:再次展示成果

    • 有史以来最深
    • 比 VGG 深,但是复杂度更低
    • 在 ImageNet 测试集上实现了 3.57% 的误差
    • 在 COCO 目标检测数据集上获得了 28% 的相对改进
    • 认为残差这一思想是通用的,在其他视觉或非视觉问题都应该能够应用。

Section 2 Related Work

简单讲了和本文工作相关的方法。

  • 残差表示(Residual Representations)

    对于矢量量化,编码残差矢量比编码原始矢量更有效。良好的重构或预处理可以简化优化过程。

  • 捷径连接(Shortcut Connections)

    MLPs中对捷径连接的早期实践是添加从网络输入连接到输出的线性层。或使一些中间层直接连接到辅助分类器,以解决梯度消失/爆炸。

    此外,不同于 highway networks 中有时会关闭的门控函数,本文模型没什么门。总是学习残差函数,标识快捷键永远不会关闭,所有信息始终都会被传递,还需要学习其他残余函数。

Section 3 Deep Residual Learning

Residual Learning

残差学习

  • 第一段:残差映射

    不是像传统的那样让堆叠的层逼近 H(x),而是明确让这些层逼近残差函数 F(x):= H(x)-x。根据万能近似定理来说,两种形式都应能够渐近地逼近所需的函数,但学习的难易程度有所不同。

  • 第二、三段:残差的好处

    退化现象表明求解器在用多个非线性层逼近恒等映射时可能存在困难。通过残差学习的重构,如果恒等映射是最佳的,残差模块只需要拟合零映射。

    即使恒等映射不是最佳的,后面的网络也只需要拟合前面网络的输出与期望函数的残差,这比起恒等映射要容易。

Identity Mapping by Shortcuts

通过快捷方式进行恒等映射

  • 第一段:残差块结构

    描述了图2,实际就是再描述一遍残差,车轱辘话来回说,还是拟合 H(x)-x,最后再加回 x,用一下 Relu。

  • 第二段:残差不增加复杂度

    残差没有引入额外的参数和计算复杂度,深度宽度都一样,这一点也提供了和不使用残差模型对比的条件(控制变量)。

  • 第三段:恒等映射就足够了

    实验表明,后面用恒等映射效果是最好的,引入参数还会增加额外的复杂度。只有需要匹配维度的时候才会给恒等映射加上权重。

  • 第四段:残差层数

    两层或者三层残差就足够了,但是不能只有一层,只有一层就和线性层很像了,效果不好。

  • 第五段:残差适用于卷积

    上面为了方便而使用的全连接表示,实际上可以表示卷积层,在两个特征映射上逐个通道执行逐元素加法。

Network Architectures

网络体系结构

对比了带残差的和不带残差的

  • 无残差网络:
    • 类似VGG网络:
      • 3 × 3 3\times 3 3×3 卷积
      • 每个块里卷积层数一致
      • 大小减半时通道加倍
      • 通过步长为2的卷积层执行下采样
      • 以全局平均池化层和带有softmax的1000路全连接层结束
    • 用了残差之后甚至参数量比VGG还要少,VGG好臃肿。
  • 残差网络:
    • 其余的一模一样,只是带上了残差。
    • 当维度增加时,下采样有两种方案:
      • 不够的用0填充,此方案不必引入新的参数
      • 1 × 1 1\times 1 1×1 的卷积层卷积,

Implementation

实施

具体试验方案:

  • 调整图像大小,随机采样其较短的一面以进行比例增强
  • 从图像或其水平翻转中随机采样224×224作物,本文主要进行标准的10种裁剪测试方法
  • 并减去每像素均值,本文采用了多尺度裁剪和特征融合
  • 使用标准色彩增强
  • 在每次卷积之后和激活之前采用批归一化,而不使用 dropout
  • 使用最小批量为256的SGD
  • 学习率从0.1开始,当误差平稳时除以10

Section 4 Experiments

ImageNet Classification

ImageNet分类

本节主要讲了实验结果

介绍数据集ImageNet
  • 包含1000个类。在128万张训练图像上训练模型,并在50k验证图像上进行评估。
  • 在测试服务器报告的10万张测试图像上获得最终结果,评估了top-1和top-5的错误率
普通网络和残差网络对比
  • 普通网络:

  • 较深的34层普通网络比较浅的18层普通网络具有更高的验证误差

    • 18-layer 错误率是 27.94%
    • 34-layer 错误率是 28.54%
  • 出现了退化现象:

    即使18层普通网络的解空间是34层普通网络的子空间,在整个训练过程中34层普通网络具有较高的训练误差。

  • 不是梯度问题导致的

    普通网络也使用了BN,有非零方差。数据不会挤在一起。前向传播反向传播也都正常。更多轮次的迭代也不能解决,钉死这是退化而不是别的事儿。

  • 猜测:

    我们推测深层的普通网络的收敛速度可能呈指数级降低,这会影响到减少训练误差。将来将研究这种优化困难的原因。

  • 残差网络:

    • 再次强调已经控制变量了,除了加了残差,在参数量之类别的方面都一样
    • 34 层 ResNet 表现出较低的训练误差,验证了残差学习在极深系统上的有效性。
    • 18-layer 错误率是 27.88%
    • 34-layer 错误率是 25.04%
    • 此外,带残差的网络收敛更快。

在这里插入图片描述

恒等映射和投影短链接对比
  • 三个方案:
    • A)零填充短链接用于增加维度,并且所有短链接都是无参数的(与表2和右图4相同);
    • B)投影短链接用于增加维度,其他短链接是恒等的。
    • C)所有短链接都是投影。
  • 结果:
    • B比A稍好。作者认为是因为A中的零填充维度没有残差学习。
    • C比B好一点,作者认为是由于投影快捷方式引入的额外参数。
  • 结论:
    • A/B/C之间的细微差异表明,投影捷径对于解决退化问题并不是必不可少的。
    • 为了那一点精度增加参数量可能得不偿失,因此本文的其余部分中不会使用选项C来减少内存/时间的复杂性和模型大小。
Deeper Bottleneck Architectures

本小节主要是介绍引入Bottleneck 结构使网络更深。

  • 思想:先降维后升维

    在这里插入图片描述

  • 使用恒等映射

    • 因为短链接连接到两个高维端。如果用投影参数和复杂度会翻倍
  • 更深的残差网络

    • 50层ResNet
      • 替换了具有3层瓶颈块的34层网,形成了50层ResNet
      • 使用选项B来增加尺寸。该模型具有38亿个FLOP。
    • 101层和152层ResNet:
      • 通过使用更多的3层块来构建101层和152层ResNet(表1)。
      • 值得注意的是,尽管深度显着增加,但152层ResNet(113亿个FLOP)的复杂度仍低于VGG-16/19网(153.96亿个FLOP)。
  • 引入残差之后,更深确实更好

    • 50/101/152层ResNet比34层ResNet准确度高。
    • 没有观察到退化问题,因此深度的增加大大提高了精度。所有评估指标都证明了深度的好处

CIFAR-10 and Analysis

本节主要是在更简单的CIFAR-10数据集上测试,把深度拉到了恐怖的1202层。

  • 使用简单架构:不为刷榜,只为极致的深
    • 网络输入为32×32图像,仍然是每像素减去均值。
    • 分别在大小为{32,16,8}的特征图上使用具有3×3卷积的6n层堆栈,每个特征图尺寸为2n层
    • 卷积核的数量分别为{16,32,64}
    • 通过步幅为2的卷积执行二次采样
    • 仍然以全局平均池,10路全连接层和softmax结尾
    • shortcut用A方案,这样最简单
  • 结果:
    • 依然是普通网络会退化
    • 引入残差则会越深越好
  • 110层残差网络的特殊处理
    • 先使用0.01的学习率来预热训练,直到训练误差低于80%(约400次迭代),返回0.1的学习率继续训练

三读

未完待续。

个人感想

  • 本文的实验设计非常透彻
    • 通过观察各个细节,先是排除了是过拟合的影响,再排除了梯度爆炸/消失的影响,从而确定了深层网络的问题在于模型退化。
    • 再通过严格的控制变量的比较有无残差的模型,360度无死角的验证了残差就是能解决退化问题,值得学习。
  • 数据和模型都是有上限的
    • 数据本身决定了问题上限,这个数据的最优结果就在那里摆着,模型只是在不断逼近这个上限。
    • 模型结构决定了模型的上限,调参也就是再不断逼近这个上限。不加残差的模型就算调参调的再好也会撞上退化这堵墙,引入残差才是真正的提高了模型的上限。
  • 感觉这篇论文的参考文献就像论文阅读指南,都是值得一读的精品论文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/159209.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP基础语法(上)

目录 前言 一、基础语法 1.1 标记 1.2 输出语句 1.2.1 echo 1.2.2 print 1.3 注释 1.3.1 单行注释 1.3.2 多行注释 1.4 标识符 1.5 关键字 二、数据与运算 2.1 常量 2.1.1 常量的定义和使用 2.1.2 预定义常量 2.2 变量 2.2.1 变量的赋值 2.2.2 超全局变量 2.3 数据类型 2.3.1 …

Nginx:反向代理(示意图+配置)

示意图: 反向代理 反向代理(Reverse Proxy)是代理服务器的一种,它代表服务器接收客户端的请求,并将这些请求转发到适当的服务器。当请求在后端服务器完成之后,反向代理搜集请求的响应并将其传输给客户端。…

Tableau:商业智能(BI)工具

Tableau入门 1、Tableau概述2、Tableau Desktop2.1、初识Tableau Desktop2.2、Tableau工作区2.3、数据窗格与分析窗格2.4、功能区和标记卡2.4.1、列和行功能区2.4.2、标记卡2.4.3、筛选器功能区2.4.4、页面功能区2.4.5、附加功能区、图例、控件 3、Tableau视图4、Tableau工作簿…

LeetCode讲解篇之198. 打家劫舍

LeetCode讲解篇之198. 打家劫舍 文章目录 LeetCode讲解篇之198. 打家劫舍题目描述题解思路题解代码 题目描述 题解思路 该问题可以通过递推来完成 递推公式: 前n间房的最大金额 max(前n-1间房的最大金额, 前n-2间房的最大金额第n-1间房的最…

Hadoop2.0探讨

文章目录 8. Hadoop 再探讨8.1 Hadoop的优化与发展8.2 HDFS 的FA和Federation(Hadoop2.0新特性)8.2.1 HDFS HA8.2.2 HDFS Federation 8.3 YARN8.3.1 MapReduce1.0的缺陷8.3.2 Yarn设计思路8.3.3 Yarn体系结构8.3.4 Yarn工作流程8.3.5 Yarn框架和MapReduce1.0框架对比分析8.3.6 …

asp.net酒店餐饮管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net酒店餐饮管理系统是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语言 开发 ASP.NE 酒店餐饮管理系统 二、功能…

AMD AFMF不但能用在游戏,也适用于视频

近期AMD发布了AMD Software Adrenalin Edition预览版驱动程序,增加了对平滑移动帧(AMD Fluid Motion Frames,AFMF)功能的支持,也就是AMD的“帧生成”技术,与DLSS 3类似,作为FidelityFX Super Re…

毅速丨模具3D打印材料有哪些选择

当前1.2709和CX是市面上最常用的3D打印模具钢材料,模具3D打印有没有更多的材料选择呢? 据了解,上海毅速推出的几款3D打印新材料正在被越来越多的行业所采用。如毅速的EM191S高性能高抛光不锈钢粉末,这款材料的抗开裂和耐腐蚀性能是…

LeetCode【240】搜索二维矩阵

题目&#xff1a; 思路&#xff1a; 1、单靠对角线元素无法判定位置 2、主要逐行进行二分 代码&#xff1a; public boolean searchMatrix(int[][] matrix, int target) {int rows matrix.length;int columns matrix[0].length;// 按行进行二分for (int i 0; i < rows…

与HTTP相关的各种概念

网络世界 网络世界中最重要的一个名词就是互联网&#xff08;Internet&#xff09;,它以TCP/IP协议族为基础&#xff0c;构建成了一望无际的信息传输网络。而我们通常所说的“上网”&#xff0c;主要就是访问互联网的一个子集——万维网&#xff08;World Wide Web&#xff09…

MDK自动生成带校验带SVN版本号的升级文件

MDK自动生成带校验带SVN版本号的升级文件 获取SVN版本信息 确保SVN安装了命令行工具&#xff0c;默认安装时不会安装命令行工具 编写一个模板头文件 svn_version.temp.h, 版本号格式为 1_0_0_SVN版本号 #ifndef __SVN_VERSION_H #define __SVN_VERSION_H#define SVN_REVISIO…

网络-HTTPS

文章目录 前言一、HTTPS简介优点SSL/TSL工作流程 加密1、对称加密2、非对称加密 二、使用HTTPS1.openSSL生成私钥&#xff08;1&#xff09;node服务端&#xff08;2&#xff09;nginx配置https服务&#xff08;前端&#xff09; nginx服务 总结 前言 Http 存在不安全、无状态…

[数据结构]——单链表超详细总结

带你走进链表的世界 目录&#xff1a;一、线性表的概念二、顺序表三、链表3.1 链表的概念3.2 链表的分类3.3 无头单向非循环链表的实现3.4 带头双向循环链表的实现 四、顺序表和链表的区别和联系 目录&#xff1a; 链表是个优秀的结构&#xff0c;没有容量概念&#xff0c;可以…

基于PHP的芒果销售交易平台

有需要请加文章底部Q哦 可远程调试 基于PHP的芒果销售交易平台 一 介绍 芒果销售交易平台基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。用户可注册登录&#xff0c;购物下单&#xff0c;评论等。管理员登录后台可对芒果&#xff0c;用户&#xff0c;订…

解决win10因为WSL问题无法正常启动docker

解决win10无法成功启动dockerdesktop因为WSL问题无法启动 问题起因解决方法 问题起因 因为需要在windows复现一个CVE漏洞&#xff0c;就需要安装在WIN10上装docker&#xff0c;但是在启动的时候出现下面报错。 然后查了一下是因为WSL的版本太低了。更新以后发现打开docker仍然…

【PyTorch2 之027】在 PyTorch 中的R-CNN、Fast R-CNN和 Faster R-CNN

一、说明 亮点&#xff1a;对象检测是计算机视觉中最重要的任务之一。在这篇文章中&#xff0c;我们将概述最有影响力的对象检测算法家族之一&#xff1a;R-CNN、Fast R-CNN 和 Faster R-CNN。我们将重点介绍它们中的每一个的主要新颖性和改进。 最后&#xff0c;我们将专注于 …

【SOA-KELM分类】基于海鸥算法优化核极限学习机分类研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【C/C++数据结构 - 2】:稳定性与优化揭秘,揭开插入排序、希尔排序和快速排序的神秘面纱!

文章目录 排序的稳定性插入排序插入排序的优化 希尔排序快速排序 排序的稳定性 稳定排序&#xff1a;排序前2个相等的数在序列中的前后位置顺序和排序后它们2个的前后位置顺序相同。&#xff08;比如&#xff1a;冒泡、插入、基数、归并&#xff09; 非稳定排序&#xff1a;排…

商品API接口优秀案例 │ 国家电网办公物资电商化采购项目API解决方案

苏宁易购集团股份有限公司&#xff08;以下简称“苏宁”&#xff09;作为中国领先的O2O智慧零售商&#xff0c;在互联网、物联网、大数据盛行的时代&#xff0c;持续推进智慧零售和线上线下融合战略&#xff0c;全品类经营&#xff0c;全渠道运营&#xff0c;开放苏宁物流云、数…

video_topic

使用qt5,ffmpeg6.0,opencv&#xff0c;os2来实现。qt并非必要&#xff0c;只是用惯了。 步骤是&#xff1a; 1.读取rtsp码流&#xff0c;转换成mat图像 2.发送ros::mat图像 项目结构如下&#xff1a; videoplayer.h #ifndef VIDEOPLAYER_H #define VIDEOPLAYER_H#include …