【pytorch实现】用卷积核检测图中对角方向边缘(小练习)

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

猜你喜欢

转载自blog.csdn.net/laozaoxiaowanzi/article/details/107354150