深度学习论文:Deep Residual Learning for Image Recognition

2023-11-10

论文:

He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the IEEE conference on computer vision and pattern recognition. 2016.

Abstract

深度神经网络难以训练,本文提出残差块来简化比以往深很多网络的训练,我们明确的重新定义了把输入作为参照的残差函数层,并提供了全面的证据表明残差网络更容易优化,在ImageNet数据集使用152层的残差网络(比vgg还深8倍),但仍有较低的复杂度,这些残差网络的集成在ImageNet测试集上取得了3.57% error。

表征深度对许多视觉识别任务非常重要,仅由于我们的表征非常深,在coco目标检测数据集上得到了28%的相对改进。 深度残差网络是我们参加ILSVRC & COCO 2015 竞赛上所使用模型的基础,并且在ImageNet检测、ImageNet定位、COCO检测以及COCO分割上均获得了第一名的成绩。

1. Introduction

深度卷积神经网络在图像识别上取得了一些列突破,深度网络通常集成low/mid/high level的特征,而特征的“level”可以通过堆叠层的数量(深度)来丰富,最近的证据表明网络深度十分重要,在富ImageNet数据集比赛上的领先结果都用了非常深的模型,深度为16至30。许多其他重要(nontrivial)的视觉识别任务也从非常深的模型中获益良多。

在深度的重要意义的驱动下,有一个问题:学习更好的网络就像堆叠更多的层一样简单吗?回答问题有一个障碍:可恶(notorious)的梯度消失/爆炸问题,这个问题在一开始就妨碍着收敛,但是它们已经在很大程度上被归一初始化和中间的归一化层解决,使得数十层的网络在反向传播的随机梯度下降中开始收敛。

当更深的网络能够开始收敛,暴露出一个退化(degradation )问题:随着深度增加,准确率达到饱和(这可能不足为奇),然后迅速下降。出乎意料的是,这种退化并不是由过度拟合造成的。我们的实验已经完全证实,在一个合适的深度模型上增加更多的层会导致更高的training error,图1给出了一个典型的例子。

这种训练集准确率的退化表明:不是所有系统都同样容易优化。让我们考虑一个较浅的结构和更深的对应结构,它在上面添加了更多的层,对于更深的模型,存在一个解决方案:添加的层是恒等映射(identity mapping),其他层是从更浅层中复制,恒等映射的存在表明,较深的模型不应该比较浅的模型产生更大的训练误差。但实验表明,我们手中现有的solver无法找到和恒等映射一样好或更好的解(或在可行时间内无法找到)。

(可以认为ResNet的目的,是让网络至少有恒等映射的能力,这样堆叠更多层时,网络至少不会产生退化。)

在本文中,我们通过引入一个深度残差学习框架来解决退化问题。我们不希望每个堆叠的几个层直接拟合(fit)一个期望的底层映射,而是显式地让这些层拟合一个残差映射(residual mapping)。我们将期望的底层映射表示为H(x),我们让堆叠的非线性层拟合另一个映射 F(x) = H(x) − x 。原始映射被重新映射为 F(x) + x 。我们假设优化残差映射比优化原始的、unreferenced的映射更容易,在极端情况下,如果恒等映射是最优的,那么将残差推到零要比通过一堆堆叠的非线性层更容易拟合一个恒等映射。

F(x) + x 可以通过前馈神经网络的“ 跳接(shortcut connections)”来实现(图2)。跳接是跳过一个或多个层的连接。在本例中,跳接只简单的执行恒等映射,它们的输出被添加到叠加层的输出中。它既不增加额外的参数,也不增加计算的复杂性。整个网络仍然可以使用反向传播的SGD进行端到端的训练,并且可以使用公共框架(例如caffe)来实现,而无需修改 solvers。

(残差函数F(x) = H(x) - x是学习的目标,即输入和输出的差。如果F(x)=0,残差块就构成了一个恒等映射H(x) = x。 拟合残差比拟合恒等映射容易许多。)

类似的现象也出现在CIFAR-10上,这表明优化的困难和我们方法的效果不仅仅适用于特定的数据集。我们在这个超过100层的数据集中展示了成功训练的模型,并探索了超过1000层的模型。 

在ImageNet分类数据集上,我们通过极深的残差网络得到了很好的结果。152层残差网络是迄今为止在ImageNet上出现的最深的网络,但仍然比VGG的复杂度低。我们的ensemble在ImageNet测试集的top-5 error为3.57%,在2015 ILSVRC分类竞赛中获得第一名。极深的表征在其他识别任务上也有很好的泛化性能,并带领我们在2015 ILSVRC & COCO竞赛中进一步获得了第一名:ImageNet检测、ImageNet定位、COCO检测、COCO分割。这一有力的证据表明,残差学习原理是通用的,我们希望它能适用于其他视觉和非视觉问题。

