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

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的深度和复杂性使得模型对训练数据的依赖性增加,从而在小规模数据集上容易过拟合。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV(图像处理)-基于Python-形态学处理-开运算、闭运算、顶帽、黑帽运算

1. 形态学2. 常用接口2.1 cvtColor()2.2 图像二值化threshod()自适应阈值二值化adaptiveThreshod() 2.3 腐蚀与膨胀erode()getStructuringElement()dilate() 2.4开、闭、梯度、顶帽、黑帽运算morphologyEx() 1. 形态学 OpenCV形态学是一种基于OpenCV库的数字图像处理技术&…

如何安装MySQL数据库

目录 什么是MySQL数据库 第一步 安装依赖环境 第二步 创建MySQL相关进程用户 第三步 导入MySQL相关包 第四步 解包到指定目录下 第五步 切换到MySQL目录下编译安装 第六步 编译 第七步 更改指定文件的所有者和所属组 第八步 进入指定配置文件清空内容 第九步 配置指定…

IDEA Build Artifacts 功能使用总结

文章目录 创建Artifact步骤Build Artifact步骤 打开IDEA,在没有创建Artifact时,菜单"Build -> Build Artifacts…“是灰色的,不可用状态。 所以,第一步是进入"File -> Project Structure…”,创建Arti…

12-代码实战——服务器版表白墙

目录 1.版本一:将数据存到内存中 ①约定前后端交互接口 a.添加表白信息: b.查询表白列表: ②在webapp包下创建message-wall.html前端文件 ③在java包下创建AddMessageServlet后端类 ④在java包下创建MessageListServlet后端类 2.版本…

【Azure】微软 Azure 基础解析(七)Azure 网络服务中的虚拟网络 VNet、网关、负载均衡器 Load Balancer

本系列博文还在更新中,收录在专栏:「Azure探秘:构建云计算世界」 专栏中。 本系列文章列表如下: 【Azure】微软 Azure 基础解析(三)描述云计算运营中的 CapEx 与 OpEx,如何区分 CapEx 与 OpEx…

通过 Python 封装关键词搜索阿里巴巴商品api接口

以下是使用 Python 封装关键词搜索阿里巴巴商品列表数据的步骤: 使用 requests 库向阿里巴巴搜索接口发送 HTTP 请求,可以使用 GET 或 POST 方法,请求参数中应包含搜索关键词、每页展示数量、当前页码等信息。 解析返回的 response 中的 HTM…

【Java高级语法】(六)内部类Inner Class:这可能是史上最全的关于内部类的学习资料~

Java高级语法详解之包装类 :one: 概念:two: 优缺点:three: 使用2.1 成员内部类2.2 局部内部类2.3 匿名内部类2.4 静态内部类2.5 小结:外部类访问四种内部类的特点2.6 小结:其他类访问四种内部类的特点 :four: 内部类与外部类的关系:five: 应用场景:six: …

01-抒写代码之诗:Golang 关键字的文学探索

📃个人主页:个人主页 🔥系列专栏:Golang基础 💬Go(又称Golang)是由Google开发的开源编程语言。它结合了静态类型的安全性和动态语言的灵活性,拥有高效的并发编程能力和简洁的语法。G…

Jenkins结合gitee自动化部署SpringBoot项目

安装 安装教程 插件选择 Gitee Plugin 配置 源码管理 填写源码地址 注意:请确保genkins所在的服务器有权限git拉取远程仓库代码,如果不可以请参考ssh配置centos 配置ssh拉取远程git代码 源码管理 构建触发器 1.勾选Gitee webhook 触发构建 2.生成we…

论文笔记:MEASURING DISENTANGLEMENT: A REVIEW OF METRICS

0 摘要 学习解缠和表示数据中的变化因素是人工智能中的一个重要问题。虽然已经取得了许多关于学习这些表示的进展,但如何量化解缠仍然不清楚。 虽然存在一些度量标准,但对它们的隐含假设、真正衡量的内容以及限制了解甚少。因此,当比较不同的…

一键开启GPT 平行时空模式

不知道大家日常使用GPT的时候,在一次会话中是如何完成同类任务的对话的? 简单点来说,假设你已经完成了角色设定,比如你设定GPT是一名文案编辑,那么接下来你会多次给它提交稿件让它进行编辑,那么在多次提交的时候&…

抽象工厂模式

一.定义 抽象工厂模式(Abstract Factory Pattern)是一种比较常用的模式,其定义如下: Provide an interface for creating families of related or dependent objects without specifyingtheir concrete classes.(为创建一组相关或相互依赖的对象提供一个接口&#…

算法刷题-双指针-二分法

27. 移除元素 力扣题目链接 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素的顺序可以改变。你不需…

Web前端开发技术储久良第三版课后答案

P16-第1章 练习与实验答案 练习1 1.选择题 (1)B (2)B (3)B (4)D (5)A 2.填空题 (1)标记、文本 (2)Tim Berners-Lee(蒂姆伯纳斯李) (3)查看 (4)NotePad、EditPlus、TextPad、TopStyle、UltraEdit等 (5)超文本标记语言、统一资源定位符(器&am…

Axios和Spring MVC[前端和后端的请求和响应处理]

在前后端交互中,Axios和Spring MVC扮演着不同的角色,分别负责前端和后端的请求和响应处理。它们之间的作用如下: Axios(前端): 发送HTTP请求:前端使用Axios库发送HTTP请求到后端。可以使用Axi…

webpack生产模式配置

一、生产模式和开发模式介绍 生成模式(production mode)是指在开发完成后将代码部署到生产环境中运行的模式,通常需要进行代码压缩、优化、合并,以减少文件大小和请求次数,提高页面加载速度和运行效率。 开发模式&am…

02_LinuxLED驱动开发

目录 Linux下LED灯驱动原理 地址映射 ioremap函数 iounmap函数 I/O内存访问函数 LED灯驱动程序编写 编写测试APP 编译驱动程序 编译测试APP 运行测试 Linux下LED灯驱动原理 Linux下的任何外设驱动,最终都是要配置相应的硬件寄存器。所以LED灯驱动最终也是对I.MX6ULL…

LVS-DR群集部署

目录 一、LVS-DR数据包流向分析 二、 DR 模式的特点 总结 三、LVS-DR中的ARP问题 1.在局域网中具有相同的IP地址,势必会造成各服务器ARP通信的紊乱 2.路由器根据ARP表项,会将新来的请求报文转发给RealServer,导致Director的VIP失效 3.解…

React 对比class与Effect Hook优化响应式数据更新监听,感受useEffect真正的强大

还是之前写过的一个组件 import React from "react"export default class index extends React.Component{constructor(props){super(props);this.state {name: "小猫猫"}}componentDidMount ()>{document.title this.state.name;}componentDidUpda…

吴恩达ChatGPT课爆火

点上方计算机视觉联盟获取更多干货 没想到时至今日,ChatGPT竟还会犯低级错误? 吴恩达大神最新开课就指出来了: ChatGPT不会反转单词! 比如让它反转下lollipop这个词,输出是pilollol,完全混乱。 哦豁&#…