卷积运算
卷积运算是卷积神经网络的基本组成部分
以图像识别为例:神经网络的前几层检测边缘,在后面一些层可能检测到物体的部分,更靠后层可能检测到完整的物体
例如:下面这张图片
让计算机知道图中有什么物体,我们一般可能会检测图像中的垂直边缘,也就是图像中垂直的一些物体,比如栏杆,人的轮廓;
我们可能也会检测水平边缘比如栏杆水平方向的轮廓
如何在图像中检测这些边缘?
例:这是一个6x6的灰度图像,所以他是6x6x1的矩阵,而不是6x6x3;因为灰度图像并没有RGB三通道
为了检测图像中的垂直边缘,在卷积神经网络共用习惯中我们可以构造一个3x3的矩阵(在卷积神经网络的术语中,它被称为过滤器filter);而我们构造的3x3矩阵如下:
两者进行卷积运算
而卷积运算又是如何运算的呢?
将filter投影到图像矩阵中得到如下:
然后进行元素乘法运算并求和
则第一个值为:-5
将值写入第一个位置
而第二个元素又如何确定呢?
我们只需将filter右移一个位置得到一个新的投影并进行对应元素的相乘并求和
将值写入第二个位置
接下来一样继续右移继续计算元素相乘并求和
为了得到第二行的元素,则需要将filter向下移然后进行计算
因此 6x6矩阵和3x3矩阵进行卷积运算得到4x4矩阵
6x6的矩阵我们可以很容易可以理解为一张图像,3x3的矩阵filter被理解为过滤器,而两者经过卷积运算得到的4x4矩阵则可以理解为另一张图像
在编程语言中进行卷积运算有不同的函数:
python:conv_forwardt
tensorflow: tf.nn.conv2d
keras : Conv2D
为什么卷积运算可以进行边缘检测?
例:根据图像矩阵我们可以看出左边较亮右边较暗,且亮暗边缘很容易看到,我们对图像进行卷积运算
根据图像的亮暗可看作如下:
可以发现在经过卷积运算得到的矩阵中有段亮一点的区域对应检查到6x6图像的中间的垂直边缘
因为图像较小所以检测出边缘较宽,当图像维度大的时候你会发现会很好的检测出图像中的垂直边缘
卷积神经网络续接