关联 Correlation
关联其实和深度学习常说的卷积操作是一样的,将 kernel 和 Image 按对应位置相乘再求和,即是关联操作的结果
以下代码为zero-padding图像的 (1, 1) 点与kernal 做关联操作的代码:
#Image after constant padding
PaddingImage = [[0, 0, 0, 0, 0, 0],
[0, 0, 0, 3, 2, 0],
[0, 5, 2, 8, 4, 0],
[0, 8, 3, 2, 5, 0],
[0, 2, 8, 4, 8, 0],
[0, 0, 0, 0, 0, 0]]
Kernel = [[0, 0, 0], [0, 5, 2], [8, 4, 8]]
#Image(1,1)
F11 = [[0, 0, 3], [5, 2, 8], [8, 3, 2]]
count = 0
for i in range(0, 3):
for j in range(0, 3):
if i == 2 and j == 2:
print(F11[i][j], ' × ', Kernel[i][j])
else:
print(F11[i][j], ' × ', Kernel[i][j], ' +')
count += F11[i][j]*Kernel[i][j]
print('= ', count)
其输出结果为:
0 × 0 +
0 × 0 +
3 × 0 +
5 × 0 +
2 × 5 +
8 × 2 +
8 × 8 +
3 × 4 +
2 × 8
= 118
卷积 Correlation
和我们在深度学习常说的卷积不太一样,那个其实是叫correlation
真正的卷积是将卷积核(Kernel)翻转180°之后再做correlation
以下代码为zero-padding图像的 (1, 1) 点与kernal 做卷积操作的代码:
#Image after constant padding
PaddingImage = [[0, 0, 0, 0, 0, 0],
[0, 0, 0, 3, 2, 0],
[0, 5, 2, 8, 4, 0],
[0, 8, 3, 2, 5, 0],
[0, 2, 8, 4, 8, 0],
[0, 0, 0, 0, 0, 0]]
Kernel = [[0, 0, 0], [0, 5, 2], [8, 4, 8]]
#Image(1,1)
F11 = [[0, 0, 3], [5, 2, 8], [8, 3, 2]]
count = 0
for i in range(0, 3):
for j in range(0, 3):
if i == 2 and j == 2:
print(F11[2-i][2-j], ' × ', Kernel[i][j])
else:
print(F11[2-i][2-j], ' × ', Kernel[i][j], ' +')
count += F11[2-i][2-j]*Kernel[i][j]
print('= ', count)
其输出结果为:
2 × 0 +
3 × 0 +
8 × 0 +
8 × 0 +
2 × 5 +
5 × 2 +
3 × 8 +
0 × 4 +
0 × 8
= 44