12.2深度学习_视觉处理CNN_池化层、卷积知识

3.池化层

3.1 概述

池化层 (Pooling) 降低维度, 缩减模型大小,提高计算速度. 即: 主要对卷积层学习到的特征图进行下采样(SubSampling)处理。

池化层主要有两种:

  1. 最大池化 max pooling

    最大池化是从每个局部区域中选择最大值作为池化后的值,这样可以保留局部区域中最显著的特征。最大池化在提取图像中的纹理、形状等方面具有很好的效果。

  2. 平均池化 avgPooling

    平均池化是将局部区域中的值取平均作为池化后的值,这样可以得到整体特征的平均值。平均池化在提取图像中的整体特征、减少噪声等方面具有较好的效果。

3.2 池化层计算

整体结构

在这里插入图片描述

计算

​ 最大池化:

  1. max(0, 1, 3, 4)
  2. max(1, 2, 4, 5)
  3. max(3, 4, 6, 7)
  4. max(4, 5, 7, 8)

平均池化:

  1. mean(0, 1, 3, 4)
  2. mean(1, 2, 4, 5)
  3. mean(3, 4, 6, 7)
  4. mean(4, 5, 7, 8)

3.3 步长Stride

最大池化:

  1. max(0, 1, 4, 5)
  2. max(2, 3, 6, 7)
  3. max(8, 9, 12, 13)
  4. max(10, 11, 14, 15)

平均池化:

  1. mean(0, 1, 4, 5)
  2. mean(2, 3, 6, 7)
  3. mean(8, 9, 12, 13)
  4. mean(10, 11, 14, 15)

3.4 边缘填充Padding

最大池化:

  1. max(0, 0, 0, 0)
  2. max(0, 0, 0, 1)
  3. max(0, 0, 1, 2)
  4. max(0, 0, 2, 0)
  5. … 以此类推

平均池化:

  1. mean(0, 0, 0, 0)
  2. mean(0, 0, 0, 1)
  3. mean(0, 0, 1, 2)
  4. mean(0, 0, 2, 0)
  5. … 以此类推

3.5 多通道池化计算

​ 在处理多通道输入数据时,池化层对每个输入通道分别池化,而不是像卷积层那样将各个通道的输入相加。这意味着池化层的输出和输入的通道数是相等。

​

3.6 池化层的作用

池化操作的优势有:

  1. 通过降低特征图的尺寸,池化层能够减少计算量,从而提升模型的运行效率。
  2. 池化操作可以带来特征的平移、旋转等不变性,这有助于提高模型对输入数据的鲁棒性。
  3. 池化层通常是非线性操作,例如最大值池化,这样可以增强网络的表达能力,进一步提升模型的性能。

但是池化也有缺点:

  1. 池化操作会丢失一些信息,这是它最大的缺点;

3.7 池化API使用

import torch
import torch.nn as nn# 1. API 基本使用
def test01():inputs = torch.tensor([[0, 1, 2], [3, 4, 5], [6, 7, 8]]).float()inputs = inputs.unsqueeze(0).unsqueeze(0)# 1. 最大池化# 输入形状: (N, C, H, W)polling = nn.MaxPool2d(kernel_size=2, stride=1, padding=0)output = polling(inputs)print(output)# 2. 平均池化polling = nn.AvgPool2d(kernel_size=2, stride=1, padding=0)output = polling(inputs)print(output)# 2. stride 步长
def test02():inputs = torch.tensor([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]]).float()inputs = inputs.unsqueeze(0).unsqueeze(0)# 1. 最大池化polling = nn.MaxPool2d(kernel_size=2, stride=2, padding=0)output = polling(inputs)print(output)# 2. 平均池化polling = nn.AvgPool2d(kernel_size=2, stride=2, padding=0)output = polling(inputs)print(output)# 3. padding 填充
def test03():inputs = torch.tensor([[0, 1, 2], [3, 4, 5], [6, 7, 8]]).float()inputs = inputs.unsqueeze(0).unsqueeze(0)# 1. 最大池化polling = nn.MaxPool2d(kernel_size=2, stride=1, padding=1)output = polling(inputs)print(output)# 2. 平均池化polling = nn.AvgPool2d(kernel_size=2, stride=1, padding=1)output = polling(inputs)print(output)# 4. 多通道池化
def test04():inputs = torch.tensor([[[0, 1, 2], [3, 4, 5], [6, 7, 8]],[[10, 20, 30], [40, 50, 60], [70, 80, 90]],[[11, 22, 33], [44, 55, 66], [77, 88, 99]]]).float()inputs = inputs.unsqueeze(0)# 最大池化polling = nn.MaxPool2d(kernel_size=2, stride=1, padding=0)output = polling(inputs)print(output)if __name__ == '__main__':test04()

