代码
项目分享 | 基于昇思MindSpore AI框架的肾脏肿瘤分割「MPLab」团队思路

项目分享 | 基于昇思MindSpore AI框架的肾脏肿瘤分割「MPLab」团队思路

项目分享 | 基于昇思MindSpore AI框架的肾脏肿瘤分割「MPLab」团队思路

第十届CCF大数据与计算智能大赛(2022 CCF BDCI)已圆满结束,大赛官方竞赛平台DataFountain(简称DF平台)将陆续释出各赛题获奖队伍的方案思路,欢迎广大开发者交流讨论。

本方案为**【基于昇思MindSpore AI框架的肾脏肿瘤分割】赛题的三等奖**获奖方案,赛题地址:http://go.datafountain.cn/3056(戳底部“阅读原文”可直达)

01、团队介绍

1.获奖团队名称

MPLab

2.团队成员:

MPLab全称为Multimedia Processing Laboratory,即多媒体处理实验室。团队成员来自北京航空航天大学,主要研究兴趣有图像分割、目标检测、图像增强和医学管理数据挖掘。本团队由两名队员组成,具体如下:

李浩(队长):北京航空航天大学电子信息工程学院2021级硕士研究生,研究方向是图像分割和小样本学习。

黄韵蒙:北京航空航天大学电子信息工程学院2022级硕士研究生,研究方向是图像分割和医疗运营数据挖掘。

3.所获奖项

三等奖

4.项目摘要

从三维CT图像中自动分割肾脏肿瘤对于医生制定诊断和治疗方案有很大的帮助。基于昇思MindSpore AI框架的肾脏肿瘤分割比赛旨在开发出高效的自动分割器,要求利用MICCAI KiTS19 Challenge的数据集[1]进行训练,得到能泛化到本地实际肾脏CT扫描图像的解决方案。针对此赛题,我们提出了基于3D UNet和UNet3+的二阶段混合肾脏-肿瘤语义分割器,其中自主设计了适用于3D肾脏CT扫描图像的数据预处理、肾脏RoI提取、数据增强、Hybrid-Dice损失和预测结果后处理模块。经过两个多月的激烈角逐,我们最终的方案位列排行榜第3名,在官方提供的实际CT测试集有0.7987的精度。

02、项目****概述

根据国家癌症中心最新的统计报告[2],我国在2016年约有406万癌症新增病例和241万因癌死亡病例。其中肾癌发病率约5.48/105,位居第16位。对于肾脏肿瘤及其宿主肾脏的语义分割被证明是定量表征病变的有效工具,但由于需要手工生成目标结构的高质量3D分割,其使用受到了极大的限制。近年来,基于深度学习的三维分割卓有成效,但这些方法需要大量的数据集进行训练,并且仍未对表现最好的方法达成共识。基于昇思MindSpore AI框架的肾脏肿瘤分割[3]旨在加速可靠的肾脏-肿瘤分割方法的发展。竞赛组织者提供了300例高质量肾癌患者的腹部CT扫描图像,其中210例含有专业的人为标注,用于算法的训练和验证。

UNet[4]及其变体在医学图像分割中获得了巨大的成功,其中3D UNet[5]作为UNet的变体之一被广泛应用在脑肿瘤分割和肝肿瘤分割中。在此激励下,如图1所示,我们提出了一个二阶段混合肾脏-肿瘤语义分割器,通过对肾脏RoI定位,再对肾脏区域精细分割,在提供的数据集上达到了优良的分割效果。

image.png

图 1 二阶段混合肾脏-肿瘤语义分割器结构图

**03、**文本方法

本文提出的二阶段混合肾脏-肿瘤语义框架包含五个部分。第一步,对原始CT图像进行预处理,提取器官有效响应RoI作为下一步的训练数据。第二步,将标签中肾脏和肿瘤区域合并,对于合并后的肾脏+肿瘤区域进行粗分割。第三步,对粗分割结果分析,提取肾脏RoI,作为第四步的细分割数据。第四步,通过肾脏RoI数据对肾脏和肿瘤区域进行细分割。第五步,对模型预测数据进行后处理,填补预测结果中的细小孔洞,移除不相关的小物体。其中第一步和第二步属于第一阶段(肾脏分割阶段),第三到五步属于第二阶段(肾脏、肿瘤分割阶段)。第二步和第四步的模型均是从头开始训练,并使用了五折交叉验证确保模型的有效性。

