完整代码+数据集见文末
3DUNet是一种卷积神经网络(CNN),专为处理3D图像而设计。它基于U-Net架构,是一种对称的卷积网络,具有上采样和下采样的过程。PyTorch 3DUNet在U-Net的基础上添加了更多的卷积层和跳跃连接,以便更好地捕捉图像的上下文信息。它可以在训练时动态地建立记忆网络,从而有效地处理3D图像数据。
1.数据集
所有多模态扫描均以NIfTI文件(.nii.gz)形式提供,并描述了a)原生(T1)和b)对比后T1加权(T1Gd), c) T2加权(T2)和d) T2液体衰减反转恢复(T2- flair)体积,这些扫描是通过不同的临床方案和来自多个(n=19)机构的不同扫描仪获得的,这里提到的数据提供者。
所有的影像数据集都由1 ~ 4名评分者按照相同的注释协议手动分割,并且他们的注释得到了有经验的神经放射科医生的认可。注释包括gd增强肿瘤(ET -标签4)、瘤周水肿(ED -标签2)和坏死和非增强肿瘤核心(NCR/NET -标签1),如BraTS 2012-2013 TMI论文和最新的BraTS综述论文所述。所提供的数据经过预处理后进行分发,即共同注册到相同的解剖模板,插值到相同的分辨率(1 mm^3)和剥去颅骨。
2.模型
class UNet3d(nn.Module):def __init__(self, in_channels, n_classes, n_channels):super().__init__()self.in_channels = in_channelsself.n_classes = n_classesself.n_channels = n_channelsself.conv = DoubleConv(in_channels, n_channels)self.enc1 = Down(n_channels, 2 * n_channels)self.enc2 = Down(2 * n_channels, 4 * n_channels)self.enc3 = Down(4 * n_channels, 8 * n_channels)self.enc4 = Down(8 * n_channels, 8 * n_channels)self.dec1 = Up(16 * n_channels, 4 * n_channels)self.dec2 = Up(8 * n_channels, 2 * n_channels)self.dec3 = Up(4 * n_channels, n_channels)self.dec4 = Up(2 * n_channels, n_channels)self.out = Out(n_channels, n_classes)def forward(self, x):x1 = self.conv(x)x2 = self.enc1(x1)x3 = self.enc2(x2)x4 = self.enc3(x3)x5 = self.enc4(x4)mask = self.dec1(x5, x4)mask = self.dec2(mask, x3)mask = self.dec3(mask, x2)mask = self.dec4(mask, x1)mask = self.out(mask)return mask
3 部分效果展示
完整链接
DL00198-基于3DUnet的脑肿瘤语义分割完整代码+数据集含输出结果