3.9 每日作业

  1. 概念理解题
    • 简述在卷积神经网络中池化层的作用,并解释其为何能帮助提高模型性能。
  2. 操作过程描述题
    • 描述最大池化和平均池化的具体计算步骤,包括如何进行窗口滑动、取最大值或平均值的操作。
  3. 参数设置意义题
    • 请说明池化层中的“步长”和“池化窗口大小”两个参数对输出特征图的影响,并举例说明不同参数组合下的结果差异。
  4. 功能分析题
    • 分析池化层如何实现下采样(downsampling),并讨论这种降维操作如何有助于防止过拟合。
  5. 应用效果比较题
    • 对比最大池化和平均池化的优缺点,并讨论在什么情况下更倾向于选择其中一个作为池化层的类型。
  6. 实践操作题
    • 假设有一个输入尺寸为32x32的图像数据通过一个池化窗口为2x2,步长为2的最大池化层,请计算输出特征图的尺寸。
  7. 泛化能力提升题
    • 池化层是如何通过保持局部不变性来增强模型对图像变换的鲁棒性的?请举例说明。
  8. 综合思考题
    • 在设计深度学习模型时,为什么我们通常会在连续的卷积层之间插入池化层?这背后体现了什么样的设计理念?

3.10 知识点扩展

  1. 深入理解题
    • 请详细解释池化层在卷积神经网络中的作用,并举例说明其如何通过降低空间维度和参数数量来提高模型的效率和泛化能力。
  2. 梯度传播分析题
    • 在反向传播过程中,池化层是如何计算并传递梯度的?请描述最大池化与平均池化的梯度计算差异。
  3. 自适应池化策略题
    • 介绍空间金字塔池化(Spatial Pyramid Pooling, SPP)或可变形池化(Deformable Pooling)等自适应池化策略的工作原理,以及它们如何解决标准池化层对输入尺寸固定依赖的问题。
  4. 多尺度特征融合题
    • 如何利用不同大小的池化窗口来提取多尺度特征?请结合具体实例阐述多尺度池化在目标检测、图像分类等任务中的应用价值。
  5. 理论探讨题
    • 池化层是否一定能够防止过拟合?是否存在可能引入欠拟合的风险?如果有,应如何平衡池化带来的优势和潜在问题?
  6. 未来发展方向题
    • 针对未来研究方向,你认为池化层的设计会有哪些可能的发展趋势或改进点,例如注意力机制在池化过程中的应用、动态池化策略等。

4. 整体结构

在这里插入图片描述

在这里插入图片描述

4.1 特征图变化

5. 卷积知识扩展

5.1 卷积结果

卷积过程3

通过上述的动画,可以发现卷积实际上将原本图像中的某一特征进行提取。

5.2 二维卷积

分单通道版本和多通道版本。

5.2.1 单通道版本

之前所讲卷积相关内容其实真正意义上叫做二维卷积(单通道卷积版本),即只有一个通道的卷积。

如下图,我们对于卷积核(kernel)的描述一般是大小3x3、步长(stride)为1、填充(Padding)为0

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.2.2 多通道版本

