泌尿肿瘤

注册

 

发新话题 回复该主题

KiTS19肾肿瘤分割挑战赛十一 [复制链接]

1#

KiTS19挑战赛已经过了三个多月了,测试数据终于在7月15号正式发布了,我下载了测试数据并进行了测试。为了方便大家学习理解整个分割流程,我将整个流程步骤进行了整理,并给出每个步骤的结果,希望对大家有所帮助。

一、肾脏图像分析与预处理

(1)、获取图像属性信息。读取原始图像,显示图像大小,Spacing信息,设置合适的窗宽窗位信息来截断非肾脏区域的图像。

(2)、获取Mask图像信息。读取Mask图像,输出Mask的全部标签值,0是背景,1是肾脏,2是肾脏肿瘤。

(3)、准备粗肾脏分割数据。首先图像进行插值,将图像插值成(,,64)大小的范围区域;然后对插值后的图像进行分块取Patch操作,生成若干个(,,64)大小的图像和Mask出来。

(4)、准备精细肾脏分割数据。根据金标准的Mask图像确定肾脏的起始和结束范围;截取该范围内的原始图像和mask图像,然后将截取的图像和Mask图像进行插值操作,按照Spacing的方式进行插值,保持x和y方向的Spacing值不变,只改变z方向的Spacing值,插值后变成1.0;最后对插值后的图像进行分块取Patch操作,生成若干个(,,64)大小的图像和Mask。

(5)、准备2d肾脏肿瘤分割数据。将图像和Mask图像进行插值操作,按照Spacing的方式进行插值,保持x和y方向的Spacing值不变,只改变z方向的Spacing值,插值后变成1.0;然后根据Mask图像来确定肿瘤区域的图像,保存输出该mask图像和对应的原始图像。

(6)、准备3d肾脏肿瘤分割数据。根据金标准的Mask图像确定肾脏肿瘤的起始和结束范围;截取该范围内的原始图像和mask图像,然后将截取的图像和Mask图像进行插值操作,按照Spacing的方式进行插值,保持x和y方向的Spacing值不变,只改变z方向的Spacing值,插值后变成1.0;最后对插值后的图像进行分块取Patch操作,生成若干个(,,64)大小的图像和Mask,判断并输出非零的Mask和对应的图像。

二、肾脏分割

(1)、搭建VNet3d模型,输入大小是(xx64),loss采用的是dice。

(2)、肾脏分割分为粗分割和精分割两个步骤,粗分割训练的损失函数和精分割训练的损失函数如下所示。

粗分割loss

精分割loss

(3)、粗分割推理过程:首先原始图像进行插值变成(xx64)并设置窗宽窗位,输入到网络中去,网络输入大小是(xx32),在z方向上分块输入并拼接得到(xx64)分割结果,最后将分割结果插值回到原始图像大小,并对分割Mask图像进行肾脏的起始和结束范围判断,输出起点和结束位置信息。

(4)、精分割推理过程:首先根据上述起点和结束位置信息截取原始图像在该区域之间的子图像,然后对子图像按z方向spacing进行插值变成1.0并设置窗宽窗位,输入到网络中去,网络输入大小是(xx32),在z方向上分块输入并拼接得到分割结果,再将分割结果插值回到原始图像spacing大小,并按照起始和结束位置信息拼接到原始图像大小的Mask图像,最后去除小目标物体,策略是小于0.2倍的最大物体体积的目标去除。

三、肾脏肿瘤分割

(1)、搭建VNet2d模型,输入大小是(x),loss采用的是dice。搭建VNet3d模型,输入大小是(xx64),loss采用的是dice。

(2)、肾脏肿瘤分割采用2d和3d模型相结合的方式来进行肿瘤分割,2d网络训练loss和3d网络训练loss如下所示。

肿瘤2d网络loss

肿瘤3d网络loss

(3)、2d肿瘤分割推理过程:首先根据肾脏分割结果的起点和结束位置信息截取原始图像在该区域之间的子图像,然后对子图像按z方向spacing进行插值变成1.0并设置窗宽窗位,输入到网络中去,网络输入大小是(x),将该区域的图像一张一张输入到网络中,得到相应的分割结果,再将分割结果插值回到原始图像spacing大小,并按照起始和结束位置信息拼接到原始图像大小的Mask图像,最后去除小目标物体,策略是小于0.2倍的最大物体体积的目标去除。

(4)、3d肿瘤分割推理过程:首先根据肾脏分割结果的起点和结束位置信息截取原始图像在该区域之间的子图像,然后对子图像按z方向spacing进行插值变成1.0并设置窗宽窗位,输入到网络中去,网络输入大小是(xx32),在z方向上分块输入并拼接得到分割结果,再将分割结果插值回到原始图像spacing大小,并按照起始和结束位置信息拼接到原始图像大小的Mask图像,最后再去除小目标物体,策略是小于0.2倍的最大物体体积的目标去除。

(5)、接下来将2d和3d肿瘤结果进行结合。

step1、将2d和3d肿瘤结果求交集区域,然后判断交集区域与2d和3d肿瘤区域所重叠的区域,如果重叠比率不为零就保留相应2d和3d的肿瘤区域。

step2、将step1结果与肾脏Mask结果求并集,得到肾脏跟肿瘤区域。

step3、确定step2结果区域的起点和终点位置信息。

step4、从起点到终点遍历3d肿瘤每一层是否有Mask,如果有的话就用对应层的2d肿瘤结果与对应层的肾脏和肿瘤结果求交集,进一步得到肿瘤图像。

四、在测试数据上进行分割试验

如下图所示,左边是原始图像,中间是网络分割出来的肾脏Mask,右边是网络分割出来的肿瘤Mask。整个分割结果视频如下所示,红色圈是肾脏区域范围,蓝色圈是肿瘤区域范围。

在排行榜上,成绩只有73名,跟圈内大佬的差距还是很大的。

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

分享 转发
TOP
发新话题 回复该主题