今天将分享PET-CT病灶检测的完整实现过程,为了方便大家学习理解整个流程,将整个流程步骤进行了整理,并给出详细的步骤结果。感兴趣的朋友赶紧动手试一试吧。
一、比赛介绍
PET-CT 已成为肿瘤成像的首选工具,可提供无与伦比的原发肿瘤和转移灶检测和随访。在这个挑战中,一共有68个案例,其中有55个具有金标准标签,用于训练,而13个案例,即测试集,没有提供标签数据。所有扫描均以匿名 DICOM 格式提供,同时保留所有必要的标签。标注在单个多表excel文件中提供,每个表对应一个特定案例,例如,表“1”对应于为案例1给出的标注。为了提供更多信息,提供了每个“热点”的 3-D 边界框和分割掩膜。请注意,3-D 边界框实际上是由它们相应的分割掩膜创建的。
二、技术路线
由于肿瘤区域是非常小的目标,由于肿瘤区域在人体位置不确定,这是一个极其不平衡的分割问题。数据采用Pet图像作为输入。所以采用以下技术方案:
第一步、采用热力图回归的方式,初步找到一些候选的肿瘤候选区域。
第二步、采用二分类的方式,判断此区域是否有肿瘤。
第三步、采用二类分割的方式,对有肿瘤区域进行分割。
第四步、将上述三个步骤进行级联自动预测分割出有肿瘤区域。
具体实现:
第一步、热力图回归
1、数据预处理
首先要将边界框格式的坐标标注转换成二值化图像,转换代码详情见比赛官网上下载。
分析这55例数据的基础信息:图像平均大小[144,144,256], 图像Spacing平均大小[4,4,4], 肿瘤区域平均大小[5.2,5.5,3.7]。
然后根据每个肿瘤区域的boundingbox的中心和大小,生成该点处的高斯热力图,高斯热力图的中心就是肿瘤区域的中心点坐标,高斯Sigma的数值是boundingbox的最大值,如果一个图像上有多个肿瘤区域,将所有肿瘤区域的高斯热力图相加即可。效果图如下所示,左图是肿瘤区域原始图和mask图,右图是高斯热力图。
2、准备3d回归网络训练数据
为了将整个图像输入到网络中去,需要对原始图像和热力图进行大小缩放,由于显卡是1080TI的11G显存的大小,所以三个模态图像缩放到固定大小(96,96,160),对图像进行(1,99)的均值为0,方差为1的归一化处理。
3、搭建3d回归网络结构
模型采用的是VNet3d主体结构,最后一层的激活函数设置成线性及无激活函数,损失函数采用的是L2-loss,学习率是0.001,droupout是0.5,迭代次数是600,训练数据一共53例,迭代次数是600epochs,batchsize是1,优化器是RMSPropOptimizer。
4、网络训练和预测
3d回归网络损失函数曲线如下所示。
在测试数据上进行测试时的3d热力图并进行二值化处理,结果如下所示,可以看到还是存在一些假阳性候选区域,接下来需要对这些候选区域进行分类,进一步减少假阳性区域。
第二步、二值分类
1、数据预处理
分析这55例数据的基础信息:图像平均大小[144,144,256], 图像Spacing平均大小[4,4,4], 肿瘤区域平均大小[5.2,5.5,3.7]。可以看到肿瘤区域非常小,所以采用spacing缩放方式将原始图像和Mask图像统一到(2,2,2)。
2、准备训练数据
针对非肿瘤区域,在整个Pet图像上随机裁切出200个(64,64,64),针对肿瘤区域,根据连通域分析Mask得到每个肿瘤区域的boundingbox,在该区域内随机获取点,并以此为中心裁切(64,64,64),裁切的个数是200连通域个数。再对裁切出来的图像进行(1,99)的均值为0,方差为1的归一化处理。
3、搭建二分类网络结构
网络主题采用的是VGG16的残差连接网络,损失函数采用的是二值交叉熵,学习率是0.001,droupout是0.5,迭代次数是20epochs,batchsize是12。训练数据一共12098例,测试数据一共有1500例,验证数据一共有1500例,优化器是AdamOptimizer。
4、网络训练和预测
训练损失结果和精度结果
验证集损失结果和精度结果
在测试数据上进行测试
混淆矩阵是
969 | 14 |
---|---|
4 | 513 |
ROC曲线是0.9969274572962805,曲线如下
其他评价指标
precision | recall | f1-score | support | |
---|---|---|---|---|
0.0 | 1.00 | 0.99 | 0.99 | 983 |
1.0 | 0.97 | 0.99 | 0.98 | 517 |
Avg/total | 0.99 | 0.99 | 0.99 | 1500 |
第三步、二值分割
1、数据预处理
分析这55例数据的基础信息:图像平均大小[144,144,256], 图像Spacing平均大小[4,4,4], 肿瘤区域平均大小[5.2,5.5,3.7]。可以看到肿瘤区域非常小,所以采用spacing缩放方式将原始图像和Mask图像统一到(2,2,2)。
2、准备训练数据
对Mask进行连通域分析得到每个肿瘤区域的boundingbox,以boundingbox的中心裁切出(64,64,64),对裁切出来的Pet图像进行(1,99)的均值为0,方差为1的归一化处理。
数据增强:为了增强多样性,对裁切出来的数据进行5倍数据扩充,随机旋转30度,x,y,z随机平移0.1大小,水平,垂直随机翻转等。
3、搭建二类分割网络结构
网络主体采用的是VNet的网络,损失函数采用的是二值dice,学习率是0.001,droupout是0.5,迭代次数是20epochs,batchsize是6。训练数据一共有1832例,优化器是AdamOptimizer。
4、网络训练和预测
训练损失结果和精度结果
第四步、三网络级联预测肿瘤结果
1、输入原始图像,对Pet图像按照图像大小缩放到(96,96,160)大小,并采用(1,99)范围的均值为0,方差为1的归一化。
2、输入到热力图回归3d网络中预测,将对结果进行二值化处理,这里采用大于最大值的四分之一的热力图值,进行二值化处理,然后再缩放到原始图像大小。
3、对原始Pet图像和预测热力图结果,按照图像spacing缩放到(2,2,2)大小。
4、对采样后的二值热力图进行连通域分析,获得每个连通域的boundingbox的范围。
5、在boundingbox范围内,以步长(32,32,32)大小,遍历获取(64,64,64)大小的ROI图像区域,采用(1,99)范围的均值为0,方差为1的归一化。
6、将每个ROI图像区域输入到二值分类网络中去,如果预测标签值为1,那么就进一步分割,直到遍历完该boundingbox的范围,将一系列的分割结果进行相加处理,得到最后的肿瘤分割结果,否则处理下一个连通域。
7、将所有的分割结果采样回到原始图像大小,最后输出成预测的分割结果。
下图是肿瘤分割的金标准结果和预测结果。