当前位置: 代码迷 >> 综合 >> 【论文篇】【2】详解U-Net: Convolutional Networks for Biomedical Image Segmentation
  详细解决方案

【论文篇】【2】详解U-Net: Convolutional Networks for Biomedical Image Segmentation

热度:9   发布时间:2023-11-29 14:49:20.0

【论文篇】【2】详解U-Net: Convolutional Networks for Biomedical Image Segmentation

在这里插入图片描述

论文目录

    • 【论文篇】【2】详解U-Net: Convolutional Networks for Biomedical Image Segmentation
        • 0.论文作者
        • 1.核心思想
        • 2.网络结构
        • 3.contracting path
        • 4.expansive path
        • 5.拼接和点卷积
        • 6.Overlap-tile
        • 7.weighted loss
        • 8.数据增强
        • 9.其它
        • 10.实验结果
        • 11.论文下载地址

0.论文作者

在这里插入图片描述

1.核心思想

【1】对FCN的重要改进之一是在上采样部分,扩展层或多或少对称于收缩层,产生了一个U型的结构。
【2】Overlap-tile 策略。这种方法用于补全输入图像的上下文信息,可以解决由于现存不足造成的图像分块输入的问题。
【3】利用少量数据集进行训练测试,为医学图像分割做出很大贡献。任务中训练数据非常少,所以作者对仅有的数据进行弹性形变操作,以获得更多的数据。这样使得网络可以学习到形变特征,因为生物医学图像中形变非常常见。
【4】作者提出了使用一种带权重的损失(weighted loss)。在损失函数中,分割相互接触的细胞获得了更大的权重。

2.网络结构

在这里插入图片描述
上图展示了网络结构,它由收缩路径(contracting path)和拓展路径( expansive path)组成。收缩路径是典型的卷积网络架构。它的架构是一种重复结构,每次重复中都有2个卷积层和一个pooling层,卷积层中卷积核大小均为33,激活函数使用ReLU,两个卷积层之后是一个22的步长为2的max pooling层。每一次下采样后都把特征通道的数量加倍。拓展路径中的每一步都首先使用反卷积(up-convolution),每次使用反卷积都将特征通道数量减半,特征图大小加倍。反卷积过后,将反卷积的结果与收缩路径中对应步骤的特征图拼接起来。收缩路径中的特征图尺寸稍大,将其修剪过后进行拼接。对拼接后的map进行2次33的卷积。最后一层的卷积核大小为11,将64通道的特征图转化为特定深度(分类数量,二分类为2)的结果。网络总共23层。

3.contracting path

在contracting path中,输入大小为572x572x1的图片,经过连续两次的3x3x1x64的卷积核进行卷积得到568x568x64大小的特征图c1,激活函数采用relu,再经过一次2x2的max-pooling得到284x284x64大小的图片。同样经过两次3x3x64x128大小的卷积核卷积,得到大小为280x280x128的特征图c2,经过max-pooling得到140x140x128的图片。第三次则得到136x136x256的特征图c3,经过max-pooling得到68x68x256的图片,第四次连续两个3x3x256x512卷积核进行卷积得到64x64x512大小的特征图c4,再次池化得到32x32x512大小的图片,经过两次3x3x512x1024大小的卷积核卷积得到大小为28x28x1024的图片。

4.expansive path

在expansive path中,大小为28x28x1024的图片经过2x2的反卷积得到56x56x512大小的特征图e4,将之前得到大小为64x64x512大小的特征图c4进行裁剪,得到56x56x512大小的图片后与e4进行concat操作,在通道数上进行拼接得到56x56x1024大小的特征图,经过连续两次3x3x1024x512的卷积操作,得到52x52x512大小的图片;通过第二次2x2的反卷积,得到大小为104x104x256的特征图e3,将c3裁剪至与e4相同大小后与e4拼接得到104x104x512的特征图,再次经过连续两次3x3x256卷积核卷积得到100x100x256大小的图片;第三次反卷积得到200x200x128大小的特征图e2,将c2裁剪后与e2拼接得到大小为200x200x256的图片,经过两次3x3x256x128的卷积得到196x196x128大小的图片;第四次反卷积得到392x392x64的特征图e1,将c1裁剪后与e1拼接得到392x392x128的特征图,经过连续两次3x3x128x64的卷积核卷积,得到388x388x64的特征图;通过1x1x64x2的卷积核卷积得到388x388x2的热图。最后热图与真值进行损失函数的计算。

5.拼接和点卷积

右边的拓展路径:使用上采样与左侧收缩路径的featuremap相结合,然后逐层上采样到392X392的大小heatmap。pooling层会丢失图像信息和降低图像分辨率且是不可逆的操作,对图像分割任务有一些影响,对图像分类任务的影响不大,为什么要做上采样?:因为上采样可以补足一些图片的信息,但是信息补充的肯定不完全,所以还需要与左边的分辨率比较高的图片相连接起来(直接复制过来再裁剪到与上采样图片一样大小),这就相当于在高分辨率和更抽象特征当中做一个折衷,因为随着卷积次数增多,提取的特征也更加有效,更加抽象,上采样的图片是经历多次卷积后的图片,肯定是比较高效和抽象的图片,然后把它与左边不怎么抽象但更高分辨率的特征图片进行连接。

