深度学习卷积神经网络CNN之ResNet模型网络详解说明(超详细理论篇)

news2024/11/16 23:30:34

1.ResNet背景
2. ResNet论文
3. ResNet模型结构
4. ResNet优缺点

一、ResNet背景

  ResNet 在2015 年由微软研究院提出的一种深度卷积神经网络结构,在ILSVRC(ImageNet Large Scale Visual Recognition Challenge)中取得了冠军(分类、目标检测、图像分割)。
  ResNet论文是"Deep Residual Learning for Image Recognition",由Kaiming He、Xiangyu Zhang、Shaoqing Ren和Jian Sun于2016年发表在CVPR(Conference on Computer Vision and Pattern Recognition)会议上。

在这里插入图片描述

二、ResNet论文

1.Deep Residual Learning for Image Recognition
原论文https://arxiv.org/pdf/1512.03385.pdf
如果打不开私聊我
  论文中介绍了ResNet的基本思想和网络结构。主要的创新是在网络中引入了残差模块(residual block),其中输入和输出之间添加了一个跳跃连接(skip connection),将输入直接加到输出上。这种跳跃连接的设计使得网络可以更轻松地学习残差,从而解决了梯度消失和模型退化的问题。论文还提出了不同深度的ResNet模型,包括ResNet-18、ResNet-34、ResNet-50、ResNet-101和ResNet-152等。这些模型的深度和复杂度不断增加,但由于引入了残差学习,它们在准确性和性能方面都超过了传统的深层网络。论文通过在ImageNet数据集上进行了大量的实验证明了ResNet的有效性。在ImageNet图像分类任务上,ResNet相对于以往的方法取得了更低的错误率,并在ImageNet图像分类挑战赛中获得了显著的突破。

三、ResNet模型结构

1.结构

  ResNet网络是参考了VGG19网络(最左边),在这基础上进行修改,并通过短路机制加入了残差单元,如下图。变化主要体现在ResNet直接使用stride=2的卷积做下采样,并且用global average pool层替换了全连接层。ResNet的一个重要设计原则是:当feature map大小降低一半时,feature map的数量增加一倍,这保持了网络层的复杂度。从图5中可以看到,ResNet相比普通网络每两层间增加了短路机制,这就形成了残差学习,其中虚线表示feature map数量发生了改变。图中最右边展示的34-layer的ResNet。
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

2.其他层网络结构

  对于18-layer和34-layer的ResNet,其进行的两层间的残差学习,当网络更深时,其进行的是三层间的残差学习,三层卷积核分别是1x1,3x3和1x1。表中
18-layer
34-layer
50-layer
101-layer
152-layer

在这里插入图片描述

3.residual结构

  左图对应的是浅层网络,而右图对应的是深层网络。对于短路连接,当输入和输出维度一致时,可以直接将输入加到输出上。但是当维度不一致时(对应的是维度增加一倍),这就不能直接相加。1*1的卷积核用来降维和升维。
在这里插入图片描述网络结构中虚线部分:主分支与shortcut的输出特征矩阵shape必须相同

因为 在conv3_x层,
输入特征矩阵的shape是【56,56,256】
输出特征矩阵的shape是【28,28,512】
因此在conv3、4、5_x层的第一层都要使用虚线结构,调整特征矩阵的深度、高、宽。其中在conv2_x层就没有!!!
在这里插入图片描述

4.Batch Normalization

  在ResNet模型中,Batch Normalization(批标准化)被广泛应用于网络的每个残差块(residual block)。Batch Normalization的目的是在网络的每一层中对输入进行归一化处理,从而加速训练过程并提高模型的泛化能力。

  在ResNet中,Batch Normalization通常在每个残差块的卷积层之后和非线性激活函数之前应用。具体来说,在每个残差块中,Batch Normalization的操作可以分为以下几个步骤:

(1)对每个小批量(batch)的输入数据进行归一化:对于残差块的输入数据,计算其特征维度上的均值和方差。

(2)应用归一化:将每个特征维度的值减去均值,然后除以方差,从而使特征值分布接近标准正态分布。

(3)伸缩和平移:为了保留网络的表示能力,Batch Normalization引入了可学习的伸缩因子和平移量,以便在归一化后的值上进行适当的缩放和平移。

  Batch Normalization的作用是使网络的每一层的输入分布更稳定,有助于加速网络的收敛过程,并降低模型对初始参数的敏感性。它还可以缓解梯度消失问题,使得深层网络更容易训练。此外,Batch Normalization还具有一定的正则化效果,可以在一定程度上减少过拟合。

四、ResNet优缺点

1.优点:

(1)解决梯度消失和模型退化问题:ResNet通过引入残差学习和跳跃连接的概念,有效地解决了深层神经网络中的梯度消失和模型退化问题。这使得ResNet可以构建非常深的网络,具有更好的性能和学习能力。

