《深度学习》—— ResNet 残差神经网络

news2024/11/16 23:36:57

文章目录

  • 一、什么是ResNet?
  • 二、残差结构(Residual Structure)
  • 三、Batch Normalization(BN----批归一化)

一、什么是ResNet?

  • ResNet 网络是在 2015年 由微软实验室中的何凯明等几位大神提出,斩获当年ImageNet竞赛中分类任务第一名,目标检测第一名。获得COCO数据集中目标检测第一名,图像分割第一名。

  • ResNet 网络中的两个核心组成部分

    • 残差结构(Residual Structure)
    • Batch Normalization(批归一化)
  • 为什么要提出残差结构?

    • 在ResNet 网络没有提出来之前,所有的神经网络都是通过卷积层和池化层的叠加组成的。

    • 很多人认为卷积层和池化层的层数越多,模型的效果会越好

    • 在实际的试验中发现,随着卷积层和池化层的叠加,学习效果不会逐渐变好,反而出现2个问题:

      1.梯度消失和梯度爆炸
      梯度消失:若每一层的误差梯度小于1,反向传播时,网络越深,梯度越趋近于0
      梯度爆炸:若每一层的误差梯度大于1,反向传播时,网络越深,梯度越来越大

      2.退化问题
      随着层数的增加,预测效果反而越来越差, 下面是何凯明他们论文中实验的可视化图,可以看出模型层数多的反而没有少的效果好在这里插入图片描述

  • 为了解决梯度消失或梯度爆炸问题,论文提出通过数据的预处理以及在网络中使用 BN(Batch Normalization)层来解决。

  • 为了解决深层网络中的退化问题,可以人为地让神经网络某些层跳过下一层神经元的连接,隔层相连,弱化每层之间的强联系。这种神经网络被称为 残差网络 (ResNets)

  • ResNet论文提出了 residual结构(残差结构)来减轻退化问题,下图是使用residual结构的卷积网络,可以看到随着网络的不断加深,效果并没有变差,而是变的更好了
    在这里插入图片描述

  • ResNet 网络有不同数量的网络层模型,下图为 ResNet18、ResNet34、ResNet50、ResNet101、ResNet152 网络的表格化结构图
    在这里插入图片描述

二、残差结构(Residual Structure)

  • 如下图所示,残差块包含两条路径,一条是主路径(通常包含多个卷积层),用于提取特征;另一条是恒等快捷连接,允许输入直接跳过主路径的某些层与输出相加

  • 所谓相加是特征矩阵相同位置上的数字进行相加

  • 两条路径的输出在特征维度上需要保持一致,以便进行相加操作。这通常通过调整卷积层的步长(stride)、使用1x1卷积核进行升维或降维等方式来实现。
    在这里插入图片描述

  • 以ResNet 18网络为例

    • 下面是 ResNet 18网络完整的图形化结构图
      在这里插入图片描述
  • 部分残差块如下:
    在这里插入图片描述

  • 非残差结构-第一层时(左边结构):

  • 经过卷操作得到输出为[56,56,64]:

    • 通过设置步长stride=1、3x3卷积和卷积核64,使得高宽与卷积核不变
    • 激活函数relu处理
    • 通过设置步长stride=1、3x3卷积和卷积核64,重复特征提取
  • 残差结构-第二层(右边结构):

  • 由上一层的输入为[56,56,64]——>输出为[28,28,128]:

    • 通过设置步长stride=2、3x3卷积和卷积核128,使得高宽从56缩减一半到28,卷积核从64个更改为128个
    • 激活函数relu处理
    • 通过设置步长stride=1、3x3卷积和卷积核128,重复特征提取
  • 快捷连接的输入为[56,56,64]——>[1x1x128]——>输出为[28,28,128]:

    • 通过设置步长stride=2、1x1卷积和卷积核更改,使得高宽从56缩减一半到28,卷积核从64个更改为128个。
    • 与经过卷积层处理后的输出值相加

三、Batch Normalization(BN----批归一化)

