​《动手学深度学习》-学习笔记-5.1. 二维卷积层​

本文详细解释了如何设计卷积核来检测图像中的水平和对角边缘,涉及手动设计卷积核、使用PyTorch的nn.Conv2d进行自动梯度计算,并探讨了如何通过全连接层进行边缘检测的非标准方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 问题:
构造一个输入图像X,令它有水平方向的边缘。如何设计卷积核K来检测图像中水平边缘?如果是对角方向的边缘呢?
解答:

我的理解:检验水平就水平方向上不同

X = torch.ones(6, 8)
X[2:5,:] = 0
print('X :')
print(X)

K = torch.tensor([[-1, -1] ,[1, 1]])
print('K :')
print(K)

Y = corr2d(X, K)
print('Y :')
print(Y)


------------------------------------------------------

X = torch.ones(6, 8)
X[:, 2:6] = 0
X
K = torch.tensor([[1, -1]])
K
Y = corr2d(X, K)
Y

在图像处理和计算机视觉中,卷积神经网络(Convolutional Neural Networks, CNNs)通过使用卷积核(或滤波器)来检测图像中的特定特征。卷积核是一个小的矩阵,用于与输入图像的局部区域进行点乘操作,从而提取图像的特征。

水平方向的边缘检测

要检测图像中的水平边缘,你需要设计一个卷积核,该卷积核能够响应水平变化。水平边缘可以通过检测图像行中的亮度变化来识别。一个简单的卷积核,用于检测水平边缘,可能如下所示:

[-1, 0, 1]

这个卷积核也被称为Sobel Gx核。它在中间列的权重为0,而在两边列的权重分别为-1和1。当你将这个卷积核应用于图像时,它会在边缘像素处产生高响应,因为边缘像素的亮度与相邻像素的亮度有显著差异。

对角方向的边缘检测

对于对角方向的边缘,你需要一个能够检测图像对角线方向变化的卷积核。一个简单的卷积核,用于检测45度对角边缘,可能如下所示:

[-1, -1, -1] [ 0, 0, 0] [ 1, 1, 1]

这个卷积核也被称为Prewitt核或Sobel Gy核。它在对角线上的权重为-1和1,而在非对角线上的权重为0。当这个卷积核应用于图像时,它会在对角线方向的边缘像素处产生高响应。

应用卷积核

在实际应用中,卷积核的大小和形状可以根据需要进行调整。例如,使用3x3或5x5的卷积核可以提供更精细的边缘检测。此外,还可以使用多个卷积核来检测不同方向的边缘,然后将结果合并以获得更全面的边缘信息。

在卷积神经网络中,这些卷积核通常是通过学习得到的,网络会在训练过程中自动调整卷积核的权重,以便更好地检测和识别图像中的特征。然而,对于简单的边缘检测任务,上述手工设计的卷积核可以作为一个很好的起点。

2
问题:
试着对我们自己构造的Conv2D类进行自动求梯度,会有什么样的错误信息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值