练习:
构造一个输入图像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。
可以看出,卷积层可通过重复使用卷积核有效地表征局部空间。