参考博客

  • 所谓Feature Map(特征图)是卷积核卷出来的,你用各种情况下的卷积核去乘以原图,会得到各种各样的feature map。

  • 在输入一张图片时往往会使用预处理来使得图片满足某一个分布规律,以加快特征提取。然后进行一次卷积得到一个feature map,而这个feature map就不一定还满足之前所要求的分布规律。

  • Batch Normalization是指批标准化处理,将一批数据的feature map满足均值为0,方差为1的分布规律。注意不是对某一张图片的feature map,而是一整批的feature map,因为BN需要计算整个batch的均值和方差。

  • 如下图
    在这里插入图片描述

  • 原理

    • 标准化处理:在训练过程中,对每个小批量数据进行标准化处理,即对每个特征维度进行归一化操作。这有助于缓解内部协变量偏移(Internal Covariate Shift)问题,即网络在训练过程中由于参数更新导致的数据分布变化问题
    • 可学习参数:为了恢复出原始网络所要学习的特征分布,BN引入了可学习的缩放因子(γ)和偏移因子(β),使得网络可以通过学习这些参数来调整标准化后的数据分布
    • 训练与测试在训练阶段,BN使用当前小批量数据的均值和方差进行标准化处理;在测试阶段,则使用训练过程中所有小批量数据的均值和方差的移动平均进行标准化处理。
  • 使用注意

    • (1)训练时要将traning参数设置为True进行统计,在验证时将trainning参数设置为False,对统计的值进行验证。在pytorch中可通过创建模型的model.train()和model.eval()方法控制。

    • (2)batch_size (每次迭代中,模型同时处理多少个数据点)尽可能设置大点,设置小后表现可能很糟糕,设置的越大求的均值和方差越接近整个训练集的均值和方差。

    • (3)建议将BN层放在卷积层(Conv)和激活层(例如Relu)之间

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

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

相关文章

文新智能体开发:省钱有道,智慧选择,属于你的“省钱小诸葛”

开发灵感 在开发购物类智能体“省购小诸葛”时,我的灵感源自于对现代消费者购物行为的深刻洞察与未来科技趋势的展望。想象一个时代,当信息的海洋变得浩瀚无垠,消费者在众多商品与促销活动中遨游,却往往感到迷茫与疲惫。这时&…

在CANoe/CANalyzer中Replay Block“一键发送”一个诊断/命令序列

案例背景: 在博文《在CANoeCANalyzer中“在线回放”CAN Log.asc/blf文件_canoe怎么回放blf文件-CSDN博客https://blog.csdn.net/qfmzhu/article/details/128954931》我们介绍了Replay Block模块的一些典型应用。 下面我们介绍如何使用Replay Block代替IG(Interact…

OJ在线评测系统 后端 使用代理模式编写测试类 并 实现核心业务判题流程

编写测试类(代理模式) 实现示例的代码沙箱 package com.dduo.dduoj.judge.codesandbox.impl;import com.dduo.dduoj.judge.codesandbox.CodeSandbox; import com.dduo.dduoj.judge.codesandbox.model.ExecuteCodeRequest; import com.dduo.dduoj.judge.codesandbox.model.Exec…

Linux 冯诺依曼体系结构与操作系统概念

目录 0.前言 1. 冯诺依曼体系结构概述 1.1 输入单元 1.2 中央处理单元(CPU) 1.3 输出单元 2. 冯诺依曼体系结构的关键特性 2.1 所有数据流向内存 2.2 数据流动示例:QQ聊天过程 3. 操作系统 3.1 概念 3.2 设计操作系统的目的 3.3 操作系统的“…

华为源NAT技术与目的NAT技术

1)源NAT对报文源地址进行转换,分为NAT NO-PAT,NAPT,EASY-IP,三元组NAT; (1)NAT NO-PAT原理: no-port address translation:非端口地址转换:只转换地址,不转换端口&…

【C++位图】构建灵活的空间效率工具

目录 位图位图的基本概念如何用位图表示数据位图的基本操作setresettest 封装位图的设计 总结 在计算机科学中,位图(Bitmap)是一种高效的空间管理数据结构,广泛应用于各种场景,如集合操作、图像处理和资源管理。与传统…

使用docker形式部署prometheus+alertmanager+钉钉告警

一、拉取所需要的镜像 docker pull prom/node-exporter docker pull grafana/grafana docker pull prom/prometheus docker pull prom/alertmanager 其中 prom/node-exporter:用于收集主机系统信息和指标的 grafana/grafana:是一个用于可视化和分…

word2vector理论

目录 1.理论 2.公式 3.SkipGram的优化 1.理论 2.公式 3.SkipGram的优化 CBOW的优化, CBOW是用上下文预测中心词. Hirarchical softmax帮助我们最快的找到最大的softmax, 通过建立一个霍夫曼树.

