深度学习-卷积神经网络-纹理表示卷积神经网络-卷积神经网络-[北邮鲁鹏]

news2024/10/7 20:35:57

这里写目录标题

  • 参考文章
  • 全连接神经网络
    • 全连接神经网络的瓶颈
    • 全连接神经网络应用场景
  • 卷积神经网络
    • 卷积层(CONV)
      • 卷积核
      • 卷积操作
      • 卷积层设计
      • 卷积步长(stride)
      • 边界填充
      • 特征响应图组尺寸计算
    • 激活层
    • 池化层(POOL)
      • 池化操作定义
      • 池化操作作用
      • 池化层超参数
      • 常见池化操作
    • 全连接层(FC)
    • 样本增强
      • 翻转
      • 随机缩放& 抠图
      • 色彩抖动

参考文章

计算机视觉与深度学习-05-纹理表示&卷积神经网络-北邮鲁鹏老师课程笔记

全连接神经网络

在这里插入图片描述

全连接神经网络的瓶颈

参数过多易过拟合&显存压力大

如果图像大小为200 * 200 * 3,隐层每个神经元权值个数是多少?

对于输入层,则输入层神经元个数 d 为 120000,对于全连接神经网络,后一层的每个神经元都会与前一层的所有神经元相连,所以隐层每个神经元就有120000个权值,同时再加上自身的一个偏置值。

参数过多易过拟合&显存压力大

参数越多,计算量越大。

前向传播数据需要存入显存,参数越大,显存压力越大。

全连接神经网络应用场景

全连接神经网络仅适合参数少的情况,

  • 例如:处理小图像。
  • 或者前置输出已经表示为向量的场景,例如:接在卷积神经网络之后对cnn得到的特征(该处的特征可以类比纹理表示中的48维向量)进行处理。

卷积神经网络

可以将卷积神经网络类比为纹理表示例子中的卷积核组,最后得到表示特征响应图组的48维向量,之后接全连接神经网络进行分类(全连接神经网络适合处理小输入)。
在这里插入图片描述

卷积层(CONV)

卷积核

在这里插入图片描述

卷积操作

卷积结果还是一个实数
在这里插入图片描述
对图像所有位置进行卷积

在这里插入图片描述
特征响应图中每个位置上的值反映了图像上对应位置是否存在卷积核所记录的基元结构信息。

使用多个卷积核 得到多个特征响应图
在这里插入图片描述

卷积层设计

卷积核深度 = 前一层图像的深度(前层决定,不是自定义)
卷积核个数 = 自己自定义
特征图个数 = 卷积核个数
在这里插入图片描述
注意:卷积层输入不局限于图像,可以是任意三维数据;该层的卷积核深度要求与输入的三维矩阵的深度一致。

卷积步长(stride)

卷积神经网络中,卷积核可以按照指定的间隔进行卷积操作,这个间隔就是卷积步长

步长为1,卷积核每次移动1个位置
在这里插入图片描述

步长为2,卷积核每次移动2个位置

在这里插入图片描述
卷积步长对卷积结果的影响

输入数据矩阵尺寸:W1 x H1

输出数据矩阵尺寸:W2 x H2

W2与W1关系:

  • W 2 = W 1 − F S + 1 W2 = \tfrac{W1-F}{S} + 1 W2=SW1F+1
  • H 2 = H 1 − F S + 1 H2 = \tfrac{H1-F}{S} + 1 H2=SH1F+1

F 卷积核尺寸
S 卷积核步长

边界填充

卷积神经网络中最常用的填充方式是零值填充

没有填充
在这里插入图片描述
填充后
在这里插入图片描述
作用:保持输入、输出尺寸的一致!

填充对卷积结果的影响

输入数据矩阵尺寸:W1 x H1

输出数据矩阵尺寸:W2 x H2

W2与W1关系:

  • W 2 = W 2 − F + 2 P S + 1 W2 = \tfrac{W2-F+2P}{S} + 1 W2=SW2F+2P+1
  • H 2 = H 1 − F + 2 P S + 1 H2 = \tfrac{H1-F+2P}{S} + 1 H2=SH1F+2P+1

F 卷积核尺寸
S 卷积核步长
P 零填充数量

特征响应图组尺寸计算

在这里插入图片描述
卷积核尺寸,卷积步长,填充数量,以及卷积核数量最好经过周密的设计,到自己输出层时正好是自己需要的尺寸,最好不要中间出现除不尽的情况,如果出现除不尽的情况,就忽略几个像素。

