NODE21——肺结节检测和生成挑战赛(二)

2022-08-20 11:37:49 浏览数 (1)

今天将分享NODE21肺结节检测和生成挑战赛中肺结节检测的完整实现过程,为了方便大家学习理解整个流程,将整个流程步骤进行了整理,并给出详细的步骤结果。感兴趣的朋友赶紧动手试一试吧。

一、结节检测技术路线

由于数据中存在结节阳性和阴性数据,所以第一步需要进行结节阳性和阴性分类,第二步针对阳性结节数据再检测结节边界框。

二、肺结节二分类

1、数据处理,读取csv文件,将标签是1和0的图像分别存储到1和0的分类指定目录下;

2、对图像进行线性插值缩放:将图像大小统一到512x512,并采用均值为0,方差为1的方式对图像进行归一化;

3、将数据分成训练集,验证集和测试集,分配比例是8:1:1,分析发现训练集数据中正负样本比例大概是1:3,这里需要对正样本训练数据进行2倍扩充处理。

4、网络采用的是VGG16网络结构,损失函数是交叉熵,学习率是0.001,droupout是0.5,epoch是30,batchsize是16。

5、训练结果

训练损失函数

训练精度函数

验证损失函数

验证精度函数

6、测试集结果

测试数据混淆矩阵

ROC曲线及ROC数值

分类指标

precision recall f1-score support

0.0 0.97 0.99 0.98 381

1.0 0.95 0.90 0.92 109

avg/total 0.97 0.97 0.97 490

三、肺结节二类分割

1、数据处理,读取csv文件,只将标签是1的数据读取,通过肺结节框绘制对应mask,同时如果一张图像上有多个肺结节,将多个肺结节框绘制在一个mask上。

2、对图像和mask进行插值缩放:将图像和mask大小统一到512x512,采用均值为0,方差为1的方式对图像进行归一化;

3、将分类数据中对应训练集,验证集和测试集是标签为1的数据,做为二类分割所对应的训练集,验证集和测试集数据。

4、网络采用的是VNet2d网络结构,损失是二值dice,学习率是0.001,droupout是0.5,epoch是20,batchsize是6。

5、训练结果

训练损失函数

训练精度函数

四、测试集结果

原始图像,金标准结果(红色框)和预测结果(绿色框)

0 人点赞