深度学习|表示学习|卷积神经网络|Padding(填充)的用处是什么?|12
admin2025-08-10 10:47:44【世界杯比赛视频】
如是我闻: Padding(填充)是卷积操作中的一个重要概念,它的主要作用是在输入图像的边界上添加像素(通常填充 0)。Padding 的目的是解决卷积过程中 边界像素“丢失” 的问题,同时影响输出特征图的大小。
1. 为什么需要 Padding?
(1) 避免边界信息丢失
卷积核在输入图像上滑动时,通常只能覆盖图像的中心区域,边界区域由于缺少足够的覆盖范围,可能得不到充分处理。如果不使用 Padding,卷积操作会缩小输入图像的大小,导致边界信息逐层丢失。举例:
假设输入图像大小是 n×nn \times nn×n,卷积核大小是 k×kk \times kk×k,步长 s=1s = 1s=1,没有填充(p=0p = 0p=0)时:
输出大小=n−k+1
\text{输出大小} = n - k + 1
输出大小=n−k+1
可以看到每次卷积后图像尺寸都会变小。例如:
n=5n = 5n=5, k=3k = 3k=3 时,输出大小变为 3×33 \times 33×3。再叠加一层卷积,输出会变为 1×11 \times 11×1。
这种逐层缩小的效果会让深度网络中较早的边界信息消失。
(2) 控制输出特征图的大小
如果希望输入和输出的大小一致(即保持边界完整),可以通过 Padding 在输入图像边界补充像素。这种方式在特征提取中非常常用,尤其在卷积神经网络中。
2. Padding 的常见类型
Padding 的方式有多种,最常见的是以下几种:
(1) Zero Padding
在输入图像的边界添加值为 0 的像素。优点:
不会引入新的特征信息,只用于扩展边界。
应用场景:
最常见的填充方式,尤其在图像处理中,Zero Padding 几乎是默认选项。
(2) Reflect Padding
边界的像素值由图像内容反射生成。例如:
原图=[1,2,3]
\text{原图} = [1, 2, 3]
原图=[1,2,3]
Padding 后:
反射填充=[2,1,1,2,3,3]
\text{反射填充} = [2, 1, 1, 2, 3, 3]
反射填充=[2,1,1,2,3,3]优点:
避免引入“全 0”像素的影响,保持边界像素的自然性。
(3) Replicate Padding
边界像素的值直接复制。例如:
原图=[1,2,3]
\text{原图} = [1, 2, 3]
原图=[1,2,3]
Padding 后:
复制填充=[1,1,1,2,3,3]
\text{复制填充} = [1, 1, 1, 2, 3, 3]
复制填充=[1,1,1,2,3,3]优点:
保持边界像素一致性,适用于特定边界敏感的场景。
3. Padding 的作用总结
(1) 控制输出大小
Padding 会影响输出特征图的大小。如果没有填充(p=0p = 0p=0),每次卷积操作都会让输入图像缩小。如果希望输入输出大小一致,可以选择适当的 Padding 值:
p=k−12
p = \frac{k - 1}{2}
p=2k−1
其中 kkk 是卷积核的大小。例如:
k=3k = 3k=3,p=1p = 1p=1,输出大小保持不变。
(2) 保留边界信息
Padding 可以让卷积核覆盖到输入图像的边界像素,避免边界信息被忽略。没有 Padding 的情况下,边界像素对特征图几乎没有贡献。
(3) 增强特征提取的稳定性
在深层卷积网络中,随着层数加深,输入尺寸会逐渐减小。如果没有 Padding,卷积核将只能提取图像中心的特征,边界特征容易被丢失。通过 Padding,可以保留更多全局信息,使网络提取的特征更全面。
总的来说
Padding 的主要作用是:
控制输出大小:让卷积操作后,输入和输出的尺寸可以一致。避免边界信息丢失:保留输入图像的边界特征,使其参与卷积运算。提升网络表达能力:更好地提取图像的全局和边界特征。
以上