1、通过边缘检测认识卷积
\qquad
在使用神经网络进行图像识别时,神经网络的前几层需要完成对图像的边缘检测任务,所谓的边缘检测就是让计算机识别出一张图片的垂直边缘和水平边缘,如下图所示:
\qquad
加入当前有一张661的灰度图像,图像中的数字越小,表示图像的颜色越深,则通过以下卷积(符号为*)计算,可以得到一张新的441的图像,新图像中的中间部分便可以直观表现出原始图像的垂直边缘。
\qquad
其中,中间参与卷积运算的331的矩阵称为卷积核(kernal)或者过滤器(filter)。
2、Padding
\qquad
设定原图像的尺寸为
n
∗
n
n*n
n∗n,卷积核的维度为
f
∗
f
f*f
f∗f,则经过卷积计算只有的输出图像的尺寸为
(
n
−
f
+
1
)
∗
(
n
−
f
+
1
)
(n-f+1)*(n-f+1)
(n−f+1)∗(n−f+1)。从上述卷积计算过程可以发现,原图像边缘的像素点使用的次数远低于中间像素点的使用次数,为了充分利用边缘像素点的信息,可以通过Padding操作,在原图像的边缘添加额外的
p
p
p层像素点,之后使用 Padding之后的图像进行卷积操作,操作过程如下图所示:
\qquad
当Padding到原图像上的图像的层数
p
=
f
−
1
2
p=\frac{f-1}{2}
p=2f−1时,Padding之后的图像经过
f
∗
f
f*f
f∗f卷积层的卷积操作之后,得到的结果图像恰好和原图像的尺寸相同,为
n
∗
n
n*n
n∗n。卷积核的维度
f
f
f通常为奇数。
3、Strid Convelution
\qquad
在进行卷积操作时,卷积核每一次移动的步长(strid)不一定为1,也可以为大于1的其他数。则考虑了移动步长
s
s
s之后,一幅
n
∗
n
n*n
n∗n的图像,经过
p
p
p层padding操作,经过
f
∗
f
f*f
f∗f维度的卷积核进行卷积操作之后,可以得到结果图像的维度为:
⌊
n
+
2
p
−
f
s
+
1
⌋
∗
⌊
n
+
2
p
−
f
s
+
1
⌋
\lfloor{\frac{n+2p-f}{s}+1} \rfloor * \lfloor{\frac{n+2p-f}{s}+1}\rfloor
⌊sn+2p−f+1⌋∗⌊sn+2p−f+1⌋。 Stride convelution的示意图如下图所示:
4、RGB图像的卷积
\qquad
对于RGB图像,令一幅RGB图像的输入维度为
n
∗
n
∗
n
c
n*n*n_c
n∗n∗nc其中,前两个
n
n
n分别表示图像的高度和宽度,最后一个
n
c
n_c
nc维度表示图像的通道(channel)数量;对于RGB图像的卷积操作使用的卷积核的维度为
f
∗
f
∗
n
c
f*f*n_c
f∗f∗nc。最终输出的图像维度为:
(
n
−
f
+
1
)
∗
(
n
−
f
+
1
)
(n-f+1)*(n-f+1)
(n−f+1)∗(n−f+1)。可以使用不同类型的多个卷积核,从而增加输出图像的通道数,如使用2个不同的卷积核,则输出图像的维度为:
(
n
−
f
+
1
)
∗
(
n
−
f
+
1
)
∗
2
(n-f+1)*(n-f+1)*2
(n−f+1)∗(n−f+1)∗2。