1、简介
U-net是基于FCN网络的思想设计的,整个网络只有卷积层,而没有全连接层。
在FCN中:网络的浓缩路径,图像分辨率逐渐降低,上下文信息会逐渐增强。在扩展路径中,通过上采样的方式,让特征图的分辨率逐渐增大。同时,为了结合低层feature map的强位置信息,将浓缩路径中的相应部分结合到扩展路径中。这种架构可以较好地进行位置定位。
U-net做的修改有:
- 在上采样部分,feature map的通道数非常大,作者认为这样可以将上下文信息传递到分辨率更高的层当中。这样做的一个结果就是它基本上和浓缩路径对称了,因此看上去像一个U形的结构。
- 为了预测图像边界区域的像素点,采用overlap-tile策略补全缺失的context。
- 由于训练数据太少,采用大量弹性形变的方式增强数据。这可以让模型更好学习形变不变性。这种增强方式对于医学图像来说很重要。
- 在细胞分割任务中的另一个挑战是,如何将同类别的相互接触的目标分开。本文提出了使用一种带权重的损失(weighted loss)。在损失函数中,分割相互接触的细胞像素获得了更大的权重。
2、网络结构
u-net网络结构包括了卷积操作,最大值池化,ReLU激活函数,concatenation,上采样等等。那如何进行上采样呢?这个可以通过Transpose convolution 操作。关于 Transpose convolution 介绍,可以参看这个链接。u-net网络的一个参考网络:
红色框内代表u-net的左半部分
蓝色框内代表u-net的右半部分
绿色框内代表最后的卷积层
实现相对比较简单,只需要max pooling ,relu激活函数等
3、损失
3.1、损失函数
网络输出的是pixel-wise的softmax,表达式如下
其中, 为二维平面
上的像素位置,
表示网络最后输出层中pixel
对应的第
个通道的值,
是类别总数。
表示像素
属于
类的概率。
损失函数使用negative cross entropy。cross entropy的数学表达式如下:
其中 表示
在真实label所在通道上的输出概率。需要特别注意的是cross entropy中还添加一个权重项
。这是因为考虑到物体间的边界需要更多的关注,所对应的损失权重需要更大。
3.2 像素损失权重计算
在损失函数计算中我们讲到对于边界像素我们给的损失权重要更大,但怎么获取这个权重?我们得到一张图片的ground truth是一个二值的mask,本文首先采用形态学方法去计算出物体的边界。然后通过以下的表达式去计算权重图。
其中 是类别权重,需要根据训练数据集中的各类别出现的频率来进行统计,类别出现的频率越高,应该给的权重越低,频率越低则给的权重越高(文章没有详细说是怎么计算的)。
表示物体像素到最近cell的边界的距离,
表示物体像素到第二近的cell的边界的距离。在本文中,设置
。
留言