U-Net: 用于生物医学图像分割的卷积网络
Abstract:
成功的深度网络训练要求有数千张标注(annotated)的训练样本。在这篇文章中,我们提出了一个网络和训练策略,该策略基于对数据增强的充分利用,从而使得可获得的标注样本的使用更加有效。网络架构包含constracting path来获取上下文(context)和一个对称的expanding path来实现精确的像素定位。我们展示的这个网络可以用非常少的图片端对端训练,并且在ISBI挑战中优于先前最好的方法(一种滑窗神经网络)。用这个网络在放射光显微镜图像上训练,我们以很大的差距赢得了ISBI细胞跟踪2015挑战。并且,这个网络很快。在一个近些年的GPU上一张512x512的图像的分割耗时少于1秒。
1 Introduction
在U-Net之前表现最好的是基于滑动窗口的分割网络,通过划分一个个patch,然后分别送入网络,这种方法很慢并且不好权衡patch的大小,因为过大的patch会导致精度下降,过小的patch则能看到的context很小。
U-Net则是一种基于FCN的更优雅的方式。通过FCN来上采样扩大分辨率(即所谓expending path),并且同时综合来自特征提取层的输出信息(即所谓contracting path)。这实际上同时综合了高层的语义信息和低层的特征信息,有助于提高像素分割精度。
问题1:
由于contracting path中的卷积层没有padding,因此尺寸略微缩小,导致后边expending path综合低层特征时不得不进行剪裁以对齐尺寸,实际上contracting path中的卷积加个padding=1就能对齐特征图的尺寸了。
同时也因此导致最终输出的分割分辨率小于输入的分辨率。但是这样有个好处,因为分割图像边缘时由于没有上下文信息会导致效果不佳。
问题2:
最后的输出是两个通道的,因为对每个像素只是二分类。
问题4:
但是似乎还没有BatchNorm,所以四剑客少了一个。(Conv + ReLU + BN + Pooling)
Overlap-tile strategy
前面说到由于最终的分割分辨率小于输入图像的分辨率,因此我们不能获得图像完整的分割掩膜。所以我们可以在原图外围添加一层轮廓,这层轮廓是通过原图镜像得到的。这样我们既能获得完整的分割掩膜,也使得边缘分割效果比较好。
weighted loss
U-Net是实例分割,为了将相互接触的同类实例区分开,对它们之间的背景像素施加比较大的权重。
用什么方法找出这些像素呢?
2 Network Architecture
Contracting Path 卷积1(通道翻倍) + ReLU + 卷积2 + ReLU+MaxPooling(尺寸缩半)
Expending Path 转置卷积(尺寸翻倍,通道数减半)+ ReLU + 特征融合 + 卷积1(通道数减半) + ReLU + 卷积2 + ReLU + 1x1卷积(用于减少通道)
3 Training
Weight map
para initialization
3.1 Data Augmentation
random elastic deformations
Drop-out layers
4 Experiments
5 Conclusion
6 使用Pytorch进行网络搭建
Transposed Conv → FCN → U-Net
FCN开创了图像分割的下采样+上采样
的模式,也就是所谓Encoder+Deconder
。
U-Net则在FCN的基础在上采样过程中拼接来自下采样卷积层的feature map,实现特征融合
,在U-Net中对两个阶段有另一个称呼Contracting Path + Expansive Path
。
FCN和U-Net的区别?
U-Net+与FCN的区别+医学表现+网络详解+创新 - 玖零猴的文章 - 知乎 https://zhuanlan.zhihu.com/p/118540575
语义分割之U-net - stone的文章 - 知乎 https://zhuanlan.zhihu.com/p/37804107