深度学习基础知识-残差网络ResNet
目录
一、ResNet 的核心思想:残差学习(Residual Learning)
二、ResNet 的基本原理
三、ResNet 网络结构
1. 残差块(Residual Block)
ResNet 的跳跃连接类型
2. 网络结构图示
四、ResNet 的特点和优势
五、ResNet 的局限
六、ResNet 的变体
七、ResNet 的应用场景
ResNet(Residual Network) 是由何恺明等人于 2015 年提出的一种深层卷积神经网络结构。它在 ILSVRC 2015 比赛中取得了图像分类、检测等多个任务的突破性成果。ResNet 的主要创新在于引入了“残差连接”(Residual Connections),有效地解决了深层神经网络的梯度消失和梯度爆炸问题,使得网络可以堆叠更多层,显著提升模型的表达能力和分类效果。
一、ResNet 的核心思想:残差学习(Residual Learning)
在传统的深层网络中,随着层数的增加,网络的训练难度会显著提高,容易导致梯度消失(Gradient Vanishing)或梯度爆炸(Gradient Explosion)问题。深度网络可能出现退化现象,即层数增加带来的错误率上升,而不是模型的性能提升。ResNet 的提出正是为了解决这一问题,其核心思想是通过残差块(Residual Block)引入“跳跃连接”(Skip Connection),使得网络可以“跳跃”几层进行信息传递。这一方法不仅有效防止了梯度消失,还使得网络可以更深,参数更少。
二、ResNet 的基本原理
在传统的深层神经网络中,随着层数的加深,梯度会逐渐消失或爆炸,导致模型的训练变得困难,甚至出现退化问题。ResNet 的核心思想是通过引入“残差连接”来直接将输入传递到下一层网络。即每一层的输出不仅依赖于上一层的输出,还加上了输入的“跳跃连接”,即: ![]()
这里:
- x 是输入特征。
- F(x) 是通过卷积、激活等操作生成的特征。
- y 是残差单元的输出。
这种结构称为“残差块”(Residual Block),它通过直接引入输入,将信息从浅层直接传递到深层,有效缓解了梯度消失的问题,使得更深层次的网络也能够有效训练。
三、ResNet 网络结构
ResNet 的网络结构由多个残差块和一些普通卷积层、池化层组成。根据网络的深度不同,ResNet 主要有以下几种版本:
- ResNet-18/34:较浅的网络结构,适用于较小的数据集和不需要极深网络的任务。
- ResNet-50/101/152:较深的网络结构,通过“瓶颈结构”(Bottleneck)进一步加深网络层数,用于处理更复杂的图像数据集。
1. 残差块(Residual Block)
ResNet 的残差块有两种基本结构:
- 基本残差块(Basic Residual Block):用于较浅的网络(如 ResNet-18 和 ResNet-34)。
- 瓶颈残差块(Bottleneck Residual Block):用于较深的网络(如 ResNet-50、ResNet-101 和 ResNet-152),该结构通过 1×1 卷积降维和升维,减少参数量的同时加深网络。

基本残差块的结构图如下:

- 输入特征经过第一个卷积层,产生输出 F(x)。
- 将输入 x 直接与 F(x) 相加形成残差连接,得到y=F(x)+x。
瓶颈残差块的结构图如下:
- 输入首先经过 1×1 卷积降维,然后经过 3×3 卷积提取特征,最后通过 1×1 卷积升维。
- 输出 F(x) 与输入 x 相加形成残差连接,输出为 y=F(x)+x。

ResNet 的跳跃连接类型
ResNet 中的跳跃连接主要有两种类型:恒等映射(Identity Mapping) 和 卷积映射(Convolution Mapping)。
- 恒等映射:当输入和输出的通道数相同时,直接将输入加到输出上。即在不改变通道数的情况下直接执行加法。
- 卷积映射:当输入和输出的通道数不一致时,在跳跃连接处使用 1×1 卷积来升维或降维,使输入和输出维度一致。这种方式常用于瓶颈残差块的跳跃连接。
2. 网络结构图示
在 ResNet 中,残差块和卷积层的堆叠方式因版本不同而略有差异。

