百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

深度解析卷积:从原理到应用(卷积到底是什么)

itomcoil 2025-07-08 19:24 15 浏览

一、卷积的基本概念

卷积是一种在数学领域尤其是分析数学中占据重要地位的运算方式。它通过两个函数 和 来生成第三个函数。设 和 是 上的两个可积函数,卷积的积分表达式为: 。在离散情况下,卷积定义为 。

从实际应用的角度来看,卷积在多个领域有着广泛的作用。例如在统计学中,加权的滑动平均就是一种卷积;在概率论中,两个统计独立变量 与 的和的概率密度函数是 与 的概率密度函数的卷积;在声学中,回声可以用源声与一个反映各种反射效应的函数的卷积表示;在电子工程与信号处理中,任一个线性系统的输出都可以通过将输入信号与系统函数(系统的冲激响应)做卷积获得;在物理学中,任何一个线性系统(符合叠加原理)都存在卷积。

卷积具有一些重要的性质,如交换律、结合律、分配律和数乘结合律等。其中,交换律即 。卷积定理指出,函数卷积的傅里叶变换是函数傅里叶变换的乘积,这一定理对多种傅里叶变换的变体同样成立,利用卷积定理可以简化卷积的运算量。对于长度为 的序列,按照卷积的定义进行计算,需要做 组对位乘法,而利用傅里叶变换将序列变换到频域上后,只需要一组对位乘法,利用傅里叶变换的快速算法之后,总的计算复杂度大大降低。

二、卷积的计算过程

(一)单通道卷积

以单通道卷积为例,假设输入为(1,5,5),即 1 个通道,宽和高均为 5。卷积核大小为 3x3,padding=0,stride=1。在这个过程中,相应的卷积核不断在图像上进行遍历。具体来说,卷积核从输入图像的左上角开始,每次移动一个像素的位置,对当前窗口内的像素值与卷积核对应位置的值进行乘法运算,然后将这些乘积相加,得到一个输出像素值。这样不断重复这个过程,直到遍历完整个输入图像,最后得到一个 3x3 的卷积结果。

(二)多通道卷积

  1. 多通道卷积 1:以彩色图像为例,彩色图像包含三个通道,分别表示 RGB 三原色的像素值,输入为(3,5,5),即 3 个通道,每个通道的宽和高均为 5。假设卷积核只有 1 个,卷积核通道为 3,每个通道的卷积核大小仍为 3x3,padding=0,stride=1。在这个过程中,每一个通道的像素值与对应的卷积核通道的数值进行卷积,因此每一个通道会对应一个输出卷积结果。然后,将三个卷积结果对应位置累加求和,得到最终的卷积结果。输出结果是原始图像各个通道综合信息的原因在于,每个通道的卷积结果反映了该通道的特征信息,而最终的累加求和则是将三个通道的特征信息进行融合,得到了原始图像各个通道的综合信息。
  1. 多通道卷积 2:如果要实现卷积后也输出多通道,可以增加卷积核的数量。原理在于,每一个卷积核会产生一个通道的输出结果。例如,假设有 m 个卷积核,那么输出的大小就变为(mw’h’),其中 w’、h’表示卷积后的通道尺寸,原始输入大小为(nwh)。整个卷积层的尺寸为(mnk1*k2),其中 m 表示卷积核的数量,n 表示通道数量,k1 表示每一个卷积核通道的宽,k2 表示每一个卷积核通道的高。具体过程是,每个卷积核对应的输出通道结果(feature map)进行拼接,从而实现多通道输出。例如,有三个彩色图像通道,若有两个卷积核,第一个卷积核与三个通道进行卷积运算后得到一个输出通道结果,第二个卷积核同样进行运算得到另一个输出通道结果,最后将这两个输出通道结果拼接起来,就实现了两通道的输出。

三、卷积的关键因素

(一)填充

