内容纲要

1、简介

U-net是基于FCN网络的思想设计的,整个网络只有卷积层,而没有全连接层。

在FCN中:网络的浓缩路径,图像分辨率逐渐降低,上下文信息会逐渐增强。在扩展路径中,通过上采样的方式,让特征图的分辨率逐渐增大。同时,为了结合低层feature map的强位置信息,将浓缩路径中的相应部分结合到扩展路径中。这种架构可以较好地进行位置定位。

U-net做的修改有:

  1. 在上采样部分,feature map的通道数非常大,作者认为这样可以将上下文信息传递到分辨率更高的层当中。这样做的一个结果就是它基本上和浓缩路径对称了,因此看上去像一个U形的结构。
  2. 为了预测图像边界区域的像素点,采用overlap-tile策略补全缺失的context。
  3. 由于训练数据太少,采用大量弹性形变的方式增强数据。这可以让模型更好学习形变不变性。这种增强方式对于医学图像来说很重要。
  4. 在细胞分割任务中的另一个挑战是,如何将同类别的相互接触的目标分开。本文提出了使用一种带权重的损失(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,表达式如下

其中, x 为二维平面 Ω 上的像素位置, a_k(x) 表示网络最后输出层中pixel x 对应的第 k个通道的值, K 是类别总数。 p_k(x) 表示像素 x 属于 k 类的概率。

损失函数使用negative cross entropy。cross entropy的数学表达式如下:

其中 p_l(x) 表示 x 在真实label所在通道上的输出概率。需要特别注意的是cross entropy中还添加一个权重项 w(x) 。这是因为考虑到物体间的边界需要更多的关注,所对应的损失权重需要更大。

3.2 像素损失权重计算

在损失函数计算中我们讲到对于边界像素我们给的损失权重要更大,但怎么获取这个权重?我们得到一张图片的ground truth是一个二值的mask,本文首先采用形态学方法去计算出物体的边界。然后通过以下的表达式去计算权重图。

其中 w_c(x) 是类别权重,需要根据训练数据集中的各类别出现的频率来进行统计,类别出现的频率越高,应该给的权重越低,频率越低则给的权重越高(文章没有详细说是怎么计算的)。 d_1(x) 表示物体像素到最近cell的边界的距离, d_2(x) 表示物体像素到第二近的cell的边界的距离。在本文中,设置 w_0=10,\sigma=5 。

最后修改日期:2018年11月10日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。