今天将分享脑血管间隙分割的第二步二值化分类的完整实现过程,为了方便大家学习理解整个流程,将整个流程步骤进行了整理,并给出详细的步骤结果。感兴趣的朋友赶紧动手试一试吧。
一、数据分析与预处理
首先将训练中有效的颅内血管间隙区域的数据提取出来,有一些数据没有血管间隙区域,不作为训练数据,在这里只分析标签值1,其他标签都是0。以一共40例数据,有血管间隙的数据有22例。
分析这22例数据的基础信息:图像平均大小[243.27777778, 298.5, 168.16666667], 图像Spacing平均大小[0.63042518,0.63042518,0.85555538], 血管间隙平均大小[5.05882353,5.62745098,3.70588235]。可以看到血管间隙的区域非常小,所以采用spacing缩放方式将原始图像和Mask图像统一到(0.3,0.3,0.3)。
针对非血管间隙区域,在整个三个模态图像上随机裁切出200个(64,64,64),针对血管间隙区域,根据连通域分析Mask得到每个血管间隙的boundingbox,在该区域内随机获取点,并以此为中心裁切(64,64,64),裁切的个数是200/连通域个数。再对裁切出来的图像进行(5,95)的均值为0,方差为1的归一化处理。
最后将数据分成训练集,验证集和测试集,比例是80%,10%,10%大小。
二、二分类网络
网络主体采用的是VGG16的残差连接网络,损失函数采用的是二值交叉熵,学习率是0.001,droupout是0.5,迭代次数是20epochs,batchsize是12。训练数据一共4551例,测试数据一共有500例,验证数据一共有500例,优化器是AdamOptimizer。
三、网络训练和测试
训练损失结果和精度结果
验证集损失结果和精度结果
在测试数据上进行测试
混淆矩阵是
305 | 2 |
4 | 189 |
ROC曲线是0.9938988371504278,曲线如下:
其他评价指标:
precision | recall | f1-score | support | |
0.0 | 0.99 | 0.99 | 0.99 | 307 |
1.0 | 0.99 | 0.98 | 0.98 | 193 |
avg / total | 0.99 | 0.99 | 0.99 | 500 |