U-net论文翻译

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haiyonghao/article/details/80683358

jianyuchen23的U-net详解这篇博客已经解释的很到位了,只是有些细节不太一样,我写这篇博客的目的就是给自己的学习历程留下一些记录。

摘要

训练DNN需要很多数据,这是业内公认。本文提出了一种网络结构和一种训练策略,训练策略基于对数据增强方法的使用,以便对有限的标记样本进行充分利用。

1、 简介

该结构包含一个用于捕捉语义的收缩路径和一个用于精准定位的对称扩展路径。该网络只使用少量数据,就可以训练出一个端对端(图像入,图像出)网络,并且性能很好(跑赢使用滑窗法的CNN方法,该方法之前是基于)。我们的结构在透射光显微镜图像数据集上获得了ISBI2015关键。我们的结构速度也非常快,处理一副512*512的图像,在最新的GPU上不到1s。

CNN之前一直面临的困境有两方面的原因,一是没有足够的标记数据,二是人们使用的网络规模一直很小。

Krizhevsky在ImageNet数据集上使用了8层CNN和百万级别的参数数量,同时他使用的训练集规模也在百万。他之后CNN的网络规模越来越大。

过去在CNN用于分类任务时,人们只能图像输入,标签输出,但是在许多视觉任务中,比如生物医学图像处理中,人们希望得到针对每个像素的分类结果,还有,获取大量的医学图像数据用于训练是不可能的。

因此,Ciresan训练了一种滑窗网络用来预测每个像素的标签,该网络的输入是以像素为中心的一个区域。

该网络的优点有:
1、网络具有局部感知能力
2、用于训练的样本数量远大于训练图像的数量
该网络获得了EM分割挑战 ISBI2012冠军。

该网络的缺点有:
1、对于每个patch(以像素为中心的区域)都要运行一次检测,所以速度很慢,并且由于patch的重叠,所以有很多运行都是多余的
2、必须在局部标记准确性和语义的确定之间进行权衡,大的patch需要更多的池化层,但是池化层降低了局部标记的准确性,而小的patch无法获得充分的语义信息

本文中我们的设计基于一种更加优雅的结构,FCN,我们对这种结构进行了一定的修改和拓展,以使其使用更少的训练图像,产生更高精度的分割。

FCN的主要思想是对常规的收缩网络进行补充,补充的内容是连续的layer,在这些层中,池化操作被上采样操作代替。因此,这些层提高了输出的解析度(resolution)。为了局部化(图像局部像素的label一样),将从收缩网络得到的高维特征与上采样的结果相结合,这样连续的卷积层就能从这种结合中汇聚更加准确的输出。

我们对FCN的重要改进之一是在上采样部分,我们也有大量的feature channels,这些feature channel允许网络将范围信息(context)传播到高分辨率层扩展层或多或少对称于收缩层产生了一个U型的结构。该网络不包含任何全连接层,只使用每次卷积的有效部分,如,分割映射只包含像素,后面的高维特征包含全部语义信息。该方法允许任意大小的图像通过overlap-tile策略进行无缝分割。overlap-tile策略就是,要预测一个batch的标签,你必须输入比之大的一个框的图像,输入图像没有的部分,用镜像法外推。这种策略对于将网络应用于大型图像是有非常重要的意义的,否则可能会受到GPU内存的限制。

我们的任务中训练数据非常少,所以我们对仅有的数据进行弹性形变操作,以获得更多的数据。这样使得网络可以学习到形变特征。生物医学图像形变非常常见。【他们的这种方法等于加入了额外特征】数据增强的的学习不变性数据已经发表在Dosovitskiy的论文中,在非监督特征学习那部分。

另一个挑战是分割开连在一起的同种细胞,最终,我们提出使用加权损失,这样分离*连在一起的细胞的label功能*获得更大的权重。

我们的方法在比赛中拿了头筹。

2、 网络结构

收缩路径就是常规的卷积网络,它包含重复的2个3x3卷积,紧接着是一个RELU,一个max pooling(步长为2),用来降采样,每次降采样我们都将feature channel减半。扩展路径包含一个上采样(2x2上卷积),这样会减半feature channel,接着是一个对应的收缩路径的feature map,然后是2个3x3卷积,每个卷积后面跟一个RELU,因为每次卷积会丢失图像边缘,所以裁剪是有必要的,最后来一个1x1的卷积,用来将有64个元素的feature vector映射到一个类标签,整个网络一共有23个卷积层。

为了允许对最终的分割map**无缝tile**,选择输入tilesize非常重要因为这样所有的2x2的max池化操作应用到偶数x和y

3、训练

输入图像和他们对应的分割map用来训练网络,用得方法是SGD,框架是caffe。由于unpadded卷积,输入图像大于输出图像,大一个border width常数。为了降低系统消耗,并且最大利用GPU memory,我们对大batch使用了大的输入tiles,因此降低了单图像的batch。对应地,我们使用了一个高的momentum(0.99),这样大量的训练数据决定当前优化步骤的更新。

能量函数是用softmax函数计算最后一步算出的feature map,该feature map用交叉熵损失函数处理,再用softmax。
softmax公式如下:

p k ( x ) = e a k ( x ) Σ k = 1 K e a k ( x )

a k ( x ) 表示每一像素点( x )对应特征通道( k )的得分
K 是类的数量
p k ( x ) 是类 k 的对像素点 x 的分类结果
然后交叉熵对于每个像素点的 p l ( x ) ( x ) 进行惩罚,惩罚所用的公式为:
E = Σ x Ω ω ( x ) l o g ( p l ( x ) ( x ) )

l : Ω { 1 , . . . , K } 是每个像素的真实标签
ω : Ω R 是之前介绍的权重图,用来让某些像素更加重要

我们预先计算每个真实样本的权重图,以补偿训练数据集中某个类的像素的不同频率,并强制网络学习我们在接触的细胞之间引入的小分离边界。

分离边界是用形态学operation计算的,然后使用以下公式计算权重图:

ω ( x ) = ω c ( x ) + ω 0 e ( d 1 ( x ) + d 2 ( x ) ) 2 2 σ 2

ω c : Ω R 是用来平衡类频率的权重图
d 1 : Ω R 表示到最近细胞边界的距离
d 2 : Ω R 表示到第二进细胞边界的距离
经过实验,我们将的设置为 ω 0 = 10 σ 5 个像素

权重初始化相当重要,我们使用高斯分布初始化权重,标准差为 2 N ,其中 N 表示一个神经元的输入节点是的数量,如,对于一个3x3的卷积,前一层有64个feature channel,那么 N = 3 3 64 = 576

3.1、数据增强

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

4、实验

实验部分就是一些表格,对比了不同算法在一些数据集上的表现,这里就不一一列出了。

5、结论

u-net架构在不同的生物医学分割应用中实现了非常好的性能。 由于具有弹性变形的数据增强功能,它只需要很少的注释图像,并且在NVidia Titan GPU(6 GB)上的训练时间非常短,只需要10个小时。 我们提供完整的Caffe 实现和训练好的网络。 我们相信,u-net架构可以轻松应用于更多的任务。

参考文献
[1]RONNEBERGER O, FISCHER P, BROX T. U-Net: Convolutional Networks for Biomedical Image Segmentation[J]. arXiv, 2015.
[2] U-Net论文详解

猜你喜欢

转载自blog.csdn.net/haiyonghao/article/details/80683358