今天我将分享如何用Tensorflow实现VNet模型,并实现基于MR图像的前列腺分割的例子。


1、VNet模型

    大家看过我之前的文章,肯定对UNet模型已经非常熟悉了,其实VNet模型可以看做是从UNet模型演变过来的,网络模型结构如下所示。该结构出自2016年发表的一篇论文《V-Net:Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation》,关于该网络具体的细节可以阅读原文,我这里就不多说了。

Tensorflow入门教程(十九)——基于VNet的前列腺分割案例_数据集

2、数据集

Tensorflow入门教程(十九)——基于VNet的前列腺分割案例_tensorflow_02

    我们使用MICCAI Grand Challenge:Prostate MR Image Segmentation 2012的横向T2加权MR前列腺图像来做为我们的数据。下载地址:​https://promise12.grand-challenge.org/download/​

3、网络实现

    我用Tensorflow实现了2D版本的VNet来进行分割实验(由于我的NVIDA显卡是GTX1080,原文中使用的是NVIDA显卡是 Tesla K40)。具体实现我已经分享到github上:​https://github.com/junqiangchen/VNet。​

4、结果

    由于数据集很小只有50例病人图像,所以数据增强是必须的图像预处理步骤。下面是模型训练时损失函数变化的情况。


Tensorflow入门教程(十九)——基于VNet的前列腺分割案例_github_03

    对增强后的图像分成训练集和测试集,训练完模型后,在测试集上进行测试,部分结果如下。

Tensorflow入门教程(十九)——基于VNet的前列腺分割案例_tensorflow_04

    从上面可以看到整体分割效果还是不错的,感兴趣朋友们就自己动手试一试吧。如果大家觉得这个项目还不错,希望大家给个StarFork,可以让更多的人学习。如果碰到任何问题,随时留言,我会尽量去回答的。