激活层

池化层(POOL)

池化操作定义

对特征响应图某个区域进行池化就是在该区域上指定一个值来代表整个区域。

  • 池化操作对每个特征响应图独立进行。
  • 池化操作不改变特征图响应图个数。
    在这里插入图片描述

池化操作作用

每一个特征响应图独立进行,降低特征响应图组中每个特征响应图的宽度和高度,减少后续卷积层的参数的数量,降低计算资源耗费,进而控制过拟合。

卷积运算复杂度 O ( k m 2 n 2 ) O(km^{2}n^{2} ) O(km2n2),其中k为卷积核个数,m为卷积核边长,n为图像边长。

减少后续卷积层计算量

神经网络中为了反向计算梯度,需要在显存中保存前向计算结果。

如果卷积之后特征响应图和原图像的长宽相同,卷积核多的情况下,特征响应图组的层数增多,需要保存的数据就变多。可能超出显存存储能力范围。

池化操作可以减少特征响应图的长宽,达到减少计算量的效果。

缩小特征响应图像 & 增大感受野

卷积核的尺寸相对变大,粗粒度提取,使得卷积核在图像上的视野更广,即感受野更大,可以提取更多信息。

池化层超参数

池化窗口(pooling window)

池化窗口是指在进行池化操作时,对输入数据进行采样的窗口大小。通常,池化窗口是正方形的,其尺寸可以通过指定边长来定义。

例如,一个池化窗口大小为2x2的池化层将在输入数据中以2x2的窗口进行采样。

池化步长(pooling stride)

池化步长是指池化窗口在输入数据上滑动的步幅。它决定了池化操作的重叠程度和输出尺寸。

  • 如果池化步长为1,表示池化窗口每次滑动1个单位;
  • 如果池化步长大于1,表示窗口每次滑动的距离更大,因此输出的尺寸会相应减小。

常见池化操作

最大池化

使用区域内的最大值来代表这个区域。

在这里插入图片描述
此次最大池化操作后,特征响应图中的75%的响应信息都丢掉,但不改变特征响应图的个数。

类似于非最大化抑制操作,保留原图中对卷积核响应比较高的地方,其他地方舍弃。

平均池化

采用区域内所有值的均值作为代表。

在这里插入图片描述

全连接层(FC)

全连接层(Fully Connected Layer),也被称为密集连接层或全连接层,是神经网络中常见的一种层类型。全连接层的每个神经元都与前一层的所有神经元相连接。

在全连接层中,每个神经元接收来自前一层的所有输入,并通过使用权重和偏置进行线性变换,然后将变换后的结果输入到激活函数中进行非线性变换。这样,全连接层能够学习到输入数据中的复杂特征和关系。
在这里插入图片描述
全连接层通常用于神经网络的末尾,将前面的特征提取层与最终的输出层连接起来。
在这里插入图片描述

在图像分类任务中,经常在卷积层之后使用全连接层,将卷积层提取到的特征映射转换为一个或多个类别的概率输出。

样本增强

样本增强(Data Augmentation)是一种在机器学习和计算机视觉领域中常用的技术,旨在增加训练数据的多样性和数量,以改善模型的泛化能力和鲁棒性。通过对原始数据应用一系列的变换和扩展操作,可以生成与原始数据不同但具有相似特征的新样本。

样本增强的目的是通过引入数据的多样性来增强模型的鲁棒性,使其在不同的环境、角度、光照条件等下都能产生良好的预测结果。

在这里插入图片描述

翻转

翻转(Flipping)是样本增强中常用的一种技术,通过对图像进行水平或垂直方向的翻转操作来增加数据的多样性。
通过翻转操作,可以增加数据集的样本数量,并且不会改变图像的语义信息。这有助于减轻过拟合的问题,提高模型的泛化能力。

  • 水平翻转:水平翻转是指将图像沿着垂直中轴线进行翻转,即左右调换。这种操作可以模拟镜像效果,从而增加数据的多样性。例如,对于人脸识别任务,可以通过水平翻转来扩充训练数据,使模型能够更好地适应不同的人脸朝向。

  • 垂直翻转:垂直翻转是指将图像沿着水平中轴线进行翻转,即上下调换。这种操作也可以增加数据的多样性。例如,在某些图像分类任务中,垂直翻转可以模拟倒置的物体,使模型更具鲁棒性。
    在这里插入图片描述

