一文看懂卷积运算(convolution)与互相关运算(cross-correlation)的区别

简介: 一文看懂卷积运算(convolution)与互相关运算(cross-correlation)的区别

互相关运算定义

在二维互相关运算中,卷积窗口从输入数组的最左上方开始,按从左往右、从上往下的顺序,依次在输入数组上滑动。当卷积窗口滑动到某一位置时,窗口中的输入子数组与核数组按对应元素相乘并求和,得到输出数组中相应位置的元素。

互相关运算图示

假设我们有一张image和一个filter

 

我们对图像中的蓝色区域进行Cross-correlation(互相关运算)

那么在点E处的计算方式就是:

G[3,3]=a∗A+b∗B+c∗C+d∗D+e∗E+f∗F+g∗G+h∗H+i∗I

互相关运算完整计算示例

输入数组为3*3,核数组为2*2,输入数组计算如下:

 

卷积数学定义

 

卷积运算图示

我们还是用上面互相关运算那幅图,我们记得cross-correlation的循环顺序是从左到右,从上到下

而convolution是从右到左,从下到上,即在点E处的计算为:G[3,3]=a∗I+b∗H+c∗G+d∗F+e∗E+f∗D+g∗C+h∗B+i∗A 那么这就相当于将‘filter翻转’了,即先上下翻转、再左右翻转,然后进行cross-correlation运算,如下所示:

可是我们为什么要这么做呢,有什么意义呢,下面让我们来看下

卷积与互相关运算区别

考虑,一张图如下,我们进行cross-correlation,得到的结果如下:

 

如果将上面换成真实点的图

 

我们看到得到的结果就像是filter,只不过翻转了下。因此如果我们将filter翻转了一次再进行cross-correlation,那再加上上面的这次翻转就是两次翻转了,得到的图像就也就不变了。

于是卷积就有了下面的性质

Identity:E=[...0,0,1,0,0...],F*E=F(你可以想下cross-correlation行不行)

 

那么什么时候convolution和cross-correlation是一样的呢?

当filter关于x轴y轴对称时,通常的Average filter和Gaussian filter都是,两者得到的结果相同。

深度学习中的卷积为何能用互相关运算代替

       现在大部分的深度学习教程中都把卷积定义为图像矩阵和卷积核的按位点乘。实际上,这种操作亦应该是互相关(cross-correlation),而卷积需要把卷积核顺时针旋转180度(即将卷积核上下翻转再左右翻转)然后再做点乘卷积运算和互相关运算虽然类似,但如果它们使用相同的核数组,对于同一个输入,输出往往并不相同。

       那么,你也许会好奇在深度学习中卷积层为何能使用互相关运算替代卷积运算。这主要原因在于,在深度学习中核数组都是学出来的:卷积层无论使用互相关运算或卷积运算都不会影响模型预测时的输出。假设卷积层使用互相关运算学出某一核数组。设其他条件不变,使用卷积运算学出的核数组即为互相关核数组按上下、左右翻转。也就是说原始输入与学出的已翻转的核数组再做卷积运算时,依然得到的是同样输出。因此大多数深度学习中提到的卷积运算均指互相关运算。

相关文章
|
机器学习/深度学习 移动开发 JavaScript
ZC序列理论学习及仿真(一)
ZC序列理论学习及仿真
2887 0
|
机器学习/深度学习 人工智能 自然语言处理
视觉 注意力机制——通道注意力、空间注意力、自注意力
本文介绍注意力机制的概念和基本原理,并站在计算机视觉CV角度,进一步介绍通道注意力、空间注意力、混合注意力、自注意力等。
12775 58
|
PyTorch 算法框架/工具
Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)
Pytorch中最大池化层Maxpool的作用说明及实例使用(附代码)
1374 0
|
算法 数据库 计算机视觉
Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
Dataset之COCO数据集:COCO数据集的简介、下载、使用方法之详细攻略
|
PyTorch 算法框架/工具
Pytorch学习笔记(五):nn.AdaptiveAvgPool2d()函数详解
PyTorch中的`nn.AdaptiveAvgPool2d()`函数用于实现自适应平均池化,能够将输入特征图调整到指定的输出尺寸,而不需要手动计算池化核大小和步长。
1012 1
Pytorch学习笔记(五):nn.AdaptiveAvgPool2d()函数详解
|
人工智能 API 决策智能
智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
【7月更文挑战第8天】智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
16524 134
智胜未来:国内大模型+Agent应用案例精选,以及主流Agent框架开源项目推荐
|
11月前
|
数据采集 人工智能 自然语言处理
Qwen模型角色扮演最佳实践
角色扮演大模型通过模拟特定角色的行为、语言风格和情感表达,实现高度拟人化和定制化的互动体验。与传统通用模型相比,角色扮演模型在语言风格、性格特征和情绪反应上更加细腻,提供更真实的交互体验。本文介绍了如何通过system prompt、few-shot学习和微调等技术实现大模型的拟人化,包括使用阿里云百炼平台进行角色扮演测试,以及如何通过合成数据和Lora微调提高模型的表演效果。最终,展示了如何通过优化数据质量和训练策略,显著提升角色扮演模型的表现。
|
机器学习/深度学习 运维 监控
一文速览深度伪造检测(Detection of Deepfakes):未来技术的守门人
一文速览深度伪造检测(Detection of Deepfakes):未来技术的守门人
2931 0
|
机器学习/深度学习 PyTorch 算法框架/工具
Pytorch学习笔记(八):nn.ModuleList和nn.Sequential函数详解
PyTorch中的nn.ModuleList和nn.Sequential函数,包括它们的语法格式、参数解释和具体代码示例,展示了如何使用这些函数来构建和管理神经网络模型。
2016 1
|
机器学习/深度学习
【Python-Keras】keras.layers.Dense层的解析与使用
关于Python-Keras库中keras.layers.Dense层的解析与使用。
731 1