彩色图像拥有R、G、B这三层通道,因此我们在卷积时需要分别针对这三层进行卷积

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后将三个通道的卷积结果进行合并(元素相加),得到卷积结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.3 三维卷积

​ 二维卷积是在单通道的一帧图像上进行滑窗操作,输入是高度H宽度W的二维矩阵。

​ 而如果涉及到视频上的连续帧或者立体图像中的不同切片,就需要引入深度通道,此时输入就变为高度H宽度W*深度C的三维矩阵。

​ 不同于二维卷积核只在两个方向上运动,三维卷积的卷积核会在三个方向上运动,因此需要有三个自由度

​ 这种特性使得三维卷积能够有效地描述3D空间中的对象关系,它在一些应用中具有显著的优势,例如3D对象的分割以及医学图像的重构等。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.4 反卷积

卷积是对输入图像及进行特征提取,这样会导致尺寸会越变越小,而反卷积是进行相反操作。并不会完全还原到跟输入图一样,只是保证了与输入图像尺寸一致,主要用于向上采样。从数学上看,反卷积相当于是将卷积核转换为稀疏矩阵后进行转置计算。也被称为转置卷积。

5.4.1 反卷积计算过程

如图,在2x2的输入图像上使用【步长1、边界全0填充】的3x3卷积核,进行转置卷积(反卷积)计算,向上采样后输出的图像大小为4x4

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如我们的语义分割里面就需要反卷积还原到原始图像大小。

5.4.2 反卷积底层计算

反卷积的计算过程如下图:

5.5 空洞卷积(膨胀卷积)

​ 为扩大感受野,在卷积核俩面的元素之间插入空格“膨胀”内核,形成“空洞卷积”(或称膨胀卷积),并用膨胀率参数L表示要扩大内核的范围,即在内核元素之间插入L-1个空格。当L=1时,则内核元素之间没有插入空格,变为标准卷积。图中是L=2的空洞卷积。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.6 可分离卷积

5.6.1 空间可分离卷积

