吴恩达深度学习课程四:计算机视觉 第一周:卷积基础知识(二)卷积参数

此分类用于记录吴恩达深度学习课程的学习笔记。

课程相关信息链接如下:

  1. 原课程视频链接:[双语字幕]吴恩达深度学习deeplearning.ai
  2. github课程资料,含课件与笔记:吴恩达深度学习教学资料
  3. 课程配套练习(中英)与答案:吴恩达深度学习课后习题与答案

本篇为第四课的第一周内容,1.41.5的内容。


本周为第四课的第一周内容,这一课所有内容的中心只有一个:计算机视觉 。应用在深度学习里,就是专门用来进行图学习的模型和技术,是在之前全连接基础上的"特化",也是相关专业里的一个重要研究大类。
这一整节课都存在大量需要反复理解的内容和机器学习、数学基础。 因此我会尽可能的补足基础,用比喻和实例来演示每个部分,从而帮助理解。

本篇的内容关于卷积参数,就像全连接层有很多参数一样,卷积也有很多可以调整的地方。

1. Padding

Padding 的中文可以翻译为"填充",但实际在学术和技术讨论中,大部分人更习惯于使用英文原词,尤其是在编程和文献中,"Padding"已经成为一个标准术语。

在正式介绍 Padding 前,我们先对卷积中的一些基本参数进行符号说明,好方便之后使用。

1.1 卷积的基本符号表示

来看一下卷积中的一些基本表示:

如图所示,再简单列举一下:

  • \(n\) 表示输入特征图的空间尺寸(通常指宽或高)。
  • \(f\) 表示卷积核的尺寸(同样指宽或高)。

而经过一层最基本的卷积操作,我们可以发现输出图像的尺寸可以表示为:

\[n-f+1 \]

但是这样就会出现一个问题:我们通过卷积核来提取特征,会让图片变小。

就像对一篇文章进行概括,概括一次让 100 个字变成 20 个字,再概括一次就成 5 个字,再概括就只剩下 1 个字了。

一个"好"或者"坏",真的能展示一整篇文章的内容吗?

卷积也是同样的道理,如果不进行处理,那么卷积就会让图片不断变小,信息丢失

此外,还有一个问题:每个像素的使用不平均,边缘信息被更少的扫描了。

卷积核在滑动时,只能完全覆盖在图像内部的位置 ,边缘那一圈天然"吃亏",被卷积核扫过的次数更少。

如何解决这些问题?答案就是 Padding 。

1.2 什么是 Padding ?

用英文听起来可能有些高大上,但 Padding 的逻辑很简单:既然边缘不够大,那就在四周"垫一点东西"进去。

简单来说:就是围着输入图像再加上一圈或几圈像素

现在便在引入一个新的符号规范:
我们用 \(p\) 表示 Padding 的大小,用于说明在图像四周填充了多少像素。

而对于用什么填充,也有一些相应的方法:

  • 在图像四周增加 0 值像素(称为 zero padding)
  • 或者根据某些规则复制原图边缘的像素

我们就用 zero padding 来演示:

同样,你会发现 \(p\) 的增加有这样的规律:

\[p每增加 1,n 增大 2 \]

因此,在加入 Padding ,我们就会再次更新从输入尺寸到输出尺寸的公式:

现在,输出图像的一边尺寸就变成了:

\[n-f+2p+1 \]

这样,图片变小和边缘使用少的问题就都会得到改善。

继续下一部分。

1.3 valid 卷积和 same 卷积

这是两种在 Padding 有所区别的卷积方式,简单介绍一下:

(1)valid 卷积(无填充)

"valid" 的字面意思是"有效的"。

对应到我们前面的符号,就是:

\[p = 0 \]

于是输出尺寸就还是:

\[n - f + 1 \]

这类卷积常用于希望逐步压缩空间尺寸、提取更抽象特征的网络结构中。

(2)same 卷积(输出与输入同尺寸)

"same" 的意思是希望输出与输入在空间尺寸上 保持一样大

为了维持尺寸不变,我们必须人为加 Padding,让这个公式成立:

\[n - f + 2p + 1 = n \]

整理得到:

\[p = \frac{f - 1}{2} \]

这也是为什么里卷积核常用 奇数尺寸(如 3、5、7) ,因为奇数能让 \(p\) 刚好取整数,否则 same 卷积就无法实现。

same 卷积的意义是:让每一层都在提取特征的同时,不缩小空间尺寸,从而保留更"密集"的空间细节。 这也是我们在卷积网络中普遍选择的卷积方式。

对于 Padding 部分就先到这里,接下来看看另一个参数:步长。

2. 卷积步长(stride)

卷积除了 "卷积核大小""Padding 要不要填" 外,还有一个非常关键的参数:步长 stride 。如果说卷积核是在"看图",Padding 是在"补图",那 stride 就决定了它"走路的方式"。

简单来说,stride 控制的是:卷积核每次滑动时,移动多少格。

继续引入一个符号规范:
我们用 \(s\) 表示 stride 的大小,用于说明卷积核每次滑动时移动的距离。

之前的内容里,实际上 stride 一直存在,在默认情况下,它的值是:

\[s = 1 \]

意思是:每次往右或往下移动 1 个像素

就像你在看一本小说,每翻一页都要翻到紧挨着的下一页,这样你不会漏掉任何内容。

