724 字
2 分钟
卷积
直观理解卷积
卷积本质上就是”加权求和”——用一个小的窗口(卷积核)在输入上滑动,每个位置都做一次对应元素相乘再求和。
通俗点说:你不是在单独看每个像素,而是在看它和周围邻居的”关系”。
数学定义
一维离散卷积
可以理解为:把序列 y 翻转,然后平移 k 位,与 x 对应位置相乘求和。
二维离散卷积(图像处理用的)
图像处理里用到的是”互相关”(cross-correlation),因为卷积核通常是对称的,所以实际计算时直接就是卷积核与对应位置像素相乘求和,不需要翻转。深度学习框架(PyTorch、TensorFlow)里的 Conv2D 实际做的就是互相关运算。
图像处理中的应用
不同的卷积核提取不同的特征,下面是几个常见的:
| 卷积核 | 效果 |
|---|---|
| 平滑/模糊核(均值滤波) | 去噪,但边缘也会模糊 |
| Sobel 算子(边缘检测) | 提取水平/垂直边缘 |
| 高斯核 | 加权平滑,中心权重高,边缘权重低 |
| 锐化核 | 增强边缘和细节 |
一个简单的边缘检测核(Sobel 水平方向):
-1 0 1-2 0 2-1 0 1这个核能检测到图像中水平方向上的亮度变化。
在 CNN 中的角色
传统图像处理中,卷积核的值是人为设定的(比如上面那个 Sobel 核)。而在深度学习的卷积神经网络(CNN)里,卷积核的值是通过反向传播自动学习出来的,网络自己决定要提取什么样的特征。
几个关键点:
- 局部连接:每个神经元只看输入的一个局部区域(感受野),不像全连接层那样看全局,参数少了很多
- 权值共享:同一个卷积核在整个输入图上滑动,参数是共享的,进一步减少参数量
- 层次化特征:浅层卷积核学到的往往是边缘、纹理之类的低级特征,深层卷积核学到的是更抽象的高级特征(如人脸、物体部件)
代码示例
用 PyTorch 实现一个简单的卷积操作:
import torchimport torch.nn.functional as F
# 模拟一张单通道 5x5 图像image = torch.randn(1, 1, 5, 5)
# 定义一个 3x3 的卷积核(边缘检测)kernel = torch.tensor([[[[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]]], dtype=torch.float32)
# 做卷积,padding=1 保持输出尺寸不变output = F.conv2d(image, kernel, padding=1)print(output.shape) # torch.Size([1, 1, 5, 5])小结
卷积这个操作从传统的信号处理一路用到深度学习,核心思想没变——用一个局部窗口提取模式。区别只在于:传统方法里核是写死的,CNN 里核是学出来的。理解卷积的滑动窗口机制,对理解 CNN 的整体结构帮助很大。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
相关文章 智能推荐
1
损失函数
笔记 详细介绍损失函数的概念,重点讲解Dice损失的计算公式、应用场景以及在PyTorch中的实现。
2
评价指标封装
笔记 介绍深度学习中评价指标的封装方法,包括精确度、IOU和F1分数的计算实现。
3
旋转矩阵:三维空间中的线性变换艺术
笔记 详细介绍旋转矩阵的数学定义、性质、构造方法、运算规则、优势与局限,以及在计算机图形学、机器人学等领域的应用。
4
四元数:三维旋转的优雅数学
笔记 详细介绍四元数的数学定义、乘法规则、与三维旋转的关系、优越性以及在计算机图形学、机器人学等领域的应用。
5
欧拉角:三维旋转的直观语言
笔记 详细介绍欧拉角的基本思想、数学表达、几何解释、万向节锁问题、应用领域以及与其他旋转表示的关系。






