今天将分享腹部多器官的多类分割的完整实现过程,为了方便大家学习理解整个流程,将整个流程步骤进行了整理,并给出详细的步骤结果。感兴趣的朋友赶紧动手试一试吧。
在前面的文章中已经分享过13类器官分割的方法,腹部多器官分割挑战赛,今天将采用另外一种预处理的方式来进行分割。
一、图像分析与预处理
(1)、腹部多器官数据由50例腹部CT扫描构成。50个扫描期间具有可变容积的大小(512×512×85 - 512×512×198)门静脉造影相捕获的视野大小(约280 X 280 X 280毫米。3 - 500×500×650毫米3) 。面内分辨率从0.54 x 0.54 mm 2到0.98 x 0.98 mm 2不等,而切片厚度的范围从2.5 mm到5.0 mm。腹部十三个器官由两名经验丰富的大学生手工标记,并由放射科医生进行了体积验证,包括:(1)脾,(2)右肾,(3)左肾,(4)胆囊,(5)食道,(6)肝脏,(7)胃,(8)主动脉,(9)下腔静脉,(10)门静脉和脾静脉,(11)胰腺,(12)右肾上腺,(13)左肾上腺。在标签图像中,一些患者可能没有(2)右肾或(4)胆囊。数据可以点击原文链接下。
(2)、采用简单粗暴的方式来处理数据,由于训练的显卡是1080ti的11G显存的,所以首先将训练原始图像和标注图像进行图像大小缩放到固定大小,具体是128x128x96,如果你的显卡显存足够大的话,可以将该大小改的大一点,如果显存小的话,可以将该大小改小一点。
(3)、对缩放后的原始图像进行窗宽窗位设置,将0到500之间的Hu值进行保留,其他的范围进行截断处理。
(4)、然后在采用均值为0,方差为1的方式对原始图像进行归一化处理。
(5)、为了防止模型过拟合,还增加了数据增强的处理过程,采用旋转,平移,翻转等方法对图像和标注数据同时进行扩充处理,这里扩充了50倍。
二、分割网络
(1)、搭建VNet3d模型,网络输入大小是(128,128,96)。具体实现可以参考Tensorflow入门教程(十九)——基于VNet的前列腺分割案例
(2)、loss采用的是多分类的focalloss函数。具体实现可以参考Tensorflow入门教程(三十五)——常用多类图像分割损失函数
(3)、训练损失函数和精度结果如下所示。
三、测试数据结果
首先将输入图像统一缩放到(128,128,96),设置窗宽窗位(0,500),并采用均值为0,方差为1的方式归一化,然后输入到网络中预测,最后将结果恢复到原始图像大小。下面是10例测试数据分割结果。