填充(Padding)是卷积过程中的一个重要概念。在卷积操作中,填充是指在输入图像的周围添加额外的像素值,通常是零值。填充的作用主要有以下几点:

  • 防止图像边缘信息损失:在进行卷积操作时,卷积核一般是一个小窗口,在输入图像上滑动。如果没有填充,每次卷积核移动计算后,都会导致卷积的输出尺寸变小,最终可能使得输入图像的边缘信息丢失。而通过填充,可以在输入图像的周围添加额外的像素,使得卷积核在边缘处也能进行完整的计算,从而保留输入图像的边缘特征。
  • 增加输出的高和宽:填充可以增加输出的高和宽,使得输出尺寸更加接近输入尺寸。例如,对于一个尺寸为 的输入图像,使用尺寸为 的卷积核进行卷积操作,如果不进行填充,输出尺寸为 和 ,其中 为步幅。如果在输入图像周围添加 层填充,输出尺寸变为 和 。可以看出,填充可以增加输出的高和宽。
  • 允许网络从输入数据的边缘学习更多特征信息:零填充是在输入数据的周围添加一圈零值,目的是保持原始数据的分布不变,并允许网络从输入数据的边缘学习更多的特征信息。在卷积神经网络中,常用零填充来控制卷积操作的输出尺寸,以保持与网络输入的要求相匹配。通过零填充,我们可以在卷积过程中保留输入数据的边缘特征,并且能够更好地处理边缘像素。这种技术在图像处理中特别有用,因为它可以防止边缘信息在卷积过程中被丢失,从而提高网络的性能和准确度。

(二)步幅

步幅(Stride)是卷积操作中的另一个关键因素。步幅是指卷积核在输入数组上滑动的行数和列数。例如,步幅为 表示卷积核每次在输入数组上滑动一个像素的位置,而步幅为 表示卷积核每次在输入数组上滑动两个像素的位置。步幅的作用主要有以下几点:

  • 影响输出形状:步幅可以改变卷积窗口在输入数组上的滑动行数和列数,从而影响输出形状。例如,对于一个尺寸为 的输入图像,使用尺寸为 的卷积核进行卷积操作,如果步幅为 ,输出尺寸为 和 。可以看出,步幅越大,输出尺寸越小。
  • 减少计算量:较大的步幅可以减少卷积操作的计算量,因为卷积核在输入数组上滑动的次数减少了。这对于处理大规模图像数据非常有用,可以提高计算效率。
  • 改变感受野大小:步幅还可以改变卷积操作的感受野大小。感受野是指卷积核在输入数组上看到的区域大小。较大的步幅会导致感受野减小,而较小的步幅会导致感受野增加。这可以影响网络对不同特征的感知能力,从而影响网络的性能。

四、卷积的实际应用

(一)图像降噪平滑操作中的卷积应用

在图像处理中,卷积有着广泛的应用,特别是在图像降噪和平滑操作方面。其中,均值卷积核和高斯滤波是两种常见的方法。

1. 均值卷积核

  • 原理:均值滤波是最简单的一种滤波操作,用一片图像区域的各个像素的均值来代替原图像中的各个像素值。均值滤波的卷积核中每个像素的权重相等,一般是一个全为 1 的矩阵。对于 RGB 图像,需要对每一个通道都进行求均值操作。例如,对于一个 3x3 的均值卷积核,其作用过程是将卷积核在图像上滑动,将核的锚点放在特定位置的像素上,同时,核内的其他值与该像素邻域的各像素重合。然后对卷积核内的所有像素值求平均,将所得结果放到与锚点对应的像素上。对图像所有像素重复上述过程。
  • 效果:优点是操作简单,效率高,易于实现。但缺点也很明显,不能很好地保护图像细节,在图像去噪的同时也破坏了图像的细节部分,从而使图像变得模糊,不能很好地去除噪声点。

2. 高斯滤波

  • 原理:高斯滤波是一种线性平滑滤波,广泛应用于图像滤波领域,即图像去噪。它对于抑制服从正态分布的噪声非常有效,正态分布的噪声也就是高斯噪声。高斯滤波是将所有信号进行加权平均的过程,信号中的每个值,均由其本身和邻域内的其他信号值经过加权平均后得到。具体操作是用一个模板掩模对信号中的每个值进行扫描,用模板确定邻域内信号的加权平均值来替换模板中心值。在图像处理中,用一个用户指定的模板(或称卷积、掩膜)去扫描图像中的每一个像素,用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值。二维的高斯函数为: ,其中 为点坐标, 是标准差。要得到一个高斯滤波器的模板,可以对高斯函数进行离散化,得到的高斯函数值作为模板的系数。例如要产生一个 的高斯滤波器模板,以模板的中心位置为坐标原点进行取样,模板在各个位置的坐标根据高斯函数计算系数。
  • 效果:高斯滤波器相比于均值滤波器对图像的模糊程度较小。因为高斯滤波器的模板系数随着距离模板中心的增大而系数减小,而均值滤波器的模板系数都是相同的为 1。高斯滤波能够在平滑物体表面的同时,更好地保持图像的边缘和轮廓。通常情况下,为了尽量保留图像原有的信息,卷积核中心的权值应该最高,越远离核中心的权值越小。例如,对于一个 5x5 的高斯滤波模板,中间点的权值最大,向四周逐渐减小。一般来说,高斯滤波的标准差 决定了模板的系数分布。如果 较小,生成的模板的中心系数较大,而周围的系数较小,对图像的平滑效果就不是很明显;反之, 较大,则生成的模板的各个系数相差就不是很大,比较类似均值模板,对图像的平滑效果比较明显。

