练习:
构造一个输入图像X,如何设计卷积核K来检测图像中对角方向的边缘?
检测图像中物体的边缘,即找到像素变化的位置。
构造一个6*6大小由黑到白过渡的图像,0黑,1白。
代码:
x=torch.zeros(6,6)
for i in range(6):
for j in range(i+1):
x[i,j] = 1
print(x)
输出:
tensor([[1., 0., 0., 0., 0., 0.],
[1., 1., 0., 0., 0., 0.],
[1., 1., 1., 0., 0., 0.],
[1., 1., 1., 1., 0., 0.],
[1., 1., 1., 1., 1., 0.],
[1., 1., 1., 1., 1., 1.]])
构造一个卷积核K探测边缘:
代码:
wh=21
K=torch.tensor([[1],[-1]],dtype=torch.float32)
Y=corr2d(x,K)
print(Y)
wh=12
K=torch.tensor([[1,-1]],dtype=torch.float32)
Y=corr2d(x,K)
print(Y)
结果:
tensor([[ 0., -1., 0., 0., 0., 0.],
[ 0., 0., -1., 0., 0., 0.],
[ 0., 0., 0., -1., 0., 0.],
[ 0., 0., 0., 0., -1., 0.],
[ 0., 0., 0., 0., 0., -1.]])
tensor([[1., 0., 0., 0., 0.],
[0., 1., 0., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 1.],
[0., 0., 0., 0., 0.]])
从黑到白的边缘被检测成了-1或1,其余部分的输出全是0。
可以看出,卷积层可通过重复使用卷积核有效地表征局部空间。