卷积的意义及其派生(一)

news2024/9/21 10:52:24

1.卷积的意义

1.1从LTI的角度看

卷积最开始其实是信号处理中用来描述线性移不变系统Linear time-invariant systems的。线性,表明可以叠加,信号可以拆分成脉冲的响应;时不变,指信号不随着时间的迁移改变,意味着能量守恒。

那么,由线性时不变的性质,可以把输入信号拆成一个个的脉冲信号:

然后再由时不变的性质,每个冲激处的响应都是一样的:

那么当求t3时刻的输出信号时,利用线性的性质,输出值就是三个响应(上图红色点)的叠加。

这时再看表达式就清楚一些了:

1. x[k]的本质是权重系数,是输入信号拆分后每个位置的冲激;

2. 系统响应h原本在t=0的位置,被冲激向右移动距离k到达一个新的位置,然后取此时n位置的响应h[n-k];

3.响应和在x[k]下加权求和,得到输出信号。

4.虽然公式中是对正负无穷的冲激进行求和,但是t之后的响应其实不会对t时刻造成影响的。

5.时域的卷积等效于频域相乘,所以卷积也被称作滤波。

1.2从积分的角度看

既然是加权求和,在连续的情况下就是积分,积分的对象是两个函数的乘积。x[k]保持不变,h[k]先进行左右对称翻转,得到h[-k],然后再右移k,得到h[n-k]。参考维基百科,有下面的图示:

这样的解释从几何上看更加直观地表示公式本身,但其实也更难以理解为什么要“翻转”。但好处是可以直观地对比与互相关的不同:

互相关没有翻转,所以当卷积符号右边的函数是对称函数时,卷积等价于互相关。

2. 二维卷积

对大部分人来说,图像中的二维卷积是更为熟悉的。它其实和一维卷积一样,仍然是翻转,滑动和加权。只不过一般性的卷积都是对称的,所以就等价于求相关。这也是为什么之前说到的拉普拉斯算子可以求斑点,因为拉普拉斯算子本身的响应就是一个墨西哥草帽的样式。

结合LTI的性质,二维卷积的滤波器就是一个冲激的响应,这个响应是平移不变的,所以才需要那么多滤波器,每个滤波器表示一种响应/特征提取,CNN才“变宽”。

在torch中一般使用torch.nn.Conv2d实现卷积。但这个函数只指定了输入输出的通道数,滤波器的尺寸,步长,填充方式等。输出的尺寸需要下面公式来计算:

o=1+\frac{i+2p-k}{s}

上式中的1表示卷积核在初始的左上角位置一定会对应一个输出,第二项表示每移动一次对应一个输出。

填充的方式有Arbitrary padding,Half padding,Full padding。

No Padding

Half(Same) Padding

Full Padding

tf的padding有两个值,一个是SAME,一个是VALID

valid其实就是不填充?

Half padding第一次卷积的卷积核中心对应填充前的左上角,填充的范围差不多是卷积核尺寸的一半;保证输入和输出的feature map尺寸相同,p=⌊k/2⌋Full padding填充前的左上角则对应卷积核的左下角,填充范围差不多是整个卷积核。如果padding再多,原始的信息没有参与计算,所以这种padding已经是上限了k-1了,所以叫full。

反卷积通俗详细解析与nn.ConvTranspose2d重要参数解释_iioSnail的博客-CSDN博客

卷积的参数量:

3. one by one 卷积

最早出现在NIN文章中,GoogleNet中的Inception得到了使用,作用主要是降维/升维。和普通卷积核的区别就是滤波器大小是1x1,这样每个像素的卷积结果就与其邻域无关,即没有考虑局部信息之间的关系。

既然在空域上相当于对图像整体乘一个因子,那么它是怎么起作用的呢。对图像灰度值的缩放确实没什么收益,收益发生在图像是多通道时。当图像为多通道时,feature map也有相同的数目,这时1x1卷积就相当于不同feature map的线性组合。而根据组合前后的数目相对大小,就可以起到降维升维的作用,实现跨通道的信息整合(相当于一个多层感知机MLP)。

知道了1x1卷积的含义,就可以总结其作用:1.改变维度;2.跨通道信息交互。3.增加非线性