(2)更容易训练:由于梯度可以通过跳跃连接直接传播,ResNet模型更容易训练。它允许使用更大的学习率,加快了收敛速度,并降低了过拟合的风险。

(3)强大的特征表示能力:ResNet的残差块允许网络学习残差变化,从而能够更好地捕捉和表示输入和输出之间的关系。这使得ResNet在图像分类、目标检测、语义分割等任务中具有强大的特征提取和表示能力。

(4)网络参数共享:ResNet中的跳跃连接使得前一层的特征可以直接传递给后续层,这种参数共享的机制使得网络更加高效。ResNet相对于其他深层网络模型来说,具有相对较少的参数量,可以更容易地部署在计算资源有限的设备上。

(5)可扩展性:ResNet的模型结构非常灵活和可扩展,可以通过增加残差块的深度和宽度来构建更深、更复杂的网络。这种可扩展性使得ResNet适用于各种计算机视觉任务,并且可以根据实际需求进行调整和扩展。

2.缺点:

(1)模型复杂性:由于ResNet模型的深度和复杂性较高,需要较多的计算资源和存储空间。尤其是较深的ResNet模型可能需要更长的训练时间和更高的显存需求,这对于一些资源受限的环境可能不太适用。

(2)训练数据要求:由于ResNet模型的深度,它对大量的训练数据的需求较高。当训练数据集较小或标注有限时,ResNet模型可能容易过拟合,导致性能下降。

(3)参数量较大:相对于一些轻量级的模型,ResNet模型的参数量较大。这导致了在资源受限的环境中,如移动设备或嵌入式系统中的部署变得困难。

(4)特征失真问题:由于ResNet模型中的跳跃连接,残差块中的输入会直接与输出相加。这种操作可能会导致特征的失真,特别是当输入和输出的尺寸不匹配时。为了解决这个问题,需要使用额外的卷积层或池化操作来调整特征的尺寸,增加了网络的复杂性。

(5)对于小规模数据集的泛化能力:ResNet模型在大规模数据集上表现出色,但在小规模数据集上的泛化能力可能会有所下降。这是因为ResNet的深度和复杂性使得模型对训练数据的依赖性增加,从而在小规模数据集上容易过拟合。

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

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

相关文章

python - kubernetes中grpc服务健康检查实现

概述 kubernetes本身不支持gRPC健康检查,本文记录使用 ‘grpc-health-probe’ 实现grpc服务的健康检查 ‘grpc-health-probe’,这是 Kubernetes 原生的健康检查 gRPC 应用程序的方法 官方参考文档:https://kubernetes.io/zh-cn/blog/2018/1…

45--Django-项目实战-全栈开发-基于django+drf+vue+elementUI企业级项目开发流程-纯手工安装部署和docker一键部署

前期准备: 购买服务器,公网地址访问 服务器有多种选择,阿里云,腾讯云,华为云(可以免费试用几个月) 买阿里云就当成你去电脑市场组装了一台电脑。阿里云按时间计费(账户余额要大于100)。 购买流程: 搜索云服务器 开始创建你的云服务器 按量付费:用多少扣多少 地域…

ORACLE PL/SQL编程总结(一)

目录 1.1 SQL与PL/SQL 1.2 PL/SQL的优点或特征 1.3 PL/SQL 可用的SQL语句 1.4 运行PL/SQL程序 2.1 PL/SQL块 2.2 PL/SQL结构 2.3 标识符 2.4 PL/SQL 变量类型 2.5 运算符和表达式(数据定义) 2.6 变量赋值 2.7 变量作用范围及可见性 2.8 注释 2.9 简单例子 3.1 条件…

算法刷题-哈希表-两数之和

两数之和 1. 两数之和思路总结其他语言版本 1. 两数之和 力扣题目链接 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中…

【Leetcode】DP | 买卖股票的最佳时机,DP居然还可以用状态机?

带状态的DP君~ 类型总结:买卖一次、买卖无限次、买卖k次、买卖无限次、含冷冻期。 买卖k次的问题需要不断统计、维护买卖i次的最大收益。 状态较多的题可以借助状态机分析状态转移情况。 121 买卖股票的最佳时机 统计第 i i i天之前的股票最低价格,…

性能测试项目实战:应用加载慢该怎么办?

背景 app收到留学push、课堂、资讯,用户点击push消息,进入app,应用加载很慢,容易出现应用假死、app崩溃或提示网络异常等信息。 给用户体验十分不友好,监控阿里云资源tcp连接数飙高,cpu打满&#xff0c…

Nginx运行原理与基本配置文件讲解