以下是 ResNet-50 的网络结构图解:
- 输入层:224×224 尺寸的输入图像。
- 第一层卷积:一个 7×7 卷积层,步长为 2,通道数为 64。
- 池化层:3×3 的最大池化层,步长为 2。
- 残差层:分为 4 个阶段,每个阶段包括若干个瓶颈残差块。
- Stage 1:3 个瓶颈残差块,每个瓶颈层输出通道数为 256。
- Stage 2:4 个瓶颈残差块,输出通道数为 512。
- Stage 3:6 个瓶颈残差块,输出通道数为 1024。
- Stage 4:3 个瓶颈残差块,输出通道数为 2048。
- 全局平均池化层:通过全局平均池化,将每个通道的特征压缩为一个值。
- 全连接层:输出类别数的概率分布。
四、ResNet 的特点和优势
- 梯度流通更顺畅:通过残差连接有效缓解了深层网络的梯度消失问题,使得梯度能够更顺利地传播到浅层。
- 易于训练:即使在网络层数很深的情况下,残差连接也可以保证训练过程的稳定性。
- 优越的性能:相比于其他深层网络,如 VGG,ResNet 的参数更少,但表现更优异,是许多图像处理任务中的经典结构。

- 可扩展性:残差块的结构简单易用,适合扩展到更深、更复杂的网络结构中。
五、ResNet 的局限
尽管 ResNet 解决了深度学习中的许多问题,但仍存在一些不足:
- 参数量大:虽然 ResNet 已优化过计算量,但对于一些移动设备和嵌入式设备仍然较大。
- 结构复杂:对于一些非图像任务,直接迁移 ResNet 会出现过拟合或计算开销过大的问题。
- 低效的计算:ResNet 的残差连接在部分情况下仍有冗余操作,后续的改进网络(如 ResNeXt、DenseNet 等)在此基础上优化了计算效率。
六、ResNet 的变体
基于 ResNet 结构出现了很多改进版本,包括但不限于:
- ResNeXt:通过分组卷积的方式优化计算效率,减少参数量。
- DenseNet:在残差连接的基础上增加了密集连接(Dense Connections),使得浅层特征直接传递到深层,进一步减少了参数冗余。
- Wide ResNet:相比增加网络深度,通过增加网络宽度的方式来提升模型的表达能力,适用于计算资源丰富的场景。
- Dual Path Network:融合 ResNet 和 DenseNet 的特点,进一步提升特征传递的效率。
七、ResNet 的应用场景
ResNet 网络凭借其强大的表达能力和良好的训练效果,在图像分类、目标检测、图像分割等多个任务中广泛应用。此外,ResNet 作为主流的特征提取模块,也在多种复杂模型(如 Faster R-CNN、YOLO)中作为骨干网络(Backbone)进行迁移。
相关文章:
深度学习基础知识-残差网络ResNet
目录 一、ResNet 的核心思想:残差学习(Residual Learning) 二、ResNet 的基本原理 三、ResNet 网络结构 1. 残差块(Residual Block) ResNet 的跳跃连接类型 2. 网络结构图示 四、ResNet 的特点和优势 五、ResNe…...
Linux云计算个人学习总结(二)
高级文件系统 一、RSYNC概述 1、作用:快速的文件复制工具(支持本地和远程),以及删除、查看等基本功能。 2、特点:支持实时(inotify、sersync)的增量备份工具3、模式:检查模式&#…...
Java入门(7)--网络编程
Java网络编程:构建网络应用的基石 🌐 🎯 掌握Java网络编程,打造强大的网络应用! 在上一篇文章中,我们探讨了Java的I/O操作和反射机制。今天,让我们深入学习Java网络编程,了解如何构建…...
[思考记录]思维局限,以为懂了
最近配合整理一些内容,找到较早期的某些产品设计资料在翻阅回顾。在这次回顾过程中,发现当时自己的理解存在很多局限。 以资源体系的设计为例,那时自认为已经“懂了”,对相关的概念、作用关系、组成及实现等都有一定的了解&#x…...
力扣题目解析--最长公共前缀
题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1: 输入:strs ["flower","flow","flight"] 输出:"fl"示例 2ÿ…...
不画饼——研究生学习和赚钱的平衡点
在现代社会中,年轻人面临着学习和赚钱之间的矛盾。尤其是在经济压力日益增大的背景下,如何在这两者之间找到合适的平衡点,成为了许多学生和职场新人面临的重要问题。本文将探讨在何种情况下应该听从老师的建议,专注于学习…...
华为实时视频使用FLV播放RTSP流
import flvjs from ‘flv.js’; 安装flv <video style"width:100%;height:100%;" ref"videoHWRef" ></video>// src 华为rtsp流 rtsp://admin:Huaweivideo10.10.8.151:554/xxx/trackID1// url 需要后端提供视频源地址playVideo() {if (fl…...
JAVA设计模式之【建造者模式】
1 定义 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 2 类图 产品类(Product):表示被创建的复杂…...
【jvm】为什么Xms和Xmx的值通常设置为相同的?
目录 1. 说明2. 避免性能开销3. 提升稳定性4. 简化配置5. 优化垃圾收集6. 获取参数6.1 代码示例6.2 结果示例 1. 说明 1.-Xms 和 -Xmx 参数分别用于设置堆内存的初始大小(最小值)和最大大小。2.在开发环境中,开发人员可能希望快速启动应用程…...
windows查看net网络监听端口命令和工具(ipconfig、netstat、tasklist、TCPView)
文章目录 使用命令提示符(CMD)查看网络连接和配置使用 netstat 命令查看监听端口查看特定的端口查看TCP监听端口tasklist查看对应进程ID的程序Get-NetTCPConnection 命令使用 TCPView工具使用命令提示符(CMD) 查看网络连接和配置 ipconfig :显示所有网络 适配器的当前 TC…...
JAVA-数据结构- 二叉搜索树
1.搜索树 前面我们已经使用C语言学习完了二叉树,懂得了一些二叉树的基本性质已经实现方法 https://mp.csdn.net/mp_blog/creation/editor/139572374,本文我们来一起进行二叉树的衍生-二叉搜索树 1.1 概念 二叉搜索树又称二叉排序树,它或者是…...
深入研究 RAG 流程中的关键组件
我们已经看到了整个RAG流程,并获得了第一手的实践经验,您可能会对RAG流程中一些组件的使用和目的存在很多疑惑,比如RunnablePassthrough。在本节中,我们将进一步了解这些关键组件。 RAG的核心模型思想是将一个复杂的任务分解为多…...
新手如何学习python并快速成为高手
英雄Python入门到精通链接:https://pan.quark.cn/s/57162ec366a9 学习Python作为新手,有以下几个步骤: 学习基本概念和语法:首先,你需要学习Python的基本概念和语法。可以通过在线教程、书籍或者视频教程来学习。了解…...
Linux历史命令history增加执行时间显示
Centos系统默认历史命令显示如下 为了更好的溯源,获取执行命令的准确时间,需要增加一些配置 设置环境变量 vim /etc/profile 在最下面添加以下环境配置 export HISTTIMEFORMAT"%Y-%m-%d %H:%M:%S " 立即刷新该环境变量 source /etc/pro…...
从 vue 源码看问题 — 你知道 Hook Event 吗?
前言 在之前的几篇文章中,都有提到 vue 中调用生命周期钩子时是通过 callHook() 方法进行调用的,比如在初始化篇章中调用 beforeCreate 和 created 生命周期钩子方式如下: 那么接下来一起来了解下到底什么是 Hook Event ? Hook Event 是什…...
信息安全工程师(68)可信计算技术与应用
前言 可信计算技术是一种计算机安全体系结构,旨在提高计算机系统在面临各种攻击和威胁时的安全性和保密性。 一、可信计算技术的定义与原理 可信计算技术通过包括硬件加密、受限访问以及计算机系统本身的完整性验证等技术手段,确保计算机系统在各种攻击和…...
每日OJ题_牛客_相差不超过k的最多数_滑动窗口_C++_Java
目录 牛客_相差不超过k的最多数_滑动窗口 题目解析 C代码 Java代码 牛客_相差不超过k的最多数_滑动窗口 相差不超过k的最多数_牛客题霸_牛客网 (nowcoder.com) 描述: 给定一个数组,选择一些数,要求选择的数中任意两数差的绝对值不超过 …...
来咯来咯webSocket
在项目总目录下 设置socketServe文件夹 里面创建下面两个文件 使用的时候需要开启 node webSocket.cjs var { Server } require(ws); var moment require(moment);const wss new Server({port: 8888 });let id 0; let onlineMemberList []; const defaultUser user;wss…...
Android CALL关于电话音频和紧急电话设置和获取
获取音频服务,设置音源类型:电话类型和获取最大电话音量,响铃模式 private AudioManager mAudioManager; mAudioManager (AudioManager) getSystemService(AUDIO_SERVICE); mAudioManager.setStreamVolume(AudioManager.STREAM_VOIC…...
【春秋云镜】CVE-2023-23752
目录 CVE-2023-23752漏洞细节漏洞利用示例修复建议 春秋云镜:解法一:解法二: CVE-2023-23752 是一个影响 Joomla CMS 的未授权路径遍历漏洞。该漏洞出现在 Joomla 4.0.0 至 4.2.7 版本中,允许未经认证的远程攻击者通过特定 API 端…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...
【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项
一、条形码识别改名使用教程 打开软件并选择处理模式:打开软件后,根据要处理的文件类型,选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件,就选择 “PDF 识别模式”;若是处理图片文件&…...
运行vue项目报错 errors and 0 warnings potentially fixable with the `--fix` option.
报错 找到package.json文件 找到这个修改成 "lint": "eslint --fix --ext .js,.vue src" 为elsint有配置结尾换行符,最后运行:npm run lint --fix...