数据预处理

CT图像的数值是定量的,即不同扫描仪或者医院对于同一器官扫描所得图像的强度值是相同的。因此,在预处理过程中,数据集中每例图像像素点的取值被裁剪到了[-79,304],以保证图像去除无关范围取值的同时保留特定器官的响应。为了节约存储空间,我们又将[-79, 304]的数值范围映射到了[0, 255],以uint8的形式保存数据。在获得的数据上计算得到均值为119.84,方差为103.80,用于训练时图像数值的归一化。

image.png

image.png

image.png

图 2 数据集中各例CT图像的体素间距

分析数据集可得,图像存在与分割器官无关的较大黑边,降低了器官有效响应区域像素点数量在图像中的比例。因此,我们在前两步操作的基础上,参照[6]中的方法,对图像进行了器官有效响应RoI提取。在此之后,如图 2所示,我们发现数据集中各例图像的体素间距(Voxel Spacings)分布是不均匀的。因为神经网络不能自动地解释体素间距,所以需要将所有图像重采样到一个相同的体素间距。考虑到过小的体素间距会导致图像尺寸过大,造成内存资源不足,过大的体素间距会减小图像的分辨率,丢失细节信息。分析数据集各个数据的体素间距分布,并平衡训练所需的计算资源,数据集中图像的体素间距被统一重采样到了3.22×1.62×1.62 mm,得到128×248×248的统一尺寸图像。为方便训练,将图像分别在z,x,y轴上以48,44,44的间距采样为80×160×160的训练数据。

肾脏+肿瘤区域粗分割

为方便第二阶段定位肾脏区域,首先利用3D UNet对肾脏+肿瘤区域进行了粗分割。简单来讲,就是将原本标注为2的肿瘤区域标签改为1,看作肾脏的一部分,利用3D UNet进行肾脏+肿瘤区域和背景区域二分类。因为这一步是粗略确定肾脏的具体位置,因此未添加额外的残差和注意力模块。训练时,batch size设置为4,学习率初始为0.0003,经过1500个batch的训练后增长到0.001,再根据余弦学习率策略,90个epoch后下降为0.00001。因为肾脏+肿瘤在图像中所占比例较小,我们在交叉熵损失中加入了肾脏+肿瘤的Dice。具体的损失函数如下:

loss=Dicekidney+tumor+lossce(pred,label) (1)

其中Dice为

image.png

lossce表示交叉熵损失,pred是预测值,label表示实际的标注值。

实际训练中,我们用VNet[7]作为对比算法与3D UNet进行比较,得到的结果如表 1所示。可以看出VNet在背景的分割上优于3D UNet,但肾脏+肿瘤的分割上不如3D UNet。我们推测可能是医学图像的内容较为简单,VNet未能发挥出残差结构的优势。或者是肿瘤区域的特征和肾脏不一致,导致VNet相比3D UNet产生了更多的误判。总而言之,在此任务上,3D UNet的性能优于VNet,因此我们选用3D UNet作为第一阶段肾脏+肿瘤区域的分割器。

image.png

表 1 肾脏+肿瘤粗分割阶段交叉验证结果

肾脏RoI的提****

肾脏RoI提取即确定肾脏在图像中的位置。如图 3所示,在提供的数据集中,肾脏和肿瘤的像素点总数远远小于背景区域像素点数,各类别分布极度不平衡。为了获得更高的分割精度,将RoI区域从原图像中裁剪出来,可以减少背景区域的面积,缓解类别分布不平衡带来的影响。

image.png

图 3 原始数据标签类别分布图

在实际的提取过程中,训练和推理采取了不同的方案。训练时,肾脏RoI的提取是基于训练数据的人为标注,而推理时则是基于第一阶段的预测结果。我们提出的方法是首先计算在各个维度上的像素点之和。训练时的计算可以表达为:

