矩阵卷积运算的具体过程,很简单

14 篇文章 0 订阅
10 篇文章 0 订阅

最近在看图像处理,卷积运算这一块也查了很多,但是感觉都写的太复杂,我这里简单的写一下卷积到底是一个什么计算过程。

假设有一个卷积核h,就一般为3*3的矩阵:

有一个待处理矩阵x:

h*x的计算过程分为三步

第一步,将卷积核翻转180°,也就是成为了

第二步,将卷积核h的中心对准x的第一个元素,然后对应元素相乘后相加,没有元素的地方补0。

这样结果Y中的第一个元素值Y11=1*0+2*0+1*0+0*0+0*1+0*2+-1*0+-2*5+-1*6=-16

第三步每个元素都像这样计算出来就可以得到一个输出矩阵,就是卷积结果

……………………

像这样计算,其他过程略了。

最后结果

注意:

我这里是用0补全原矩阵的,但我们不一定选择0。在Opencv的cvFilter2D函数中,就没有使用0来补全矩阵,而是用了边缘拷贝的方式

 

补充

另外在知乎上看到非常好也非常生动形象的解释,特意复制粘贴过来。(知乎马同学的解释)

从数学上讲,卷积就是一种运算。
某种运算,能被定义出来,至少有以下特征:
1.首先是抽象的、符号化的
2.其次,在生活、科研中,有着广泛的作用

比如加法:
1.a+b,是抽象的,本身只是一个数学符号
2.在现实中,有非常多的意义,比如增加、合成、旋转等等

卷积,是我们学习高等数学之后,新接触的一种运算,因为涉及到积分、级数,所以看起来觉得很复杂。

这里写图片描述

这两个式子有一个共同的特征:
这里写图片描述

这个特征有什么意义?

只看数学符号,卷积是抽象的,不好理解的,但是,我们可以通过现实中的意义,来习惯卷积这种运算,正如我们小学的时候,学习加减乘除需要各种苹果、糖果来帮助我们习惯一样。

我们来看看现实中,这样的定义有什么意义。

2 离散卷积的例子:丢骰子

我有两枚骰子:

这里写图片描述

把这两枚骰子都抛出去:
这里写图片描述

求:两枚骰子点数加起来为4的概率是多少?
这里问题的关键是,两个骰子加起来要等于4,这正是卷积的应用场景。

我们把骰子各个点数出现的概率表示出来:
这里写图片描述

那么,两枚骰子点数加起来为4的情况有:
这里写图片描述

这里写图片描述

这里写图片描述

因此,两枚骰子点数加起来为4的概率为:
f(1)g(3)+f(2)g(2)+f(3)g(1)

符合卷积的定义,把它写成标准的形式就是:

 

(f∗g)(4)=∑m=13f(4−m)g(m)

 

3 连续卷积的例子:做馒头

楼下早点铺子生意太好了,供不应求,就买了一台机器,不断的生产馒头。
假设馒头的生产速度是 f(t) ,那么一天后生产出来的馒头总量为:
∫240f(t)dt


馒头生产出来之后,就会慢慢腐败,假设腐败函数为 g(t) ,比如,10个馒头,24小时会腐败:
10∗g(t)
想想就知道,第一个小时生产出来的馒头,一天后会经历24小时的腐败,第二个小时生产出来的馒头,一天后会经历23小时的腐败。
如此,我们可以知道,一天后,馒头总共腐败了:
∫240f(t)g(24−t)dt
这就是连续的卷积。

  • 109
    点赞
  • 313
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
卷积神经网络(Convolutional Neural Network,CNN)的核心是卷积操作。卷积操作的本质是信号处理中的一种运算,主要用于信号处理和图像处理领域中的特征提取。下面是卷积神经网络卷积具体过程。 假设我们有一张 $5\times5$ 的图像,它的像素值为: $$ \begin{bmatrix} 1 & 2 & 1 & 2 & 1 \\ 2 & 3 & 2 & 3 & 2 \\ 1 & 2 & 1 & 2 & 1 \\ 2 & 3 & 2 & 3 & 2 \\ 1 & 2 & 1 & 2 & 1 \\ \end{bmatrix} $$ 我们需要用一个 $3\times3$ 的卷积核对该图像进行卷积操作,卷积核是一个可学习的参数,一般由随机初始化的权重组成。假设卷积核的值为: $$ \begin{bmatrix} -1 & -1 & -1 \\ -1 & 8 & -1 \\ -1 & -1 & -1 \\ \end{bmatrix} $$ 卷积操作的过程如下: 1. 将卷积核沿着图像的每个位置进行滑动,每次取出一个 $3\times3$ 的子矩阵(即与卷积核形状相同的矩阵),并将该子矩阵卷积核对应元素相乘,然后求和,得到一个标量。 $$ \begin{bmatrix} 1 & 2 & 1 \\ 2 & 3 & 2 \\ 1 & 2 & 1 \\ \end{bmatrix} \otimes \begin{bmatrix} -1 & -1 & -1 \\ -1 & 8 & -1 \\ -1 & -1 & -1 \\ \end{bmatrix} = (1\times(-1) + 2\times(-1) + 1\times(-1) + 2\times(-1) + 3\times8 + 2\times(-1) + 1\times(-1) + 2\times(-1) + 1\times(-1)) = 17 $$ 2. 将得到的标量作为结果图像中对应位置的像素值(即第一行第一列的像素值为 17)。 3. 依次将卷积核沿着图像的每个位置进行滑动,重复步骤 1 和步骤 2,得到一个 $3\times3$ 的输出矩阵。 $$ \begin{bmatrix} 17 & 2 & 17 \\ 4 & 5 & 4 \\ 17 & 2 & 17 \\ \end{bmatrix} $$ 这就是一个简单卷积操作的过程卷积神经网络中会有多个卷积核,在进行卷积操作时,每个卷积核都会产生一个输出矩阵,最终将这些输出矩阵拼接起来,得到一个更高维度的输出。
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值