U-Net论文解析


前言

文章摘要部分的说明:
(1)利用少量数据集完成了训练(利用了数据增强的技术)
(2)通过一个压缩路径一个扩展路径构成了一个U-Net,前者用来捕获上下文,后者用来精确定位。
(3)成果:在2015年的ISBI挑战赛上获得了冠军(电子显微细胞分割)

一、介绍部分解读

(1)问题:深度学习网络会由于数据集的限制和网络的规模限制而无法训练——Krizhevsky训练了一个八层的神经网络含有百万个参数/ImageNet的出现得到解决
(2)相比较于分类问题,医学图片分割:输出需要包含每个像素的位置
——Ciresan训练了一个网络利用滑动窗口来提供附近位置的数据进而训练

优点:该网络实现了定位,同时很好的扩充了数据集
缺点:运行慢,因为每个patch单独运行,同时patch有大量的重叠部分;
在定位精度上和上下文的使用上需要进行权衡

(3)针对上述问题,提出了新的网络——全卷积网络(该网络架构为突破点1 )
网络优势:只使用少数的图片就可以进行精准的分割
在这里插入图片描述其中左半部分为压缩路径,右半部分为扩展路径。
1.对于前面的网络的缺点(1)其通过一个镜像复制的方式,将网络再次放到了右边,这样可以增加了分辨率,防止上采样过程中数据的丢失。
2.左边的网络基本上是两次卷积一次max pool,然后feature map的数量也不断扩增为之前的一倍。这个过程进行了特征的提取
3.然后到右边网络不断上采样,上采样后先和左边的镜像复制合并,再进行两次卷积,到最上层,最后通过一个1*1的卷积进行输出。

优势:

  1. 无全连接层
  2. 镜像拼接很好的处理了边缘问题
  3. 上采样部分通过特征通道到高分辨层

(4)数据增强:最重要的是应用随机的弹性变换,这部分后面会再次说明

(5)对于损失进行加权:强化对紧密连接的细胞的学习

二、网络架构

1.基本构成

压缩路径和扩展路径
在这里插入图片描述

2.压缩路径

(1)对于网络的左半部分,每一层由连续的两个3*3的卷积核进行卷积(无padding)
(2)卷积后经过relu层,然后经过maxpooling(stride=2)
上面的一次操作可以理解为一次下采样,同时会加倍feature map

3.扩展路径

(1)先用2* 2的卷积核进行上采样,这样减半了feature channels
(2)然后是两个3* 3的卷积核,伴随着一个relu
(3)重点:伴随着一个从同层的压缩路径传来的镜像复制:这样很好的弥补了边界损失
(4)选取输入为576*576的原因是,可以让每一层maxpooling都是对于偶数层进行操作的,这样就减少了边缘损失

三、训练

  1. 选取大的输入块,小的batchsize,好处是可以减少开销,同时更加充分的利用GPU

  2. 采取高惯性m=0.99保证前面的层数会直接影响到后面的层级

  3. Energy function:
    在这里插入图片描述现在像素级上使用了softmax,之后又通过cross entropy function进行了损失计算

  4. 对于像素级进行了加权,通过预估计的方式,用来补偿对于不同像素点学习频率不同的情况,这样保证了对于边界的学习。
    在这里插入图片描述计算公式如下,其中w0初始化为10 ,σ ≈ 5 pixels.

  5. 初始化权重:选取高斯分布,标准差为sqrt(2/N)的分布中提取。其中本U-Net的N为3* 3 * 64 = 576

4.数据增强

  1. 平移、旋转
  2. 灰度变化
  3. 随机弹性变化:在3*3网络上随机(选取高斯分布中 标准差为10pixels)位移向量生成光滑的变形,每个像素层使用双三次插值来进行变化
  4. 收缩层末端:使用dropout

四、应用

(1)电子显微镜下的神经元结构分割:
数据集:30张图片
结果:2015的ISBI中拿下第一,其Warping Error达到第一

