crossMoDA2021——前庭神经鞘瘤分割

2022-08-20 11:32:49 浏览数 (1)

今天将分享前庭神经鞘瘤分割的完整实现过程,为了方便大家学习理解整个流程,将整个流程步骤进行了整理,并给出详细的步骤结果。感兴趣的朋友赶紧动手试一试吧。

一、比赛简介

挑战的目标是分割参与前庭神经鞘瘤(VS)的随访和治疗计划的两个关键脑结构:肿瘤和耳蜗。

所有图像都是在32通道Siemens Avanto 1.5T扫描仪上使用Siemens单通道磁头线圈获得的:

1、使用MPRAGE序列进行对比度增强的T1加权成像,该序列的面内分辨率为0.4×0.4 mm,面内矩阵为512×512,切片厚度为1.0至1.5 mm(TR = 1900 ms,TE = 2.97毫秒,TI = 1100毫秒)

2、使用3D CISS或FIESTA序列的面内分辨率为0.5x0.5 mm,面内矩阵为384x384或448x448以及切片厚度为1.0至1.5 mm(TR = 9.4 ms, TE = 4.23ms)。

二、技术路线

2.1、耳蜗分割

第一步、热力图回归

1、数据预处理

首先将训练数据中有效的数据提取出来,此处标签值1是肿瘤瘤,标签值2是耳蜗,在这里只分析标签值2,其他标签都是0。

然后通过连通域分析mask图像中每个连通域的中心点坐标和xyz的半径值,生成该点处的高斯热力图,高斯热力图的中心就是耳蜗的中心点坐标,高斯Sigma的数值是xyz半径值最大的数值,如果有多个耳蜗区域,将所有耳蜗的高斯热力图相加即可。效果图如下所示,左图是原始图,右图是高斯热力图。

2、准备训练数据

为了将整个图像输入到网络中去,需要对原始图像和热力图进行大小缩放,由于显卡是1080TI的11G显存的大小,所以图像缩放到固定大小(128,128,96),对图像进行(5,95)的均值为0,方差为1的归一化处理。

3、搭建回归网络结构

模型采用的是VNet主体结果,最后一层的激活函数设置成线性及无激活函数,损失函数采用的是L2-loss,学习率是0.001,droupout是0.5,迭代次数是300,训练数据一共200例,迭代次数是300epochs,bathsize是1,优化器是RMSPropOptimizer

4、网络训练和预测

损失函数曲线如下所示。

第二步、二值分类

1、数据预处理

统计所有数据的spacing大小和图像大小,平均值分别是(0.41,0.41,1.46),(512,512,123),耳蜗的boundingbox平均值是(16,13.5,5.0)。可以看到耳蜗的区域非常小,所以采用spacing缩放方式将原始图像和Mask图像统一到(0.3,0.3,0.3)。

2、准备训练数据

针对非耳蜗区域,在整个图像上随机裁切出50个(64,64,64),针对耳蜗区域,根据连通域分析Mask得到每个耳蜗的boundingbox,在该区域内随机获取点,并以此为中心裁切(64,64,64),裁切的个数是50/连通域个数。再对裁切出来的图像进行(5,95)的均值为0,方差为1的归一化处理。

3、搭建二分类网络结构

网络主体采用的是VGG16的残差连接网络,损失函数采用的是二值交叉熵,学习率是0.001,droupout是0.5,迭代次数是10epochs,batchsize是12。训练数据一共8000例,测试数据一共有1000例,验证数据一共有1000例,优化器是AdamOptimizer。

4、网络训练和预测

训练损失结果和精度结果

验证集损失结果和精度结果

在测试数据上进行测试

混淆矩阵是

[[499 1]

[ 0 500]]

ROC曲线是1.0,曲线如下

其他评价指标

precision recall f1-score support

0.0 1.00 1.00 1.00 500

1.0 1.00 1.00 1.00 500

avg / total 1.00 1.00 1.00 1000

第三步、二值分割

1、数据预处理

统计所有数据的spacing大小和图像大小,平均值分别是(0.41,0.41,1.46),(512,512,123),耳蜗的boundingbox平均值是(16,13.5,5.0)。可以看到耳蜗的区域非常小,所以采用spacing缩放方式将原始图像和Mask图像统一到(0.3,0.3,0.3)。

2、准备训练数据

对Mask进行连通域分析得到每个耳蜗的boundingbox,以boundingbox的中心裁切出(64,64,64),对裁切出来的图像进行(5,95)的均值为0,方差为1的归一化处理。

数据增强:为了增强多样性,对裁切出来的数据进行10倍数据扩充,随机旋转30度,x,y,z随机平移0.1大小,水平,垂直随机翻转等。

3、搭建二类分割网络结构

网络主体采用的是VNet的网络,损失函数采用的是二值dice,学习率是0.001,droupout是0.5,迭代次数是10epochs,batchsize是6。训练数据一共有200例,优化器是AdamOptimizer。

4、网络训练和预测

训练损失结果和精度结果

第四步、三网络级联预测耳蜗分割结果

1、输入原始图像,对图像按照图像大小缩放到(128,128,96)大小,采用(5,95)范围的均值为0,方差为1的归一化。

2、输入到热力图回归网络中预测,对结果进行二值化处理,这里采用三分之一的最大热力图值,进行二值化处理,然后再缩放到原始图像大小。

3、对原始图像和预测热力图结果,按照图像spacing缩放到(0.3,0.3,0.3)大小。

4、对采样后的二值热力图进行连通域分析,获得每个连通域的boundingbox范围。

