U-Net学习笔记

 

1.简介

    对于生物医学分割任务而言,数据集是非常稀缺的,往往一千张的数据集都会显得遥不可及。对此,U-Net分割模型可以利用很小的数据集就能取得比较好的分割效果,所以U-Net神经网络经常用在医学图像分割任务当中。
    U-Net的网络结构呈U型,左边contracting path(左边,下采样阶段),用于提取特征和信息。右边是expanding path(右边,上采样阶段),用于将提取到的信息逐步映射回原图,得到掩模图像。此外,还有一个很重要的就是cropping,它将对等层左边的特征图进行cropping,然后添加到右边unsample之后得到的特征图。这样做是因为在左边下采样阶段,细节信息会逐步被丢失掉,因此在右边上采样阶段,应该把丢失掉的细节信息添加回来,这样的话,上采样阶段即有语义信息,又有细节信息,因而分割效果会更好。
 
 

2.结构

2.1.下采样阶段

    包含4次下采样,每一次下采用由2个部分组成,第一部分是两个卷积层,第二部分是一个最大池化层。卷积层是kernel_size=3*3,stride=1,padding=0,Conv-BN-Relu,第一个卷积层将channels数加倍,第二个卷积层保持channels不变。池化层的kernel_size=2*2,stride=2,padding=0,因此可以对特征图的size减半,此外通道数保持不变。
    故一个下采样为:
    Conv(k=3,s=1,p=0,c加倍)-BN-Relu
    Conv(k=3,s=1,p=0,c保持)-BN-Relu
    MaxPool(k=2,s=2, p=0, c保持)
 

2.2.上采样阶段

    包含4次上采样,同样由2个部分组成,第一部分是两个卷积层,第二部分是一个UpConv,即反卷积。卷积层是kernel_size=3*3,stride=1,padding=0,Conv-BN-Relu,第一个卷积层将channels减半,第二个卷积层保持channels不变。第一个卷积层的输入是下层UpConv后得到的特征图和对等层下采样得到的特征图的叠加。UpConv是kernel_size=2*2,stride=2,padding=0,因此可以对特征图的size进行加倍,此外通道数减半。
    故一个上采样为:
    Conv(k=3,s=1,p=0,c减半)-BN-Relu
    Conv(k=3,s=1,p=0,c保持)-BN-Relu
    UpConv(k=2,s=2, p=0, c减半)
 

2.3.改进

    在实际操作中,可以将Conv的padding设置为1,这样卷积之后特征图的大小就可以保持不变,特征图的size只会在MaxPool或者UpConv时才会改变,而且倍数都是2,因为在对等层中左右两边的特征图size是一样的,故在下采样阶段cat时就不用对特征图进行裁剪了。
 

2.4.输出    

    经过最后一次上采样之后,特征图的size已经和原始input的size一样了,也就是此时已经是pixel-to-pixel了,然后再经过3次卷积,将通道数调整到目标种类数大小,即每一类目标对应一个通道,从而避免了类间的竞争,激活函数使用sigmoid(因此损失函数使用二分交叉熵)。
 
 
 
 

posted on 2020-07-28 22:57  ZhicongHou  阅读(625)  评论(0编辑  收藏  举报

导航