今天将分享动血管周围间隙扩大计数的第二步二值化分类的完整实现过程,为了方便大家学习理解整个流程,将整个流程步骤进行了整理,并给出详细的步骤结果。感兴趣的朋友赶紧动手试一试吧。
一、数据分析与预处理
首先将训练中有效的颅内血管周围间隙扩大区域的数据提取出来,有一些数据是没有血管周围间隙扩大区域的,不作为训练数据,此外标签值只分析是1的,其他标签值都是0。一共40例数据,有血管周围间隙扩大的数据有13例。
分析这13例数据的基础信息:图像平均大小[216.91666667, 262.75, 160.66666667], 图像Spacing平均大小[0.74414051, 0.74414051, 0.89999983], 血管周围间隙扩大平均大小[2.1797005 , 1.85024958, 1.537913]。可以看到血管周围间隙扩大的区域非常小,所以采用spacing缩放方式将原始图像和Mask图像统一到(0.3,0.3,0.3)。
针对非血管周围间隙扩大区域,在整个三个模态图像上随机裁切出300个(64,64,64),针对血管间隙区域,根据连通域分析Mask得到每个血管周围间隙扩大的boundingbox,在该区域内随机获取点,并以此为中心裁切(64,64,64),裁切的个数是300连通域个数。再对裁切出来的图像进行(5,95)的均值为0,方差为1的归一化处理。
最后将数据分成训练集,验证集和测试集,比例是80%,10%,10%大小。
二、二分类网络
网络主题采用的是VGG16的残差连接网络,损失函数采用的是二值交叉熵,学习率是0.001,droupout是0.5,迭代次数是20epochs,batchsize是12。训练数据一共5700例,测试数据一共有750例,验证数据一共有750例,优化器是AdamOptimizer。
三、网络训练和测试
训练损失结果和精度结果
验证集损失结果和精度结果
在测试数据上进行测试
混淆矩阵是
329 | 32 |
21 | 368 |
ROC曲线是0.9821760462582515,曲线如下:
其他评价指标
precision | recall | f1-score | support | |
0 | 0.94 | 0.91 | 0.93 | 361 |
1 | 0.92 | 0.95 | 0.93 | 389 |
avg/total | 0.93 | 0.93 | 0.93 | 750 |