今天将分享脑血管间隙分割的第一步热力图回归检测的完整实现过程,为了方便大家学习理解整个流程,将整个流程步骤进行了整理,并给出详细的步骤结果。感兴趣的朋友赶紧动手试一试吧。
一、数据分析与预处理
首先将训练中有效的颅内血管间隙区域的数据提取出来,有一些数据没有血管间隙区域,不作为训练数据,在这里只分析标签值1,其他标签都是0。以一共40例数据,有血管间隙的数据有22例。
分析这22例数据的基础信息:图像平均大小[243.27777778, 298.5, 168.16666667], 图像Spacing平均大小[0.63042518,0.63042518,0.85555538], 血管间隙平均大小[5.05882353,5.62745098,3.70588235]。
然后根据每个血管间隙区域的boundingbox的中心和大小,生成该点处的高斯热力图,高斯热力图的中心就是血管间隙区域的中心点坐标,高斯Sigma的数值是boundingbox的最大值,如果一个图像上有多个血管间隙,将所有血管间隙的高斯热力图相加即可。效果图如下所示,左图是血管间隙原始图和mask图,右图是高斯热力图。
2、准备3d训练数据
为了将整个图像输入到网络中去,需要对原始图像和热力图进行大小缩放,由于显卡是1080TI的11G显存的大小,所以三个模态图像缩放到固定大小(128,128,96),对图像进行(5,95)的均值为0,方差为1的归一化处理。
3、搭建回归网络结构
模型采用的是VNet3d主体结构,最后一层的激活函数设置成线性及无激活函数,损失函数采用的是L2-loss,学习率是0.001,droupout是0.5,迭代次数是600,训练数据一共42例,迭代次数是600epochs,batchsize是1,优化器是RMSPropOptimizer。
4、网络训练结果
3d回归网络损失函数曲线如下所示。
5、网络预测结果
在1例数据上进行测试,3d热力图结果如下所示,可以看到有很多候选区域,接下来需要对这些候选区域进行分类,进一步减少假阳性区域。