BraTS18——多模态MR图像脑肿瘤分割挑战赛续_模态

前面已经分享过对多模态MR图像脑肿瘤进行分割处理的例子。今天将继续分享使用多分类Focalloss函数来训练分割网络。为了方便大家学习理解整个分割流程,我将整个流程步骤进行了整理,并给出每个步骤的结果,希望对大家有所帮助。

一、脑肿瘤图像分析与预处理

(1)、多模态MR脑肿瘤图像分析。

分析的过程基本上跟上一篇一致,这里就不多言了,直接从数据处理开始。

(2)、准备脑肿瘤分割数据。

首先将4个模态序列的MR原始图像进行合并生成4个通道的三维图像,原始图像大小都是(240x240x155x1),合并后大小是(240x240x155x4);

其次对Mask图像进行one-hot操作,将原始图像大小都是(240x240x155x1),生成大小是(240x240x155x4):通道0中非零值区域是背景区域,通道1中非零值是坏疽区域,通道2中非零值是浮肿区域,通道3中非零值是增强肿瘤区域;

最后对图像和Mask进行分块——取Patch操作,生成若干个(128,128,64)大小的图像和Mask,判断并输出非零的Mask和对应的图像。

二、脑肿瘤分割

(1)、搭建VNet3d模型,与二分类VNet3d模型的不同之处就在于最后一层输出采用SoftMax激活函数,网络输入大小是(128x128x64),loss采用的是多类Focalloss函数。

BraTS18——多模态MR图像脑肿瘤分割挑战赛续_三维图像_02

多类Focalloss函数tensorflow版本实现如下所示:























def categorical_focal_loss(Y_pred, Y_gt, gamma, alpha):"""     Categorical focal_loss between an output and a target    :param Y_pred: A tensor of the same shape as `y_pred`    :param Y_gt: A tensor resulting from a softmax(-1,z,h,w,numclass)    :param alpha: Sample category weight,which is shape (C,) where C is the number of classes    :param gamma: Difficult sample weight    :return:    """1.e-5# Scale predictions so that the class probas of each sample sum to 11, keepdims=True)# Clip the prediction value to prevent NaN's and Inf's1.# Calculate Cross Entropy    cross_entropy = -Y_gt * tf.log(output)# Calculate Focal Loss11, 2, 3))0)    loss = tf.reduce_mean(alpha * loss)return

(2)、训练的损失函数和精度如下图所示。

BraTS18——多模态MR图像脑肿瘤分割挑战赛续_模态_03

BraTS18——多模态MR图像脑肿瘤分割挑战赛续_非零值_04

(3)、脑肿瘤分割推理过程:首先将原始flair,T1,T2,T1ce图像一起读取进来并进行z-score标准化操作,然后将四个模态图像合并成4通道三维图像(240x240x155x4),输入到网络中去,网络输入大小是(240x240x48x4),在z方向上分块输入并拼接最终得到(240x240x155)分割结果。

(4)、进行了结果测试,左边是金标准图像,右边是预测结果图像,如下所示。

BraTS18——多模态MR图像脑肿瘤分割挑战赛续_非零值_05

BraTS18——多模态MR图像脑肿瘤分割挑战赛续_模态_06

为了大家更好的学习,我把整个项目代码分享到github上:

​https://github.com/junqiangchen/BraTS18-Challege​


如果大家觉得这个项目还不错,希望大家给个Star并Fork,可以让更多的人学习。如果碰到任何问题,随时留言,我会尽量去回答的。