论文名称:U-Net: Convolutional Networks for Biomedical Image Segmentation
论文地址:https://arxiv.org/pdf/1505.04597.pdf
最近读了一篇分割方向的文章,这是对FCN(全卷积网络)的改进,论文的题目是《U-Net: Convolutional Networks for Biomedical Image Segmentation》,具体论文地址如上,感兴趣的小伙伴们可以点击进行下载。对于分割相关基础知识,我的博客有一篇博文对其进行了阐述,具体连接如下。这篇文章相对于FCN网络的新颖在于(1).使用较少的训练图像来训练网络,并且效果
分割相关知识连接:https://blog.csdn.net/weixin_44402973/article/details/100823774
非常的好;(2).添加上采样阶段,并且添加了很多的特征通道,允许更多的原图像纹理的信息在高分辨率的layers中进行传播;(3).U-net没有使用FC层,且全程使用valid来进行卷积,这样的话可以保证分割的结果都是基于没有缺失的上下文特征得到的,因此输入输出的图像尺寸不太一样;(4).细胞分割的另外一个难点在于将相同类别且互相接触的细胞分开,因此作者提出了weighted loss,也就是赋予相互接触的两个细胞之间的background标签更高的权重;(5).为了预测图像边界区域中的像素,通过镜像输入图像来推断丢失的上下文。由于网络的结构类似于一个字母"U",因此作者称该网络为U-Net,如图1。该网络在2015年ISBI电子显微镜堆叠的神经元结构分割挑战赛上以很大的优势取得了冠军。在接下来的篇幅中,我会对文章的细节进行详细阐述,具体包括:分割领域的相关工作、网络改进细节、网络结构、网络的训练细节和相关实验。
图1. U-Net结构图
卷积网络在分类任务上已经取得了非常大的成功。利用卷积网络实现对图片的分类,输出的是该图片的的一个类标记。然而,在许多视觉任务中,特别是在生物医学图像处理中,期望的输出应该包括定位,即,类标签应该被分配给每个像素。相关工作有:Ciresan等人[1]采用滑动窗口方式来训练网络,将像素周围的局部区域(patch)作为输入来预测每个像素的类标签。首先,这个网络可以定位(像素在图片中的位置)。其次,基于patch的训练数据的数量远远大于训练图像的数量,这弥补了训练数据不足问题,该网络在ISBI 2012的EM分割挑战赛中以较大优势获胜。作者也给出了Ciresan等人所采用策略的缺点,(1).它相当慢,因为网络必须为每个patch单独运行,并且这些patch之间存在重叠区域,造成了一定程度上的冗余。其次,在定位的准确性和上下文使用之间有一个权衡。较大的patch需要更多的最大池层,这会降低定位精度,而较小的patch上下文信息很少。最近提出了一些新的方法,对多个层输出的特征进行考虑来构建分类器,它可以同时结合上下文信息和定位信息。
我在前面也提到了U-Net是在FCN基础上进行的改进。本段,我想介绍一下作者具体的改进细节。首先,网络结构上,在压缩层之后增加了扩展层,这些扩展层的池化层被替换为上采样操作(通过反卷积来实现),这些扩展层用来增加最终输出map的尺寸。为了能够实现定位,将收缩层中高分辨率的特征和上采样输出进行了concat,连续卷积层基于concat信息进行学习,提高输出的精度。在上采样部分,作者使用了大量的特征通道,允许网络将上下文信息传播到更高分辨率的层。因此,扩张路径与收缩路径或多或少是对称的,并产生一个U形结构。该网络没有任何完全连接的层,卷积核模式采用valid,即分割图只包含输入图像中有完整上下文的像素,这种方式允许通过重叠平铺策略(overlap-tile strategy)对任意大的图像进行无缝分割。重叠平铺策略(见图2) 为了不丢失图像信息,对于边界处的图像进行了镜像处理,因为卷积会使图像边缘处的信息丢失。为了预测图像边界区域中的像素,通过镜像输入图像来推断丢失的上下文。这种平铺策略对于将网络应用于大型图像非常重要,否则分辨率将受到gpu内存的限制。
图2. 重叠平铺策略
具体网络结构如图1,我来进行详细阐述,后期我会对改论文进行代码实现。网络可以看成是由两部分组成,左边为压(收)缩网络(contracting path),右边为扩展网络(expansive path)。对于压(收)缩网络部分是一个卷积网络,每个部分包含两个重复的卷积层,卷积核的大小是3X3,没有pad,使用激活函数为RELU,每个部分之后采用一个最大池化层,核大小为2x2,步长为2,来完成下采样,每个下采样之后会将通道数加倍。而对于扩展网络部分,池化层被上采样层替换,上采样层采用卷积核大小为2x2,每个上采样之后通道数减半,之后和对应的压缩成裁剪后的map进行concat,每个扩展层部分内部也是重复使用3x3卷积核。至于为何要进行裁剪(crop)?作者给出了解释,由于每次卷积都会丢失边界像素,因此必须进行裁剪。在整个网络的最后一层,为了进行分类,采用了1x1的卷积层。
接下来篇幅,我来阐述一下网络训练的相关细节。采网络的优化采用的随机梯度下降算法,将输入图像及其相应的分割图输入网络对进行训练,由于整个网络采用的是unpad卷积,使得输出图像比输入图像小一个恒定的边界宽度。为了最小化开销并最大限度地利用GPU内存,作者倾向于使用大的输入块而不是大的批处理大小,因此将批处理减少为单个图像。具体使用高动量(0.99)。能量函数是基于对最后输出的map进行逐像素计算soft-max和交叉熵损失。具体soft-max计算如图3,k表示第k个通道,ak(x):表示第k个通道map上像素位置x的激活值。K:表示总共的类别数量,pk(x):预测为每一类的概率值。交叉熵用E在每个位置
图3. 逐像素soft-max
惩罚p`(x)与1的偏差,具体E如图4,l(x)为每个像素的真值,w是权重map,引入在训练中指示一些像素的重要性。作者预先计算每
图4. E函数定义
个真值分割的权重图,以补偿训练数据集中某一类像素的不同频率,并强制网络学习接触单元之间的分离边界(见图5c和d)。
图5. HeLa细胞分割图对比
分离边界是通过形态学运算计算出来的。那么权重map如何计算,具体如图6,Wc(x):是权重map,用来平衡类别频率,d1:表示像
图6. 权重map计算式子
素位置x到最近细胞边界的距离,d2:表示到第二最近细胞边界的距离。在论文中,作者给出了w0和σ取值,w0=10pixels,σ约等于5pixels.在网络中,网络的权重的初始值是十分重要的,作者也给出了网络权重具体初始化的方法,使得每个特征map有近似的单位方差。论文采用具体标准差为的高斯分布来初始化网络的权重,N表示一个神经元的传入节点数。例如:对于3x3卷积,输入特征通道为64,N取值为9*64=576。由于训练数据有限,论文采用了弹性变形方式来增加训练数据。为什么要进行数据增强呢?数据增强对于保持网络期望的不变性和鲁棒性是必不可少的。对于显微图像,作者主要需要平移和旋转不变性以及对变形和灰度变化的鲁棒性。尤其是训练样本的随机弹性变形,似乎是训练一个标注图像很少的分割网络的关键概念。作者使用3×3粗网格上的随机位移向量生成平滑变形。位移是从一个10像素标准差的高斯分布中采样的。然后使用双三次插值计算每像素位移。收缩路径末端的退出层执行进一步的隐式数据扩充。
最后一部分是实验部分,作者在三个分割任务上对u-net进行了评估。第一个任务是在电子显微镜记录中分割神经元结构。训练数据是序列切片透射电子显微镜30幅图像(512x512像素)果蝇一龄幼虫腹神经索(vnc)。每个图像都会出现与之对应的完全注释的细胞真值分割图(白色)和膜(黑色)。测试集是公开的,但是它的分割图是保密的。可以通过发送预测的膜概率图到组织者。评估通过在10个不同的级别对map进行阈值化并计算“wraping”错误,“rand错误”和“像素错误”。具体结果如图7.
图7. EM分割挑战排名
作者还将u-net应用于光镜图像中的细胞分割任务。此分离任务是2014年ISBI小区跟踪挑战赛的一部分。第一个数据集“PHC-U373”2含有胶质母细胞瘤星形细胞瘤用相差显微镜记录u373细胞在聚丙烯酰亚胺基底上的生长(见图8a、b和补充材料)。它包含35个部分注释的训练图像。在这里,我们得到了92%的平均IOU(“联合交叉点”)。它明显优于83%的次优算法(见图9)。第二个数据集“dic hela”3是记录在flat玻璃上的hela细胞通过差分干涉对比(DIC)显微镜(见图5,图8c,d以及补充材料)。它包含20个部分注释的训练图像。这里我们平均IOU达到77.5%,明显好于第二最佳算法46%。
图8. ISBI细胞分割挑战结果图
图9.2015年ISBI挑战细胞分割IOU结果图
至此,本篇文章细节,我都一一进行阐述,具体请阅读原文,如果有问题,请及时指出,谢谢!后续,我会把具体的实现代码补充上去。