以下参考了https://zhuanlan.zhihu.com/p/128539526
在这里插入图片描述在这里插入图片描述pixel error 则是根据每个像素位置计算分类错误的数量。

pixel error过于敏感,会考虑所有分割细节,warping error 和 Rand error则相对缓和,更倾向于形态和整体的分割质量,在生物医学图像分割上是较为合理的评价指标。

(2)在细胞分类光显微图像中,在PhC-U373数据中和DIC-HeLa的平均IorU都有不错的表现。

五、研究思路分析

1.要解决的问题

医学上的细胞分割(本质是图像分割问题)

2.面对问题

(1)如何解决使用少的训练数据完成训练
(2)如何尽可能的提高精度问题,这也带来了如何处理边缘的问题

3.操作

(1)对于问题1,其很关键的一点是利用了数据加强,除了一些常规操作,作者认为随机弹性变化起到了很重要的作用
(2)对于精度问题,首先是边缘问题,U-Net的构建利用镜像的一种copy,既保证了边缘数据不丢失,同时又利用下采样的过程保留了特征。并且对于边缘问题其还采用了一种加权的方式进行了处理。
(3)构建好网络,紧接着训练的时候做了一些处理,这在第三部分都有所陈述。
(4)最后是实验的成果分析:其采用了四个指标,分别是wraping error、rand error 和pixel error 以及IOU四个指标

