U-Net:Convolutional Networks for Biomedical Image Segmentation
2015MICCAI会议上提出,适用于各种生物医学图像分割问题,可以从少量的数据中学习到一个对边缘提取十分鲁棒的模型
Unet是一个encoder-decoder结构,左边一半的encoder包括若干卷积,池化,把图像进行下采样,右边的decoder进行上采样,恢复到原图的形状,给出每个像素的预测。它继承了FCN的思想,但与FCN不同的是:(1)Unet保留了大量的feature map通道,从而可以使更多的信息流入最终复原的分割图像中。(2)Unet是完全对称的,对Decoder进行了加卷积加深处理,而FCN只是单纯的上采样。(3)将Encoder的feature map叠加在Decoder同尺寸的feature map上,再进行卷积和上采样操作,从而可以整合更多的信息。
降采样对于分割网络是必要的,它可以增加对输入图像的一些小扰动的鲁棒性,减少过拟合的风险,降低运算量,增加感受野的大小。升采样把抽象的特征还原解码到原图的尺寸,最终得到分割结果。
网络结构
网络由一个contracting path(左边)和一个expensive path(右边)组成。
contracting path(Encoder)由几组重复的卷积操作和下采样操作组成,每组卷积操作由两个3×3的卷积(padding=0,stride=1)组成,卷积后跟着一个线性整流单元relu和一个2×2(stride=2)的最大池化操作实现下采样,下采样后得到的feature map尺寸缩小一倍。在执行卷积操作的过程中,将特征通道的数量加倍,总共加倍四次。
feather map经expansive path(Decoder)恢复原始分辨率(由于卷积使用的是valid模式,实际输出比输入图像小一些)。Decoder的每一步包含一个特征图的上采样(2×2的反卷积,采用插值的方式进行上采样),每经过一次上采样图像尺寸扩大一倍,特征通道的数量减半。该网络还使用了跳跃连接,将上采样结果与编码器中具有相同分辨率的feature map(裁剪之后)进行连接,再经2个尺寸为3×3的卷积和ReLu作用。
在最后一层是1×1的卷积将每个64个分量的特征向量映射到预期的类number。
网络输入-镜像策略Overlap-tile
从上面的网络结构图中可以看到,输出图像是572×572,而输出的预测图像却变成了388 × 388 ,这是由于使用的valid卷积导致的,若直接输入原图,最后输出的feature map尺寸会比原图小。为避免上述情况的发生,本文用了一个小trick:overlap-tile
Overlap-tile策略的主要思想是对图像的某一块像素点进行预测(黄框)时,需要周围的像素点(蓝框)提供上下文信息,以获得更准确的预测。然而图像边界的图像块周围没有像素,因此对周围像素采用镜像扩充。上图中左侧图像是进行镜像padding后的效果,黄框是原图的左上角区域,padding后其四周获得了上下文信息,与图像内部的其他区域有类似效果。图中红色框内为原始图片,其周围扩充的像素点均由原图沿白线对称得到,使边界图像块也能得到准确的预测。
Overlap-tile策略还可以同 patch一起使用。当内存资源有限从而无法实现整张大图进行预测时,可以对图像先进行镜像padding,然后按序将padding后的图像分割成固定大小的patch,从而实现对任意大的图像进行无缝分割,同时每个图像块也获得了相应的上下文信息。
此外,在数据量较少的情况下,每张图像都被分割成多个patch,相当于起到了扩充数据量的作用。
跳跃结构-特征连接
Unet网络采用了skip-connection,将底层信息的位置信息和深层特征的语义信息融合。
当网络完成反卷积之后,将反卷积结果与encoder中对应步骤的特征图拼接起来,encoder中的feather map尺寸稍大,需将其裁剪成相同大小的feature map后再进行拼接(在这里进行裁剪是必要的,因为卷积的过程会有边界像素的丢失)。在channel维度上concate,而不是element-wise的sum,对原始图像进行扩充,保证了裁剪时原始图像的特征不会被丢弃。
数据增广
医学图像分割通常面临可用训练数据少的问题,可对训练图像应用弹性变形进行数据增强,这在生物医学分割中尤其重要,因为变形是组织中最常见的变化,并且可以有效的模仿真实的变形。
本文采用了数据平移,数据旋转,弹性变形(使用双三次插值进行变形后的填充),压缩路径最后使用dropout层进行数据增广。