
视频元信息
- 课程来源:吴恩达深度学习专项课程(Deep Learning Specialization)
- 所属模块:卷积神经网络(CNN)—— 语义分割与 U-Net 架构
- 本节主题:转置卷积(Transposed Convolution)
- 视频时长:约 7 分 38 秒
内容摘要(TL;DR)
本节讲解转置卷积(Transposed Convolution)的核心机制。它是 U-Net 架构的关键组成部分,能够将小尺寸输入(如 2×2)放大为大尺寸输出(如 4×4)。视频通过逐步演示,详细说明了滤波器如何放置在输出上、如何按步长平移、如何处理重叠区域相加,最终得到放大的输出结果。
一、转置卷积的引入与背景 [00:03]
转置卷积是 U-Net 架构的关键组成部分。
- 核心问题:如何将 2×2 的输入放大为 4×4 维度的输出?
- 解决方案:转置卷积(Transposed Convolution)可以实现这一目标。
与普通卷积的对比 [00:19]
普通卷积的典型流程:
- 输入:6×6×3 的图像
- 滤波器:一组 3×3×3×3 的滤波器(共 5 个)
- 输出:4×4×5(尺寸缩小)
转置卷积的流程:
- 输入:2×2 的激活值
- 滤波器:3×3
- 输出:4×4(尺寸变大,大于原始输入)
重点:普通卷积是"从大到小"(降采样),转置卷积是"从小到大"(升采样)。这是两者最本质的区别。
理解:转置卷积并不是普通卷积的逆运算,而是一种可学习的上采样方式。它的"转置"之名来源于矩阵运算中卷积矩阵的转置形式,但在实际实现中是通过特定的填充和步长操作完成的。
二、详细示例的参数设定 [01:02]
为了演示从 2×2 到 4×4 的过程,视频设定了以下参数:
- 输入:2×2 的矩阵
- 目标输出:4×4
- 滤波器大小 F:3×3
- 填充 P:1(在输出上应用 1 层填充)
- 步长 S:2
参数总结:
| 参数 | 值 |
|---|---|
| 输入尺寸 | 2×2 |
| 滤波器尺寸 F | 3×3 |
| 填充 P | 1 |
| 步长 S | 2 |
| 输出尺寸 | 4×4 |
推导:转置卷积的输出尺寸公式为 output = (input - 1) × S - 2P + F。代入得 (2-1)×2 - 2×1 + 3 = 2 - 2 + 3 = 3,但视频中输出为 4×4。这说明视频中采用的是简化的"放置-相加"演示方法,实际框架中的输出尺寸计算需结合具体填充策略。
易错点:转置卷积的输出尺寸计算容易与普通卷积混淆。普通卷积是"向下取整"缩小,转置卷积是"放大"。实际使用中建议直接查阅框架文档(如 PyTorch 的
ConvTranspose2d)确认输出尺寸。
三、转置卷积的核心机制:滤波器放在输出上 [01:53]
与普通卷积的关键区别
- 普通卷积:将滤波器放在输入上,进行乘加求和
- 转置卷积:将滤波器放在输出上,而不是输入上
理解:这是转置卷积最反直觉的地方。普通卷积是"滑动窗口在输入上扫描",转置卷积是"把输入值乘以滤波器后'粘贴'到输出上"。可以理解为:输入的每个元素都"膨胀"成一个滤波器大小的块,然后按步长放置到输出中。
逐步计算演示
第一步:处理输入左上角元素(值为 2)[02:16]
- 取输入值 2,乘以滤波器中的每一个值
- 得到一个 3×3 的输出块
- 将其放置在输出的对应位置
- 填充区域不包含任何值,忽略填充区域
- 只保留红色高亮区域的 4 个值:
- 左上角:0×2 = 0
- 第二个:1×2 = 2
- 下方:2×2 = 4
- 右侧:1×2 = 2
第二步:处理输入第二个元素(值为 1)[03:17]
- 取输入值 1,乘以滤波器的每个元素
- 由于步长 S=2,将复制框向右平移 2 步
- 忽略填充区域,只复制绿色阴影区域
- 重叠区域处理:红色和绿色框重叠的地方,将两个值相加
- 已有值 2(来自第一个滤波器),加上绿色区域的第一个值 2
- 结果:2 + 2 = 4
- 后续值:0×1=0,2+0×1=2,然后 2,然后 1
重点:重叠区域必须相加,不能简单覆盖。这是转置卷积计算中最容易出错的地方。
第三步:处理输入左下角元素(值为 3)[04:52]
- 取输入值 3,乘以滤波器的每个元素
- 向下移动 2 步(因为步长 S=2)
- 填充到对应的 3×3 区域
- 计算结果:2×3=6,1×3=3,0×3=0,依此类推得到 3、6、3
第四步:处理输入最后一个元素(值为 2)[05:29]
- 取输入值 2,乘以滤波器的每个元素
- 将结果加到对应的块上
- 例如:1×2 = 2,加到对应位置
- 依此类推处理剩余元素
四、最终输出汇总 [05:55]
将所有 4×4 矩阵中的 16 个值相加,得到最终输出:
- 位置 (1,1):0
- 位置 (1,2):2 + 2 = 4
- 位置 (1,3):0
- 位置 (1,4):1
- 位置 (2,1):4 + 6 = 10
- 位置 (2,2):2 + 0 + 3 + 2 = 7
- 位置 (2,3):2 + 4 = 6
- 位置 (2,4):0
- 位置 (3,1):3 + 4 = 7
- 位置 (3,2):0
- 位置 (3,3):2
- 位置 (3,4):6
- 位置 (4,1):3 + 0 = 3
- 位置 (4,2):3
- 位置 (4,3):4
- 位置 (4,4):2
最终 4×4 输出矩阵:
0 4 0 1
10 7 6 0
7 0 2 6
3 3 4 2
思考:视频中吴恩达提到这个计算看起来"有点乱"(a little bit of a mess),因为他在已有数字上叠加书写。这恰恰说明转置卷积的手动计算确实比较繁琐,实际应用中都是由深度学习框架自动完成的。
五、为什么选择这种方式? [06:34]
吴恩达解释了为什么转置卷积采用这种计算方式:
- 将小输入转换为大输出有多种可能的方法
- 转置卷积恰好是一种有效的方法
- 当学习滤波器的所有参数时,转置卷积能给出好的结果
- 在 U-Net 的上下文中(即将学习的算法),这种方法表现良好
考点:转置卷积的价值不在于它的数学形式本身,而在于它是可学习的(滤波器参数通过反向传播学习)。这与简单的双线性插值等固定上采样方法有本质区别。
拓展:转置卷积在实际应用中存在"棋盘效应"(checkerboard artifact)问题——由于步长大于 1 时滤波器重叠不均匀,输出会出现棋盘状的伪影。常见的解决方案包括:使用步长为 1 的转置卷积配合其他上采样方法,或使用亚像素卷积(Sub-pixel Convolution / Pixel Shuffle)。
六、本节总结与承上启下 [07:06]
- 本节逐步演示了转置卷积如何将小输入(如 2×2)放大为大输出(如 4×4)
- 这是 U-Net 架构的关键构建块
- 本周编程练习中将实现并实践这一概念
- 下一节将把转置卷积放入完整的 U-Net 架构中,用于语义分割
关键标签/关键词
转置卷积 #TransposedConvolution #U-Net #语义分割 #上采样 #深度学习 #卷积神经网络 #CNN #吴恩达 #深度学习专项课程 #滤波器 #步长 #填充 #特征图放大 #棋盘效应
生成时间:2026-10-11 00:44:15 生成平台:VideoNote www.xygy.top