U-Net学习与理解(Convolutional Networks for Biomedical Image Segmentation)

在生物医学图像处理中,得到图像的每一个细胞的类别标签是非常关键的。生物医学中最大的挑战就是用于训练的图像时不容易获取的,数据量也不会很大,U-Net是非常著名的解决方案,它是FCN的一种变体,能够在少量的训练图像数据上运行,得到了更精确的分割。

Abstarct:

大量使用data augmentation来高效使用标注样本,进行端到端训练
下采样过程可以捕捉语义信息
上采样过程可以精准定位
这个训练出的效果超过了此前最好模型-基于滑动窗口的CNN

1.Introduction:

语义分割—>对每一个像素进行分类

  1. 生物医学任务通常无法获得数千张训练图像,因此可以在滑动窗口中设置网络(Ciresan的做法),即通过提供像素周围局部区域(patch)作为输入来预测每个像素的类别标签,这样设置就使得局部块方面的数据>>训练图像的数量,也算是一种data augmentation方式。
    作者总结了上述滑动窗口的缺点:
    1)对于每个patch都要在网络中运行一次,所以速度很慢,而且由于patches之间的重叠, 就会导致多次的运行都是多余的。
    2)必须在局部信息和全局信息(语义的确定)之间进行权衡,大的patch需要更多的池化层,池化层降低了局部信息的准确性,而小的patch又无法获取充分的全局信息(语义信息)。

  2. 然后抛出了自己的模型,一种“elegant”的全卷积网络

在这里插入图片描述

这个结构其中重要的一点是要保持更多的卷积核数量,这样可以更好的捕捉和传播语义信息。

每次卷积都会损失边缘的像素点,会让长宽减少2
论文中的网络输入和输出尺寸是不一致的,输入572×572,输出388×388
我们想要输入和输出的尺寸一样,又不能给每层卷积增加padding,因为连续的特征图加padding卷积会使得padding进来的误差越来越大,越卷积到后面,特征的抽象程度越高,也就越容易受到padding的影响,于是在文中就提到了Overlap-tile策略,这个策略的思想是:在对图像的某一块像素点进行预测时(比如下图中的黄色方框),需要周围的一些像素点,也就是蓝色方框中的像素,这些像素可以提供上下文信息,以获得更准确的预测,论文中提到的还有一点原因是输入的图像其实很大,但是由于显存的限制,并不能一次性训练一张很大的图,所以必然要切割图像,但是在切割图像之后合并就会导致边缘存在误差,比如连接不上等情况,如果在周围多一圈的语义信息,一定程度上就能解决这种边缘的问题。

那么作者具体是怎么做的呢?他把输入图像先扩大,扩大的原因是在图像边缘像素点,可能没有周围一圈,扩大的方法就是对图像做镜像操作,仔细看下面的图就可以知道,把四个边做镜像向外翻了一下就扩大了图像,然后把扩大的图像输入网络,使得输出的结果正好是原
始图像尺寸,同时,输入图像块的边界也获得了上下文信息,从而提高预测精度。
在这里插入图片描述

2.网络结构

在这里插入图片描述

如上图,U-Net网络结构是对称的,前半部分是下采样,进行特征提取,后半部分是上采样,进行图像尺寸还原及分割,在下采样过程中,将输入进行2次3×3的Valid卷积操作,随后进行一次2×2的最大池化,同时卷积核数量翻倍(1-64-128-256-512-1024),进行四次这样的操作,然后两次3×3的卷积,取一半卷积核进行上采样(反卷积),再将对应 contracting path的feature map crop到和其大小相同尺寸后,将反卷积的结果和crop过的feature map进行拼接(FCN中是对应像素进行相加融合,而U-Net采用将特征在channel维度上拼接在一起,形成更厚的特征,在分类预测中可以利用到多层信息)每一次上采样后面都会再次对应两次2×2卷积,然后一直重复这样的过程,直到最后一层进行1×1的卷积,将64通道的特征图转化为特定深度(分类数量:2,分别是foreground,background)的结果。

3.训练

当算出最后一步的feature map之后,该feature map用交叉熵损失函数处理,再用softmax进行最后的输出。
Softmax公式:
在这里插入图片描述

像素点形式的softmax
a k ( x ) a_k(x) ak(x)表示像素x对应类的得分
k表示类k
K是类的数量
x表示像素点
p k ( x ) p_k(x) pk(x)表示类k的对像素点x的分类结果
交叉熵对每个像素点的 p l ( x ) p_l(x) pl(x)进行惩罚,惩罚公式:
在这里插入图片描述

在这里插入图片描述
是每个像素的真实标签

在这里插入图片描述
是权重图,区分每个像素点的权重
在这里插入图片描述
在这里插入图片描述

预先计算每个真实样本的权重图,以补偿训练数据集中某个类的像素的不同频率,并让网络学习区分更小的边界。
那么权重图是怎么计算的呢?
公式:
在这里插入图片描述

给像素分配权重并进行加权,其中, d 1 ( x ) d_1(x) d1(x)表示到背景的某个像素点到最近细胞边界的距离
d 2 ( x ) d_2(x) d2(x)表示离这个像素点第二近的细胞边界的距离,经过实验设置的 w 0 w_0 w0=10, σ σ σ=5个像素。
根据这个权重公式可以发现,在细胞边界附近的像素点给的权重会大一些,离细胞比较远的像素点的权重会小一些(距离越远, w 0 ⋅ e x p ( − ) w_0·exp(-) w0exp就会越接近于0,所以远离细胞的地方基本权值都是一样的),为啥要这么做嘞?因为如果同类细胞贴的比较近的话,就会增加训练的难度,准确率就会降低,毕竟卷积会考虑该像素点周围的一些特征,而两个相同的类的细胞贴在一起,很容易发生误判,所以对这种两个相同类贴在一起的细胞边界,给予较大的权重,就会使得训练之后的分类分割更准确。

使用高斯分布初始化权重,标准差为在这里插入图片描述
,N表示一个神经元输入节点的数量,比如对于一个3×3的卷积,前一层有64个feature channel,那么N=3×3×64=576。

3.1 数据增强
对于data augmentation,在训练样本比较少的时候,能够让网络学习一些不变性,本文中作者前期使用了平移、旋转、形变、灰度值处理(亮度),后期尤其起作用的是随机弹性变形,因为弹性形变是细胞中比较常见的一种形变,所以通过弹性形变来增强数据,能加强模型的鲁棒性,学习到细胞中一些不变的特征。
使用随机位移矢量在粗糙的3×3网格上生成平滑变形,位移矢量是从标准差为10的高斯分布中采样的,然后使用双三次方插值计算每个像素位移,contracting path最后的dropout也起到了数据增强的作用。

4.实验

对比了不同算法在一些数据集上的表现
在这里插入图片描述
在这里插入图片描述

5.总结

U-Net在不同的生物医学分割应用中都实现了非常好的性能。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值