计算机视觉与深度学习-卷积神经网络-纹理表示卷积神经网络-卷积神经网络-[北邮鲁鹏]

news2024/12/22 20:36:45

这里写目录标题

  • 参考文章
  • 全连接神经网络
    • 全连接神经网络的瓶颈
    • 全连接神经网络应用场景
  • 卷积神经网络
    • 卷积层(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/1024901.html

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

相关文章

ESD最常用的3种模型?|深圳比创达EMC

为了定量表征 ESD的特性,一般将 ESD 转化成模型表达方式,ESD 的模型有很多种,下面介绍最常用的三种。 1.HBM:Human Body Model,人体模型 该模型表征人体带电接触器件放电,Rb 为等效人体电阻,Cb…

Pikachu XSS(跨站脚本攻击)

文章目录 Cross-Site ScriptingXSS(跨站脚本)概述反射型[xss](https://so.csdn.net/so/search?qxss&spm1001.2101.3001.7020)(get)反射型xss(post)存储型xssDOM型xssDOM型xss-xxss-盲打xss-过滤xss之htmlspecialcharsxss之href输出xss之js输出 Cros…

02. Springboot集成Flyway

目录 1、前言 2、什么是Flyway? 3、为什么要使用 Flyway? 4、简单示例 4.1、创建Spring Boot工程 4.2、添加Flyway依赖 4.3、Springboot添加Flyway配置 4.4、创建执行SQL脚本 4.5、启动测试 4.6、Flyway版本管理 5、SQL脚本文件命名规则 6、…

比特币 ZK 赏金系列:第 2 部分——查找哈希冲突

在我们的零知识赏金 (ZKB) 系列的第二部分中,我们将其应用于解决哈希冲突难题。在这样的谜题中,两个不同的输入散列到相同的输出。此类赏金可用于: 充当煤矿中的金丝雀,给我们一个有价值的提醒。存在冲突是散列函数较弱的标志&…

LCP 06. 拿硬币【向上取整】

文章目录 Tag题目来源题目解读解题思路方法一:贪心 知识回顾向上、向下取整 写在最后 Tag 【贪心】【数组】 题目来源 LCP 06. 拿硬币 题目解读 数组 coins 中存放的是一堆堆的力扣币,对于每一堆力扣币,你可以选择拿走一枚或者两枚&#x…

SOCKS5 认证的方法

在进行网络浏览或爬虫等相关工作时,我们经常会遇到需要使用 SOCKS5 代理认证的情况。然而,某些浏览器可能不提供原生支持 SOCKS5 代理认证的选项,给我们带来了一些困扰。本文将为大家介绍几种解决浏览器不支持 SOCKS5 代理认证问题的方法。 …

java图形化工具编写初试

java图形化工具编写初试 前言: 照虎画猫——用WgpSec 说书人师傅的‘用友NC系列检测利用工具’结合本人为数不多的java基础再结合gpt,学习了一下java图形化工具的编写,实现了最基础的漏洞检测功能........用大华的两个漏洞为例,分…

kafka消费/发送消息,消息过大报错解决whose size is larger than the fetch size 1048576

目录 一、kafka消费报错原因二、解决方案1、原因一的解决方案2、原因二的解决方案 一、kafka消费报错原因 问题原因一:个是kafka本身的配置没有调整到上限 问题原因二:就是我们自己写python消费kafka代码的时候没有参数配置没有限制 RecordTooLargeE…

实践分享:vue模块化基本用法

首先还是来看看什么是模块化。 常见的概括:模块化就是把单独的一个功能封装到一个模块(文件)中,模块之间相互隔离,但是可以通过特定的接口公开内部成员,也可以依赖别的模块(方便代码的重用&…

Zotero配合dblp文献库免费一键下载文献及管理教程

Zotero配合dblp文献库免费一键下载文献及管理教程 1 dblp计算机科学文献库2 文献导入到Zotero教程参考: 在这里,相信大家都已经知道Zotero这个强大的文献管理软件了,它可以多端同步,自动下载文献,自定义标签&#xff0…

数据结构——排序算法——归并排序

将两个有序数组合并为一个有序数组 在第二个列表向第一个列表逐个插入的过程中,由于第二个列表已经有序,所以后续插入的元素一定不会在前面插入的元素之前。在逐个插入的过程中,每次插入时,只需要从上次插入的位置开始&#xff0…

Pytorch从零开始实战04

Pytorch从零开始实战——猴痘病识别 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——猴痘病识别环境准备数据集模型选择模型训练数据可视化其他模型图片预测 环境准备 本文基于Jupyter notebook,使用Python3.8,Pytor…

mysql用事务实现更新数据

前言:在手动批量更新正式环境数据库时,建议使用事物进行更新,避免更错数据,造成不必要的麻烦。 现表中有三条数据,使用事物批量将name字段为mgx,phone字段为17837107346,所有数据中的address字段…

华为云云耀云服务器L实例评测|服务器反挖矿防护指南

前言 本文为华为云云耀云服务器L实例测评文章,测评内容是 云耀云服务器L实例 反挖矿防护指南 系统配置:2核2G 3M CentOS7.9 之前的文章中『一文教你如何防御数据库恶意攻击』,我们讲到黑客如何通过攻击数据库来获取权限,以及我们…

别再纠结线程池池大小、线程数量了,哪有什么固定公式 | 京东云技术团队

可能很多人都看到过一个线程数设置的理论: CPU 密集型的程序 - 核心数 1 I/O 密集型的程序 - 核心数 * 2 不会吧,不会吧,真的有人按照这个理论规划线程数? 线程数和CPU利用率的小测试 抛开一些操作系统,计算机原…

C++数据结构X篇_14_二叉树的递归遍历(先序遍历、中序遍历、后续遍历方法介绍;举例;代码实现)

我们知道数据的存储结构分为线性与非线性。线性就是1对1的结构,像栈与队列都属于线性结构。那什么是非线性的结构呢? 非线性即1对n的结构这更符合常规情况,线性结构本质上属于非线性结构中的一种特殊形式,像树就属于非线性结构。但…

iOS 17 Simulator Failed with HTTP status 400:bad request

升级 xcode 15 要 ios17 的 sdk 才能运行,但是更新这个 sdk 400 错误了 解决方案: 直接去官网下载开发者后台下载dmg文件,使用命令行快速安装即可 https://developer.apple.com/documentation/xcode/installing-additional-simulator-runti…

Anaconda和Pycharm详细安装 配置教程

Anaconda:是一个开源的Python发行版本,其中包含了conda、Python等180多个科学包及其依赖项。【Anaconda下载】 PyCharm:PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。【PyCharm下载】…

功能强大的PostgreSQL没有MySQL流行的10个原因,你知道几个?

以下内容是根据玖章算术CEO叶正盛在「3306π 数据库朋友圈」技术演讲整理。文末附完整的PPT下载链接! MySQL与PostgreSQL都是非常优秀并且非常成功的数据库,PostgreSQL的功能比MySQL强大,但是依然没有MySQL流行,作者从产品功能、…

Vue3中的computed函数详解

计算属性是Vue中常用的一种方式,主要用于在模板中放置逻辑计算,方便开发者进行数据操作和展示。在Vue3中,计算属性依然是非常重要的一种功能,而computed函数则更加的方便计算属性的使用。本文将对Vue3中的computed函数进行详细的介…