需要注意的是,对于一些特定任务,如文本识别或者物体检测,翻转操作可能不适用,因为翻转后的图像可能会改变文本的方向或物体的位置。在应用翻转操作时,需要根据具体任务的需求进行判断和调整。

随机缩放& 抠图

  • 随机缩放:随机缩放是指对图像进行随机放大或缩小的操作。通过随机选择缩放比例或目标尺寸,可以改变图像的大小。这种操作可以模拟不同距离、不同视角下的图像变化,增加数据的多样性。在应用随机缩放时,可以保持图像的宽高比,或者在特定情况下进行非等比例缩放。

  • 抠图:抠图是指从原始图像中随机裁剪出一个子区域作为新的图像。通过随机选择裁剪位置和尺寸,可以改变图像的视野和内容。抠图操作可以模拟不同的视角、不同的目标尺寸和位置,增加数据的多样性。在应用抠图时,通常需要保证裁剪后的图像仍具有足够的信息来表示图像中的目标。
    在这里插入图片描述

这两种操作可以结合使用,例如先随机缩放图像,然后在缩放后的图像上进行随机抠图。这样可以进一步增加数据的多样性,提高模型的鲁棒性和泛化能力。

需要注意的是,在进行随机缩放和抠图时,应该保持数据的一致性和合理性。例如,在目标检测任务中,图像的缩放和抠图操作应该与目标的尺寸和位置相对应,以避免引入错误的标注信息。此外,也应该避免过度缩放或抠图导致关键信息丢失的情况发生。

色彩抖动

色彩抖动(Color Jittering)是样本增强中常用的一种技术,用于改变图像的颜色分布,增加数据多样性。通过对图像的颜色通道进行随机的扰动,可以引入一定程度的颜色变化,从而增强模型的鲁棒性。

在这里插入图片描述
在色彩抖动中,常用的颜色通道操作包括亮度调整、对比度调整、饱和度调整和色相调整。这些操作可以单独应用,也可以组合使用。具体的操作方式如下:

  • 亮度调整(Brightness Adjustment):通过增加或减小图像的亮度值,改变图像的明暗程度。

  • 对比度调整(Contrast Adjustment):通过增加或减小图像的对比度,改变图像中不同区域的亮度差异。

  • 饱和度调整(Saturation Adjustment):通过增加或减小图像的饱和度,改变图像的色彩鲜艳程度。

  • 色相调整(Hue Adjustment):通过旋转图像的色相角度,改变图像中的颜色。

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

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

相关文章

linux相关知识以及有关指令3

在linux的世界中我们首先要有万物皆文件的概念,那么在系统中有那么多的文件,我们该怎么区分呢?文章目录 1. 文件分类2. 文件的权限1). 拥有者和所属组以及other2). 文件的权限3). 粘滞位4). 对于权限修改的拓展知识点a.修改权限b.修改拥有者所…

智慧工地平台源码 劳务实名制、视频监控、扬尘监测、起重机械安全监测

伴随着技术的不断发展,信息化手段、移动技术、智能穿戴及工具在工程施工阶段的应用不断提升,智慧工地概念应运而生,智慧工地平台围绕施工现场管理,构建全方位的智能监控防范体系弥补传统方法和技术在监管中的缺陷,形成…

分享一个Python 写的监控日志log txt文档 的代码

监控log文件的需求 某些特殊原因,想一直看到.log 的最后一行打印,所以写了一些代码监控log (有个奇怪需求,就是log 因为重复启动原因,会一直加,不是同一个log) 监控界面 涉及的Python代码&…

管理类联考——数学——汇总篇——知识点突破——代数——数列——秒杀

🐟 ⛲️ 特殊值秒解数列 当数列题目中只有一个条件时,在不违背题意的条件下,可以直接利用特殊值, 令其公差为0或公比为1。 注意:一定要检验是否符合题意,题目中如果出现公差不为0或公比不为1,则…

华为云云耀云服务器L实例评测|部署前后端分离项目

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 学习测评 ✨特色专栏: MyS…

[NLP] LLM---<训练中文LLama2(一)>训练一个中文LLama2的步骤

一 数据集 【Awesome-Chinese-LLM中文数据集】 【awesome-instruction-dataset】【awesome-instruction-datasets】【LLaMA-Efficient-Tuning-数据集】Wiki中文百科(25w词条)wikipedia-cn-20230720-filteredBaiduBaiKe(563w词条) …

VIRTIO-SCSI代码分析(3)VIRTIO SCSI数据流处理