statz,x,y=sum(label,axis=z,x,y) (3)

其中statz,x,y表示在z, x, y轴上累加得到的和向量,lable表示训练数据的标注,axis=z,x,y表示分别在z, x, y轴上操作。相似地,推理时的计算为:

statz,x,y=sum(pred,axis=z,x,y) (4)

其中pred表示第一阶段的预测结果,其余与训练时一致。

由于背景类别在数据集中被标注为0,因此经过上述计算,确认非0区域的边界即可确定肾脏+肿瘤区域在各个维度的范围。得益于原始数据集的高质量标注,训练时肾脏+肿瘤区域的范围精度较高。但是推理时,由于是基于第一阶段的肾脏+肿瘤分割结果来确定RoI,得到的范围存在一定的误差,因此得到的边界需要保证一定的冗余。针对于此,我们设计了在训练和推理时均具有鲁棒性的RoI提取方案。

推理时,第一阶段对肾脏+肿瘤区域的预测结果中存在一些小孔洞和小物体(肾脏+肿瘤小连通域)。其中大的连通域内的小孔洞对各个维度上RoI区域范围提取影响较小,而小物体影响较大。理想的statz,x,y在各个维度上的体现应当是从全部为背景的0,过渡到不为0的目标区域,再过渡到全部为背景的0区域,其中有一个维度会多一次过渡,因为人体含有两个肾脏。但第一阶段的预测中,我们发现小物体会极大地干扰对于各个肾脏区域范围的判断。因此,对比预测结果和训练集的实际标注,我们制定了如下的解决方案:

(1)统计statz,x,y中的非0位置坐标;

(2)将前后坐标的间距进行对比,其中二者之差若超过15则被分别认为是两个连通域(即肾脏)的边界;

(3)为各轴的预测边界预留3个像素点的冗余。

这个过程的计算可表达为:

index=where(diff(nonzero(stat))>15) (5)

其中index表示两个连通域边界的集合,stat即第一步所得各维度求和数据,nonzero表示求非0位置的坐标,diff表示求前后坐标的差分,where表示寻找服从条件值的位置。

经验证,我们设计的算法在训练和推理时的RoI提取中均具有鲁棒性,可以高效地获得肾脏在原始图像中分布范围。将此范围映射到原始的图像中,裁剪出对应的三维区域,即可提取出肾脏的RoI。

肾脏、肿瘤区域细分割

统计上一步提取的肾脏RoI,发现不同的数据RoI尺寸不一致。因此,在分割之前,将三维的RoI数据从深度维度上(即z轴)分开,变成多张二维图像。再将二维图像的尺寸重新调整到256 × 256,作为这一步分割的输入数据。

这一步的预测结果经过后处理之后将作为最终的预测。训练时,batch size设置为8,初始学习率为0.0003,经过1500个batch的训练后线性增长为0.001,然后采用根据余弦学习率策略经过90个epoch后降为0.00001。损失函数方面,我们使用了Hybrid-Dice损失,即经过调整的混合Dice损失,具体为:

image.png

Hybrid-Dice损失将线性的Dice映射到非线性区间,使Dice趋近于0时的损失变化率变得更大,趋近于1时的损失变化率更小。在训练中可以增加损失的稳定性,便于参数的更新。

具体实验中,我们对比了UNet、UNet++[8]、UNet3+[9]的预测结果,如表2所示。由表中数据可得,由于UNet3+的多尺度信息融合,对于肿瘤预测的结果显著地高于其他二者。因此最终的方案采用UNet3+作为肾脏、肿瘤区域的分割器。

image.png