1x1卷积除了以上的优点,还具有计算量小的特点。计算量小不仅仅是因为其尺寸小,更是因为其不会因为计算机“行先序”的特点造成内存访问混乱的问题。虽然卷积很好理解,但是在实际计算中,卷积的感受野在内存中的位置不是连续的,为了解决这个问题,一般使用空间换时间的方法,即使用im2col操作,将特征图和卷积核重新排列,使得卷积操作可以直接使用GEMM矩阵相乘实现。而1x1卷积在Im2col前后的内存存放是相同的。

4. 空洞卷积

Dilated/Atrous Convolution(中文叫做空洞卷积或者膨胀卷积) 或者是 Convolution with holes 

普通卷积空洞卷积

空洞卷积首要的作用就是增大感受野。但其实增加感受野的方法至少还有其他两种。一种是VGG中的发现:2个3x3的卷积核的级联相当于5x5的感受野,感受野与层数的关系是(kernel-1)*layer+1,但级联太多就导致网络太深。还有一种是先pooling再卷积,但池化会带来信息的丢失,导致太小的目标信息无法重建。

空洞卷积还有一个特点就是可以保持特征图尺寸不变,这在语义分割中是比较有用的。

dilated conv的问题之一是The Gridding Effect。原因是连续性被跳跃性地取点破坏,感受野是大了,但是对应在第一层上的采样点更加离散了:

图森组通过Hybrid Dilated Convolution (HDC)解决。间隙在空洞卷积中成为膨胀因子(dilated ratio)。HDC的原理简单来说就是几个空洞卷积的膨胀系数使用不同的值,这样空洞的位置就不固定,就能互补,从而减轻格子效应:


Reference:

1.知乎https://www.zhihu.com/question/54149221/answer/323880412

2.空洞卷积(膨胀卷积)的相关知识以及使用建议(HDC原则)-CSDN博客

3. CICC科普

4.线性时不变

5.脉冲响应

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

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

相关文章

计算机网络(Wrong Question)

一、计算机网络体系结构 1.1 计算机网络概述 D 注:计算机的三大主要功能是数据通信、资源共享、分布式处理。(负载均衡、提高可靠性) 注:几段链路就是几段流水。 C 注:记住一个基本计算公式:若n个分组&a…

C语言程序设计(二)

四.找素数 素数:除了1和它本身不再有其他因数的自然数。换句话说:一个大于1的自然数 ,如果只能被1和它本身整除,那就是素数(质数)。 在打印中遇到的问题就是,知道怎么写却总是运行不起来。主要…

苦学Opencv的第十一天:图像的形态学操作

Python OpenCV从入门到精通学习日记:图像的形态学操作 前言 图像形态学是图像处理中的一个重要分支,主要关注图像中物体的形状和结构。通过形态学操作,我们可以对图像进行有效的分析和处理,例如图像的腐蚀与膨胀、开运算与闭运算…

Java 并发编程:一文了解 Java 内存模型(处理器优化、指令重排序与内存屏障的深层解析)

大家好,我是栗筝i,这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 022 篇文章,在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验,并希望进…

VIN解析汽车详情|阿里云实现调用API接口

介绍: 本次解析通过阿里云云市场的云服务来实现通过17位车架号来自动识别车型的详细信息,首先需要准备选择一家可以提供查询的商品。 https://market.aliyun.com/apimarket/detail/cmapi00065864#skuyuncode5986400001 步骤1: 选择商品 如图点击免费…

【微软蓝屏】微软Windows蓝屏问题汇总与应对解决策略

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

关键词查找【Knuth-Morris-Pratt (KMP) 算法】

一个视频让你彻底学懂KMP算法_哔哩哔哩_bilibili KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。 第一步:计算模式串(子串)和next[j]数组 模式串 前2位字母的next[j]固定是0 和 1 后续字母的nex[j]&…

项目实战——外挂开发(30小时精通C++和外挂实战)

项目实战——外挂开发(30小时精通C和外挂实战) 外挂开发1-监控游戏外挂开发2-秒杀僵尸外挂开发3-阳光地址分析外挂开发4-模拟阳光外挂开发5-无限阳光 外挂开发1-监控游戏 外挂的本质 有两种方式 1,修改内存中的数据 2,更改内存中…

跟李沐学AI:池化层

