图像卷积
卷积操作是指将一个滤波器(也称为卷积核或内核)应用于输入图像的小块区域,然后将滤波器在整个图像上滑动,逐步计算出输出特征图。这个过程可以帮助网络学习到图像的局部特征,因为每个卷积核都可以学习到不同的特征,比如边缘、纹理等。
例如想要平滑以下图像,将原图转化为一个灰度图矩阵 A
然后用下面这个平均矩阵(说明下,原图的处理实际上用的是正态分布矩阵,这里为了简单,就用了算术平均矩阵)来平滑图像:
g
=
[
1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
1
9
]
g=\left[ \begin{matrix} {1\over 9} & {1\over 9} & {1\over 9} \\ {1\over 9} & {1\over 9} & {1\over 9} \\ {1\over 9} & {1\over 9}&{1\over 9} \end{matrix} \right]
g=
919191919191919191
记得刚才说过的算法,把高频信号与周围的数值平均一下就可以平滑山峰。比如我要平滑
a
1
,
1
a_{1,1}
a1,1点,就在矩阵中,取出
a
1
,
1
a_{1,1}
a1,1点附近的点组成矩阵f,和g进行卷积计算后,再填回去:
写成公式就是:(其中i,j在例子中为1)
(
f
∗
g
)
(
i
,
j
)
=
∑
a
∑
b
f
(
a
,
b
)
g
(
i
−
a
,
j
−
b
)
(f*g)(i,j)=\sum_a \sum_b f(a,b)g(i-a,j-b)
(f∗g)(i,j)=a∑b∑f(a,b)g(i−a,j−b)
计算
c
4
,
5
c_{4,5}
c4,5也是同样的步骤,以此类推计算其他的点,相当于实现了g矩阵在f矩阵上的滑动。
卷积层操作
而在CNN中的卷积层,严格来说其实是互相关运算,而不是卷积运算。卷积层用于进行互相关运算的卷积核是卷积运算中g翻转180度后的矩阵。