- 摘要
- 1 Introduction
- 2 Network Architecture
- 3 Training
- 3.1 Data Augmentation
- 4 Experiments
- 5 Conclusion
- 背景知识
- 卷积
- 激活函数
- 池化
- 上采样、上池化、反卷积
- softmax 归一化函数
- 交叉熵损失
Olaf Ronneberger, Philipp Fischer, Thomas Brox
Paper:https://arxiv.org/abs/1505.04597
U-net 实现、训练好的网络和补充材料可在以下网址获取:http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net
摘要
在深度网络的成功训练中,通常需要成千上万个带注释的训练样本已成为共识。在本文中,我们提出了一种网络结构及其训练策略,旨在通过强大的数据增强技术,更高效地利用现有的带注释样本。该网络架构由两个部分组成:一个用于捕捉上下文信息的收缩路径和一个对称的扩展路径,用于实现精确的定位。我们证明了,这样的网络可以通过极少量的图像进行端到端训练,并且在 ISBI 挑战赛中对电子显微镜图像堆栈中的神经元结构分割任务表现优于之前的最佳方法(滑窗卷积网络)。此外,使用相同的网络在透射光显微图像(相差显微和微分干涉对比显微)上进行训练后,我们在 2015 年 ISBI 细胞追踪挑战赛的这些类别中以显著优势获胜。更进一步,该网络的速度非常快:在一块最新的 GPU 上,分割一张 512x512 的图像耗时不到一秒。完整的实现(基于 Caffe)以及训练好的网络可以在以下地址获取:http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net
1 Introduction
在过去两年中,深度卷积网络在许多视觉识别任务中超越了以往的最佳表现(例如 [7, 3])。尽管卷积网络早已存在很长时间 [8],但其成功受限于可用训练集的规模以及网络本身的规模。Krizhevsky 等人在 [7] 中的突破在于,他们在 ImageNet 数据集上使用 100 万张训练图像,对一个具有 8 层和数百万参数的大型网络进行了监督训练。从那时起,更大且更深的网络也被成功训练 [12]。
卷积网络的典型应用是分类任务,在这种任务中,输入一张图像,输出一个单一的类别标签。然而,在许多视觉任务中,尤其是 在生物医学图像处理中,期望的输出不仅需要分类,还需要包含 定位信息,即需要为 每个像素分配一个类别标签。此外,在生物医学任务中,通常无法获得数千张训练图像。为了解决这一问题,Ciresan 等人在 [1] 中提出了一种 滑窗设置(sliding-window setup)下的网络训练方法。他们通过提供以目标像素为中心的局部区域(patch)作为输入,训练网络预测每个像素的类别标签。这种方法首先解决了定位问题,其次,基于局部区域生成的训练数据远多于原始的训练图像数量。利用这种方法训练的网络在 ISBI 2012 的电子显微镜分割挑战中以巨大优势获胜。
显然,Ciresan 等人在 [1] 中提出的策略存在两个缺点。首先,由于网络必须对每个小块(patch)分别运行,并且由于小块之间的重叠导致了大量的冗余,因此速度非常慢。其次,在定位精度和上下文使用之间存在权衡:较大的小块需要更多的最大池化(max-pooling)层,从而降低定位精度,而 较小的小块则使网络只能利用非常有限的上下文信息。更近期的一些方法 [11,4] 提出了 结合多个层特征的分类器输出,使得良好的定位精度和上下文利用能够同时实现。
定位精度:网络能够准确地标定每个像素属于哪一类的能力。在处理图像时,定位精度高意味着网络能够很好地识别图像中的细节和边界。
上下文使用:网络能够看到的图像范围。
- 较大的 patch 包含更多的上下文信息,网络可以基于更广泛的区域做出决策,理解图像中的全局结构;
- 但需要进行更多的池化操作来减少图像的尺寸,池化操作会丢失一些精细的空间信息,导致定位精度的降低;并且带来更多的计算和重叠区域,增加了计算量。
比如细胞分割任务中,若使用较小的 patch(如 32x32 像素),网络能够更精确地标定细胞的边界,但它无法理解细胞与细胞之间、或细胞与背景之间的相对位置关系。而如果使用较大的 patch(如 128x128 像素),虽然网络能够学习到更多细胞间的距离、背景区域等,但定位细节可能会模糊。
在本文中,我们基于一种更优雅的架构,即所谓的“全卷积网络”(fully convolutional network)[9],对其进行了修改和扩展,使其能够在极少量的训练图像下运行并生成更精确的分割结果(参见图 1)。[9] 中的 核心思想是通过连续的层来补充一个通常的收缩网络,在这些层中,池化操作被上采样操作替代,从而提高输出的分辨率。为了实现定位,来自收缩路径的高分辨率特征会与上采样的输出相结合。然后,通过一个连续的卷积层,网络可以基于这些信息学习生成更精确的输出。
池化操作(或步幅卷积)确实会降低特征图的“像素级”分辨率——也就是特征图的宽高在逐层减小。但与此同时,每一个像素(feature cell)所“看到”的输入图像区域(接受域)却在不断扩大。
- 浅层(细节/定位信息):一个特征图单元只对应输入图像中很小的区域(比如 3×3 或 5×5 的局部邻域),它学到的是 非常“局部”的纹理和边缘。
- 深层(语义/上下文信息):经过多次池化和卷积后,一个单元对应输入图像中可能上百像素、甚至整个细胞的区域,它能够 整合更远距离的信息,从而 提取出更“全局”的结构和语义。
当网络在浅层只能判断“这里是不是一条边缘”,到了深层,它能结合许多条边缘、纹理模式甚至整个细胞轮廓来判断“这里是不是细胞体”或“这是细胞核还是细胞质”。
“分辨率下降”不等于“语义丧失”:就像把整张图不断缩小,到了很小的版本,虽然看不到细节,但你依然能分辨出大致的形状(例如:这是一个圆还是一个矩形)。
图 1. U-net 网络结构(以最低分辨率为 32x32 像素为例)。每个蓝色框表示一个多通道特征图,框顶部标注了通道数量,框左下角标注了 x-y 尺寸。白色框表示复制的特征图,箭头表示不同的操作步骤。
简单来说,网络同时使用来自不同卷积层的特征:通过将低层和高层特征结合,能够使网络在保持较高定位精度的同时,也能利用到更丰富的上下文信息,从而实现两者的平衡。
- 收缩路径深层 的那些“小尺寸”特征图,正是捕捉“整体结构+上下文关系”的载体。
- 扩展路径 会对它们进行上采样,恢复到较高分辨率,同时再与对应的浅层细节特征拼接,二者互补:深层+上采样 → 全局/语义;浅层 → 局部/细节。
我们网络架构中的一个重要改进是在上采样部分也保留了大量的特征通道,这使得网络能够将上下文信息传播到更高分辨率的层中。因此,扩展路径与收缩路径大致对称,形成了一个 U 形的架构。网络没有任何全连接层,并且仅使用每次卷积的有效部分(valid part),即分割图仅包含输入图像中具有完整上下文的像素。这种策略通过 重叠拼块(overlap-tile)策略(见图 2)实现了任意大小图像的无缝分割。为了预测图像边缘区域的像素,缺失的上下文通过对输入图像进行 镜像外推 来补充。这种拼块策略对于处理大图像至关重要,因为否则分辨率将受到 GPU 内存的限制。
图 2. 重叠拼块策略(Overlap-tile strategy),用于无缝分割任意大小的图像(此处为电子显微镜图像堆栈中的神经结构分割)。对黄色区域进行分割预测时,需要蓝色区域内的图像数据作为输入。缺失的输入数据通过镜像外推填补。
在实际应用中,输入图像可能非常大,超出 GPU 内存的限制,无法直接处理整个图像。
- 拼块策略:将大图像划分为较小的子块进行处理,每个子块独立通过网络预测,然后将 所有子块的输出拼接成完整的分割结果。
- 重叠区域:子块之间有重叠区域,以避免块之间的拼接边缘出现伪影(即不连续的分割结果)。
由于我们的任务中可用的训练数据非常少,我们通过 对现有训练图像应用弹性变形(elastic deformations)进行 大量数据增强。这使得网络能够 学习对这些变形的不变性,而无需在带注释的图像数据集中直接看到这些变换。这在生物医学分割中特别重要,因为形变是组织中最常见的变化,而真实形变可以高效地模拟。Dosovitskiy 等人在 [2] 中已经证明,数据增强在无监督特征学习中对于学习不变性具有重要价值。
在许多细胞分割任务中,另一个挑战是将同类接触的物体分开(见图 3)。为此,我们提出了一种 加权损失函数,其中在接触细胞之间的分隔背景标签在损失函数中被赋予较大的权重。
图 3. 使用差分干涉对比显微镜(DIC)记录的玻片上的 HeLa 细胞。(a) 原始图像。(b) 叠加了真实分割的图像,不同颜色表示不同的 HeLa 细胞实例。( c) 生成的分割掩膜(白色:前景,黑色:背景)。(d) 像素级损失权重图,用于强制网络学习边界像素。
结果表明,该网络适用于多种生物医学分割问题。在本文中,我们展示了对电子显微镜图像堆栈中神经元结构分割的结果(该任务是从 ISBI 2012 开始的一个持续性竞赛),我们的表现优于 Ciresan 等人在 [1] 中的网络。此外,我们还展示了在 ISBI 2015 细胞追踪挑战赛中的光学显微图像细胞分割结果。在最具挑战性的两个二维透射光数据集上,我们以显著优势获胜。
2 Network Architecture
网络架构如图 1 所示,包含一个收缩路径(左侧)和一个扩展路径(右侧)。
收缩路径 遵循典型的卷积网络架构,包括 两次 3x3 卷积(无填充卷积,步长为 1)的重复应用,每次卷积后接一个修正线性单元(ReLU) 和一个 带步长为 2 的 2x2 最大池化操作,用于下采样。在每次 下采样 步骤中,我们将 特征通道的数量加倍。
在 U-Net 的架构中,通道数和特征图尺寸的变化是由卷积操作的核数量和步幅(stride)决定的。
- 每次卷积操作的通道数:卷积核的数量决定了输出通道数。在收缩路径(左侧路径)中,通常会选择一个较小的通道数起点(如 1 或 3),然后 逐层递增(如 64 → 128 → 256),以提取更多层级的特征。
- 图像尺寸变化:尺寸变化是由卷积核大小和填充策略(padding)决定的,
输出尺寸 = ( 输入尺寸 − 卷积核大小 + 2 × 填充 ) / 步幅 + 1 \text{输出尺寸} = (\text{输入尺寸} - \text{卷积核大小} + 2 \times \text{填充}) / \text{步幅} + 1 输出尺寸=(输入尺寸−卷积核大小+2×填充)/步幅+1
这里,每次卷积使用的核大小为 3 × 3 3 \times 3 3×3,步幅为 1,填充为 0(没有 padding),所以每次卷积后尺寸减小 2。
扩展路径 的每一步包括 对特征图进行上采样,接着是一个 2x2 卷积(“上卷积”),它 将特征通道数量减半,并 与来自收缩路径中对应裁剪的特征图进行拼接。然后,应用两次 3x3 卷积,每次卷积后接一个 ReLU。由于每次卷积都会导致边界像素的损失,因此需要进行裁剪操作。在最终层,使用一个 1x1 卷积将每个具有 64 个分量的特征向量映射到所需的类别数量。整个网络共有 23 个卷积层。
为了实现输出分割图的无缝拼接(见图 2),选择输入块的大小时必须确保所有 2x2 最大池化操作都应用在 x 和 y 尺寸为偶数的层上。
3 Training
输入图像及其对应的分割图被用于在 Caffe [6] 的随机梯度下降(SGD)实现上训练网络。由于未填充卷积的特性,输出图像比输入图像在边界上小一个固定宽度。为了最大限度地减少开销并充分利用 GPU 内存,我们倾向于使用较大的输入块而非较大的批量大小,因此将批量大小减少到单张图像。相应地,我们使用较高的动量(0.99),以便在当前优化步骤中,大量之前见过的训练样本对更新起作用。
能量函数通过对最终特征图的逐像素 softmax 操作以及交叉熵损失函数计算得到。softmax 的定义为:
p k ( x ) = exp ( a k ( x ) ) ∑ k ′ = 1 K exp ( a k ′ ( x ) ) p_k(\mathbf x) = \frac{\exp(a_k(\mathbf x))}{\sum_{k'=1}^{K} \exp(a_{k'}(\mathbf x))} pk(x)=∑k′=1Kexp(ak′(x))exp(ak(x))
其中, a k ( x ) a_k(\mathbf x) ak(x) 表示在像素位置 x ∈ Ω \mathbf x \in \Omega x∈Ω (其中 Ω ⊂ Z 2 \Omega \subset \mathbb{Z}^2 Ω⊂Z2)的第 k k k 个特征通道上的激活值, K K K 是类别的数量, p k ( x ) p_k(\mathbf x) pk(x) 是近似的最大函数,满足:当 a k ( x ) a_k(\mathbf x) ak(x) 最大时, p k ( x ) ≈ 1 p_k(\mathbf x) \approx 1 pk(x)≈1,对于其他 k k k, p k ( x ) ≈ 0 p_k(\mathbf x) \approx 0 pk(x)≈0。
交叉熵通过以下公式,在每个像素位置惩罚 p ℓ ( x ) ( x ) p_{\ell(\mathbf x)}(\mathbf x) pℓ(x)(x) 偏离 1 的情况:
E = ∑ x ∈ Ω w ( x ) log ( p ℓ ( x ) ( x ) ) (1) E = \sum_{\mathbf x \in \Omega} w(\mathbf x) \log(p_{\ell(\mathbf x)}(\mathbf x)) \tag{1} E=x∈Ω∑w(x)log(pℓ(x)(x))(1)
其中, ℓ : Ω → { 1 , … , K } \ell : \Omega \to \{1, \ldots, K\} ℓ:Ω→{1,…,K} 是每个像素的真实标签, w : Ω → R w : \Omega \to \mathbb{R} w:Ω→R 是我们引入的权重图,用于在训练中赋予某些像素更高的重要性。
我们预先计算每个真实分割的权重图,以补偿训练数据集中某一类别像素的频率差异,并强制网络学习我们在接触细胞之间引入的小的分隔边界(见图 3c 和 d)。
分隔边界通过形态学操作计算得到。然后,权重图通过以下公式计算:
w ( x ) = w c ( x ) + w 0 ⋅ exp ( − ( d 1 ( x ) + d 2 ( x ) ) 2 2 σ 2 ) (2) w(\mathbf x) = w_c(\mathbf x) + w_0 \cdot \exp \left( - \frac{(d_1(\mathbf x) + d_2(\mathbf x))^2}{2\sigma^2} \right) \tag{2} w(x)=wc(x)+w0⋅exp(−2σ2(d1(x)+d2(x))2)(2)
其中, w c : Ω → R w_c : \Omega \to \mathbb{R} wc:Ω→R 是用于平衡类别频率的权重图, d 1 : Ω → R d_1 : \Omega \to \mathbb{R} d1:Ω→R 表示到最近细胞边界的距离, d 2 : Ω → R d_2 : \Omega \to \mathbb{R} d2:Ω→R 表示到第二最近细胞边界的距离。在我们的实验中,我们设置 w 0 = 10 w_0 = 10 w0=10 和 σ ≈ 5 \sigma \approx 5 σ≈5 像素。
在具有许多卷积层和不同路径的深度网络中,良好的权重初始化非常重要。否则,网络的某些部分可能会产生过度激活,而其他部分则从不参与。理想情况下,初始权重应该进行调整,使得网络中的每个特征图具有大致相等的方差。对于我们的架构(交替使用卷积层和 ReLU 层),这可以通过从高斯分布中提取初始权重来实现,高斯分布的标准差为 2 / N \sqrt{2/N} 2/N,其中 N N N 表示一个神经元的输入节点数 [5]。例如,对于 3x3 的卷积和前一层的 64 个特征通道, N = 9 × 64 = 576 N = 9 \times 64 = 576 N=9×64=576。
3.1 Data Augmentation
数据增强对于在仅有少量训练样本的情况下,教会网络所需的不变性和鲁棒性特性至关重要。在显微镜图像的情况下,我们主要需要平移和旋转不变性,以及对形变和灰度值变化的鲁棒性。特别是,训练样本的随机弹性形变似乎是用极少的标注图像训练分割网络的关键概念。我们通过在粗略的 3x3 网格上使用随机位移向量生成平滑的形变。这些位移是从标准差为 10 像素的高斯分布中采样的。然后,使用双三次插值计算每个像素的位移。收缩路径末尾的丢弃层(Drop-out layers)进一步执行隐式数据增强。
4 Experiments
我们展示了 u-net 在三个不同分割任务中的应用。第一个任务是电子显微镜图像中的神经结构分割。数据集的一个例子及我们获得的分割结果显示在图 2 中。我们将完整结果作为补充材料提供。该数据集由 EM 分割挑战赛 [14] 提供,该挑战赛始于 ISBI 2012,并仍然接受新的贡献。训练数据集是由 30 张图像(512x512 像素)组成,来源于果蝇第一龄幼虫腹神经索(VNC)的串联切片透射电子显微镜图像。每张图像都有一个相应的完全标注的地面实况分割图,分割内容包括细胞(白色)和膜(黑色)。测试集是公开的,但其分割图保持保密。通过将预测的膜概率图发送给组织者,可以获得评估结果。评估通过在 10 个不同阈值下对图进行阈值化,并计算“变形误差”、“Rand 误差”和“像素误差” [14] 来进行。
u-net(对输入数据的 7 个旋转版本进行平均)在没有任何进一步预处理或后处理的情况下,达到了 0.0003529 的变形误差(新的最佳得分,见表 1)和 0.0382 的 Rand 误差。这显著优于 Ciresan 等人 [1] 提出的滑动窗口卷积网络结果,其最佳提交的变形误差为 0.000420,Rand 误差为 0.0504。在 Rand 误差方面,唯一表现更好的算法是使用高度特定于数据集的后处理方法,这些方法应用于 Ciresan 等人 [1] 的概率图。
表 1. EM 分割挑战赛排名 [14](2015年3月6日),按变形误差排序。
我们还将 u-net 应用于光学显微镜图像中的细胞分割任务。这个分割任务是 ISBI 细胞追踪挑战赛 2014 和 2015 的一部分 [10,13]。第一个数据集“PhC-U373”包含在聚丙烯酰胺基底上的胶质母细胞瘤-星形胶质细胞 U373,通过相位对比显微镜记录(见图 4a,b 和补充材料)。它包含 35 张部分标注的训练图像。在这里,我们达到了 92% 的平均交并比(IOU),显著优于第二名算法的 83%(见表 2)。第二个数据集“DIC-HeLa”包含通过差分干涉对比(DIC)显微镜记录的平面玻璃上的 HeLa 细胞(见图 3、图 4c,d 和补充材料)。它包含 20 张部分标注的训练图像。在这里,我们达到了 77.5% 的平均交并比,显著优于第二名算法的 46%。
图 4. ISBI 细胞追踪挑战赛结果。 (a) “PhC-U373”数据集的输入图像部分。 (b) 分割结果(青色蒙版)与手动地面实况(黄色边框)。 ( c) “DIC-HeLa”数据集的输入图像。 (d) 分割结果(随机彩色蒙版)与手动地面实况(黄色边框)。
表 2. ISBI 细胞追踪挑战赛 2015 的分割结果(IOU)。
5 Conclusion
u-net 架构在非常不同的生物医学分割应用中表现出色。由于采用了弹性形变的数据增强,它只需要非常少的标注图像,并且在 NVidia Titan GPU(6 GB)上训练时间仅为 10 小时,训练时间非常合理。我们提供了基于 Caffe [6] 的完整实现和训练好的网络。我们相信,u-net 架构可以轻松应用于更多的任务。
U-net 实现、训练好的网络和补充材料可在以下网址获取:http://lmb.informatik.uni-freiburg.de/people/ronneber/u-net
背景知识
卷积
卷积 操作本质是 对输入特征图上的局部区域计算加权和,用卷积核(权重)与特征图的值逐点相乘,再将结果相加,得到一个单一的值。
对于 多通道卷积:
因为要对每一个通道的像素值进行卷积运算,所以每一个卷积核的通道数量必须要与输入通道数量保持一致。
假设 卷积核只有 1 个,每一个通道的像素值与对应的卷积核通道的数值(即内核)进行卷积,注意 不同通道上的内核的参数并不相同。
输出的特征图 Feature map 是一个通道,因为卷积核只有 1 个。
由于只有一个卷积核,因此卷积后只输出单通道的卷积结果(黄色的块状部分表示一个卷积核,黄色块状 是由三个通道堆叠在一起表示的,每一个黄色通道与输入卷积通道分别进行卷积,也就是 channel 数量要保持一致,这里只是堆叠放在一起表示而已)。
如果要卷积后也 输出多通道,增加卷积核(filers)的数量 即可,
Feature map 的颜色,是为了表示不同的卷积核对应的输出通道结果,将每个卷积核对应的输出通道结果(Feature map)进行拼接。
总结:
- 卷积核通道个数 = 输入通道个数
- 卷积核的内核个数 = 卷积核通道个数,一个通道对应一个内核
- 输出通道个数 = 卷积核个数
激活函数
在加权和的基础上,添加一个偏置(bias)来增加模型的表达能力:
卷积输出
=
∑
(
输入
⋅
卷积核
)
+
偏置
\text{卷积输出} = \sum (\text{输入} \cdot \text{卷积核}) + \text{偏置}
卷积输出=∑(输入⋅卷积核)+偏置
卷积与偏置计算后,得到的值直接是一个线性结果,但 神经网络的强大来源于非线性特征。为了 让网络能够学习到非线性关系,需要将线性卷积结果通过一个 激活函数,例如 ReLU(Rectified Linear Unit)。
ReLU 的定义:
ReLU
(
x
)
=
{
0
,
if
x
≤
0
x
,
if
x
>
0
\text{ReLU}(x) = \begin{cases} 0, & \text{if } x \leq 0 \\ x, & \text{if } x > 0 \end{cases}
ReLU(x)={0,x,if x≤0if x>0
ReLU 将所有负值设为 0,保留正值,这样可以引入非线性,同时避免负值的扩散。
- 对于大输入值,ReLU 的输出是线性递增的( f ( x ) = x f(x) = x f(x)=x 当 x > 0 x > 0 x>0),这使得 在前向传播中高特征值得以保留。而不像 Sigmoid 或 Tanh 这种激活函数,它们的输出会在高值时趋于饱和,从而限制了高激活值的扩展。
- 在反向传播时,梯度是通过激活函数求导传播的。对于 ReLU,导数为: f ′ ( x ) = { 0 , if x ≤ 0 1 , if x > 0 f'(x) = \begin{cases} 0, & \text{if } x \leq 0 \\ 1, & \text{if } x > 0 \end{cases} f′(x)={0,1,if x≤0if x>0 这意味着 ReLU 不会出现像 Sigmoid 那样梯度消失的问题(Sigmoid 的导数在极端值时趋于 0,导致学习停滞)。
池化
池化 提供了一种方法,减少中间特征的大小,那么 需要更少的层来覆盖整个输入,就可以减少卷积神经网络的层数。
类似于卷积,池化采用过滤器并根据其步幅沿输入滑动过滤器,但不同于卷积,池化没有权重,而是在每个有效位置上进行操作并返回单个值作为输出,两个常见的操作是最大值和平均值。
将 1000*1000 的图像输入进去,交替使用卷积和池化层,直到达到一定大小,然后输入到全连接层,以输出正确尺寸。
现在不需要 500 个卷积层,而是 8 卷积层 + 8 池化层 + 1 全连接层。池化作为一种下采样的方式,被用来减少中间特征大小以及所需层数,基本上用于所有需要卷积的任务,包括图像和文本。
上采样、上池化、反卷积
上采样(Upsampling):通过插值或复制的方式,将特征图从低分辨率“放大”到高分辨率,不引入可学习参数。
常见插值方法:最近邻插值(nearest neighbor)、双线性插值(bilinear)、双三次插值(bicubic)等。
上池化(Unpooling):根据池化(通常是 max-pooling)时记录的索引将每个池化输出值放回原位置,其他位置填 0,从而恢复到池化前的大小。
反卷积(Deconvolution)或 转置卷积(Transposed Convolution):实际上是一种“带步幅的卷积逆运算”。通过 对输入 Feature map 间隔填充0,再进行标准的卷积计算,可以 使得输出 Feature map 的尺寸比输入更大;相比上池化,使用反卷积进行图像的“上采样”是可以被学习的(会用到卷积操作,其参数是可学习的)。从而既能放大特征图,又能学习如何重建细节。
总结:
-
仅需 快速放大、对细节恢复要求不高 时,可选 上采样(插值),实现简单、速度快。
-
需要网络学习如何更好地恢复特征细节,优先用 反卷积,可结合正则化或特殊架构减轻棋盘伪影。
-
想最大程度 保留“池化时丢失的空间位置信息”,在 Segmentation 或 Auto-Encoder 里常 配合反卷积使用 Unpooling + 卷积。
softmax 归一化函数
Softmax 是一种归一化函数,用来 将网络的输出映射为类别概率,从而可以通过这些概率计算损失。
Softmax 定义:
p k ( x ) = exp ( a k ( x ) ) ∑ k ′ = 1 K exp ( a k ′ ( x ) ) p_k(\mathbf{x}) = \frac{\exp(a_k(\mathbf{x}))}{\sum_{k'=1}^K \exp(a_{k'}(\mathbf{x}))} pk(x)=∑k′=1Kexp(ak′(x))exp(ak(x))
- 输入: a k ( x ) a_k(\mathbf{x}) ak(x) 是在像素位置 x \mathbf{x} x 的第 k k k 个特征通道的激活值。它可以理解为网络对像素 x \mathbf{x} x 属于类别 k k k 的“信心分数”。
- 输出: p k ( x ) p_k(\mathbf{x}) pk(x) 是像素 x \mathbf{x} x 属于类别 k k k 的概率,softmax 将所有类别的信心分数转化为概率分布。
Softmax 性质:
- p k ( x ) ∈ [ 0 , 1 ] p_k(\mathbf{x}) \in [0, 1] pk(x)∈[0,1]:表示类别 k k k 的概率。
- ∑ k = 1 K p k ( x ) = 1 \sum_{k=1}^K p_k(\mathbf{x}) = 1 ∑k=1Kpk(x)=1:对于每个像素,所有类别的概率总和为 1。
- 当 a k ( x ) a_k(\mathbf{x}) ak(x) 最大时, p k ( x ) ≈ 1 p_k(\mathbf{x}) \approx 1 pk(x)≈1,其他 p k ′ ( x ) ≈ 0 p_{k'}(\mathbf{x}) \approx 0 pk′(x)≈0。这使 Softmax 能够近似最大化操作。
交叉熵损失
交叉熵损失 衡量了模型预测的类别概率分布 p k ( x ) p_k(\mathbf{x}) pk(x) 和真实标签分布之间的差异。交叉熵损失的目标是最大化每个像素位置处的预测概率 p ℓ ( x ) ( x ) p_{\ell(\mathbf{x})}(\mathbf{x}) pℓ(x)(x),即使模型输出尽量接近真实标签。
交叉熵损失定义:
E = − ∑ x ∈ Ω w ( x ) log ( p ℓ ( x ) ( x ) ) E = -\sum_{\mathbf{x} \in \Omega} w(\mathbf{x}) \log(p_{\ell(\mathbf{x})}(\mathbf{x})) E=−x∈Ω∑w(x)log(pℓ(x)(x))
- ℓ ( x ) \ell(\mathbf{x}) ℓ(x):像素 x \mathbf{x} x 的真实类别标签。
- p ℓ ( x ) ( x ) p_{\ell(\mathbf{x})}(\mathbf{x}) pℓ(x)(x):像素 x \mathbf{x} x 对应真实类别的预测概率。
- w ( x ) w(\mathbf{x}) w(x):权重,用于调整像素的重要性。
- Ω \Omega Ω:输入图像的像素集合。
交叉熵损失对像素的惩罚:
- 如果预测概率 p ℓ ( x ) ( x ) p_{\ell(\mathbf{x})}(\mathbf{x}) pℓ(x)(x) 很接近 1,则 − log ( p ℓ ( x ) ( x ) ) → 0 -\log(p_{\ell(\mathbf{x})}(\mathbf{x})) \to 0 −log(pℓ(x)(x))→0,损失很小。
- 如果预测概率 p ℓ ( x ) ( x ) p_{\ell(\mathbf{x})}(\mathbf{x}) pℓ(x)(x) 很小,则 − log ( p ℓ ( x ) ( x ) ) -\log(p_{\ell(\mathbf{x})}(\mathbf{x})) −log(pℓ(x)(x)) 会很大,损失大。