目录 二维最大池化 填充、步幅和多个通道 平均池化层 池化层总结 二维最大池化 返回滑动窗口中的最大值。 图为池化窗口形状为 22 的最大池化层。着色部分是第一个输出元素,以及用于计算这个输出的输入元素: max(0,1,3,4)4。池化层与卷积层类似,不断…

数据库中的事务

一、理解事务 1、本质 事务由一组DML语句组成,这一组语句要么全部成功,要么全部失败。在逻辑上,事务就是一组sql语句,但在实际中,公共的数据库一定会高并发地接受各种事务的请求,所以一个事务要有4个属性…

centos7 xtrabackup mysql(8)增量备份(1)

centos7 xtrabackup mysql(8)增量备份(1) 参考 xtrabackup-8.0的安装、备份以及恢复(innoxtrabackup有待测试) https://blog.csdn.net/DWJRIVER/article/details/117792271 https://blog.csdn.net/qq_28…

力扣高频SQL 50 题(基础版)第四题

文章目录 力扣高频SQL 50 题(基础版)第四题584.寻找用户推荐人题目说明思路分析实现过程准备数据实现方式结果截图 力扣高频SQL 50 题(基础版)第四题 584.寻找用户推荐人 题目说明 表: Customer -------------------- | Colu…

Weakly Supervised Contrastive Learning 论文阅读

Abstract 无监督视觉表示学习因对比学习的最新成就而受到计算机视觉领域的广泛关注。现有的大多数对比学习框架采用实例区分作为预设任务,将每个实例视为一个不同的类。然而,这种方法不可避免地会导致类别冲突问题,从而损害所学习表示的质量…

智能算法驱动的爬虫平台:解锁网络数据的无限潜力

摘要 在信息爆炸的时代,网络数据如同深海宝藏,等待着有识之士发掘其无尽价值。本文将探索智能算法驱动的爬虫平台如何成为解锁这一宝库的关键,不仅剖析其技术优势,还通过实例展示它如何助力企业与开发者高效、稳定地采集数据&…

Codeforces Round 654 (Div. 2) C. A Cookie for You (模拟)

我认为这道题就是个脑筋急转弯。 首先我们知道当a b < n m的时候&#xff0c;饼干总数都不够人的总数&#xff0c;那肯定是NO。 并且注意题干&#xff0c;我们可以得知当a b的时候&#xff0c;第一类和第二类人可以任意选两种饼干中的一种。 之后我们可以分类讨论一下。 …

【SpringBoot】 4 Thymeleaf

官网 https://www.thymeleaf.org/ 介绍 Thymeleaf 是一个适用于 Web 和独立环境的现代服务器端 Java 模板引擎。 模板引擎&#xff1a;为了使用户界面和业务数据分离而产生的&#xff0c;它可以生成特定格式的文档&#xff0c;用于网站的模板引擎会生成一个标准的 html 文档…

【vue前端项目实战案例】Vue3仿今日头条App

本文将开发一款仿“今日头条”的新闻App。该案例是基于 Vue3.0 Vue Router webpack TypeScript 等技术栈实现的一款新闻资讯类App&#xff0c;适合有一定Vue框架使用经验的开发者进行学习。 项目源码在文章末尾 1 项目概述 该项目是一款“今日头条”的新闻资讯App&#xf…

防爆开关的类型及工作原理,你了解多少?

在工业生产中&#xff0c;安全始终是首要考量。特别是在易燃、易爆环境下的作业&#xff0c;如化工厂、油库、矿井等场所&#xff0c;任何微小的火花都可能引发灾难性的后果。防爆开关作为一种关键的安全设备&#xff0c;其重要性不言而喻。 【一、防爆开关的定义与重要性】 …

高翔【自动驾驶与机器人中的SLAM技术】学习笔记(四)高斯牛顿法详解

一、高斯牛顿法详解 拓展阅读&#xff1a;高斯牛顿法详解_gauss-newton算法步骤-CSDN博客 1、梯度下降法 ​ ​ ​ 无论一阶泰勒展开&#xff0c;还是二阶泰勒展开都是关于增量​的方程。 2、牛顿法 ​ 这个自变量增量都是可求的。但是二阶求解复杂。因此为了简化有了下…