2. Related Work

残差表示(Residual Representations):在图像识别中,VLAD是一种对字典的残差向量进行编码的表示,Fisher Vector可以表示为VLAD的概率版本,它们都是图像检索和分类任务中有力的浅层表示法。在向量量化方面,对残差向量进行编码比对原始矢量进行编码更有效。

在低水平视觉和计算机图形学中,为了求解偏微分方程(Partial Differential Equations,PDEs),广泛使用的多重网格方法将系统重新表述为多个尺度上的子问题,其中每个子问题负责较粗和较细尺度之间的残差解(residual solution)。替代多重网格的一种方法是分层基础预处理(hierarchical basis preconditioning),它依赖于表示两个尺度之间的残差向量的变量。研究表明,这些solver比不知道the residual nature of the solutions的标准solver收敛得快得多。这些方法表明,一个好的的重新定义或预处理可以简化优化过程。

跳接(Shortcut Connections):跳接的实践和理论已经被研究了很长时间。早期训练多层感知器(multi-layer perceptrons, MLPs)的一个实践是添加一个从网络输入连接到输出的线性层。在GoogleNet中,一些中间层直接连接到辅助分类器,用于处理消失/爆炸梯度。文献[38,37,31,46]提出了通过跳接来调整层响应、梯度和传播误差的方法。在[43]中,“inception”层由一个shortcut分支和几个更深的分支组成。

与此同时,“highway networks” [41,42]将跳接与门函数(gating functions)结合,这些“门”是依赖数据的并且有参数,但是我们的跳接是没有参数的(input x),当一个gated shortcut关闭(接近0),highway networks中的层就表示非残差函数,与之相反,我们的公式总是学习残差函数,identity shortcuts永远不会关闭,所有的输入信息总是被传递,还有额外的残差需要学习,此外,highways networks并没有随着深度的增加显示出精度的提高。

3. Deep Residual Learning

3.1. Residual Learning

