车辆重识别(CVPR2016图像识别的深度残差学习ResNet)论文阅读2024/9/21

news2024/11/15 8:28:38

[2] Deep Residual Learning for Image Recognition ( CVPR 2016)
作者:Kaiming He Xiangyu Zhang Shaoqing Ren Jian Sun
单位:微软研究院

摘要:
更深层的神经网络更难训练。我们提出了一个残差学习框架,以减轻对比先前使用的深度更深的网络的训练。我们显式地将层重构为参考层输入的学习残差函数,而不是学习未参考的函数。我们提供了全面的经验证据,表明这些残差网络更容易优化,并且可以从大幅增加的深度中获得准确性。在ImageNet数据集上,我们评估了深度高达152层的残差网络- -比VGG网络[ 40 ]深8倍,但仍具有较低的复杂度。这些残差网络的集合在ImageNet测试集上达到3.57 %的误差。这个结果赢得了ILSVRC 2015分类任务的第一名。我们也提供了对100层和1000层CIFAR - 10的分析。
表示的深度对于许多视觉识别任务来说是至关重要的。由于我们非常深入的表示,我们在COCO目标检测数据集上获得了28 %的相对改进。深度残差网络是我们提交ILSVRC & COCO 2015竞赛1的基础,我们在ImageNet检测、ImageNet定位、COCO检测和COCO分割任务上也获得了第1名。

主要贡献:
(1)提出了残差块,通过跳跃连接解决深度网络训练中的退化问题。使得网络可以有效地加深至152层以上,而不出现性能下降。
(2)在ImageNet和COCO数据集上展示了残差网络在图像识别任务中的优越性能。

创新点:
引入了残差块的概念,使得网络能够学习输入与输出之间的残差,而不是直接学习期望映射,这大大简化了优化过程。提出了有效的网络训练策略,包括权重初始化和批归一化,进一步提高了模型的收敛速度和性能。

简介:
在本文中,我们通过引入深度残差学习框架来解决退化问题。为了拟合一个期望的底层映射,我们显式地让这些层拟合一个残差映射。在形式上,我们将期望的底层映射表示为H ( x ),并让堆叠的非线性层拟合F ( x )的另一个映射:F ( x )= H ( x ) - x。原始映射被重铸成F ( x ) + x。我们假设优化残差映射比优化原始的、未引用的映射更容易。在极端情况下,如果一个恒等映射是最优的,那么将残差推到零比用一堆非线性层拟合一个恒等映射更容易。

框图:请添加图片描述
关于ResNet
疑问:
为什么更深层次的网络更难训练?

①梯度消失和爆炸:在反向传播过程中,梯度可能会逐层减小(消失)或增大(爆炸),导致更新不稳定,从而影响模型的学习。
②过拟合:深层网络具有更多参数,更容易在训练数据上过拟合,特别是在数据量不足的情况下。
③优化困难:随着网络深度增加,优化目标变得更加复杂,导致梯度更新变得更加困难。
④特征学习:深层网络需要逐层学习复杂的特征,浅层网络可能无法捕捉到所有重要信息,导致性能下降。

残差网络会使得深度更深的网络容易训练,为什么?

①残差学习:ResNet通过引入残差块,让网络学习输入与输出之间的残差而不是直接学习完整的映射。这种方式简化了学习过程,使得优化变得更容易。
②跳跃连接:跳跃连接允许信息在网络中更直接地流动,减少了梯度消失的问题,从而使得即使在深层网络中,梯度也能有效传播。
③恒等映射:如果某一层的最优映射是恒等映射,网络可以通过跳跃连接轻松地实现,而不需要重新学习复杂的功能,从而加快了收敛速度。
④特征复用:跳跃连接使得低层提取的特征可以被高层使用,从而提高了特征的利用效率,有助于更有效地学习复杂模式。

残差网络更容易优化,并且可以从大幅增加的深度中获得准确性,为什么?
同上
残差网络的深度增加,但是复杂度并不会大幅度增加
同上
特征的"层级"是什么意思

低层特征:
这些特征通常表示图像的基本元素,比如边缘、角点和简单的纹理。在网络的前几层中提取。
中层特征:
这些特征是低层特征的组合,能够捕捉到更复杂的形状或局部模式,例如物体的一部分(如车轮、花瓣)。
高层特征:
在网络的高层,特征表示更加抽象,通常能够识别完整的物体或更复杂的概念,如“汽车”或“人”。
随着特征层级的提高,特征的表现也会越来越复杂、抽象,但是所能表示的意义更丰富。

