视频封面

视频元信息

  • 课程来源:吴恩达深度学习专项课程(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