5、在boundingbox范围内,按照步长是(32,32,32)坐标获取(64,64,64)大小的ROI图像区域,采用(5,95)范围的均值为0,方差为1的归一化。

6、输入到二值分类网络中去,如果预测标签值为1,那么就进一步分割,直到遍历完该区域范围,否则处理下一个连通域。

7、对分类标签是1的目标进行分割。

8、将所有的分割结果采样回到原始图像大小,最后输出成预测的分割结果。

下图是整个图像上的金标准结果和预测结果,可以看到预测结果还是不错的。

2.2、肿瘤分割

第一步、热力图回归

1、数据预处理

首先将训练数据中有效的数据提取出来,此处标签值1是肿瘤,标签值2是耳蜗,在这里只分析标签值1,其他标签都是0。

然后通过连通域分析mask图像中每个连通域的中心点坐标和xyz的半径值,生成该点处的高斯热力图,高斯热力图的中心就是肿瘤的中心点坐标,高斯Sigma的数值是xyz半径值最大的数值,如果有多个肿瘤区域,将所有肿瘤的高斯热力图相加即可。效果图如下所示,左图是原始图,右图是高斯热力图。

2、准备训练数据

为了将整个图像输入到网络中去,需要对原始图像和热力图进行大小缩放,由于显卡是1080TI的11G显存的大小,所以图像缩放到固定大小(128,128,96),对图像进行(5,95)的均值为0,方差为1的归一化处理。

3、搭建回归网络结构

模型采用的是VNet主体结果,最后一层的激活函数设置成线性及无激活函数,损失函数采用的是L2-loss,学习率是0.001,droupout是0.5,迭代次数是300,训练数据一共200例,迭代次数是300epochs,bathsize是1,优化器是RMSPropOptimizer

4、网络训练和预测

损失函数曲线如下所示。

第二步、二值分类

1、数据预处理

统计所有数据的spacing大小和图像大小,平均值分别是(0.41,0.41,1.46),(512,512,123),肿瘤的boundingbox平均值是(46,38,11)。可以看到肿瘤的区域非常不大,所以采用spacing缩放方式将原始图像和Mask图像统一到(0.3,0.3,0.3)。

2、准备训练数据

针对非肿瘤区域,在整个图像上随机裁切出50个(64,64,64),针对肿瘤区域,根据连通域分析Mask得到每个肿瘤的boundingbox,在该区域内随机获取点,并以此为中心裁切(64,64,64),裁切的个数是50/连通域个数。再对裁切出来的图像进行(5,95)的均值为0,方差为1的归一化处理。

3、搭建二分类网络结构

网络主体采用的是VGG16的残差连接网络,损失函数采用的是二值交叉熵,学习率是0.001,droupout是0.5,迭代次数是10epochs,batchsize是12。训练数据一共8000例,测试数据一共有1000例,验证数据一共有1000例,优化器是AdamOptimizer。

4、网络训练和预测

训练损失结果和精度结果

验证集损失结果和精度结果

在测试数据上进行测试

混淆矩阵是

[[472 1]

[ 0 527]]

ROC曲线是1.0,曲线如下

其他评价指标

precision recall f1-score support

0.0 1.00 1.00 1.00 473

1.0 1.00 1.00 1.00 527

avg / total 1.00 1.00 1.00 1000

第三步、二值分割

1、数据预处理

统计所有数据的spacing大小和图像大小,平均值分别是(0.41,0.41,1.46),(512,512,123),肿瘤的boundingbox平均值是(46,38,11)。可以看到肿瘤的区域非常不大,所以采用spacing缩放方式将原始图像和Mask图像统一到(0.3,0.3,0.3)。

2、准备训练数据

对Mask进行连通域分析得到每个肿瘤的boundingbox,以boundingbox的中心裁切出(64,64,64),对裁切出来的图像进行(5,95)的均值为0,方差为1的归一化处理。

数据增强:为了增强多样性,对裁切出来的数据进行10倍数据扩充,随机旋转30度,x,y,z随机平移0.1大小,水平,垂直随机翻转等。

3、搭建二类分割网络结构

网络主体采用的是VNet的网络,损失函数采用的是二值dice,学习率是0.001,droupout是0.5,迭代次数是10epochs,batchsize是6。训练数据一共有100例,优化器是AdamOptimizer。

4、网络训练和预测

训练损失结果和精度结果

第四步、三网络级联预测肿瘤结果

1、输入原始图像,对图像按照图像大小缩放到(128,128,96)大小,采用(5,95)范围的均值为0,方差为1的归一化。

2、输入到热力图回归网络中预测,对结果进行二值化处理,这里采用三分之一的最大热力图值,进行二值化处理,然后再缩放到原始图像大小。

3、对原始图像和预测热力图结果,按照图像spacing缩放到(0.3,0.3,0.3)大小。

4、对采样后的二值热力图进行连通域分析,获得每个连通域的boundingbox范围。

5、在boundingbox范围内,按照步长是(32,32,32)坐标获取(64,64,64)大小的ROI图像区域,采用(5,95)范围的均值为0,方差为1的归一化。

6、输入到二值分类网络中去,如果预测标签值为1,那么就进一步分割,直到遍历完该区域范围,否则处理下一个连通域。

7、对分类标签是1的目标进行分割。

8、将所有的分割结果采样回到原始图像大小,最后输出成预测的分割结果。

下图是整个图像上的金标准结果和预测结果,可以看到预测结果还是不错的。

2.3、最后分割结果

最后将上述两步结合起来,在5例测试图像上进行分割,结果如下。

0 人点赞