更深层的网络训练误差和测试误差会更高,为什么?
还是梯度消失、过拟合、优化困难等原因
归一化初始化和中间归一化层是什么?如何解决梯度消失或爆炸的问题的
归一化初始化和中间归一化层(如批归一化)是两种不同的技术,用于提高神经网络的训练效率,并解决梯度消失或爆炸的问题。

1. 归一化初始化
归一化初始化指的是在网络参数初始化时,使用特定的标准化方法来设置权重。这种初始化方法可以防止激活值在传递过程中变得过大或过小,从而减轻梯度消失或爆炸的风险。

常见方法:
Xavier初始化:适用于使用sigmoid或tanh激活函数的网络,使得每一层的输出方差与输入方差保持一致。
He初始化:特别适合ReLU激活函数,考虑了ReLU的非对称性,能够更好地保持激活分布。

2. 中间归一化层(Batch Normalization)
批归一化是在每个小批次上对层的输出进行标准化,使其均值为0,方差为1。

这有助于以下几个方面:
①稳定分布:通过减少输入分布的变化,确保每层在训练过程中接收到更稳定的输入,从而提高训练速度和稳定性。
②加速收敛:使得学习率可以设置得更高,从而加快模型收敛。
③缓解梯度消失/爆炸:保持激活值的范围,有助于避免梯度在反向传播过程中的消失或爆炸。

总结
通过归一化初始化和中间归一化层,神经网络可以更有效地训练,减少梯度消失或爆炸的风险,从而实现更深层网络的有效学习。

能够收敛的深层次的网络为什么比浅层网络误差率高?在排除过拟合的原因,还有哪些原因导致这样的情况?
同上(残差网络更容易优化)
为什么把上一层的输出与残差块后的输出相加,这样模型的性能就会更好?
缓解梯度消失…
举个例子解释一下残差网络的流程
shortcut快捷连接是什么意思
残差网络可以把一层作为一个残差块吗
可以,但是性能一般
投影是什么意思

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙OpenHarmony【轻量系统内核扩展组件(动态加载)】子系统开发

基本概念 在硬件资源有限的小设备中,需要通过算法的动态部署能力来解决无法同时部署多种算法的问题。以开发者易用为主要考虑因素,同时考虑到多平台的通用性,LiteOS-M选择业界标准的ELF加载方案,方便拓展算法生态。LiteOS-M提供类…

【Linux 21】线程安全

文章目录 🌈 一、线程互斥⭐ 1. 线程间互斥的相关概念🌙 1.1 临界资源和临界区🌙 1.2 互斥和原子性 ⭐ 2. 互斥量 mutex⭐ 3. 互斥量接口🌙 3.1 初始化互斥量🌙 3.2 销毁互斥量🌙 3.3 互斥量上锁&#x1f3…

原子结构与电荷

1.原子结构与电荷 1.1 物质到底是由什么构成的 阴极射线 电磁波 电磁波 我们生活中的物质。究竟是由什么构成的呢?这个问题其实困扰了人们很久。 1.提出“原子”的概念 早在2400年前,古希腊哲学家德莫克里特就提出了原子的概念。当时他就认为&…

H264-NAL

目录 错误日志NAL简介参考资料 错误日志 拉流时存在如下日志,会因为拉流失败导致之后的任务也停止 missing picture in access unit with size 16384 Invalid NAL unit size Error splitting the input into NAL units. 之后只要设置抓取异常后,重新拉流&#xff…

Python--TCP/UDP通信

文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一.客户端与服务端通信原理 1. 服务器端 服务器端的主要任务是监听来自客户端的连接请求,并与之建立连接,然后接收和发送数据。 创建套接字:首先&#xff0…

【Fastapi】参数获取,json和query

【Fastapi】参数获取,json和query 前言giteegithub query形式json传递同步方法使用json 前言 花了半个月的时间看了一本小说,懈怠了…今天更新下fastapi框架的参数获取 gitee https://gitee.com/zz1521145346/fastapi_frame.git github https://git…

一些迷你型信息系统 - 2

1 Linux内核数据结构信息查询 Linux内核的数据结构众多,成千上万,做一个程序来存储查询信息;自己录入数据; 代码字段最长可录入65535个字符;每个字段录入时长度超限会有红色告警; 其他的以后想到再做&#…

git-repo系列教程(4) windows平台下安装git-repo客户端

文章目录 简介操作步骤1.设置/root目录和/home目录2.打开本地终端3.安装python34.安装git5.安装git -repo6.查看版本 需要注意点 简介 git-repo天生是在Linux和MacOS下使用,在windows下直接安装运行会出错. 经过不断尝试,终于找到了一种简单的安装方法,在网上现在是独一份. …

