【Unet系列】Unet & Unet++

【Unet系列】Unet & Unet++_第1张图片

文章目录

  • U-net
    • 概述
    • 细节部分
      • 1、结构的解析
      • 2、一些小点
    • result
  • Unet++
    • 概述
    • 细节部分
    • result
    • summary

U-net

U-Net是一篇基本结构非常好的论文,主要是针对生物医学图片的分割,而且,在今后的许多对医学图像的分割网络中,很大一部分会采取U-Net作为网络的主干。

概述

博客都将用一个概述对论文进行一个很简介的概述:

  • 解决什么问题?
    • 医学图像的分割
  • 使用的方法?
    • 继承FCN的思想,继续进行改进。但是相对于FCN,有几个改变的地方,U-Net是完全对称的,且对解码器(应该自Hinton提出编码器、解码器的概念来,即将图像->高语义feature map的过程看成编码器,高语义->像素级别的分类score map的过程看作解码器)进行了加卷积加深处理,FCN只是单纯的进行了上采样。
    • Skip connection:两者都用了这样的结构,虽然在现在看来这样的做法比较常见,但是对于当时,这样的结构所带来的明显好处是有目共睹的,因为可以联合高层语义和低层的细粒度表层信息,就很好的符合了分割对这两方面信息的需求。
    • 联合:在FCN中,Skip connection的联合是通过对应像素的求和,而U-Net则是对其的channel的concat过程。
  • Innovation:
    • overlap-tile策略
    • 随机弹性变形进行数据增强
    • 使用了加权loss
  • result
    • 相对于当年的,在EM segmentation challenge at ISBI 2012上做到比当时的best更好。而且速度也非常的快。其有一个很好的优点,就是在小数据集上也是能做得比较好的。就比如EM 2012这个数据集就只是30个果蝇第一龄幼虫腹侧神经所索的连续部分透射电子显微镜图。
  • 还存在的问题
    • 这个得看其后面的论文,要说的话,可以将其网络的深度到底取多深的问题作为一个点。

细节部分

以下是整体的结构图(对于这两篇论文,我比较关注的是他们的结构,同样论文也是把他们的结构作为卖点,论文中其余的很多细节都没有很详细的说明):
【Unet系列】Unet & Unet++_第2张图片

1、结构的解析

整体结构就是先编码(下采样), 再解码(上采样),回归到跟原始图像一样大小的像素点的分类。

  • 首先是输入图像的大小,这个是根据再高层的大小来进行反推的,最后取的一个比较合适的方便计算的输入大小。
  • 下采样是通过max pool 2x2来进行1/2下采样的,下采样之间是两个conv卷积层,这里的卷积是使用valid卷积。所以在卷积过程中图像的大小是会减小的。这会造成一个问题,就是造成了在skip connection部分concat时候大小不一致,因为在上面有一个copy & crop操作,crop就是为了将大小进行裁剪的操作。
  • 虽然上面有说到crop操作,但若是在卷积的时候使用的是same,就无需这个操作,至于这其中的影响,我觉得应该是不会造成太大的影响的,而且还会方便计算操作。这是same的代码。
  • 上采样,相对于FCN的转置卷积进行上采样,这里是一个up-conv 2x2,具体对应的操作是:对行列进行2倍翻倍。

2、一些小点

  • Overlap-tile策略:【Unet系列】Unet & Unet++_第3张图片
  • 其中的loss,交叉熵的损失,且图中的a是raw image,b是ground truth segmentation,c是产生的分割,对前景和背景进行的分割,d是增加了像素级的loss权重后,让网络对边界像素进行了更好的学习的效果。
    【Unet系列】Unet & Unet++_第4张图片

result

1、
【Unet系列】Unet & Unet++_第5张图片
2、
【Unet系列】Unet & Unet++_第6张图片


Unet++

Unet++是2018年的论文,这篇论文主要是针对生物医学图像的分割,在以下四个分割任务做了实验:

  • 1、胸部低剂量CT扫描中的结节分割
  • 2、显微镜图像中的细胞核分割
  • 3、腹部CT扫描中的肝脏分割
  • 4、结肠镜检查中的息肉分割

概述

对以前的论文做了一个简短的总结:对于分割任务,都会有一个共识,就是skip connection。目前对自然图像的分割效果蛮好,对生物医学图像的分割一般。(自我理解)主要的原因可能还是(1)数据集的量(2)生物医学图像相较于自然图像来说,本身分割难度大,体现在生物图像中分割目标边界模糊、变形一类的复杂情况。

  • 解决的问题?
    • 对生物医学图像的分割,具体的已经在上面列出来了。
  • 使用的方法?
    • Unet的增强版,灵感来源于DenseNet。但实际上,在此之前有一个思想是一样的工作,可以说是Unet的工作与其如出一辙,根据任务进行了调整而已。
    • 深度监督
  • result
    • 想对于UNet和wide UNet(wide IOU是相对与UNet的参数增加,使其与Unet++在参数上相差无几,减少相互对比中的不一样的条件)各自有3.9和3.4的平均IOU的提升。
  • More
    • 文中提到可以将Unet++作为Mask rcnn的backbone architecture。但是文中没有给出具体做法
    • 加中间的Dense block所基于的一个假设:让received encoder feature maps和the corresponding decoder feature maps are semantically similar,这样会使优化器更好的优化。

细节部分

1、一张结构图 & 解释:
【Unet系列】Unet & Unet++_第7张图片

  • 其中的蓝色和绿色部分就是Unet++相对UNet添加的部分。在右侧有L1, L2等,这些是Unet++对网络不同深度的设置。其中绿色的箭头表示上采样,同UNet,黑色的下箭头表示下采样,同UNet。
  • 蓝色箭头则表示skip connection,每一个水平层就是非常标准的DenseNet的结构。每个原型单元代表了卷积+激活函数一系列的操作。
  • 对其中的等式进行解释:在这里插入图片描述
  • 上图的第一个水平层的每一个 X 0 , j ( j ! = 0 ) X^{0,j(j!=0)} X0,j(j!=0)都可以作为单独的分割任务的输出了。

2、loss:binary cross-entropy和dice coefficient两部分的组合。以下的loss应用到每一个不同层次的输出。
在这里插入图片描述
在这里插入图片描述
3、深度监督

  • 上述的每个 X 0 , j ( j ! = 0 ) X^{0,j(j!=0)} X0,j(j!=0)的loss其实就是深度监督的做法,其实就在最后一个 X 0 , ? X^{0, ?} X0,?做loss也可以,深度监督可以说是一种小trick。
  • 文中对深度监督的描述:使用深度监督是为了可以让模型可以在两种方式下有选择的进行操作:(1)Accurate mode:做上述的所有分割分支做一个平均再得到最后输出结果(2)Fast mode:从其中的所有的分支输出选择一个作为输出。
  • Another:Deep supervised enables model pruning and improves or in the worst case achieves comparable performance to using only one loss layer.

result

1、几个数据集的信息
【Unet系列】Unet & Unet++_第8张图片

2、一些效果图

【Unet系列】Unet & Unet++_第9张图片

3、效果的对比,其中colon polyp(结肠息肉)是最难有好效果。而且表明对于不同的数据集,不同深度的网络对其能做到的程度时不一样的。再cell nuclei和colon polyp中加上了深度监督反而没有没有加深度监督的效果好,文中也给出了解释:This is because polyps and liver appear at varying scales in video frames and CT slices。
【Unet系列】Unet & Unet++_第10张图片


summary

找找图
有一个简单的思路。

你可能感兴趣的:(论文阅读,Machine,Learning)