【读论文】U-Net: Convolutional Networks for Biomedical Image Segmentation 卷积神经网络

  • 摘要
  • 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)+w0exp(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 x0if 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 x0if 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)) 会很大,损失大。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/83956.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝牙音乐(A2DP)音频延迟的一些感想跟分析,让你对A2DP体验更佳深入

零.声明 最近做蓝牙协议栈的过程中遇到一些客户偶尔提报音频延迟的问题,所以引发了一些感想,跟大家分享下,音频延迟主要的影响范围是对一些要求实时性比较高的场景有比较差的体验 连接蓝牙看视频的过程中,发现音画不同步&#x…

MySQL 8.0 绿色版安装和配置过程

MySQL作为云计算时代,被广泛使用的一款数据库,他的安装方式有很多种,有yum安装、rpm安装、二进制文件安装,当然也有本文提到的绿色版安装,因绿色版与系统无关,且可快速复制生成,具有较强的优势。…

AGV|无人叉车工业语音播报器|预警提示器LBE-LEX系列性能与接线说明

LBE-LEX系列AGV|无人叉车工业语音播报器|预警提示器,涵盖LBE-LEI-M-00、LBE-LESM-00、LBE-LES-M-01、LBE-LEC-M-00、LBE-KEI-M-00、LBE-KES-M-00、LBE-KES-M-01、LBE-KEC-M-00等型号,适用于各种需要语音提示的场景,主要有AGV、AMR机器人、无人…

行为型设计模式之Interpreter(解释器)

行为型设计模式之Interpreter(解释器) 前言: 自己的话理解:自定义一个解释器用来校验参数或数据是否合法。 1)意图 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解…

C++常用的企业级日志库

黄老师跟大家推荐几款在企业开发中最受欢迎的C++日志库! 1. spdlog spdlog 是一个非常流行的开源C++日志库,以其高性能和易用性著称。它支持多线程、异步日志记录以及多种格式化选项。 安装 可以通过包管理器安装,例如 vcpkg: vcpkg install spdlog示例代码 #include…

Python读取PDF:文本、图片与文档属性

在日常的数据采集、文档归档与信息挖掘过程中,PDF格式因其版式固定、内容稳定而被广泛使用。Python 开发者若希望实现 PDF 内容的自动化提取,选择一个易用且功能完善的库至关重要。本文将介绍如何用Python实现 PDF文本读取、图片提取 以及 文档属性读取 …

excel中数字不满六位在左侧前面补0的方法

如下图“代码”列,想要实现统一的六位,如果不足六位,在前面(左侧)补0。 实现方法: 使用公式TEXT(A2,"000000")注意务必是用双引号。 目标实现: 如果想要脱离原数据,复制…

软考 系统架构设计师系列知识点之杂项集萃(82)

接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(81) 第148题 “41”视图主要用于描述系统逻辑架构,最早由Philippe Kruchten于1995年提出。其中( )视图用于描述对象模型,并说明系统应该…

Langgraph实战--自定义embeding

概述 在Langgraph中我想使用第三方的embeding接口来实现文本的embeding。但目前langchain只提供了两个类,一个是AzureOpenAIEmbeddings,一个是:OpenAIEmbeddings。通过ChatOpenAI无法使用第三方的接口,例如:硅基流平台…

(附实例代码及图示)混合策略实现 doc-doc 对称检索

HyDE 混合策略 在前面的文章中,学习的优化策略都是将对应的 查询 生成 新查询,通过 新查询 来执行相应的检索,但是在数据库中存储的数据一般都是 文档 层面上的,数据会远远比 查询 要大很多,所以 query 和 doc 之间是…

webui无法注册如何配置

1. 初始登陆界面 docker部署的脚本为: docker run -d \ -p 8180:8080 --gpusall \ -v ollama:/root/.ollama \ -v /home/pretrained_model/output:/app/backend/output \ --name open-webui \ --restart always ghcr.io/open-webui/open-webui:ollama 2. 新增注册入…

力扣 88.合并两个有序数组

文章目录 题目介绍题解 题目介绍 题解 法一&#xff1a;暴力法 class Solution {public void merge(int[] nums1, int m, int[] nums2, int n) {for(int i 0; i < n; i){nums1[mi] nums2[i];}Arrays.sort(nums1);} }法二&#xff1a;倒序双指针 时间复杂度为O(mn) 从右…

conda入门

目录 1. Conda 是什么&#xff1f;2. 为什么需要 Conda&#xff1f;它能解决什么问题&#xff1f;3. Conda 的核心组件和概念4. Conda 基本工作流程和常用命令5. Conda 的主要优势6. Conda 与 Pip 的关系7. 何时使用 Conda&#xff1f; 1. Conda 是什么&#xff1f; 包管理器&…

UE 5 和simulink联合仿真,如果先在UE5这一端结束Play,过一段时间以后**Unreal Engine 5** 中会出现显存不足错误

提问 UE5报错如图。解析原因 回答 你遇到的这个错误提示是&#xff1a; “Out of video memory trying to allocate a rendering resource. Make sure your video card has the minimum required memory, try lowering the resolution and/or closing other applications tha…

第七十三篇 从电影院售票到停车场计数:生活场景解析Java原子类精髓

目录 一、原子类基础&#xff1a;电影院售票系统1.1 传统售票的并发问题1.2 原子类解决方案 二、原子类家族&#xff1a;超市收银系统2.1 基础类型原子类2.2 数组类型原子类 三、CAS机制深度解析&#xff1a;停车场管理系统3.1 CAS工作原理3.2 车位计数器实现 四、高性能实践&a…

Linux(线程控制)

一 线程的操作 1. 创建线程&#xff1a;pthread_create int pthread_create(pthread_t *thread, // 线程 idconst pthread_attr_t *attr, // 线程属性设置void *(*start_routine) (void *), // 回调函数void *arg // 传递…

PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式

PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式 文章目录 PL/SQLDeveloper中数值类型字段查询后显示为科学计数法的处理方式1. 查询效果2. 处理方式3. 再次查询 1. 查询效果 2. 处理方式 3. 再次查询

centos 9/ubuntu 一次性的定时关机

方法一 # 15 表示15分钟以后自动关机 sudo shutdown -h 15方法二&#xff1a; sudo dnf install at -y # 晚上十点半关机 echo "shutdown -h now" | at 22:30 # 检查是否设置成功命令 atq [rootdemo-192 ~]# atq 1 Wed Jun 4 11:12:00 2025 a root # 取消定时计划…

Riverpod与GetX的优缺点对比

Riverpod 与 GetX 的优缺点对比 在 Flutter 开发领域,Riverpod 和 GetX 都是备受关注的状态管理与依赖注入框架,它们各有优劣,适用于不同的开发场景。以下从多个维度详细对比二者的优缺点。 一、Riverpod 的优缺点 (一)优点 架构清晰,数据流向明确:基于 Provider 模…

day 47

注意力可视化 训练模型 包含通道注意力模块和CNN模型的定义&#xff08;通道注意力的插入&#xff09; import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import ma…