Golang | Leetcode Golang题解之第424题替换后的最长重复字符

题目: 题解: func characterReplacement(s string, k int) int {cnt : [26]int{}maxCnt, left : 0, 0for right, ch : range s {cnt[ch-A]maxCnt max(maxCnt, cnt[ch-A])if right-left1-maxCnt > k {cnt[s[left]-A]--left}}return len(s) - left }f…

Maven-六、私服仓库

Maven 文章目录 Maven前言下载到本地解压启动并访问资源管理maven配置创建仓库选择使用仓库配置私服地址 资源上传配置资源上传操作私服连接中央仓库总结 前言 模块在引用依赖时一般先看本地仓库再看中央仓库,但是在团队开发中,不同人员要引用一些项目通…

某省公共资源交易电子平台爬虫逆向

目标网站 aHR0cHM6Ly9nZ3p5ZncuZnVqaWFuLmdvdi5jbi9pbmRleC9uZXc 一、抓包分析 1、请求参数加密 二、逆向分析 搜索定位加密参数位置 这里生成,扣取响应代码到本地即可 2、响应数据加密解密 xhr断点 向下跟栈,直到出现加密数据 解密函数 本地获取数据…

C语言中数组和字符串的联系

一、C语言中,数组和字符串 1、C语言中,定义一个数组后,数组名保存的是这个数组的首地址。类似一个指向数组第一个元素的指针,但是这个指针不能重新指向。2、字符串在C语言中是通过字符数组来实现的,也就是说字符串还是…

Fyne ( go跨平台GUI )中文文档-小部件 (五)

本文档注意参考官网(developer.fyne.io/) 编写, 只保留基本用法 go代码展示为Go 1.16 及更高版本, ide为goland2021.2 这是一个系列文章: Fyne ( go跨平台GUI )中文文档-入门(一)-CSDN博客 Fyne ( go跨平台GUI )中文文档-Fyne总览(二)-CSDN博客 Fyne ( go跨平台GUI…

[SAP ABAP] 创建数据库视图和维护视图

数据准备 学校表(ZDBT_SCH_437) 学生表(ZDBT_STU_437) 学校表(ZDBT_SCH_437)与学生表(ZDBT_STU_437)字段 学校表(ZDBT_SCH_437)与学生表(ZDBT_STU_437)行数据明细 1.创建数据库视图 使用SE11创建数据库视图 填写视图名称ZV_DATABASEV_437,点击创建按钮 选择数据库视…

Linux——应用层协议HTTP

目录 前言 一HTTP协议 1认识URL 2urlencode 和 urldecode 3协议请求与响应格式 4代码实现 二HTTP常见Header 1Connection的报头 2Cookie和Session 2.1Cookie定义 2.2Cookie使用 2.3Session定义 2.4Session实现 四HTTP响应起始行 1状态码 2永久重定向与临时重定…

# wps必须要登录激活才能使用吗?

WPS 必须登录激活才能使用吗? 如下图,当我们使用WPS时,不登录会显示工具栏灰色不可用状态。 答:WPS 不一定要登录激活才能使用。 一、免费使用的情况 1、基础功能 在不登录的情况下,用户可以使用 WPS 的一些基础功…

模板:JDBC 连接数据库并实现 CRUD

目录 前期准备: 1. 连接数据库 1.1 第一种 1.2 第二种 2. 增加 3. 修改 4. 删除 5. 查询 5.1 查询某个记录 5.2 查询单列数据 使用时,直接复制再修改一些数据即可; 声明:在对文件/变量命名时,没有做到见名知…

鸿蒙设置,修改APP图标和名称

1、先看默认的图标和名称 2、打开项目开始设置自己需要的图标和名称 2.1找到 路径src\main\module.json5, 找到 abilities,下的,图标icon、名称label,label可以按住ctrl鼠标左键点击跳转 2.2先修改APP名称 1、ctrl鼠标左键点击…

Redis 字符串类型的典型应用场景

目录 1. 缓存功能 2. 计数功能 3. 共享会话(Session) 4. 手机验证码 前言 这里将详细介绍 Redis 字符串类型在实际开发中的几个典型应用场景,并提供相应的伪代码示例。 1. 缓存功能 场景描述 在许多Web应用中,数据通常需要…

【在Linux世界中追寻伟大的One Piece】验证TCP

目录 1 -> 验证TCP-windows作为client访问Linux 1.1 -> TCP client样例代码 1 -> 验证TCP-windows作为client访问Linux 1.1 -> TCP client样例代码 #include <winsock2.h> #include <iostream> #include <string>#pragma warning(disable : …