Tensorflow入门教程(二十五)——深度监督VNet(DSVNet)

2020-06-29 15:32:39 浏览数 (2)

在之前的篇章中我分享过2D和3D版本VNet模型例子,可以说这是很基本的模型。今天我将从模型改进上给大家分享一下2D版本的深度监督VNet。

1、深度监督VNet模型

大家看过我之前的文章,肯定对VNet模型已经很熟悉了。我画了一个深度监督VNet模型结构示意图。接下来我将简单说一下要点,方便大家理解。如图所示,这个网络左半边跟VNet结构是一样的,不同的地方在于右半边结构,每个上采样操作都有一个额外的分支操作,该分支操作是将不同尺度图像通过不同尺度上采样操作将图像恢复到原始图像大小。例如,VNet中上采样操作只是将图像上采样两倍,而深度监督VNet中上采样操作不仅有上采样两倍,还有四倍,八倍。

2、数据集

我们使用LiTS—LiverTumorSegmentation Challenge的CT图像做为我们的训练数据和测试数据。下载地址:https://competitions.codalab.org/competitions/17094#participate。

3、网络训练过程

网络实现不是很复杂,需要注意的一个点就是在训练时如何进行深度监督。深度监督VNet的输出有四个不同尺度分割结果,我们需要将前三个不同尺度分割结果分别与金标准图像来计算dice(即loss1,loss2,loss3),然后相加,为了控制这三个结果对最后分割结果的影响,还需要乘一个权重因子alpha(初始为1),随着不断训练alpha也随着不断衰减(以0.9倍衰减)。losslast是最后输出层结果与金标准图像计算的dice,最终lossall公式如图所示。

4、结果

下载的训练数据有130例,我们选择110数据来进行训练,20例用来测试。此外还在VNet上进行了训练并与深度监督VNet结果进行对比,在测试数据上平均精度:深度监督VNet为91.99%,VNet为91.06%。最后给出一张肝脏分割金标准结果,VNet结果和DSVNet结果对比效果图。

感兴趣的朋友可以在github上看到VNet实现的详细过程,如果大家觉得这个项目还不错,希望大家给个Star并Fork,可以让更多的人学习。如果碰到任何问题,随时留言,我会尽量去回答的。

0 人点赞