当前位置: 首页 > news >正文

视觉处理基础2

目录

1.池化层

1.1 概述

1.2 池化层计算

1.3 步长Stride

1.4 边缘填充Padding

1.5 多通道池化计算

1.6 池化层的作用

2. 卷积拓展

2.1 二维卷积

2.1.1 单通道版本

2.1.2 多通道版本

2.2 三维卷积

2.3 反卷积

2.4 空洞卷积(膨胀卷积)

2.5 可分离卷积

2.5.1 空间可分离卷积

2.5.2 深度可分离卷积

2.6 扁平卷积

2.7 分组卷积

2.8 混洗分组卷积

3.感受野

3.1 理解感受野

3.2 感受野的作用


1.池化层

1.1 概述

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

池化层主要有两种:

  • 最大池化 max pooling

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

  • 平均池化 avgPooling

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

1.2 池化层计算

1.3 步长Stride

1.4 边缘填充Padding

1.5 多通道池化计算

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

1.6 池化层的作用

池化的优势:

  • 通过降低特征图的尺寸,池化层能够减少计算量,从而提升模型的运行效率。

  • 池化操作可以带来特征的平移、旋转等不变性,这有助于提高模型对输入数据的鲁棒性。

  • 池化层通常是非线性操作,例如最大值池化,这样可以增强网络的表达能力,进一步提升模型的性能。

池化的缺点:

  • 池化操作会丢失一些信息。

最大池化:

import torch.nn as nn
import torch torch.random.manual_seed(0)# 输入的特征图数据
input = torch.randint(0,225,(1,64,224,224),dtype=torch.float32)pool = nn.MaxPool2d(kernel_size =2,# 池化核大小stride = 2,# 步长return_indices = True,# 返回索引
)output,indices = pool(input)print(input[0] [0] [:10, :10])
print(output[0] [0] [:10, :10])
print(indices[0] [0] [:5, :5])

平均池化:

import torch.nn as nn
import torch torch.random.manual_seed(0)# 输入的特征图数据
input = torch.randint(0,225,(1,64,224,224),)pool = nn.AvgPool2d(kernel_size =2,# 池化核大小stride = 2,# 步长ceil_mode =False,
)output= pool(input)print(input[0] [0] [:10, :10])
print(output[0] [0] [:5, :5])

2. 卷积拓展

2.1 二维卷积

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

2.1.1 单通道版本

只有一个通道的卷积叫做二维卷积(单通道卷积版本)。

2.1.2 多通道版本

彩色图像拥有R、G、B这三层通道,因此我们在卷积时需要分别针对这三层进行卷积。最后将三个通道的卷积结果进行合并(元素相加),得到卷积结果。

2.2 三维卷积

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

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

不同于二维卷积核只在两个方向上运动,三维卷积的卷积核会在三个方向上运动,使得三维卷积能够有效地描述3D空间中的对象关系,它在一些应用中具有显著的优势,例如3D对象的分割以及医学图像的重构等。

2.3 反卷积

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

反卷积计算过程

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

2.4 空洞卷积(膨胀卷积)

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