03-22
<think>好的,我现在要介绍一下U-Net++,但之前对它的了解可能还不够深入,得先理清楚思路。首先,U-Net++是基于U-Net的改进版本,所以得先回顾一下U-Net的基本结构。U-Net是2015年提出的,主要用于医学图像分割,它的结构像一个U型,左侧是编码器,进行下采样提取特征,右侧是解码器,上采样恢复分辨率,并通过跳跃连接将编码器的特征图与解码器的结合,帮助保留细节信息。 那U-Net++的改进点在哪里呢?根据记忆,可能是在跳跃连接部分做了优化。原来的U-Net是直接将编码器对应层的特征图连接到解码器,但U-Net++可能引入了密集连接或者更复杂的结构。比如,跳跃连接不再是直接连接,而是通过多个卷积层和上采样层组成的密集块。这样不同层次的特征可以得到更好的融合,可能提升分割精度,尤其是对于不同尺度的目标。 另外,U-Net++可能引入了深监督机制,允许在多个层次进行损失计算,这样可以在训练时更有效地优化网络参数,尤其是在较深的层和较浅的层之间平衡学习。不过需要确认这个点是否正确,或者是否属于另一个变体如U-Net3+的结构。 接下来需要确认U-Net++的结构细节。根据论文,U-Net++的架构在跳跃路径上添加了密集卷积块,每个块由多个卷积层组成,并且每个块的输出会与前面所有块的特征图进行融合,这样形成嵌套的密集跳跃路径。这种设计可能减少了语义差距,因为编码器和解码器之间的特征融合更加紧密,不同尺度的特征可以更好地结合起来。 另外,U-Net++中的每个解码器层都连接到所有更底层的编码器层,而不仅仅是同一级别的层。这可能需要通过上采样和卷积操作来调整特征图的大小,使得不同分辨率的特征能够被有效整合。这样网络可以捕捉到更丰富的上下文信息,有助于提高分割的准确性,尤其是在边缘部分。 关于深监督,U-Net++是否在每个子网络输出都添加了损失函数?记得论文中提到,在训练时可以剪枝网络,即在测试时去掉某些分支,通过深监督使得每个子网络都能独立产生有意义的分割结果。这可能在提高效率的同时保持性能,或者在资源受限的情况下选择较浅的结构。 需要验证这些点是否正确,比如U-Net++是否确实采用了嵌套的密集跳跃连接和深监督机制。另外,是否有其他关键结构,比如是否使用了批量归一化、激活函数的选择等。此外,U-Net++的性能提升主要体现在哪些数据集上,比如医学图像中的细胞分割、器官检测等,可能比原U-Net有更高的IoU或Dice系数。 最后,要总结U-Net++的优势和可能的缺点。优势包括更精细的特征融合、多尺度信息的高效利用、模型可剪枝等;缺点可能是计算量增加,模型参数更多,训练时间更长。不过可能通过剪枝在测试时减少计算负担。 现在需要将这些信息组织成结构清晰的回答,确保符合用户给出的格式要求,比如数学表达式正确使用$...$和$$...$$,同时用中文表达,分步骤介绍。</think>U-Net++是一种用于图像分割的深度学习架构,尤其适用于医学图像分析。它是在经典U-Net的基础上通过改进跳跃连接和引入密集嵌套结构来优化特征融合的模型。以下是其核心特点与原理的分步解析--- ### **1. U-Net 基础回顾** U-Net(2015)由编码器(下采样)和解码器(上采样)组成,形似字母“U”: - **编码器**:通过卷积和池化逐步提取高层语义特征。 - **解码器**:通过上采样和卷积恢复空间分辨率。 - **跳跃连接**:将编码器各层的特征图直接拼接到解码器对应层,保留细节信息。 数学上,跳跃连接可表示为: $$ x_{\text{decoder}}^{(l)} = \text{Concat}\left(x_{\text{encoder}}^{(l)}, \text{Up}(x_{\text{decoder}}^{(l+1)})\right) $$ 其中,$x^{(l)}$表示第$l$层的特征图,$\text{Up}$为上采样操作。 --- ### **2. U-Net++ 的核心改进** #### **(1) 嵌套密集跳跃连接** U-Net++在跳跃路径中引入**密集卷积块**,形成多层级联结构: - **特征融合方式**:编码器每一层的特征会通过多个卷积层逐步与所有更深层的解码器特征融合。 - **数学表达**:设$H$为卷积操作,$U$为上采样,则第$i$层到第$j$层的连接输出为: $$ x_{i,j} = H\left(\text{Concat}\left(x_{i-1,j}, U(x_{i,j+1})\right)\right) $$ 其中$i$为编码器层级,$j$为跳跃连接的子层。 #### **(2) 深监督(Deep Supervision)** - **多输出监督**:在多个子网络输出端添加损失函数,允许模型从不同深度学习特征。 - **剪枝能力**:训练后可根据计算资源剪枝部分分支,保持轻量化的同时维持性能。 --- ### **3. U-Net++ 的结构优势** - **减少语义鸿沟**:密集连接使编码器和解码器特征逐步融合,缓解了浅层与深层特征的不匹配问题。 - **多尺度特征整合**:通过嵌套结构融合不同分辨率特征,提升对小目标和边界的敏感度。 - **灵活性与鲁棒性**:深监督机制增强了模型对不同任务的适应性,剪枝特性则平衡了精度与效率。 --- ### **4. 性能与应用** - **医学图像分割**:在细胞分割(如DSB2018)、器官检测(如肝脏CT)等任务中,U-Net++的Dice系数比U-Net提升约3-5%。 - **计算代价**:参数量较U-Net增加约30%,但通过剪枝可减少推理时间。 --- ### **5. 代码示例(PyTorch 片段)** ```python class DenseBlock(nn.Module): def __init__(self, in_channels): super().__init__() self.conv1 = nn.Conv2d(in_channels, 64, kernel_size=3, padding=1) self.conv2 = nn.Conv2d(64, 64, kernel_size=3, padding=1) def forward(self, x): x1 = F.relu(self.conv1(x)) x2 = F.relu(self.conv2(x1)) return torch.cat([x, x2], dim=1) # 密集连接 ``` --- ### **总结** U-Net++通过**嵌套密集连接**和**深监督**解决了U-Net的特征融合不足问题,在医学图像分割中表现出更高的精度,但需权衡计算成本。其设计思想对后续模型(如U-Net3+)有重要启发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值