持续创造,加速生长!这是我参与「日新计划 10 月更文挑战」的第15天,点击查看活动概况

导读

运用一系列的网格状的密布跳动途径来进步切割的准确性。

医学图像分割:UNet++

在这篇文章中,咱们将探究UNet++: A Nested U-Net Architecture for Medical Image Segmentation这篇文章,作者是亚利桑那州立大学的Zhou等人。本文是U-Net的连续,咱们将把UNet++与Ronneberger等人的U-Net原始文章进行比较。

UNet++的方针是经过在编码器和解码器之间参加Dense block和卷积层来进步切割精度。

切割的准确性关于医学图像至关重要,因为边缘切割错误解导致不可靠的成果,从而被拒绝用于临床中。

为医学成像规划的算法有必要在数据样本较少的情况下完成高性能和准确性。获取这些样本图像来练习模型可能是一个耗费资源的进程,因为需求由专业人员检查的高质量、未压缩和准确注释的图像。

UNet++里有什么新东西?

下面是UNet++和U-Net架构的示意图。

医学图像分割:UNet++

UNet++ 在原始的U-Net上加了3个东西:

  1. 从头规划的跳动途径(显现为绿色)
  2. 密布跳动衔接(显现为蓝色)
  3. 深度监督(显现为赤色)

从头规划的跳动途径

医学图像分割:UNet++

在UNet++中,增加了从头规划的跳动途径(绿色显现),以弥补编码器和解码器子途径之间的语义不同。

这些卷积层的意图是削减编码器和解码器子网络的特征映射之间的语义差距。因而,关于优化器来说,这可能是一个更直接的优化问题。

U-Net采用跳动衔接,直接衔接编码器和解码器之间的特征映射,导致把语义上不相似的特征映射相交融。

然而,在UNet++中,相同dense block的前一个卷积层的输出与较低层dense block对应的上采样输出进行交融。这使得已编码特征的语义级别更接近于等待在解码器中的特征映射的语义级别,因而,当接收到语义上相似的特征映射时,优化更简略。

跳动途径上的一切卷积层运用大小为33的核。

密布跳动衔接

医学图像分割:UNet++

在UNet++中,密布跳动衔接(用蓝色显现)完成了编码器和解码器之间的跳动途径。这些Dense blocks是遭到DenseNet的启发,意图是进步切割精度和改善梯度流。

密布跳动衔接确保一切先验特征图都被累积,并经过每个跳动途径上的dense卷积块而抵达当时节点。这将在多个语义级别生成完整分辨率的特征映射。

深度监督

医学图像分割:UNet++

UNet++中增加了深度监督(赤色显现),经过修剪模型来调整模型的复杂性,在速度(推理时刻)和性能之间完成平衡。

关于accurate形式,一切切割分支的输出进行均匀。

关于fast形式,最终的切割图从切割分支之一挑选。

Zhou等人进行了试验,以确定在不同剪枝水平下的最佳切割性能。运用的衡量是IoU和推理时刻。

他们试验了四种切割使命:a)细胞核,b)结肠息肉,c)肝脏,d)肺结节。成果如下:

医学图像分割:UNet++

L3与L4相比,均匀削减了32.2%的推理时刻,一起IoU略微降低了。

更激进的修剪方法,如L1和L2,能够进一步削减推理时刻,但以明显的切割性能为价值。

在运用UNet++时,咱们能够调整用例的层数。

在UNet++上的试验

我运用Drishti-GS数据集,这与Ronneberger等人在他们的论文中运用的不同。该数据集包括101幅视网膜图像,以及用于检测青光眼的光学disc和光学cup的mask标注。青光眼是世界上致盲的主要原因之一。50张图片用于练习,51张用于验证。

衡量

咱们需求一组方针来比较不同的模型,这儿咱们有二元交叉熵,Dice 系数和IoU。

二元交叉熵

二分类的常用衡量和丢失函数,用于衡量误分类的概率。

咱们将运用PyTorch的binary_cross_entropy_with_logits函数,与Dice系数一起作为丢失函数对模型进行练习。

Dice 系数

医学图像分割:UNet++

对猜测值和实际值之间堆叠的通用的衡量。核算方法为 2 猜测值与ground truth的堆叠面积除以猜测值与ground truth之和的总面积。

这个衡量方针的规模在0到1之间,其间1表明彻底堆叠。

我运用这个衡量和二元交叉熵作为练习模型的丢失函数。

IoU

医学图像分割:UNet++

一个简略(但有效!)的衡量来核算猜测的mask与ground truth mask的准确性。核算猜测值与ground truth的堆叠面积,并除以猜测值与ground truth的并集面积。

类似于Dice系数,这个衡量方针的规模是从0到1,其间0表明没有堆叠,而1表明猜测与地面真实之间彻底堆叠。

练习和成果

优化这个模型,练习50多个epoch,运用Adam优化器,学习率1e-4,学习率衰减率为没10个epochs乘以0.1, 丢失函数是二元交叉熵和Dice 系数的组合。

模型在27分钟内完成了36.6M可练习参数的练习,每个epoch大约需求32秒。

医学图像分割:UNet++

体现最好的epoch是第45个epoch(在50个epochs中)。

  • 二元交叉熵:0.2650
  • Dice系数:0.8104
  • IoU:0.8580

几个U-Net模型之间的方针进行比较,如下所示。

医学图像分割:UNet++

测试首先经过模型处理一些没见过的样本,来猜测光学disc(赤色)和光学cup(黄色)。这儿是UNet++和U-Net的测试成果对比。

医学图像分割:UNet++
从方针表来看,UNet++在IoU上超越U-Net,但在Dice系数上体现较差。从定性测试的成果来看,UNet++成功地对第一张图像进行了正确的切割,而U-Net做得并不好。也因为UNet++的复杂性,练习时刻是U-Net的两倍。有必要依据它们的数据集评价每种方法。

总结

UNet++的方针是进步切割精度,经过一系列嵌套的,密布的跳动途径来完成。从头规划的跳动途径使语义相似的特征映射更简略优化。密布的跳动衔接进步了切割精度,改善了梯度流。深度监督答应模型复杂性调优,以平衡速度和性能优化。

英文原文:towardsdatascience.com/biomedical-…