深入浅出 ResNet(残差网络)

news2024/11/17 10:34:49

一、引言

随着深度学习的发展,卷积神经网络(Convolutional Neural Networks, CNNs)在图像识别、目标检测等多个计算机视觉任务中取得了卓越的成绩。然而,随着网络深度的增加,训练变得更加困难,出现了梯度消失或梯度爆炸等问题。2015年,Kaiming He等人提出了ResNet(Residual Network),有效地解决了这些问题,并在ImageNet分类比赛中取得了优异的成绩。本文将详细介绍ResNet的核心思想及其在深度学习中的重要地位。

二、背景与动机

在深度学习中,网络的深度往往与其性能成正比,即更深的网络通常能取得更好的性能。但是,当网络深度达到一定阈值时,增加网络的深度反而会导致训练集上的准确率下降,这就是所谓的退化问题(Degradation Problem)。退化问题并不是由于过拟合造成的,而是深层网络难以训练所致。

从上图20层和56层网路我们不难看出,层数越多反而错误率更高

三、ResNet的核心思想
1. 残差块(Residual Block)

ResNet的核心在于引入了残差块,通过残差学习(Residual Learning)的方式,解决了深层网络训练的难题。残差块的主要特点是引入了跳跃连接(Skip Connection),使得输入可以直接传递到后面的层。

一个基本的残差块可以表示为: H(x)=F(x,{Wi})+x

这里的 H(x)是残差块的输出,F(x,{Wi}) 表示通过几个卷积层后得到的特征图,而 x 则是残差块的输入,通过跳跃连接直接加上了 F(x,{Wi})

2. 身份映射(Identity Mapping)

当 F(x) 约等于0时,这意味着残差块的输出几乎等同于输入 x,这实际上为网络提供了一条“捷径”,使得即使不学习任何额外的特征,深层网络依然可以保持良好的性能。这样做的好处是,即使某些层没有学到有用的特征,也不会对整体性能造成负面影响。

3. 残差学习

残差学习的思想是,不是直接学习每一层的输出,而是学习每一层相对于前一层的增量变化。这样,即使在非常深的网络中,每一层只需要学习一个小的变化量,而不是整个输出,从而减轻了训练难度。

这是一张展示残差结构的示意图。在该网络中,输入信号(x)首先经过一个权重层(weight layer),然后通过ReLU激活函数进行非线性变换。接着,这个处理过的信号与原始输入(x)相加,并再次通过ReLU激活函数。

最后,输出结果也是原始输入(x)。这种设计可以看作是一种带有身份映射的残差连接,即如果输入直接传递到输出,则整个模块将不会对输入产生任何影响。这种架构常见于深度学习模型中,有助于解决梯度消失或爆炸等问题。

四、ResNet的结构

ResNet通过重复使用残差块,可以构建非常深的网络,比如ResNet-152就达到了152层,远远超过了之前的记录。ResNet的网络结构通常由多个阶段组成,每个阶段包含若干个残差块。每个阶段的残差块可能有不同的宽度和深度,并且通常会在阶段之间进行下采样(downsampling)。

示例:

下面是一个18层的深度网络,用于处理输入图片。该图片初始维度为3*244*244。处理流程大致如下:

  1. 7*7 conv,64/2:这是网络的第一个卷积层,使用了7x7大小的滤波器,输出通道数为64,步长为2。这个层的主要作用是从图像中提取基本的特征。

  2. maxpool/2:接下来是一个最大池化层,同样步长为2,用于降低空间维度,减少计算量。

  3. 3*3 conv,64:这里连续使用了四个3x3大小的滤波器,输出通道数均为64的卷积层。这些层进一步细化了特征提取。

  4. 1*1 conv,128/2:这是一个1x1的卷积层,主要用来降维,将特征图的数量减半至128个。

  5. 3*3 conv,128:随后又使用了三个3x3的卷积层,每个层都有128个输出通道。

  6. 1*1 conv,256/2:另一个1x1的卷积层,这次将特征图数量降至256。

  7. 3*3 conv,256:紧接着的是三个3x3的卷积层,每个层有256个输出通道。

  8. 1*1 conv,512/2:最后一个1x1卷积层,将特征图数量减半至512。

  9. 3*3 conv,512:最后使用了三个3x3的卷积层,每个层有512个输出通道。

  10. 全局平均池化:在最后一组卷积层之后,进行了全局平均池化操作,即将每个特征图的所有像素值取平均作为该特征图的代表值。

  11. FC (512->1000):最后是全连接层,将所有特征图的平均值连接成一个向量,再通过softmax分类器预测类别概率。