空间可分离卷积是将卷积核分解为两项独立的核分别进行操作。在数学中我们可以将矩阵分解:
[ − 1 0 1 − 2 0 2 − 1 0 1 ] = [ 1 2 1 ] × [ − 1 0 1 ] \left[ \begin{matrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{matrix} \right]= \left[ \begin{matrix} 1 \\ 2 \\ 1 \end{matrix} \right]\times \left[ \begin{matrix} -1 & 0 & 1 \end{matrix} \right] 121000121 = 121 ×[101]
所以对3x3的卷积核,我们同样可以拆分成 3x1 和 1x3 的两个卷积核,对其进行卷积,且采用可分离卷积的计算量比标准卷积要少。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.6.2 深度可分离卷积

深度可分离卷积由两部组成:深度卷积核1x1卷积,我们可以使用Animated AI官网的图来演示这一过程

图1:输入图的每一个通道,我们都使用了对应的卷积核进行卷积。 通道数量 = 卷积核个数

图2:完成卷积后,对输出内容进行1x通道数的卷积

5.7 扁平卷积

扁平卷积是将标准卷积拆分成为3个1x1的卷积核,然后再分别对输入层进行卷积计算。

  • 标准卷积参数量XYC,计算量为MNCXY

  • 拆分卷积参数量(X+Y+C),计算量为MN(C+X+Y)

5.8 分组卷积

2012年,AlexNet论文中最先提出来的概念,当时主要为了解决GPU显存不足问题,将卷积分组放到两个GPU中并行执行。

在分组卷积中,卷积核被分成不同的组,每组负责对相应的输入层进行卷积计算,最后再进行合并。

下图中卷积核被分成两个组,前半部负责处理前半部的输入层,后半部负责后半部的输入层,最后将结果组合。

5.9 混洗分组卷积

​ 分组卷积中最终结果会按照原先的顺序进行合并组合,阻碍了模型在训练时特征信息在通道间流动,削弱了特征表示。混洗分组卷积,主要是将分组卷积后的计算结果混合交叉在一起输出。

5.10 多通道卷积与偏执

卷积核卷完之后,偏置矩阵就会与输出特征矩阵相加,得到本次卷积的最终结果。

有两个结论:

  1. 输入特征的通道数决定了卷积核的通道数(卷积核通道个数=输入特征通道个数)。

  2. 卷积核的个数决定了输出特征矩阵的通道数与偏置矩阵的通道数(卷积核个数=输出特征通道数=偏置矩阵通道数)。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

3D数据大屏实现过程,使用echarts、Next.js

📜 本文主要内容 数据大屏自适应方案动效 echarts: 3D 立体柱状图动态流光折线图 3D 地球(飞线、柱状图)无限滚动列表 🔍 大屏效果 数据大屏: 点击预览 🕹 运行条件 next 12.3.4echarts 5.4…

WebRover :一个功能强大的 Python 库,用于从 Web 内容生成高质量的数据集,专为训练大型语言模型和 AI 应用程序而设计。

2024-11-30 ,由Area-25团队开发的一个专门用于生成高质量网络内容数据集的Python库。该数据集旨在为大型语言模型(LLM)和人工智能应用的训练提供丰富的数据资源。 数据集地址:WebRover Dataset|自然语言处理数据集|AI模型训练数据…

FlyHttp 的最佳实践:加速项目级 API 请求构建

FlyHttp的相关文章: FlyHttp 的诞生:从认识各种网络请求开始 FlyHttp 的设计思想:前端 API 自动化构建工具 FlyHttp 的使用:如何高效使用 FlyHttp,支持 JS、TS 项目 一. FlyHttp 是什么? 这是一个自动…

图像修复算法常用评估指标介绍及Python代码(PSNR/SSIM/FID)

目录 峰值信噪比PSNR(Peak Signal-to-Noise Ratio) 结构相似度SSlM(Structural Similarity Index Measurement) FID(Frchet Inception Distance) 代码实践:计算两张图片之间的PSNR和SSIM 代…

家庭财务管理系统的设计与实现ssm小程序+论文源码调试讲解

2系统关键技术 2.1 微信小程序 微信小程序,简称小程序,英文名Mini Program,是一种全新的连接用户与服务的方式,可以快速访问、快速传播,并具有良好的使用体验。 小程序的主要开发语言是JavaScript,它与普…

天润融通亮相CCFA论坛:AI Agent引领零售业服务精细化运营

在新时期实现零售的进化,AI Agent助力客户精细化运营 11月19-21日,CCFA新消费论坛——2024中国零售创新大会在上海召开。大会围绕“在新时期实现零售的进化”主题,通过探讨零售新趋势、新势力、新模式,聚焦新产品、新渠道、新生活…

医学临床机器学习中算法公平性与偏差控制简析

摘要 随着医疗领域中数据的不断积累和计算能力的提升,临床机器学习技术发展迅速,但算法不公平性和偏差问题凸显。本文深入探讨了临床机器学习算法公平性的重要性、概念与定义、在临床应用中的影响、偏差来源、降低偏差方法及提升公平性策略。通过对不同…

如何抓取亚马逊页面动态加载的内容:Python爬虫实践指南

引言 在现代电商领域,数据的重要性不言而喻。亚马逊作为全球领先的电商平台,其页面上动态加载的内容包含了丰富的商品信息。然而,传统的爬虫技术往往难以应对JavaScript动态加载的内容。本文将详细介绍如何使用Python结合Selenium工具来抓取…

MongoDB分片集群架构实战

分片集群架构 分片简介 分片(shard)是指在将数据进行水平切分之后,将其存储到多个不同的服务器节点上的一种扩展方式。分片在概念上非常类似于应用开发中的“水平分表”。不同的点在于,MongoDB本身就自带了分片管理的能力&#…

opencvocr识别手机摄像头拍摄的指定区域文字,文字符合规则就语音报警

安装python,pycharm,自行安装。 Python下安装OpenCv 2.1 打开cmd,先安装opencv-python pip install opencv-python --user -i https://pypi.tuna.tsinghua.edu.cn/simple2.2 再安装opencv-contrib-python pip install opencv-contrib-python --user …

[报错] Error: PostCSS plugin autoprefixer requires PostCSS 8 问题解决办法

报错:Error: PostCSS plugin autoprefixer requires PostCSS 8 原因:autoprefixer版本过高 解决方案: 降低autoprefixer版本 执行:npm i postcss-loader autoprefixer8.0.0 参考: Error: PostCSS plugin autoprefix…

Go学习:编译器(编写程序时应该注意的点)

一、注意: LiteIDE工具: (1)创建项目后,同一个目录下的go文件 只能有一个 main函数,如果多个文件都有main函数,会出现编译错误。例如: (2)如果一个目录下多…

自然语言处理期末试题汇总

建议自己做,写完再来对答案。答案可能存在极小部分错误,不保证一定正确。 一、选择题 1-10、C A D B D B C D A A 11-20、A A A C A B D B B A 21-30、B C C D D A C A C B 31-40、B B B C D A B B A A 41-50、B D B C A B B B B C 51-60、A D D …

市场爆火的“生成式AI大模型”证书如何报考?

随着科技的飞速发展,生成式人工智能正以前所未有的速度渗透到各行各业。从创作艺术、生成音乐到推动虚拟世界的构建,这项技术以其卓越的创新能力改变了传统的生产和创意模式。生成式人工智能不仅仅是数据的复制和再现,而是通过算法实现内容的…

Electron-vue 框架升级 Babel7 并支持electron-preload webapck 4 打包过程记录

前言 我这边一直用的electron-vue框架是基于electron 21版本的,electron 29版本追加了很多新功能,但是这些新功能对开发者不友好,对electron构建出来的软件,使用者更安全,所以,我暂时不想研究electron 29版…

浏览器渲染流程

1.渲染模式 标准模式和怪异模式(Quirks Mode)是两种不同的文档渲染模式,用于指示浏览器如何解析HTML、CSS等页面内容。标准模式是指浏览器按照W3C规范的流程进行解析和渲染网页,这样可以确保不同浏览器对同一份代码的渲染结果基本…

ElementUI 问题清单

1、form 下面只有一个 input 时回车键刷新页面 原因是触发了表单默认的提交行为&#xff0c;给el-form 加上submit.native.prevent就行了。 <el-form inline submit.native.prevent><el-form-item label"订单号"><el-inputv-model"query.order…

ArcGIS求取多个点距离线要素的最近距离以及距离倒数

本文介绍在ArcMap软件中&#xff0c;对于点要素中的每一个点&#xff0c;求取其距离最近的道路的距离、距离倒数的方法。 首先&#xff0c;看一下本文的需求。现在已知一个点要素&#xff0c;其中含有多个点&#xff0c;假设每一个点表示城市中的一家商店&#xff1b;同时&…

【数据库系列】Spring Boot如何配置Flyway的回调函数

Flyway 提供了回调机制&#xff0c;使您能够在特定的数据库迁移事件发生时执行自定义逻辑。通过实现 Flyway 的回调接口&#xff0c;可以在迁移前后执行操作&#xff0c;如记录日志、执行额外的 SQL 语句等。 1. 创建自定义回调类 要配置 Flyway 的回调函数&#xff0c;需要创…

网络安全(1)_对称加密和非对称加密

1 网络安全概述 1.1 计算机网络面临的安全威协 &#xff08;1&#xff09;截获&#xff1a;攻击者从网络上窃听他人的通信内容&#xff0c;通常把这类攻击称为“截获”。在被动攻击中&#xff0c;攻击者只是观察和分析某一个协议数据单元&#xff08;PDU&#xff09;而不干扰信…