相关推荐

mysql中缓存开启和失效场景cache_mysql缓存机制有几种

--1.当前数据库是否支持缓存数据SHOWVARIABLESLIKE'have_query_cache';--2.当前数据库缓存数据库开关是否开启OFF/0未开启YES/...

MySQL常见错误及解决方法_mysql错误大全

MySQL是最常用的关系型数据库之一,在使用过程中也会遇到很多报错,本文列举了一些常见的错误及解决方法。1.Can'tconnecttoMySQLserver原因:MySQL服务未启...

牛哇!MySQL中的日志“binlog”的三种格式这么好玩

MySQL中的日志比较重要的有binlog(归档日志)、redolog(重做日志)以及undolog,那么跟我们本文相关的主要是binlog,另外两个日志松哥将来有空了再和大家详细介绍。1...

让我们在音乐中藏点儿东西吧_让我们在音乐的世界里

1不仅仅是音轨前阵子,新的Doom游戏中的一段音轨被人发现里面有隐藏的五角星图片以及“666”的字样,这不禁让我有了想尝试一下的想法。其实很早之前就知道可以通过多种方式将图片转换成声音,但是自己从...

《Python实现PPT转图片:高效批处理的技术路径》

Python处理PPT转图片的核心方案集中于两类库:基于COM接口的win32com.client,适用于Windows环境,通过调用PowerPoint程序API实现幻灯片逐页导出,支持指定分辨率...

实测o3/o4-mini:3分钟解决欧拉问题,OpenAI最强模型名副其实

号称“OpenAI迄今为止最强模型”,o3/o4-mini真实能力究竟如何?就在发布后的几小时内,网友们的第一波实测已新鲜出炉。最强推理模型o3,即使遇上首位全职提示词工程师RileyGoodsid...

如何用Python快速切割图片?_python把图片切割成固定大小的子图

安装一个叫做PIL的Python图像处理库,它可以让我们读取、裁剪和保存图片。准备一张要分割的图片,并把它放在一个文件夹里。比如这里有一张很长的漫画图片,命名为2023-07-29_100430.pn...

bmp转jpg脚本_bmp转化为jpg批量

我们在使用示波器时,经常会需要将波形通过U盘导出,一般这种导出的波形的都是bmp格式的,很多时候bmp格式的图片不方便使用,需要转换为jpg或png格式的。波形保存到U盘后,可以...

python模块安装问题汇总及解决办法

问题:pipinstallplaysound出错解决办法:pipinstallplaysound==1.2.2问题:pipinstall某个模块失败解决办法:可以去用这个模块的whl文...

Python处理图像_python怎么图像处理

入门知识颜色。如果你有使用颜料画画的经历,那么一定知道混合红、黄、蓝三种颜料可以得到其他的颜色,事实上这三种颜色就是美术中的三原色,它们是不能再分解的基本颜色。在计算机中,我们可以将红、绿、蓝三种色光...

python如何给图片添加文字水印?_python如何给图片添加文字水印

方法:方法简单粗暴,打开图片然后在合适的位置绘制文字,最后保存。python可以使用PIL库来操作图片,不过据说PIL不支持python3,使用pillow作为替代。安装pillow:pipins...

游戏外挂,用Python输过谁?_python写游戏辅助脚本教程

玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过如何做一个外挂呢?我打开了4399小游戏网,点开了一个不知名的游戏,唔,做寿司的,有材料在一边,客人过来后说出他们的要求,你按照菜单...

如何使用python裁剪图片?_python图片截取

如何使用python裁剪图片如上图所示,这是一张包含了各类象棋棋子的图片。我们需要将其中每一个棋子都裁剪出来,此时可以利用python的PIL库实现。一、安装PIL库如果此前没有安装过PIL库,...

Python图像处理神器!Pillow库从入门到精通,这教程太全了

Pillow是Python中一个强大的图像处理库,是PIL(PythonImagingLibrary)的分支和升级版本。本教程将介绍Pillow的基本用法和常见操作。##安装Pillow```p...

Python自动化办公应用学习笔记37—文件读写方法1

一、文件读写方法1.读取内容:read(size):读取指定大小的数据,如果不指定size,则读取整个文件。data=file.read(100)#读取前100字节readline():读取一...