1.边界检测示例
假如你有一张如下的图像,你想让计算机搞清楚图像上有什么物体,你可以做的事情是检测图像的垂直边缘和水平边缘。
如下是一个6*6的灰度图像,构造一个3*3的矩阵,在卷积神经网络中通常称之为filter,对这个6*6的图像进行卷积运算,以左上角的-5计算为例
3*1+0*0+1*-1+1*1+5*0+8*-1+2*1+7*0+2*-1 = -5
其它的以此类推,让过滤器在图像上逐步滑动,对整个图像进行卷积计算得到一幅4*4的图像。
为什么这种卷积计算可以得到图像的边缘,下图0表示图像暗色区域,10为图像比较亮的区域,同样用一个3*3过滤器,对图像进行卷积,得到的图像中间亮,两边暗,亮色区域就对应图像边缘。
通过以下的水平过滤器和垂直过滤器,可以实现图像水平和垂直边缘检测。
以下列出了一些常用的过滤器,对于不同的过滤器也有着不同的争论,在卷积神经网络中把这些过滤器当成我们要学习的参数,卷积神经网络训练的目标就是去理解过滤器的参数。
2. padding
在上部分中,通过一个3*3的过滤器来对6*6的图像进行卷积,得到了一幅4*4的图像,假设输出图像大小为n*n与过滤器大小为f*f,输出图像大小则为(n−f+1)∗(n−f+1)(n−f+1)∗(n−f+1)。
这样做卷积运算的缺点是,卷积图像的大小会不断缩小,另外图像的左上角的元素只被一个输出所使用,所以在图像边缘的像素在输出中采用较少,也就意味着你丢掉了很多图像边缘的信息,为了解决这两个问题,就引入了padding操作,也就是在图像卷积操作之前,沿着图像边缘用0进行图像填充。对于3*3的过滤器,我们填充宽度为1时,就可以保证输出图像和输入图像一样大。
padding的两种模式:
Valid:no padding
输入图像n*n,过滤器f*f,输出图像大小为:(n−f+1)∗(n−f+1)(n−f+1)∗(n−f+1)
Same:输出图像和输入图像一样大
3.卷积步长
卷积步长是指过滤器在图像上滑动的距离,前两部分步长都默认为1,如果卷积步长为2,卷积运算过程为:
加入stride后卷积图像大小的通用计算公式为:
输入图像:n*n,过滤器:f*f步长:s,padding:p
输出图像大小为:⌊(n+2p−fs+1))⌋∗⌊(n+2p−fs+1)⌋⌊(n+2p−fs+1))⌋∗⌊(n+2p−fs+1)⌋,⌊⌋⌊⌋表示向下取整
以输入图像7*7,过滤器3*3,步长为2,padding模式为valid为例输出图像大小为:⌊(7+2∗0−32+1)⌋∗⌊7+2∗0−32+1)⌋=3∗3⌊(7+2∗0−32+1)⌋∗⌊7+2∗0−32+1)⌋=3∗3
4.彩色图像的卷积
以上讲述的卷积都是灰度图像的,如果想要在RGB图像上进行卷积,过滤器的大小不在是3*3而是有3*3*3,最后的3对应为通道数(channels),卷积生成图像中每个像素值为3*3*3过滤器对应位置和图像对应位置相乘累加,过滤器依次在RGB图像上滑动,最终生成图像大小为4*4。
另外一个问题是,如果我们在不仅仅在图像总检测一种类型的特征,而是要同时检测垂直边缘、水平边缘、45度边缘等等,也就是多个过滤器的问题。如果有两个过滤器,最终生成图像为4*4*2的立方体,这里的2来源于我们采用了两个过滤器。如果有10个过滤器那么输出图像就是4*4*10的立方体。
5.单层卷积网络
通过上一节的讲述,图像通过两个过滤器得到了两个4*4的矩阵,在两个矩阵上分别加入偏差b1b1和b2b2,然后对加入偏差的矩阵做非线性的Relu变换,得到一个新的4*4矩阵,这就是单层卷积网络的完整计算过程。用公式表示:

本文介绍了卷积神经网络的基本概念,包括边界检测、卷积步长、padding等,并详细解释了如何通过不同类型的过滤器检测图像特征。还讨论了池化层的作用及常见卷积网络结构。
最低0.47元/天 解锁文章
1088





