卷积运算

内容选自吴恩达老师的深度学习课程当中,在此记录。以边缘检测为例,介绍卷积是如何进行运算的。

一、边缘检测示例

如何卷积python 如何卷积运算_如何卷积python


首先是垂直边缘检测,对左边的一个6×6的灰度图像进行卷积运算,中间3×3的即为我们通常说的核或者过滤器。从左边的矩阵左上角开始,利用过滤器在该矩阵上进行计算,对应元素相乘后求和,得到一个数值,例如左上角第一个3×3的矩阵,进行卷积后,得到右边4×4矩阵的第一个元素,即-5,以此类推。

如何卷积python 如何卷积运算_边缘检测_02


若以图像的形式进行展示,经过边缘检测后,卷积计算结果如上图所示。假设左边即为原始图像,由于像素分布的原因,左边亮,右边暗,经过卷积后,得到图像中的中间垂直边缘,即原始图像中明暗分割的地方。

如何卷积python 如何卷积运算_边缘检测_03


有垂直边缘检测,也有水平边缘检测,对垂直边缘检测的核旋转90度即可用于水平边缘检测,原理过程如上图所示。

总结:1.卷积即是在图像中利用过滤器进行操作,每次卷积计算后,都会缩小图像的尺寸。

2.卷积后得到的图像矩阵大小规律:

假设原图是n×n的矩阵,核为f×f,则进行卷积运算后,得到的矩阵为(n-f+1)×(n-f+1)

3.由于核的具体参数需针对不同情况进行设置,所以利用卷积神经网络对未知的核大小进行训练,得到具体参数。

二、padding

假设有100层的卷积层,对一张图像进行卷积后,每次卷积都会缩小图像的尺寸,结果得到一张尺寸很小的图像,因此,为了避免这一问题,在进行卷积运算之前可以先对图像进行填充操作。

如何卷积python 如何卷积运算_卷积_04


上图为老师讲解的过程截图,大概意思是首先对图像填充一层像素点,即原始的6×6变成了8×8,然后进行卷积运算,因此,得到的结果不是4×4,而是和原始图像一样的大小,即6×6。结果对应公式为:(n+2p-f+1)×(n+2p-f+1)

p=padding=1(在这里填充了一层即为1)

三、Valid and Same convolutions

如何卷积python 如何卷积运算_像素点_05


通常卷积有Valid(无填充)和Same(有填充)两种卷积方式

注:核大小为什么通常是奇数?

1.如果核为偶数,图像会进行不对称填充,为奇数时,Same卷积才会自然填充到整个图像。

2.奇数的核会有一个中心点,有一个中心像素点,便于找到核的位置。

视频链接:https://mooc.study.163.com/learn/2001281004?tid=2001392030#/learn/content?type=detail&id=2001729325&cid=2001724505