VIRTIO SCSI整体数据流如下: IO请求下发过程 虚拟机中通过FIO等下发IO请求,IO请求通过VFS/filesystem,BLOCK层,然后到SCSI层,传递给virtio-scsi驱动,virtio-scsi驱动通过virtioscsi_commit_rqs()下发IO请求…

利用 SOAR 加快事件响应并加强网络安全

随着攻击面的扩大和攻击变得越来越复杂,与网络攻击者的斗争重担落在了安全运营中心 (SOC) 身上。SOC 可以通过利用安全编排、自动化和响应 (SOAR) 平台来加强组织的安全态势。这一系列兼容的以安全为中心的软件可加快事…

【100天精通Python】Day63:Python可视化_Matplotlib绘制子图,子图网格布局属性设置等示例+代码

目录 1 基本子图绘制示例 2 子图网格布局 3 调整子图的尺寸 4 多行多列的子图布局 5 子图之间的共享轴 6 绘制多个子图类型 7 实战: 绘制一个大图,里面包含6个不同类别的子图,不均匀布局。 绘制子图(subplots)…

redis的安装、基础命令学习、常用数据结构

文章目录 前言一、Redis安装1.Ubuntu下安装(1)切换到root用户下(2)使用apt安装redis5(3)为了使redis支持远程连接,修改以下地方(4)验证安装是否成功 2.Centos7下安装&…

基于Java+SpringBoot+Vue+uniapp点餐小程序(包含协同过滤算法和会员系统,强烈推荐!)

校园点餐小程序 一、前言二、我的优势2.1 自己的网站2.2 自己的小程序(小蔡coding)2.3 有保障的售后2.4 福利 三、开发环境与技术3.1 MySQL数据库3.2 Vue前端技术3.3 Spring Boot框架3.4 微信小程序 四、功能设计4.1 系统功能结构设计4.2 主要功能描述 五…

理清Spring事务的核心关键类

在spring事务源码的内部,会有几个比较核心关键的类,虽然这基本上都是源码内部才使用到的类,但是有时候我们要对其做一些改造的时候免不了要去使用到这些类,并且这些类在spring事务内部都是起到关键的作用,对了解spring…

[2023-09-13]使用EXPDP/IMPDP迁移数据库后统计信息引起的性能问题

问题描述: 客户在使用expdp/impdp迁移数据库完成后,在新环境收集统计信息,但是在迁移完成的当天中午,好多SQL语句执行变慢,执行计划发生了改变,下面通过案例来说明。 1、准备数据 scott用户下创建test表&…

进程控制再学习

0.“开两个终端窗口” 因为学校用的虚拟机,得用终端登录,不能像shell一样直接复制窗口。 我们只需要登录两次就可以了(方便监视) 1.ps 1.循环ps while :;do ps -f;ps -ef|grep zombie;done 每秒打印一次: while :…

基于SSM+Vue的校园教务系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

报修工单系统如何提升维修维保工作效率?

在日常的报修维修工作中,我们经常会遇到一些挑战。其中数据分析是一项艰巨的任务,因为我们需要处理大量的数据并从中提取有价值的信息。维修工单的统计也是一个复杂的过程,需要对工单进行分类和整理,以便更好地了解工作的进度和效…

sudo+vim+g++/gcc+makefile+进度条

目录 一、信任表中加入指定的普通用户(使其能使用sudo) 二、vim的使用 (一)基本概念 1. 正常/普通/命令模式(Normal mode) 2. 插入模式(Insert mode) 3. 末行模式(last line mode) (二)vim正常模式…

国庆中秋特辑(一)浪漫祝福方式 用循环神经网络(RNN)或长短时记忆网络(LSTM)生成祝福诗词

目录 一、使用深度学习中的循环神经网络(RNN)或长短时记忆网络(LSTM)生成诗词二、优化:使用双向 LSTM 或 GRU 单元来更好地捕捉上下文信息三、优化:使用生成对抗网络(GAN)或其他技术…

根据keypoint生成heatmap

这里keypoint是有类别的,生成的heatmap是每个通道对应每个类别的heatmap 第一种会比较慢,第二种会比较快 第一种 def generate_heatmap(heatmap_size, sigma, class_num, keypoints, normalization): """generate gaussian heatmap:…

0.96寸OLED屏显示测试和代码详细分析SPI通信

第一次尝试点亮 程序代码地址,密码:1234。 买了一个两色的oled,然后下载了资料,手里有一个8266的arduino,所以为了方便就直接用了。使用arduino主要原因,单片机keil太大,来回找文件修改引脚比较麻烦。实际…