除此以外,还有34层、50层、101层、152层,一共5种残差网络结构

五、应用与展望

ResNet的成功不仅在于其在ImageNet分类任务上的表现,更重要的是它为后续的网络设计提供了新的思路。如今,基于ResNet的思想已经衍生出了大量的变种,被广泛应用于各种视觉任务中,如目标检测、语义分割、人脸识别等。

六、结论

ResNet的提出标志着深度学习领域的一个里程碑,它证明了通过合理的网络设计,可以有效克服深层网络训练中的挑战。未来,随着硬件性能的不断提升以及更多创新技术的发展,我们有理由相信,基于ResNet的思想将会在更多领域展现其独特的价值。

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

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

相关文章

2024网安周 | 百度安全深度参与,探索人工智能与数字安全的融合发展之路

9月9日-15日,2024年国家网络安全宣传周在全国范围内统一举行,本届网安周继续以“网络安全为人民,网络安全靠人民”为主题,由中央宣传部、中央网信办、教育部、工业和信息化部、公安部、中国人民银行、国家广播电视总局、全国总工会…

Javascript编译原理

JavaScript的编译原理是一个复杂但有序的过程,主要涉及分词(词法分析)、解析(语法分析)、代码生成以及执行等阶段。以下是对JavaScript编译原理的详细解析: chrome编译流程 1. 分词(词法分析&am…

宠物服务小程序的使用功能介绍

宠物服务小程序的使用功能丰富多样,旨在提升宠物主人的生活便利性和宠物的生活质量。以下是一些常见的宠物服务小程序使用功能: 1. 宠物服务商家展示与预约 商家信息展示:展示宠物服务商家的详细信息,包括店铺名称、地址、联系方…

企业为什么要上项目管理系统?项目管理的六大核心要素

随着企业规模的不断扩大和项目数量的增多,传统的手工管理方式已经无法满足企业在项目管理方面的需求。项目管理系统能够帮助企业实现项目信息的集中管理,将所有相关的项目信息(如任务、进度、预算、人员等)集中存储在一个平台上&a…

字节豆包C++一面-面经总结

talk is cheap show me the code lc206:链表反转:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 class Solution { public:ListNode* reverseList(ListNode* head) {if(headnullptr||!head->next)return head…

线下线上陪玩系统要多少钱?该怎么搭建?

关于线下线上陪玩系统的价格,由于开发成本、功能复杂度、系统规模以及定制需求等因素的不同,价格差异较大,一般在几千元至几万元不等。具体价格需要根据实际需求和预算进行商议和定制。 搭建线下线上陪玩系统大致可以分为以下几个步骤&#…

推荐一款开源的链路监控系统

12.9k star,最强链路监控系统推荐,推荐 用过cat、pinpoint、skywalking等链路监控系统,各有优劣,但用的最多的还是pinpoint,工作6年,其中有4年都在用pinpoint,所以也比较熟悉,之前也…

戴尔笔记本电脑——重装系统

说明:我的电脑是戴尔G3笔记本电脑。 第一步:按照正常的装系统步骤,配置并进入U盘的PE系统 如果进入PE系统,一部分的硬盘找不到,解决办法:U盘PE系统——出现部分硬盘找不到的解决办法 第二步:磁…

年薪40W!转AI产品经理后,我明白了有人生的意义在哪了!

初识产品 目标有了,问题也有了 和很多人一样,毕业的时候比较迷茫,不知道自己喜欢什么行业、岗位… 就按照专业找了一个对口且擅长的算法工作,先着陆。 因为工作内容,我了解到了产品经理这个岗位,并对它…

掌握跟单与逼单技巧,大单成交不再是空谈!

1、精妙的迎宾艺术:解锁顾客心门的钥匙 在销售的殿堂里,每一位精明的导购都深知,与顾客的每一次接近,都是潜在成交乐章的序曲。掌握“五米关注、三米注视、一米搭话”的技巧,当顾客踏入店铺,目光流转于商品…

Syzkaller部署、使用与原理分析

文章目录 前言1、概述1.1、整体架构1.2、syz-manager进程1.3、syz-fuzzer进程1.4、syz-executor进程1.5、Generate进程1.6、Mutate进程 2、安装与使用2.1、源码安装2.1.1、部署系统依赖组件2.1.2、使用源码安装系统 2.2、使用方法2.2.1、下载编译测试内核2.2.2、配置测试虚拟机…

ElasticSearch分页查询性能及封装实现

Es的分页方式 fromsize 最基本的分页方式,类似于SQL中的Limit语法: //查询年龄在12到32之间的前15条数据 {"query":{"bool":{"must":{"range":{"user_age":{"gte":12,"lte":3…

【Java集合】Set 接口 —— HashSet 与 TreeSet 详解

Set接口和List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格。与List接口不同的是,Set接口中的元素无序,…

Spring Boot使用配置方式整合MyBatis

文章目录 一、实战目标二、步骤概览1. 创建部门映射器接口2. 创建映射器配置文件3. 配置全局映射器4. 测试映射器接口 三、详细步骤1、创建部门映射器接口2、创建映射器配置文件3、配置全局映射器4、测试映射器接口 四、结语 一、实战目标 在本实战课程中,我们将学…

ChatGPT高级语音助手正式上线!OpenAI:50多种语言、9种声线可选

①OpenAI终于要面向其所有付费用户开放ChatGPT的类人高级人工智能(AI)语音助手功能——“高级语音模式”(AVM); ②所有付费订阅ChatGPT Plus和Team计划的用户,都将可以使用新的AVM功能,不过该模…

qt P2P网络通信(tcp、udp)

一、TCP Qt中的TCP通信是基于Qt框架中的网络模块实现的,主要涉及到QTcpSocket和QTcpServer两个类。TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,适用于需要可靠传输的应用场景,如文件传输…

【实战篇】join语句怎么优化?

背景 在上一篇文章中,我们介绍了 join 语句的两种算法,分别是 Index Nested-Loop Join(NLJ) 和 Block Nested-Loop Join(BNL)。 我们发现在使用 NLJ 算法的时候,其实效果还是不错的,比通过应用层拆分成多个语句然后再拼接查询结…

数字化转型的理论指南:推动企业变革的全面路径

企业数字化转型的战略框架 在当今全球化的数字经济中,企业数字化转型已成为组织发展的核心战略。无论是初创公司还是跨国企业,成功的数字化转型不仅依赖于新技术的应用,还要求从战略到运营的全方位调整。这种转型不仅包括引入先进的技术&…

一键去水印小程序源码系统 下载无水印的高清图片 带完整的安装代码包以及搭建部署教程

系统概述 一键去水印小程序源码系统是一款专为图片去水印设计的软件开发包(SDK),它集成了先进的图像处理技术和智能识别算法,能够自动识别并去除图片中的水印,同时保持图片的高清画质不受损。该系统支持多种图片格式&…

树莓派4B配置教程 1

目录 树莓派初次入门 树莓派系统烧录 开启树莓派 为树莓派配置SSH和VNC远程服务 树莓派初次入门 笔者最近入门了树莓派4b,打算后续使用树莓派做点小东西玩玩。 新到手的树莓派,默认是一块白板,我们是需要使用到的有如下这些东西&#xf…