表 2 验证所得精度(注:数据为基于验证集标签的RoI提取

分割结果后处理

经过前四步的处理,所得的模型已经可以完整完成肾脏和肿瘤的分割了。但为了达到更高的分割精度,需要通过形态学的方法对分割结果的细节进一步修饰,填补预测目标中的小孔洞并删除预测的小物体。

在后处理过程中,首先填补了预测结果中肿瘤(预测结果为2的区域)的孔洞,然后分别计算了各个肿瘤连通域的总像素点数。将总像素点数小于最大连通域像素点数20 %的小物体移除,得到最终的肿瘤预测结果。对于预测为肾脏的部分,采取了与肿瘤类似的后处理机制,先填补孔洞,再移除总像素点数小于第二大连通域像素点数20 %的小物体(腹部CT图像中一般可以看到人体的两个肾脏)。

**04、**结果

我们记录了所提出的方法对于KiTS19数据集提供的90例不含标注的测试集的预测结果。并将预测的输出上传到了KiTS19的服务器,最后的得分如表3所示。其中肾脏的预测分数是将实际预测结果为1的肾脏区域和预测结果为2的肿瘤区域作为前景,将其他一切区域作为背景来计算的,这与本次比赛中所使用的评估方法完全一致。

image.png

表 3 提出的方法在KiTS19测试集上的结果

从结果中可以看出,我们的方法能够从腹部CT扫描影像中有效分割出肾脏和肿瘤的区域。至此我们将方案提交至本次比赛的官方页面,获得了第三的成绩。表 4记录了本次比赛中前五选手的最终成绩。

image.png

表 4 比赛最终成绩(前5) **05、**总结与展望

在本文中,我们提出了一个基于3D UNet粗分割和UNet3+细分割的二阶段分割器,获得了还不错的效果。但必须指出,我们提出的方法中,并没有对二阶段做深入的消融研究,因此无法明确在KiTS19数据集上的最优方法。最终选择使用3D UNet和UNet3+的二阶段分割框架,是因为我们训练得到的模型中此方案表现最优。但若要严谨地对比几种方案,需要进行广泛的超参数优化。

语义分割领域的最新成果表明,在卷积层中加入残差连接和注意力模块可以增加模型的性能。因此,要想进一步提升所提出模型的性能,一个可行的方向是在网络中添加残差连接和注意力机制。另一个角度来说,现行的比赛中常常使用了多模型集成学习的方法。而我们提出的二阶段分割框架中,第二阶段的细分割依赖于第一阶段的分割结果。因此,对第一阶段分割进行集成,提升对于肾脏RoI提取的精度,可能是提升所提出方法性能的重要途径。

参考资料

[1]Heller N, Sathianathen N, Kalapara A, et al. The kits19 challenge data: 300 kidney tumor cases with clinical context, ct semantic segmentations, and surgical outcomes[J]. arXiv preprint arXiv:1904.00445, 2019.

[2]Zheng R, Zhang S, Zeng H, et al. Cancer incidence and mortality in China, 2016[J]. Journal of the National Cancer Center, 2022, 2(1): 1-9.

[3]2022 CCF大数据与计算智能大赛,基于昇思MindSpore AI框架的肾脏肿瘤分割,https://www.datafountain.cn/competitions/588

[4]Ronneberger O, Fischer P, Brox T. U-net: Convolutional networks for biomedical image segmentation[C]//International Conference on Medical image computing and computer-assisted intervention. Springer, Cham, 2015: 234-241.

[5]Çiçek Ö, Abdulkadir A, Lienkamp S S, et al. 3D U-Net: learning dense volumetric segmentation from sparse annotation[C]//International conference on medical image computing and computer-assisted intervention. Springer, Cham, 2016: 424-432.

[6]https://github.com/junqiangchen/KiTS19-Challege

[7]Milletari F, Navab N, Ahmadi S A. V-net: Fully convolutional neural networks for volumetric medical image segmentation[C]//2016 fourth international conference on 3D vision (3DV). IEEE, 2016: 565-571.

[8]Zhou Z, Siddiquee M M R, Tajbakhsh N, et al. Unet++: Redesigning skip connections to exploit multiscale features in image segmentation[J]. IEEE transactions on medical imaging, 2019, 39(6): 1856-1867.

[9]Huang H, Lin L, Tong R, et al. Unet 3+: A full-scale connected unet for medical image segmentation[C]//ICASSP 2020-2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2020: 1055-1059.