UNet深入解析
概述
因为工作需要,重新深入研究医学影像分割的相关内容。(笔者水平有限,有些翻译不到位,直接附上原文。)
而基于深度学习的医学影像分割一个里程碑式的转折点当属U-Net: Convolutional Networks for Biomedical Image Segmentation.专门用于医学影像分割的卷积神经网络。
创新点
主要的创新点有三点:
-
使用了弹性变形(elastic deformation)的数据增强方式,更高效的从以标注的训练集中进行特征学习;
-
两条不同策略的神经网络路径:
- contracting path: 捕捉上下文(capture context)
- expansion path: 精准定位(precise localization)
-
少量训练集,高效率:采用端到端(end-to-end)的训练方式,能够从很小的训练集中使用滑动窗(sliding-window)高效训练。
Moreover, the network is fast.
UNet设计思路
原有神经网络的局限:
滑动窗的训练策略(Deep neural networks segment neuronal membranes in electron microscopy images(2012)):
- 训练慢:分别训练每一个patch,且由于patch的重叠训练过程存在大量的冗余(redundancy);
- 定位精度与上下文的均衡:较大的patch会损失精度,较小的patch又只能获取一小部分context;
改进策略:
- 改进FNC网络设计UNet网络结构,用重采样(upsampling)代替池化操作(pooling operator);在上采样部分,通过大量的特征通道,将上下文信息传播(propagate)到高分辨率layer当中。
- 特征学习:对训练集进行数据增强,并采用无监督的特征学习方法。
- elastic deformation数据增强策略:能够从变形的数据中学习固定特征,不用再消耗多余资源去计算变形系数。
UNet神经网络结构
UNet的来源
如图所示,神经网络结构为U-型结构。
- 左半边为contracting path(Encoder),是一个传统的卷积神经网络结构,两个3x3卷积层,每个卷积层有一个ReLU激活函数和一个2x2降采样的最大池化。-> 捕捉上下文,进行特征提取与学习。
- 右半边为expansive path(Decoder)。每一个2x2的卷积(up-convolution),将特征通道的数量减半,与contracting path中相应裁剪的特征图的连接。这一步主要是弥补每一步卷积之后边界丢失的像素值。-> 定位,获取精确的位置信息。
原理解析
Training
-
Soft-max
p k = e x p ( a k ( x ) ∑ k ′ = 1 K a k ′ ( x ) ) (1) p_k = exp \left( \frac{a_k(\rm x)}{\sum_{k'=1}^{K}a_k'(\rm x)}\right) \tag{1} pk=exp(∑k′=