最后部分再经过两次卷积,达到最后的heatmap,再用一个1X1的卷积做分类,这里是分成两类,因为这个是对医学图像做的处理,只分背景和前景,所以用的是两个神经元做卷积,得到最后的两张heatmap,例如第一张表示的是第一类的得分(即每个像素点对应第一类都有一个得分),第二张表示第二类的得分heatmap,然后作为softmax函数的输入,算出概率比较大的softmax类,选择它作为输入给交叉熵进行反向传播训练。

6.Overlap-tile

在这里插入图片描述
上图是针对任意大小的输入图像的无缝分割的 Overlap-tile 策略。如果我们要预测黄色框内区域(即对黄色的内的细胞进行分割,获取它们的边缘),需要将蓝色框内部分作为输入。缺失的数据使用镜像进行补充。因为进行的是 valid 卷积(即上文讲的只取有效部分,可以理解为 0 padding),所以需要取比黄色框大的图像来保证上下文的信息是有意义的,缺失的部分扩大补充是填充上下文信息最好的方法了。对图像做镜像操作,四个边做镜像往外翻一下就扩大了图像,然后把扩大后的图像输入网络,然后输出后刚好和金框的图像大小是一样的,这样就可以进行Loss回归了。

7.weighted loss

细胞分割的挑战是同一类别连接物体的分离。为此作者使用加权损失函数,连接细胞间的背景标签分离获得较大的权重。
在这里插入图片描述
上图是用DIC(二次干涉对比)显微技术记录的玻璃上的 HeLa 细胞。其中图 (a) 是原始图像;图 (b) 是真值,其中不同的颜色表示不同的 HeLa 细胞示例。图(C)是生成的分割掩膜,其中白色部分是前景,黑色部分是后景;图 (d) 是像素级损失权重图,使得网络强制学习边缘像素。
训练时使用带动量的随机梯度下降法,损失函数构造如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1: 这是softmax函数,ak(x)表示每一像素点对应类的得分
2: 损失函数是交叉熵损失函数,w(x)给像素分配权重然后进行加权
3: :权重函数,wc(x)是作者通过预先计算权重图的来获得每一个像素在损失函数中的权值,这种方法补偿了训练数据每类像素的不同频率。d1(x)表示图中某一背景像素点到离这个点最近的细胞边界的距离,d2(x)表示离这个像素点第二近的细胞的距离,即在细胞边界附近的像素点给的权重会大一些,离细胞比较远的像素点的权重会小一些,如果同类细胞贴的比较近,可能就会增大训练的难度,减少准确率,卷积会考虑该像素点周围的一些特征,而两个相同的类的细胞贴在一起,就容易误判,所以对这种两个相同类贴在一起的细胞边界,给予较大的权重,使的训练之后分类分割更准确。作者对超参数设置为ω0=10,σ≈5个像素。

8.数据增强

当只有少量训练数据的时候(生物医学图像很少),并且防止过拟合时,数据增强就是必要的,它可以教给网络什么是任务所需的不变的东西,什么是需要学习的属性,例如显微镜图像,初期要做平移、旋转不变性的复制,还有变形的健壮性(生物医学图像中形变非常常见),以及灰度值差异(亮度)。尤其是对训练数据进行随机形变,感觉这是在用少量训练数据做数据增强时的核心方法。作者使用随机位移矢量在粗糙的3×3网格上生成平滑变形。位移矢量是从标准差为10的高斯分布中采样的。然后使用双三次方插值计算每个像素位移。收缩路径末端的dropout层执行进一步的隐式数据增强。

9.其它

【1】因为使用了 valid conv ,所以采用 Overlap - tile 策略补充图像,其中空白的部分用镜像的方法进行补充。
【2】因为有池化层,因此要保证输入的图像在经过每一次池化的时候都要是边长偶数。这点与一般的卷积神经网络不同,因为一般的网络会使用 padding ,这样会保证卷积前后的大小不变,但是 valid conv 会使卷积后的尺寸变小,所以要特别注意输入图像的尺寸。一个比较好的方法是从最小分辨率出发沿收缩路径的反方向进行计算,得到输入图像的尺寸。
【3】预先计算权重图,以此计算后面的加权损失函数。
【4】加权损失的权重中有一部分是经验值,因此对于不同的任务可以进行调整(只是理论上可以进行调整,并没有试验过)。
【5】使用标准差为的高斯分布来进行初始化,其中需要注意的是,对于不同的卷积层,N 的大小也是不同的。比如说某一个卷积层,他的卷积核的大小为 3×3,通道数为64,则N=3x3x64.
【6】在收缩路径的最后部加入了 dropout ,隐式地加强了数据增强。

10.实验结果

在这里插入图片描述
在这里插入图片描述

11.论文下载地址

Convolutional Networks for Biomedical Image Segmentation 论文下载链接

码字不易,觉得我写的不错的可以点一下关注哦(⊙o⊙)求赞求关注。

  相关解决方案