Module 03 · Object Detection
U-Net ArchitectureU-Net 架构
在本视频中,我们将深入探讨 U-Net架构 的细节。U-Net 是计算机视觉中最重要、最基础的神经网络架构之一,广泛应用于许多图像分割任务。接下来,我们将一步一步分解它的工作原理。让我们开始吧!
U-Net架构概览
首先,让我们看看 U-Net 的整体架构。虽然这张图看起来信息量很大,但我们会分步解析,确保每个部分的细节都能清楚理解。
U-Net的名字由来:这种架构之所以叫做 U-Net,是因为当你将其绘制出来时,整体形状像字母 "U"。

U-Net架构的组成
U-Net 的输入通常是一个图像,尺寸为 h × w × 3,表示 RGB 三个通道的彩色图像。为了简化图示,我们将图像表示为一个薄层,只看到图像的边缘,其他部分被隐藏在深蓝色矩形后面。
- 输入图像的尺寸:h 是高度,w 是宽度,3 表示 RGB 通道数。
- 为了简化表示,我们使用矩形而不是三维形状来绘制。
U-Net的构建:逐步分析
1前半部分:常规卷积层
在 U-Net 的前半部分,我们使用标准的前馈神经网络卷积层。我们用 黑色箭头 来表示卷积层,后面跟着一个 ReLU 激活函数。
- 在前几层中,输入图像的高度和宽度会逐渐减小,但通道数会增加。
2Max Pooling
为了进一步降低图像的高度和宽度,我们使用 最大池化(Max Pooling) 操作。通过池化,我们获得了较小尺寸但更“浓缩”的激活信息,且通道数继续增加。
3更多的卷积层和池化操作
- 我们再添加两层标准的卷积层和激活函数。
- 然后再次应用池化操作,使得输出图像的尺寸变得更小,直到达到最小的激活图尺寸。
4进入后半部分:转置卷积(Transpose Convolution)
当网络的中间部分达到较小尺寸后,我们开始使用 转置卷积(Transpose Convolution),也称为反卷积。我们用 绿色箭头 表示转置卷积操作,它的作用是逐步将网络的尺寸扩大。
- 第一层转置卷积 输出的激活图尺寸不变,但通道数会减少。
跳跃连接(Skip Connections):提升效果的关键
跳跃连接是 U-Net 的一个核心特性。它通过将早期层的激活图直接传递到后期层,帮助保留更多的空间细节信息。
- 灰色箭头 表示跳跃连接。它将前一层的激活图复制并传递给后面的层,增强了细节信息。
跳跃连接的作用
- 跳跃连接可以让网络获得 低层次的高分辨率特征信息,同时结合 高层次的上下文信息。这使得网络在进行像素级别的分类时,能够更好地捕捉到细节。
继续构建U-Net
我们继续构建 U-Net:
- 经过转置卷积层后,我们会继续使用常规卷积层来进一步处理激活图。
- 随着层数的增加,图像的高度和宽度逐渐恢复,直到接近输入图像的尺寸。
- 每次经过转置卷积和跳跃连接,网络都会逐步增强输出的空间分辨率。
最终输出:语义分割结果
- 当网络处理完成后,我们会通过一个 1×1卷积 来生成最终的分割图(Segmentation Map)。我们用 品红色箭头 表示这一操作。
- 输出的尺寸为 h × w × num_classes,其中 num_classes 代表类别数。
- 如果有 3 个类别,则输出的维度为 h × w × 3;如果有 10 个类别,则输出维度为 h × w × 10。
如何生成分割图?
- 对于每个像素,我们都会得到一个 n维向量,每个维度代表该像素属于每个类别的概率。
- 通过对这个向量进行 argmax 操作,我们可以将每个像素分类到对应的类别,生成最终的 语义分割图。
总结与展望
至此,您已经了解了 U-Net 的架构和如何利用它进行语义分割。通过转置卷积、跳跃连接等关键操作,U-Net 能够在保留上下文信息的同时恢复图像的空间细节,从而实现高效的像素级分类。
下周,我们将讨论一些面向人脸识别和风格迁移的专用架构,您还将有机会使用神经网络创作有趣的艺术作品。祝您在本周的编程练习中取得成功,期待下周与您见面!🚀