文章目录 Nginx基本运行原理Nginx的基本配置文件serverlocationroot 与 alias 的区别server 和 location 中的 rootnginx欢迎页 本文参考文章Nginx相关文章 Nginx基本运行原理 Nginx的进程是使用经典的「Master-Worker」模型,Nginx在启动后,会有一个master进程和多个…

docker-compose编排容器

系列文章目录 文章目录 系列文章目录一、docker-compose1.Docker Compose2.YAML 文件格式及编写注意事项3.安装docker-compose4.Docker Compose配置常用字段 二、创建compose1.准备依赖文件2. 总结 一、docker-compose 1.Docker Compose 如果需要定义多个容器就需要服务编排。…

priority_queue的模拟实现

前言 优先级队列听名字好像与队列有关,但是实际上,与队列没有很多关系,它也是容器适配器,是通过vector来适配的,但是里面又加入了堆的调整算法。跟栈和队列又有一些不同,了解它的实现对于我们更好的掌握它是…

新手上路,安全驾驶,做行车安全的第一责任人

目录 一、生活与汽车二、树立安全意识三、掌握驾驶经验四、参考材料 道路千万条,安全第一条,行车不规范,亲人两行泪。 ——《流浪地球》 一、生活与汽车 开车是为了节省在路途上花费的时间,片面的追求交通效率会引发交通安全问题&…

day8 栈顶的种类与应用

目录 多寄存器访问指令与寻址方式 多寄存器内存访问指令 多寄存器内存访问指令的寻址方式 ​编辑 栈的种类与使用 栈的概念 栈的分类 栈的应用举例 叶子函数的调用过程举例 多寄存器访问指令与寻址方式 多寄存器内存访问指令 MOV R1, #1 MOV R2, #2 MOV R3, #3 MOV R…

Redis 持久化存储机制:RDB 和 AOF

Redis(Remote Dictionary Server)是一个高性能的键值存储系统,它可以将数据存储在内存中以实现快速访问。为了保持数据的持久性,Redis 提供了两种数据持久化方法:RDB 和 AOF。 RDB(Redis Database&#xff…

spring源码-代码的特殊写法

spring源码-代码的特殊写法 前言 在阅读spring源码中,可能会有很多种代码写法在工作中都没遇见过,阅读起来有一定的难度,在本文中,我会把我认为有难度的代码写法拿出来,并举例子说明清楚,方便大家阅读并理…

股价暴涨59%后,美股二手车平台Carvana在短期内还会进一步上涨?

来源:猛兽财经 作者:猛兽财经 Carvana(CVNA)股票在财报发布近一个月后又重新开始出现了上涨。 仅6月9日就上涨了59%。 相对于纳斯达克综合指数的上涨幅度,Carvana今年迄今为止的上涨幅度已经比纳斯达克综合指数高出了约400%。 Carvana最…

RabbitMQ - 死信队列,延时队列

Time-To-Live and Expiration — RabbitMQ 一、死信队列 Dead Letter Exchanges — RabbitMQ 死信队列: DLX 全称(Dead-Letter-Exchange),称之为死信交换器,当消息变成一个死信之后,如果这个消息所在的队列存在x-d…

全球、全国遥感土地利用数据产品下载(1m、10m、30m分辨率,内含链接与详细教程)

土地利用/覆被数据能够获取地表覆被信息,同时也是地球系统科学学科的基础数据(如生态、水文、地质等)吗,目前,基于遥感生成的土地利用/覆被数据产品比较多样,本文整理了目前应用比较多的7种数据产品进行介绍…

Hazel游戏引擎(007)Premake

文中若有代码、术语等错误,欢迎指正 文章目录 前言操作步骤premake写lua脚本文件执行premake.exe文件效果 前言 此节目的 由于之前配置VS项目各项属性需要根据不同平台手动一个一个设置,很麻烦,缺乏灵活性。 用lua脚本配置项目属性&#xff0…

基于Java+SpringBoot的鞋类商品购物商城系统设计与实现

博主介绍:✌擅长Java、微信小程序、Python、Android等,专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 Java项目精品实战案…

业务部门的通病:想搞了大而全的软件

业务部门的通病:想搞个大而全的软件 怎么样评价软件功能的价值重要性? 软件的消耗成本是惊人的 中小企业一定要约束需求 做SaaS的香港上市公司有赞(做商城软件) 10年了还在亏损 趣讲大白话:大而全的功能是陷阱 【趣讲信…

Geek-PC项目 文档

一款后台管理项目 - React-geek-PC 项目介绍 ● 项目功能演示 - 登录、退出 - 首页 - 内容(文章)管理:文章列表、发布文章、修改文章● 技术 - React 官方脚手架 create-react-app - react hooks - 状态管理:mobx - UI 组件库…