由于UNet也和FCN一样, 是全卷积形式, 没有全连接层(即没有固定图的尺寸),所以容易适应很多输入尺寸大小,但并不是所有的尺寸都可以,需要根据网络结构决定, 在U-Net中, 池化是2x2的且是valid策略,即没有padding,因此要保证输入的图像在经过每一次池化的时候都要是边长偶数。所以要特别注意输入图像的尺寸。一个比较好的方法是从最小分辨率(分辨率就是feature map的尺寸)出发沿收缩路径的反方向进行计算,得到输入图像的尺寸。
overlap-tile策略
在U-Net结构中,卷积全程都使用valid来进行卷积,该卷积的特点就是没有padding, 即padding = 0,所以特征图(feature map)会越卷越小,它不会越卷越大,导致了最后输出的尺寸回不到原来输入的尺寸。
使用valid的原因:不想给每层卷积加padding(连续对feature map加padding卷积,会使得padding进来的feature误差越来越大,因为越卷积,feature的抽象程度越高,就更容易受到padding的影响。
办法:简单地说, 就是在预处理中,对输入图像进行padding, 通过padding扩大输入图像的尺寸,使得最后输出的结果正好是原始图像的尺寸, 同时, 输入图像块(黄框)的边界也获得了上下文信息从而提高预测的精度。可对任意大的图像进行无缝分割. 而这种方法通常需要将图像进行分块(patch)的时候才使用。
那么为什么要对图像分块(patch)再输入,而不是直接输入整张图像呢?因为内存限制,有的机器内存比较小,需要分块。然后再通过Overlap-tile 策略将分块图像进行预处理扩大输入尺寸.
总之,U-Net作者创新的Overlap-tile 策略,这种方法用于补全输入图像的上下信息,也可以解决由于现存不足造成的图像输入的问题。
加权loss
作者通过预先计算权重图的来获得每一个像素在损失函数中的权值,这种方法补偿了训练数据每类像素的不同频率,并且使网络更注重学习相互接触的细胞间的边缘。分割边界使用形态学运算。
可看原作者在知乎的回答:https://zhuanlan.zhihu.com/p/44958351
虽然通过加入短连接解决了无法训练的问题,但是作者仍然把deep supervision加入到UNet++中,因为这会带来一个非常棒的优势,就是剪枝。
小结:UNet++的第一个优势就是精度的提升,这个应该是它整合了不同层次的特征所带来的,第二个是灵活的网络结构配合深监督,让参数量巨大的深度网络在可接受的精度范围内大幅度的缩减参数量。
指出unet++没有从多尺度中表达足够的信息,仍然有很大的改进空间。
unet3+利用了全尺度的跳跃连接(skip connection)和深度监督(deep supervisions)。全尺度的跳跃连接把来自不同尺度特征图中的高级语义与低级语义结合;而深度监督则从多尺度聚合的特征图中学习层次表示。本文所提出的方法特别适用于不同规模的器官。除了提高精度外,所提出的UNet 3+还可以减少网络参数,提高计算效率。此外,我们还进一步提出了一种混合损失函数,并设计了一个classification-guided module来增强器官边界和减少非器官图像的过度分割,从而获得更准确的分割结果。
Full-scale Skip Connections
所提出的全尺寸跳跃连接改变了编码器和解码器之间的互连以及解码器子网之间的内连接。无论是连接简单的UNet,还是连接紧密嵌套的UNet++,都缺乏从全尺度探索足够信息的能力,未能明确了解器官的位置和边界。为了弥补UNet和UNet++的缺陷,UNet 3+中的每一个解码器层都融合了来自编码器中的小尺度和同尺度的特征图,以及来自解码器的大尺度的特征图,这些特征图捕获了全尺度下的细粒度语义和粗粒度语义。
Full-scale Deep Supervision
在UNet++中用到了深度监督(Deep supervision),如下图所示UNet++的深度监督,它对生成的全分辨率特征图(全分辨率=最后分割图的分辨率)进行深度监督。具体的实现操作就是在图中 X0,1 、X0,2、 X0,3 、X0,4后面加一个1x1的卷积核,相当于去监督每个level,或者说监督每个分支的UNet的输出。
因篇幅问题不能全部显示,请点此查看更多更全内容