【数据结构】AVL树相关知识详细梳理

1. AVL树的概念 AVL的全称是Adelson-Velsky-Landis,其名称来源于其发明者Adelson、Velsky和Landis, 是平衡二叉树搜索树。 它的出现是由于二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找…

城市轨道交通网络客流大数据可视化分析系统----以某市交通网络客流数据为例

1 引言 1.1研究背景、目的与意义 1.1.1研究背景 城市轨道交通系统是现代城市的重要交通方式之一,随着城市化进程的加速和人口增长,轨道交通系统的客流量不断增加。因此,轨道交通部门和相关企业需要对客流数据进行实时监测和分析&#xff0…

云数据库RDS MySQL性能测试与对比@2024年09月

原创:orczhouninedata 来源:云数据库技术 在不同的云厂商购买相同规格的MySQL实例(如4vCPU-16GB),获得的性能相同吗,他们的差异如何?本文继续尝试回答这个问题。 详细数据: 测试结果概述 在本次测试中&…

常见的TTL,RS232,RS485,IIC,SPI,UART之间的联系和区别

简单总结 图片来源 RS232,RS485可参考,IIC,SPI,UART可参考 烧录程序中常听到的一句话就是USB转TTL,但严格来说算是USB传输数据的协议转换成TTL(Transistor-Transistor Logic)协议传输数据。首先,usb是常见…

电脑资料被拷贝了,能查出来吗?5个方法有效防止电脑泄密!

网络快速发展的背景下,电脑资料的安全问题日益凸显。 一旦电脑资料被非法拷贝,不仅可能导致企业核心机密泄露,还可能对个人隐私造成严重影响。 那么,当电脑资料被拷贝时,我们能否查出来?又该如何有效防止…

【Python】必学!教你如何在日志中隐藏明文密码?看完包会的!(附带免费源码)

前言 在项目开发中,有的时候会遇到一些安全需求,用以提升程序整体的安全性,提高外来非法攻击的门槛,而在日志中隐藏明文密码打印便是最典型的安全需求之一。 在Python中,明文密码往往发生于命令执行参数、debug日志、…

施耐德EcoStruxure Machine SCADA Expert(EMSE)数据监测(十八)

通过EMSE与sql数据库连接,可以实现一些过程数据的监测、存档,实现生产过程的可视化。 1.创建sql数据库表单 新建一个名为Table_Monitor的表单,添加三个元素:Re_Index 序号;Re_Date 时间;Re_Temper 温度(需要监测的数据) 2.EMSE内关联变量 2.1 先创建网格 2.2 选择数据…

unity CustomEditor的基本使用

CustomEditor用来自定义脚本的编辑面板 其基本使用方式 先准备一个类,继承MonoBehaviour 定义一个变量,然后准备一个类,继承自Editor 在CustomEditor中指定要去修改的类型,通过serializedObject.FindProperty(变量名)的方式来获…

Ubuntu下安装向日葵:闪退

下载 https://sunlogin.oray.com/download 初次安装 $ sudo dpkg -i SunloginClient_15.2.0.63064_amd64.deb 正在选中未选择的软件包 sunloginclient。 (正在读取数据库 ... 系统当前共安装有 234281 个文件和目录。) 准备解压 SunloginClient_15.2.0.63064_amd64.deb ..…

Java.动态代理

1.创建一个接口 package Mydynamicproxy1;public interface Star {public abstract String sing(String str);public abstract void dance(String str); }2.创建一个BigStar类,要实现Star这个接口 package Mydynamicproxy1;public class BigStar implements Star{…

甘肃非遗文化网站:Spring Boot开发实战

3 系统分析 当用户确定开发一款程序时,是需要遵循下面的顺序进行工作,概括为:系统分析–>系统设计–>系统开发–>系统测试,无论这个过程是否有变更或者迭代,都是按照这样的顺序开展工作的。系统分析就是分析系…

Java EE中的编码问题及解决方案

Java EE中的编码问题及解决方案 在Java EE开发中,处理字符编码是确保数据正确传输和显示的重要环节。不同的编码不一致会导致乱码,影响用户体验。本文将总结在Java EE中可能遇到的编码问题及其解决方案。 1. 输入数据编码问题 在表单提交时&#xff0c…