import torch
import torch.nn as nn
import numpy as npclass Network(nn.Module):def __init__(self):super(Network,self).__init__()self.conv = nn.Conv2d(in_channels= 1,out_channels =1,kernel_size = (3,3),stride = 1,padding=0,dilation=3# 膨胀)def forward(self,x):x = self.conv(x)return xtorch.random.manual_seed(0)
input = torch.randint(0,255,(1,1,32,32),dtype=torch.float32)model = Network()
output = model(input)
print(output.shape)

2.5 可分离卷积

2.5.1 空间可分离卷积

空间可分离卷积是将卷积核分解为两项独立的核分别进行操作。

import torch
import torch.nn as nn
import numpy as npclass Network(nn.Module):def __init__(self):super(Network,self).__init__()self.conv = nn.Conv2d(in_channels= 1,out_channels =1,kernel_size = (3,3),bias = False,)def forward(self,x):x = self.conv(x)return xclass Network2(nn.Module):def __init__(self):super(Network2,self).__init__()self.conv = nn.Conv2d(in_channels= 1,out_channels =1,kernel_size = (1,3),# 空间可分离卷积bias = False,)self.conv2 = nn.Conv2d(in_channels= 1,out_channels =1,kernel_size = (3,1),# 空间可分离卷积bias = False,)        def forward(self,x):x = self.conv(x)x = self.conv2(x)return xtorch.random.manual_seed(0)
input=torch.randint(0,255,(1,1,32,32),dtype=torch.float32)model1= Network()
model2= Network2()# for name,param in model1.named_parameters():# 参数量:8*8*3*3 =576
#     print(name,param.shape)
# for name,param in model2.named_parameters():# 参数量:8*1*3*3+8*8 = 136
#     print(name,param.shape)model1.conv.weight.data=torch.tensor([[[[0.1500, 0.2000, 0.2500],[0.2100, 0.2800, 0.3500],[0.2400, 0.3200, 0.4000]]]])
# for name,param in model1.named_parameters():
#     print(name,param)
model2.conv.weight.data=torch.tensor([[[[0.3,0.4,0.5]]]])
model2.conv2.weight.data=torch.tensor([[[[0.5],[0.7],[0.8]]]])
# for name,param in model2.named_parameters():
#     print(name,param)output1 = model1(input)
output2 = model2(input)
# 查看结果是否一样
print(output1[:,:,:5,:5])
print(output2[:,:,:5,:5])

2.5.2 深度可分离卷积

深度可分离卷积由两部组成:深度卷积和1x1卷积。

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

 对输出内容进行数量为通道个数的1x1的卷积。输出通道数量 = 卷积核个数。

import torch
import torch.nn as nn
import numpy as npclass Network(nn.Module):def __init__(self):super(Network,self).__init__()self.conv = nn.Conv2d(in_channels= 8,out_channels =8,kernel_size = (3,3),bias = False,)def forward(self,x):x = self.conv(x)return xclass Network2(nn.Module):def __init__(self):super(Network2,self).__init__()self.conv = nn.Conv2d(in_channels= 8,out_channels =8,kernel_size = (3,3),groups = 8, # 空间可分离卷积bias = False)self.conv2 = nn.Conv2d(in_channels= 8,out_channels =8,kernel_size = (1,1),# 空间可分离卷积bias = False)        def forward(self,x):x = self.conv(x)x = self.conv2(x)return x# 输入的特征图数据
input = torch.randint(0,225,(1,8,32,32),dtype=torch.float32)model1= Network()
model2= Network2()
output1 = model1(input)
output2 = model2(input)for name,param in model1.named_parameters():# 参数量:8*8*3*3 =576print(name,param.shape)
for name,param in model2.named_parameters():# 参数量:8*1*3*3+8*8 = 136print(name,param.shape)

2.6 扁平卷积

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

  • 标准卷积参数量X*Y*C,计算量为M*N*C*X*Y

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

2.7 分组卷积

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

2.8 混洗分组卷积

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

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

3.感受野

3.1 理解感受野

字面意思是感受的视野范围,为得到一个特征值,输入数据的size。

3.2 感受野的作用

卷积核所需的参数更少一些。

卷积过程越多,特征提取也会越细致,加入的非线性变换也随着增多 。

相关文章:

视觉处理基础2

目录 1.池化层 1.1 概述 1.2 池化层计算 1.3 步长Stride 1.4 边缘填充Padding 1.5 多通道池化计算 1.6 池化层的作用 2. 卷积拓展 2.1 二维卷积 2.1.1 单通道版本 2.1.2 多通道版本 2.2 三维卷积 2.3 反卷积 2.4 空洞卷积(膨胀卷积) 2.5 …...

代码随想录第十四天|二叉树part02--226.翻转二叉树、101.对称二叉树、104.二叉树的最大深度、111.二叉树的最小深度

资料引用: 226.翻转二叉树(226.翻转二叉树) 101.对称二叉树(101.对称二叉树) 104.二叉树的最大深度(104.二叉树的最大深度) 111.二叉树的最小深度(111.二叉树的最小深度)…...

vue基础之7:天气案例、监视属性、深度监视、监视属性(简写)

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…...

JS实现高效导航——A*寻路算法+导航图简化法

一、如何实现两点间路径导航 导航实现的通用步骤,一般是: 1、网格划分 将地图划分为网格,即例如地图是一张图片,其像素为1000*1000,那我们将此图片划分为各个10*10的网格,从而提高寻路算法的计算量。 2、标…...

Spring Authorization Server登出说明与实践

本章内容概览 Spring Security提供的/logout登出接口做了什么与如何自定义。Spring Authorization Server提供的/connect/logout登出接口做了什么与如何自定义。Spring Authorization Server提供的/oauth2/revoke撤销token接口做了什么与如何自定义。 前言 既然系统中有登录功…...

浏览器报错 | 代理服务器可能有问题,或地址不正确

1 问题描述 Windows连网情况下,浏览器访问地址显示“你尚未连接,代理服务器可能有问题,或地址不正确。”出现如下画面: 2 解决方法 途径1 控制面板-->网络与internet-->internet选项-->Internet属性-->连接-->…...

泷羽sec:shell编程(9)不同脚本的互相调用和重定向操作

声明: 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…...

Milvus×OPPO:如何构建更懂你的大模型助手

01. 背景 AI业务快速增长下传统关系型数据库无法满足需求。 2024年恰逢OPPO品牌20周年,OPPO也宣布正式进入AI手机的时代。超千万用户开始通过例如通话摘要、新小布助手、小布照相馆等搭载在OPPO手机上的应用体验AI能力。 与传统的应用不同的是,在AI驱动的…...

单片机几大时钟源

在单片机中,MSI、HSI和HSE通常指的是用于内部晶振配置的不同功能模块: MSI (Master Oscillator System Interface):这是最低级的一种时钟源管理单元,它控制着最基本的系统时钟(SYSCLK),一般由外…...

reverse学习总结(12)

一.[FlareOn4]IgniteMe1 https://files.buuoj.cn/files/02b39b8efca02367af23aa279c81cbec/attachment.zip 根据汇编语言分析 查看需要返回为1的函数 int sub_401050() {int v1; // [esp0h] [ebp-Ch]int i; // [esp4h] [ebp-8h]unsigned int j; // [esp4h] [ebp-8h]char v4; …...

基于“微店 Park”模式下 2+1 链动模式商城小程序的创新发展与应用研究

摘要:本文以“微店 Park”从“开店工具”向“众创平台”的转型为背景,深入探讨 21 链动模式商城小程序在该平台情境下的应用潜力与创新发展路径。通过剖析“微店 Park”的运营模式,包括灵活承租、低成本入驻、多元流量引流等特点,…...

C++11:【列表初始化】【右值引用和移动语义】

目录 一.列表初始化 1.1 C98传统的{} 1.2C11中的{} 1.3C中的std::initializer_list 二.右值引用和移动语义 2.1左值和右值 2.2左值引用和右值引用 2.3引用延长生命周期 2.4左值和右值的参数匹配 2.5右值引用和移动语义的使用场景 2.5.1左值引用主要使用场景 2.5.2移…...

Zookeeper的通知机制是什么?

大家好,我是锋哥。今天分享关于【Zookeeper的通知机制是什么?】面试题。希望对大家有帮助; Zookeeper的通知机制是什么? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper的通知机制主要通过Watcher实现,它是Zookeeper客…...

嵌入式蓝桥杯学习1 电量LED

cubemx配置 1.新建一个STM32G431RBT6文件 2.在System-Core中点击SYS,找到Debug(设置为Serial Wire) 3.在System-Core中点击RCC,找到High Speed Clock(设置为Crystal/Ceramic Resonator) 4.打开Clock Configuration &#xff0…...

bsmap输出结果解释

关于, , -, --的解释 对应着参考基因组的正链(有义链,非模板链,即hg38的序列,watson链); -代表正链的互补链(正常情况下正链的互补链是负链,但在重硫酸盐处理后正链和负链并不互补…...

【java-数据结构篇】揭秘 Java LinkedList:链表数据结构的 Java 实现原理与核心概念

我的个人主页 我的专栏:Java-数据结构,希望能帮助到大家!!!点赞❤ 收藏❤ 目录 1. Java LinkedList 基础 1.1 LinkedList 简介 1.2 LinkedList 的实现原理 1.3 LinkedList 与 ArrayList 的区别 2. 链表基础 2.1 链…...

macOS运行amd64的镜像

在macOS上运行amd64(x86_64)架构的镜像,通常通过虚拟化或仿真工具来实现。例如,如果你使用的是基于Apple Silicon(M1或M2等)芯片的Mac,那么你的处理器是ARM架构的,而amd64是x86架构&…...

轻量的基于图结构的RAG方案LightRAG

LightRAG出自2024年10月的论文《LIGHTRAG: SIMPLE AND FASTRETRIEVAL-AUGMENTED GENERATION》(github),也是使用图结构来索引和搜索相关文本。 LightRAG作者认为已有的RAG系统有如下两个限制,导致难以回答类似"How does the rise of electric vehi…...

计算机的错误计算(一百七十三)

摘要 给定多项式 在 MATLAB 中计算 的值。输出是错误结果。 例1. 已知 计算 直接贴图吧: 这样,MATLAB 输出了错误结果。因为准确值为 0.2401e-16 . 注:可参看计算机的错误计算(六)。...

【力扣】—— 二叉树的前序遍历、字典序最小回文串

Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:数据结构 📚本系列文章为个人学…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

Neo4j 集群管理:原理、技术与最佳实践深度解析

Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中,科研绘图是必不可少的,一张好看的图形会是文章很大的加分项。 为了便于使用,本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中,获取方式: R 语言科研绘图模板 --- sciRplothttps://mp.…...