3D U-Net脑胶质瘤分割BraTs + Pytorch实现

原论文地址: 连接

一、网络模型的分析和对比

原始2D-Unet网络模型

v2-cf0ead284f68d91a42cd3908cf793956_b.jpg

我的2D-Unet网络模型

1、和原来的2D-Unet网络不同的是,我输入通道为4,我这里应该改为4个通道,对应四个模态图像,而输出通道为3,我对应的是三个嵌套子区域标签(WT、TC、ET)

2、另外,最大不同的是我的3X3卷积后的图像尺寸与卷积前一致,所以不用像原来2D-Unet那样因为编码和解码的尺寸不一致,需要裁剪后再拼接.问题来了,为什么原来2D-Unet的卷积会导致卷积前后图尺寸发生改变,因为原来的卷积操作为 kernelsize = 3 ,stride =1 ,padding=0,此卷积为valid方式,这种卷积只能使得图的尺寸越卷越小.而我这里为 kernelsize = 3 ,stride =1 ,padding=1.根据公式可以得出卷积前后的特征图尺寸一致.这种卷积方式为same卷积.

[概念]卷积的三种模式:valid、same、full_程序猿的养生馆-CSDN博客

关于2D-Unet的讲解和Pytorch代码实现前面我也做了详细地讲解.

玖零猴:U-Net+与FCN的区别+医学表现+网络详解+创新 玖零猴:2D-UNet脑胶质瘤分割BraTs + Pytorch实现


原始3D-Unet网络模型

v2-b96c16ddee163ebfe2542cc13c074a17_b.jpg

1、和原始的2D-Unet对比,最显著的不同就是3D-Unet池化下采样共3次,所以这里一共有4个尺度,而原来2D-Unet有5个尺度

3、另外,需要注意的是在编码部分中每个尺度的两次卷积后特征图的通道数变化,很明显和2D-Unet不同.而解码部分却一样.

我的3D-Unet网络模型

1、原来3D-Unet输入通道为3,我这里应该改为4个通道,对应四个模态图像,而输出通道一样都为3,我对应的是三个嵌套子区域标签(WT、TC、ET).这里根据自己的需求设置自己网络的输入和输出通道.

2、原来3D-Unet和原来2D-Unet一样都采用了valid卷积,为了保证网络的输入输出分辨率一致,因此我的2D-Unet和3D-Unet都采用same卷积,所以就不用裁剪了,同时可以保证网络的输入输出分辨率一致

其余都是和原始3D-Unet一样的,为了更加好看,我把网络标注清晰点,如下图

v2-31891a71999bfe4a119c599000461936_b.jpg

二、预处理与数据的获取

玖零猴:(3D网络)医学三维数据且又多模态多标签该如何预处理

三、环境的配置

1、系统环境 WIN10 + CUDA 92 + CUDNN7 + ANACONDA

2、ANACONDA指令快速配置环境,先下载下面文件

download.csdn.net/downl

v2-1e6ab2b0230d510b9f6685399508900f_b.jpg

四、工程代码下载

https://github.com/Merofine/Unet3D

五、训练

        python train.py --arch=“unet3d” --dataset=“Jiu0Monkey”
      

六、测试

        python test.py --name="jiu0Monkey_unet3d_woDS"
      


使用ITK-SNAP查看

v2-97710a665ed03869aa10a55bb32aa4d4_b.jpg
Mask

v2-39016decf97a7eb2da4bcd416b71c56e_b.jpg
预测

v2-70ff4f5e0c8b3d1e6aa5c5c1be1e358c_b.jpg

猜你喜欢

转载自blog.csdn.net/weixin_40519315/article/details/106034145