但如果把 stride 调大,比如:

\[s = 2 \]

那就变成每次跳两个格子再看下一块区域。

就像你看画册时,每次跳着翻两页------信息当然会变"稀疏"一些。

但是当步长增加时,也会出现一种新的情况:

当卷积核有部分移动到图像外时,就不进行该次卷积运算,而是继续滑动至下一个完全覆盖位置或者结束。

实际上,\(s = 1\) 时也是这个逻辑。

因此,这副图像的卷积过程是这样的:

而 stride 的调整也会改变输出特征图的尺寸,输出公式也要随之更新:

\[\text{输出尺寸}=\left\lfloor\frac{n - f + 2p}{s}\right\rfloor + 1, 注:\lfloor向下取整\rfloor \]

同时你会发现,在上图中,如果不进行"溢出"运算,会让一部分像素丢失。
因此,选择 \(f\) 与 \(s\) 时尽量保证输出尺寸为整数,或显式使用 padding 使其对齐。

总结一下:

  • s 越大,输出越小,计算量越小,感知范围越大。
  • s 越小(最常见是 1),输出保留更密。

这便是卷积的另一个参数:步长 stride。

这一节课程中额外补充了一点:在数学里,卷积并不是上面这样的相乘相加,它在此前会进行一步翻转,我们进行的卷积在数学里叫做互相关。

但是在深度学习里,我们省略了这一步骤,因为我们的卷积核是不断更新的,我们在惯例,在论文里的卷积操作指的就是我们上面所介绍的。了解就好,就不再展开了。

3. 总结

概念 原理 比喻
Padding(填充) 在输入图像四周补上 \(p\) 层像素,使卷积核能在更多位置滑动;解决输出变小、边缘利用不足的问题。输出尺寸公式:\(n-f+2p+1\) 像给白板贴边框,让贴纸(卷积核)能贴到更靠外的区域,不要让边缘吃亏。
valid 卷积 不做填充,\(p=0\),输出会变小:\(n-f+1\) 像剪纸时只剪"能完整落在纸上的图案",边缘那点不够大的就不要了。
same 卷积 通过设置 \(p=\frac{f-1}{2}\) 让输出尺寸保持与输入一样大。必须使用奇数卷积核尺寸。 像在桌面四周加垫子,让桌布(卷积结果)铺好后刚好和原桌面一样大。
stride(步长) 卷积核每次移动的距离,用 \(s\) 表示。决定卷积核的扫描密度。输出尺寸公式:\(\left\lfloor\frac{n-f+2p}{s}\right\rfloor+1\) s=1 是逐格检查;s=2 是"隔一个扫一个",像翻相册时跳着看。
stride 与信息保留 s 越大,输出越小、计算更省,但特征更稀疏;s 越小,信息保留越多。 像在地上画方块跳格子:跳得越大,踩到的格子越少。
为什么卷积要向下取整 卷积核必须完全落在图像内才能计算,溢出部分不做卷积,因此输出尺寸要取 \(\lfloor\cdot\rfloor\)。 像在桌子上摆杯垫,必须完全落在桌面上才能放,否则就算不进去。
卷积 vs 数学卷积 数学中的卷积会翻转核,但深度学习里省略这步,直接做"互相关",因为核会被训练。 像做饭时直接根据口味调整调料,不一定非要照传统食谱翻锅步骤。
相关推荐
All The Way North-17 分钟前
[实战分享] PyTorch实战:手机价格区间分类(95%准确率)+ 模型保存/加载/loss波动全解析
pytorch·深度学习·实战教程·全连接神经网络案例·手机价格区间分类·神经网络全过程
有Li22 分钟前
一种用于超分辨率磁共振波谱成像的基于流的截断去噪扩散模型/文献速递-基于人工智能的医学影像技术
论文阅读·深度学习·文献·医学生
童话名剑41 分钟前
迁移学习示例 和 数据增强(吴恩达深度学习笔记)
笔记·深度学习·数据增强·迁移学习
deephub1 小时前
DeepSeek 开年王炸:mHC 架构用流形约束重构 ResNet 残差连接
人工智能·python·深度学习·神经网络·残差链接
王哈哈^_^1 小时前
【完整源码+数据集】道路交通事故数据集,yolo车祸检测数据集 7869 张,交通事故级别检测数据集,交通事故检测系统实战教程
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·毕业设计
大模型铲屎官1 小时前
【操作系统-Day 46】文件系统核心探秘:深入理解连续分配与链式分配的实现与优劣
人工智能·python·深度学习·大模型·操作系统·文件系统·计算机组成原理
Rabbit_QL2 小时前
【深度学习基础】互相关与卷积的本质区别及在深度学习中的应用
人工智能·深度学习
AI小怪兽2 小时前
YOLO-Master:基于混合专家模型加速与专用变换器的增强实时检测
人工智能·深度学习
Android系统攻城狮2 小时前
XUbuntu22.04之视频编辑利器:kdenlive剪切视频片段+自动转码输出(二百八十七)
ai·音视频·视频转码·视频编辑·xubuntu22.04
王哈哈^_^3 小时前
【完整源码+数据集】道路拥塞数据集,yolo道路拥塞检测数据集 8921 张,交通拥堵识别数据集,路口拥塞识别系统实战教程
深度学习·算法·yolo·目标检测·计算机视觉·分类·毕业设计