U-Net Architecture

U-Net 架构简介
U-Net 架构分为两个主要部分:
- 下采样部分:通过普通的卷积层来压缩图像,从而丢失了一些空间信息,但同时增加了通道的深度。例如,中间的层可能表示图像右下角大致有一只猫,但由于空间分辨率较低,详细的空间信息丢失了。
- 上采样部分:通过转置卷积层将图像的尺寸逐渐放大,恢复到原始输入图像的大小。
Skip Connection (What)
为了更好地进行语义分割,U-Net 架构引入了跳跃连接(Skip Connection)的概念。跳跃连接的作用是将下采样部分的较低层的激活值直接复制到上采样部分的相应层。这样,上采样部分的层就可以同时拥有高层次的上下文信息和更细粒度的空间信息。
Skip Connection (Why)
在进行语义分割时,需要两种类型的信息:
- 高层次的上下文信息:这些信息告诉网络图像的哪一部分可能是猫。
- 低层次的空间信息:这些信息告诉网络每个像素位置的具体特征,如毛发等。
通过引入跳跃连接,网络可以在进行分割决策时同时利用这两种信息,从而更准确地判断某个像素是否属于猫的部分。
U-Net

U-Net 架构概览
U-Net 是一种用于语义分割的神经网络架构,由下采样(压缩)和上采样(扩展)两个主要部分组成。下采样部分使用普通的卷积层,上采样部分使用转置卷积层。
U-Net 的输入
输入是一个 h × w × 3 的图像,其中 h 和 w 分别是图像的高和宽,3 表示 RGB 三个颜色通道。
下采样部分
- 使用普通的卷积层和 ReLU 激活函数,逐渐增加通道的数量。
- 使用最大池化层减小图像的高和宽。
- 重复上述两个步骤,直到得到一个小尺寸但通道数较多的激活值。
上采样部分
- 使用转置卷积层增加图像的高和宽,同时减少通道的数量。
- 在每一层转置卷积后,添加一个跳跃连接(skip connection),将下采样部分的对应层的激活值复制到上采样部分的相应层。
- 使用普通的卷积层和 ReLU 激活函数。
- 重复上述三个步骤,直到图像的尺寸恢复到原始输入的尺寸。
输出层
- 使用 1 × 1 的卷积层将激活值映射到分割图。
- 输出层的尺寸是 h × w × num classes,其中 num classes 是需要识别的类别数。
- 对于每个像素,有一个长度为 num classes 的向量,表示该像素属于每个类别概率。
- 通过对这些概率向量取 argmax,可以得到每个像素的类别,从而得到分割图。
这样,U-Net 可以用于语义分割,即识别图像中的每个像素属于哪个类别。