考虑H(x)作为一个底层映射(underlying mapping),由几个堆叠的层(不一定是整个网络)拟合,x代表这些层的输入,如果假设多个非线性层可以逼近复杂的函数,那么它们就也能逼近残差函数(即H(

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深度学习论文:Deep Residual Learning for Image Recognition 的相关文章

  • RNN/LSTM循环神经网络讲解

    转自 https zhuanlan zhihu com p 123211148 一 什么是循环神经网络 循环神经网络 Rerrent Neural Network RNN 历史啊 谁发明的都不重要 说了你也记不住 你只要记住RNN是神经网络
  • 带你看懂CTC算法

    转自 https zhuanlan zhihu com p 161186907 在文本识别模型CRNN中 涉及到了CTC算法的使用 由于算法的原理涉及内容较多 所以特另开一篇文章对其原理进行叙述 自己在学习CTC过程中也是看了诸多资料才大概
  • 深度学习中的随机梯度下降(SGD)简介

    随机梯度下降 Stochastic Gradient Descent SGD 是梯度下降算法的一个扩展 机器学习中反复出现的一个问题是好的泛化需要大的训练集 但大的训练集的计算代价也更大 机器学习算法中的代价函数通常可以分解成每个样本的代价
  • 基于Pytorch的模型推理

    训练部分说明 假设我们现在有两个文件 first file train py 用于训练模型 second file inference py 用于推理检测 在train py文件中我们使用了定义了一个类 里面声明了我的网络模型 例如 cla
  • 网络安全中机器学习大合集

    目录 数据集 论文 书籍 演讲 教程 课程 杂项 数据集 安全相关数据样本集 DARPA 入侵检测数据集 Stratosphere IPS 数据集 开放数据集 NSA 的数据捕获 ADFA 入侵检测数据集 NSL KDD 数据集 恶意 UR
  • 【GPU】GPU状态显示和部分指标含义

    首先打开C盘 找到NVSMI文件夹 找到nvidia smi exe 打开cmd 将其exe拖到命令提示符窗口 回车后显示GPU信息 相应的指标信息如下 GPU GPU 编号 Name GPU 型号 Persistence M 持续模式的状
  • 3D人体重建方法漫谈

    转自 https blog csdn net Asimov Liu article details 96442990 1 概述 2 模型匹配的方法 2 1SMPL Skinned Multi Person Linear model 模型 2
  • 深度学习之图像分类(一)--分类模型的混淆矩阵

    深度学习之图像分类 一 分类模型的混淆矩阵 深度学习之图像分类 一 分类模型的混淆矩阵 1 混淆矩阵 1 1 二分类混淆矩阵 1 2 混淆矩阵计算实例 2 混淆矩阵代码 3 混淆矩阵用途 深度学习之图像分类 一 分类模型的混淆矩阵 今天开始
  • 半监督目标检测

    有监督目标检测 拥有大规模带标签的数据 包括完整的实例级别的标注 即包含坐标和类别信息 弱监督目标检测 数据集中的标注仅包含类别信息 不包含坐标信息 如图一 b 所示 弱半监督目标检测 数据集中拥有部分实例级别的标注 大量弱标注数据 模型希
  • libsvm库简介及使用

    libsvm是基于支持向量机 support vector machine SVM 实现的开源库 由台湾大学林智仁 Chih Jen Lin 教授等开发 它主要用于分类 支持二分类和多分类 和回归 它的License是BSD 3 Claus
  • Tensorflow错误InvalidArgumentError see above for traceback): No OpKernel was registered to support Op

    调用tensorflow gpu运行错误 错误信息如下 2023 06 21 15 36 14 007389 I tensorflow core platform cpu feature guard cc 141 Your CPU supp
  • Pointpillars for object detection

    博客参考 pointpillars代码阅读 prep pointcloud篇 Little sky jty的博客 CSDN博客Brief这一篇内容主要是对函数prep pointcloud进行debug和记录 这里也是dataloader的
  • cs231n: How to Train a Neuron Network 如何训练神经网络

    CS231N第六第七课时的一些笔记 如何训练神经网络是一个比较琐碎的事情 所以整理了一下 以后训练Neuron Network的时候可以看一下 Activation Functions ReLu good ELU leaky ReLu no
  • deeplearning.ai课程作业:Course 1 Week 2

    deeplearning ai课程作业 Course 1 Week 2 原始作业在GitHub上下载 本文仅作为本人学习过程的记录 含答案 不喜勿看 全部自己跑过 保证可行 Part 1 Python Basics with Numpy o
  • Going Deeper with convolutions

    Going Deeper with convolutions 转载请注明 http blog csdn net stdcoutzyx article details 40759903 本篇论文是针对ImageNet2014的比赛 论文中的方
  • 吴恩达老师深度学习视频课笔记:逻辑回归公式推导及C++实现

    逻辑回归 Logistic Regression 是一个二分分类算法 逻辑回归的目标是最小化其预测与训练数据之间的误差 为了训练逻辑回归模型中的参数w和b 需要定义一个成本函数 cost function 成本函数 cost functio
  • 【直观详解】什么是正则化

    转自 https charlesliuyx github io 2017 10 03 E3 80 90 E7 9B B4 E8 A7 82 E8 AF A6 E8 A7 A3 E3 80 91 E4 BB 80 E4 B9 88 E6 98
  • 全网最最最轻量级检测网络 yolo-fastest 快速上手

    文章目录 0x01 Yolo Fastest 0x02 Prepare step1 clone step2 make step3 run darknet 0x03 Train step1 获取权重文件 step2 准备数据集 step3 修
  • yolov5量化部署(基于openvino和tensorrt)

    yolov5 openvino量化部署 首先 下载YOLOv5源码 安装YOLOv5和OpenVINO的python依赖 git clone https github com ultralytics yolov5 git pip insta
  • pthread_create返回值错误码11 (EAGAIN)或libgomp: Thread creation failed: Resource temporarily unavailable错误

    在主机上开发torch xla时 使用非root用户在conda环境 遇到tensorflow中报pthread create 11错误 大意为系统资源不足 解决方案 分析 此主机多用户使用 资源占用非常大 且大多数情况下在docker容器

随机推荐

  • 【100天精通Python】Day48:Python Web开发_WSGI网络服务器网关接口与使用

    目录 1 WSGI接口 1 1 CGI 简介 1 2 WSGI 简介 1 3 定义 WSGI 接口 1 3 1 应用程序 Application 1 3 2 服务器 Server 1 4 WSGI 接口的使用示例 1 5 WSGI接口的优势
  • bp网络拟合函数 matlab_基于RBF神经网络的曲线拟合

    目前 在人工神经网络的实际应用中 绝大部分的神经网络模型是采用误差逆传播 error BackPropagation BP 网络和它的变化形式径向基函数 Radial Basis Function RBF 神经网络 RBF网络是一种高效的前
  • 微信小程序使用image组件显示图片的方法

    本文实例讲述了微信小程序使用image组件显示图片的方法 分享给大家供大家参考 具体如下 1 效果展示 2 关键代码 index wxml 代码如下
  • Lightgbm 直方图优化算法深入理解

    一 概述 在之前的介绍Xgboost的众多博文中 已经介绍过 在树分裂计算分裂特征的增益时 xgboost 采用了预排序的方法来处理节点分裂 这样计算的分裂点比较精确 但是 也造成了很大的时间开销 为了解决这个问题 Lightgbm 选择了
  • ubuntu16.04 使用astra s摄像头

    Astra相机使用方法 官网链接 https orbbec3d com develop Astra相机 GitHub orbbec ros astra camera ROS wrapper for Astra camera 普通相机 Git
  • mac安装lrzsz后运行卡死解决办法

    lrzsz的安装配置具体参见 https segmentfault com a 1190000012166969 上述完成后 若可以正常使用 万事大吉 如出现卡死的情况 可以查看配置文件 usr local bin iterm2 recv
  • openwrt 之通过uci 设置参数

    在openwrt中 默认一种配置文件 默认的路径 etc config 在这里面的所有配置文件如需要修改只需使用uci 这个指令来修改 以下uci 指令参数 root xxxx uci Usage uci
  • ubuntu自带vim配色方案

    系统版本 ubuntu 16 04 LTS 刚开始用vim的时候 大家可能会觉得默认的语法高亮的颜色不合心意 不过对于vim来说 这并不是一个问题 其实vim的配色方案是可以更改的 既可以选择系统自带的配色方案 也可以从网上下载其它配色方案
  • 简单理解Hadoop(Hadoop是什么、如何工作)

    一 Hadoop主要的任务部署分为3个部分 分别是 Client机器 主节点和从节点 主节点主要负责Hadoop两个关键功能模块HDFS Map Reduce的监督 当Job Tracker使用Map Reduce进行监控和调度数据的并行处
  • linux下部署thinkphp5项目

    准备工作 购买一个linux服务器地址 安装好linux常用的ssh工具 我这边喜欢用xshell敲命令 用filezilla传输文件 这些工具只要到官网下载就好 速度很快的 1 安装phpstudy for linux 安装下载phpst
  • java:JSONArray转byte[]字节数组

    package com xxx huali hualitest json import com alibaba fastjson JSONArray import com alibaba fastjson util Base64 publi
  • C语言运行流程

    在上一篇文章visual studio如何运行并调试C语言代码中写了如何运行并调试代码 我们就明确一个事实 即不论是嵌入式系统 亦或是普通PC电脑 对于程序的运行硬件处理器只能识别0 1的二进制码 从类人语言的C代码 需要经过一系列的转换过
  • 各种算法使用场景

    深度优先搜索BFS VS 广度优先搜索 DFS 算法就是回溯算法 BFS 相对 DFS 的最主要的区别是 BFS 找到的路径一定是最短的 但代价就是空间复杂度可能比 DFS 大很多 递归灵魂三问 labuladong 告诉你 遇到任何递归型
  • SQL Server基础Sql语句复习

    基础至极 1 创建表 create table Course Cno char 4 primary key not null 创建主键 非空 Cname char 40 not null Cpno char 4 Ccredit smalli
  • 软件测试报告bug统计,软件测试中如何有效地写Bug报告

    引言 为公众写过软件的人 大概都收到过很拙劣的bug 计算机程序代码中的错误或程序运行时的瑕疵 译者注 报告 例如 在报告中说 不好用 所报告内容毫无意义 在报告中用户没有提供足够的信息 在报告中提供了错误信息 所报告的问题是由于用户的过失
  • 【算法学习笔记】17:DFS与BFS

    1 DFS 深度优先搜索常用于解决需要给出所有方案的问题 因为它的搜索顺序就是能够得到一个完整的搜索路径 方案 后回退再去搜索其它的方案 1 1 例题 排列数字 由于要求所有排列的方案 可以每次从 1 n 1 n 1 n里拿一个数字 然后记
  • 为什么P值不再是0.05(孟德尔随机化)

    为什么P值不再是0 05 孟德尔随机化 为什么P值不再是0 05 孟德尔随机化
  • 长连接和短链接的区别

    长连接意味着进行一次数据传输后 不关闭连接 长期保持连通状态 如果两个应用程序之间有新的数据需要传输 则直接复用这个连接 无需再建立一个新的连接 就像下图这样 它的优势是在多次通信中可以省去连接建立和关闭连接的开销 并且从总体上来看 进行多
  • < 数据结构 > 堆的应用 --- 堆排序和Topk问题

    目录 1 堆排序 法一 自己写堆进行排序 时间复杂度分析 法二 直接对数组建堆 向上调整建堆 向下调整建堆 向上建堆和向下建堆熟优 升序能否建小堆 排序 建大堆 2 TopK问题 何为Topk 实现过程 1 堆排序 假如我们有一串乱序数组
  • 深度学习论文:Deep Residual Learning for Image Recognition

    论文 He Kaiming et al Deep residual learning for image recognition Proceedings of the IEEE conference on computer vision a