博客标题:卷积神经网络的“尺子”与“画框”:一文看懂填充与步幅

发布日期: 2026年3月6日
标签: 人工智能, 深度学习, 卷积神经网络, 计算机视觉

在构建卷积神经网络(CNN)时,我们经常面临两个看似矛盾的需求:有时候我们希望图像经过处理后尺寸不变,保留所有细节;有时候我们又希望快速缩小图像尺寸,以减少计算量。如何实现这种灵活的控制?答案就在于两个关键的超参数——填充(Padding)步幅(Stride)

如果你觉得这两个词听起来很学术,没关系。我们可以把它们想象成处理图像时的“画框”和“尺子”。接下来,让我们通过通俗的比喻和实例,深入浅出地解析它们的工作原理。


一、 为什么要关注尺寸?(问题的由来)

在正式介绍填充和步幅之前,我们需要先了解一个基础公式。

假设你有一张 $240 \times 240$ 像素的照片(输入),你用一个 $5 \times 5$ 的“小窗口”(卷积核)在照片上滑动进行计算。你会发现,算出来的结果(输出)尺寸会变成 $236 \times 236$。虽然只少了4个像素,但如果你连续进行10层这样的计算,图像就会缩小到 $200 \times 200$。

这就好比用一把比原图稍短的尺子去量布,量一次就短一截。连续的卷积操作会导致图像迅速缩小,甚至丢失边缘的重要信息。

为了解决这个问题,我们需要引入“填充”和“步幅”这两个工具。


二、 填充(Padding):给图像加个“画框”

1. 什么是填充?
想象一下,你有一幅珍贵的画(输入图像),但画框太小,导致画的边缘被遮挡了。为了保护边缘并让画能放进标准尺寸的框里,你决定在画的四周贴上一圈白纸(通常是0值),然后再装框。

在深度学习中,**填充(Padding)**就是这个在图像边缘添加额外像素(通常是0)的过程。

2. 填充的作用

  • 保留边缘信息:不加填充时,图像角落的像素只被计算一次,而中心像素被计算多次。加了填充后,边缘像素也能作为“中心”参与运算,防止信息丢失。
  • 控制尺寸:通过巧妙地添加边框,我们可以让输出的图像尺寸和输入完全一样。

3. 一个简单的例子

  • 场景:输入图像 $8 \times 8$,卷积核 $3 \times 3$。
  • 如果不填充:输出会变成 $6 \times 6$(变小了)。
  • 如果填充:我们在图像四周各加1圈像素(Padding=1),图像变成 $10 \times 10$。经过卷积后,输出神奇地回到了 $8 \times 8$。
  • 结论:只要设置 padding = (kernel_size - 1) / 2(通常核大小是奇数),就能做到“进多少出多少”。

三、 步幅(Stride):调整“尺子”的跨度

1. 什么是步幅?
在前面的例子中,我们默认“小窗口”每次只移动1个像素。但如果这个窗口每次移动2个、3个甚至更多像素呢?

**步幅(Stride)**就是指卷积核在图像上滑动时,每次移动的像素数。

2. 步幅的作用

  • 快速降维:如果步幅设为2,窗口每次跳两格,扫过的区域就少了一半。这能大幅降低图像的宽度和高度。
  • 提高效率:当图像分辨率过高(比如4K照片)时,我们不需要那么精细的像素,利用大步幅可以快速提取特征,减少计算量。

3. 一个直观的例子

  • 场景:同样是一张大图,步幅为1时,我们需要计算100次;如果步幅设为2,我们只需要计算约25次(因为长宽都减半了)。
  • 效果:输出尺寸直接从 $100 \times 100$ 变成了 $50 \times 50$。

四、 总结:一张表看懂参数搭配

为了方便记忆,我们可以将这两个概念总结如下:

概念 俗称 核心功能 对图像尺寸的影响 典型设置
填充 (Padding) 加边框 保护边缘,防丢失 增大或保持尺寸 same (保持原尺寸)
步幅 (Stride) 跨大步 压缩数据,提效率 减小尺寸 2 (尺寸减半)

五、 结语

在现代深度学习框架(如PyTorch、TensorFlow)中,我们只需要在代码里简单设置 padding=1stride=2,就能轻松控制网络的结构。

理解了填充步幅,你就掌握了卷积神经网络中调整数据维度的“秘籍”。它们就像建筑中的地基和梁柱,决定了整个网络的结构稳定性与计算效率。下次在构建模型时,不妨多留意一下这两个参数的设置,看看它们是如何塑造你的特征图的。