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

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://xiahunao.cn/news/3268855.html

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

相关文章

机器学习(五) -- 无监督学习(1) --聚类1

系列文章目录及链接 上篇:机器学习(五) -- 监督学习(7) --SVM2 下篇:机器学习(五) -- 无监督学习(1) --聚类2 前言 tips:标题前有“***”的内容…

Python酷库之旅-第三方库Pandas(048)

目录 一、用法精讲 171、pandas.Series.nlargest方法 171-1、语法 171-2、参数 171-3、功能 171-4、返回值 171-5、说明 171-6、用法 171-6-1、数据准备 171-6-2、代码示例 171-6-3、结果输出 172、pandas.Series.nsmallest方法 172-1、语法 172-2、参数 172-3、…

驾驭代码的无形疆界:动态内存管理揭秘

目录 1.:为什么要有动态内存分配 2.malloc和free 2.1:malloc 2.2:free 3.calloc和realloc 3.1:calloc 3.1.1:代码1(malloc) 3.1.2:代码2(calloc) 3.2:realloc 3.2.1:原地扩容 3.2.2:异地扩容 3.2.3:代码1(原地扩容) 3.2.3:代码2(异地扩容) 4:常见的动态内存的错误…

【算法】傅里叶变换

一、引言 傅里叶变换是一种在信号处理、图像处理、通信等领域中广泛应用的数学工具。它可以将信号从时域转换到频域,从而揭示信号的频率成分。 二、算法原理 傅里叶变换的基本思想是将一个时域信号分解为多个不同频率的正弦和余弦波的叠加。对于连续信号&#xff0c…

【轻量化神经网络的MCU部署/边缘计算:基于GD32H7】开源GD32AI-ModelZoo工具的完善与详细使用说明

本文档将对gd32ai-modelzoo中的使用方法进行更加细致的介绍。并对原博主提供的gd32ai-modelzoo部分代码进行了修改,使其可以更加顺利地运行。 原开源工程地址:https://github.com/HomiKetalys/gd32ai-modelzoo 原作者博客:https://mbb.eet-ch…

Springboot项目的行为验证码AJ-Captcha(源码解读)

目录 前言1. 复用验证码2. 源码解读2.1 先走DefaultCaptchaServiceImpl类2.2 核心ClickWordCaptchaServiceImpl类 3. 具体使用 前言 对于Java的基本知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)【Java项目…

vue3前端架构---打包配置

最近看到几篇vue3配置项的文章,转载记录一下 Vue3.2 vue/cli-service 打包 chunk-vendors.js 文件过大导致页面加载缓慢解决方案-CSDN博客文章浏览阅读2k次,点赞8次,收藏9次。Vue3.2 vue/cli-service 打包 chunk-vendors.js 文件过大导致页…

java高级——Exception异常类基本解读

java高级——Exception异常类基本解读 前情提要文章介绍继承结构异常详解1. 异常的定义2. 异常的分类3.3 异常的处理机制3.3.1 try catch finally语句3.3.2 throw关键字3.3.3 throws关键字 4. 浅谈如何有效的避免异常的发生5. 自定义异常6. 常见的RuntimeException 总结 前情提…

我为何撰写有关人工智能和数据科学的文章

撰写人工智能文章的 6 大好处 「AI秘籍」系列课程: 人工智能应用数学基础人工智能Python基础人工智能基础核心知识人工智能BI核心知识人工智能CV核心知识AI 进阶:企业项目实战 可直接在橱窗里购买,或者到文末领取优惠后购买: 自…

C++ //练习 15.30 编写你自己的Basket类,用它计算上一个练习中交易记录的总价格。

C Primer(第5版) 练习 15.30 练习 15.30 编写你自己的Basket类,用它计算上一个练习中交易记录的总价格。 环境:Linux Ubuntu(云服务器) 工具:vim 代码块: /********************…

数据结构 - 红黑树

文章目录 前言一、红黑树介绍1、红黑树的概念2、红黑树的性质 二、实现红黑树1、基本框架2、插入3、删除4、查找5、测试红黑树6、红黑树代码 三、红黑树性能四、AVL树和红黑树的差别 前言 红黑树是一种二叉搜索树,所以学习前需要学会基本的二叉搜索树,并…

X-AnyLabeling标注软件使用方法

第一步 下载 官方X-AnyLabeling下载地址 github:X-AnyLabeling 第二步 配置环境 使用conda创建新的虚拟环境 conda create -n xanylabel python3.8进入环境 conda activate xanylabel进入X-AnyLabeling文件夹内,运行下面内容 依赖文件系统环境运行环…

昇思MindSpore 应用学习-CycleGAN图像风格迁移互换

日期 心得 昇思MindSpore 应用学习-CycleGAN图像风格迁移互换(AI代码学习) CycleGAN图像风格迁移互换 模型介绍 模型简介 CycleGAN(Cycle Generative Adversarial Network) 即循环对抗生成网络,来自论文 Unpaired Image-to-Image Trans…

数据中台 | 3分钟带你读懂数据中台的由来

1.数据中台产生的原因 数据中台的概念起源于中国阿里巴巴集团提出的“大中台,小前台”战略。这一理念的核心在于通过构建强大的中台体系,为前端的快速创新和个性化业务需求提供强有力的支持。具体到数据中台,其设计初衷是为了应对企业内部数…

如何解决Windows系统目录权限问题

目录 前言1. 为什么会出现权限问题2. 修改文件权限的步骤2.1 确定目标文件2.2 右键属性设置2.3 更改所有者2.4 修改权限2.5 确认修改 3. 替换文件3.1 拷贝新的文件3.2 验证替换结果 结语 前言 在Windows系统中,时常需要往C盘系统目录下拷贝或者替换文件。然而&…

Java面试还看传统八股文?快来看看这个场景题合集吧【附PDF】

以下就是这份面试场景文档↓ 这里有什么? ↓↓ 1.针对 2024 年面试行情的变化设计的面试场景题以及回答思路 2. 如何快速通过面试的详细攻略 3. 简历优化技巧 1.知己知彼才能百战百胜,如何做好面试前的准备工作 场景题答案以及更多场景题八股文一线大…

Spring Security学习笔记(二)Spring Security认证和鉴权

前言:本系列博客基于Spring Boot 2.6.x依赖的Spring Security5.6.x版本 上一篇博客介绍了Spring Security的整体架构,本篇博客要讲的是Spring Security的认证和鉴权两个重要的机制。 UsernamePasswordAuthenticationFilter和BasicAuthenticationFilter是…

docker 安装单机版redis

把这三个放上去 修改成自己的 按照自己需求来 照图片做 vim redis.conf vim startRedis.sh mv startRedis.sh deployRedis.sh sh deployRedis.sh docker run --privilegedtrue \ --name dev.redis --restartalways \ --network dev-net \ -v ./config/redis.conf:/etc/r…

编译原理期末复习-按考点

编译原理期末复习-按考点 Ocean University of China 第一章 引论 翻译器、编译器、解释器 翻译器:把一种语言变成另外一种语言(语义等价) 编译器:翻译器的一种 解释器:不产生目标代码,解释执行源程序&a…

24年第三届钉钉杯大学生大数据挑战赛浅析

需要完整资料,请关注WX:“小何数模”! 本次钉钉杯大数据挑战赛的赛题已正式出炉,无论是赛题难度还是认可度,该比赛都是仅次于数模国赛的独一档,可以用于国赛前的练手训练。考虑到大家解题实属不易&#xf…