《Python人脸识别:从入门到工程实践》 ——2.4 卷积
2.4 卷积
卷积,通俗意义讲就是加权求和,其中的权值矩阵称为加权模板,也称为卷积核或滤波器。通过使用不同的卷积核,我们可以实现对图像的模糊处理、边缘检测、图像分割等功能。常用的卷积主要为一维卷积、二维卷积等,由于图像是离散信号,故本书所接触的卷积均为离散卷积。其中,一维卷积主要用在自然语言处理和序列模型中,二维卷积主要应用在计算机视觉领域中。
2.4.1 一维卷积
卷积运算的符号为,例如一维离散卷积的定义式可以表示如下:
图2-2 一维离散卷积的计算过程示意图
下面举例说明卷积运算过程:
设a=[1,2],b=[4,5,6],在卷积中,序列的下标索引从0开始,索引中不存在的元素一般使用0代替,如a(-1)=0、a(2)=0、a(0)=1。卷积的计算过程如图2-2所示。
我们从图2-2中可以看到,将a=[1,2]作为卷积核,对数据b=[4,5,6]进行卷积。根据公式,首先将卷积核倒序一下,就变成了[2,1]。将该卷积核在数据上进行滑动,分别求这两个向量点乘之结果。那么经过上述4个步骤,最终会得到4个数值,将这4个数值组合起来形成的序列即为卷积所得的结果。
我们可以发现,卷积核开始卷积的起始位置为图2-2中第1步所示的情况,该种情况下原始数据会存在“空位”,通常用0来填充,即所谓的零填充(zero padding)。通过这种形式卷积出来的结果会比原始数据中的元素数量还要多,称之为full形式的卷积。也可以选择以第2步所示的情况作为卷积的起始位置,这种情况下数据自然不需要零填充,称为valid形式的卷积。还有另外一种卷积,卷积出来的结果与原始数据中的元素数量相同,称为same形式的卷积。
我们以full形式的卷积为例,可以得到计算公式如下:
其中a向量与b向量分别为相互卷积的序列,N=max(length(a),length(b))。
其计算过程为:
所以最终我们可以得到向量a与向量b之间卷积的结果:c=[4,13,16,12]我们看到,卷积的计算过程中有一个倒序的过程,其实不倒序的话,也可以进行运算,只不过不是卷积运算而是互相关运算。互相关与卷积计算虽然在形式上有这样一个不同点,但是在数学意义上的区别却不大。
- 点赞
- 收藏
- 关注作者
评论(0)