今天将分享结核病分类和检测挑战赛完整实现版本,为了方便大家学习理解整个流程,将整个流程步骤进行了整理,并给出详细的步骤结果。感兴趣的朋友赶紧动手试一试吧。
一、TBX11K2020介绍
结核病作为一种严重的传染病,是全世界人类健康的主要威胁之一,每年导致数百万人死亡。尽管早期诊断和治疗可以大大提高生存机会,但它仍然是一个重大挑战,特别是在发展中国家。由于深度学习的巨大成功,计算机辅助结核病诊断 (CTD) 是结核病诊断的一个有前途的选择。然而,在结核病诊断方面,缺乏训练数据阻碍了CTD的进展。
二、TBX11K2020任务
结核病分类(健康,病态但非结核病和结核病),结核病区域检测(活动性结核病和潜伏性结核病)。
三、TBX11K2020数据集
TBX11K 数据集包含 11200 张 X 射线图像,以及结核病 (TB) 区域的相应边界框注释。所有图像的尺寸为 512x512。该数据集分为五类,即健康、生病但未结核、活动性结核、潜伏性结核和不确定结核。数据集分为训练集、验证集和测试集。
评估:分类使用准确率,ROC曲线面积,敏感性,特异性,平均精度和平均召回率;检测使用检测框的平均精度(AP)。
测试提交要求:
分类结果应放在“.txt”文件中,如 $FILE_NAME.txt。此文件应包含 3302 行,每行有三个概率,用空格隔开。每行中的三个概率分别针对“健康”、“生病但未结核”和“结核病”类别。当然,每行中三个概率的总和始终是 1.0。
TB 区域检测结果应放在“.json”文件中,如 $FILE_NAME.json。json 格式如下所示。
此处,“category_id”的值为 1 或 2,其中值 1 表示活动性结核病的类别,值 2 表示潜伏性结核病的类别。与 COCO 一样,表示边界框 ('bbox') 的四个值是 [x, y, width, height],其中 x, y 是框左上角的坐标(框坐标从左上角图像角开始测量,索引为 0)。如果检测到的实例中未显示图像的 ID,则此图像被预测为非TB X射线,因为此图像中没有预测的 TB 区域。
四、技术路线
任务1、结核病三分类
1、图像预处理,然后采用均值为0,方差为1的方式进行归一化处理,再将数据分成训练集和验证集,由于标签结核病数据量相对较少,所以在训练集中对标签结核病进行3倍数据增强。
2、搭建ResNet2d网络,使用AdamW优化器,学习率是0.001,batchsize是64,epoch是300,损失函数采用交叉熵。
3、训练结果和验证结果
4、验证集分类结果
precision recall f1-score support
0.0 1.00 0.99 1.00 745
1.0 0.99 0.99 0.99 716
2.0 0.94 0.96 0.95 139
accuracy 0.99 1600
macro avg 0.98 0.98 0.98 1600
weighted avg 0.99 0.99 0.99 1600
任务2、结核病检测
1、图像预处理,然后采用均值为0,方差为1的方式进行归一化处理,并将数据划分成训练集和验证集。
2、搭建YoloV5检测网络,使用SGD优化器,学习率是0.001,batchsize是32,epoch是300,损失函数采用交叉熵和iou损失。
3、训练结果和验证结果
4、验证集检测结果
左图是金标准结果,右图是预测结果。
测试集分类和检测结果
点击阅读原文可以访问参考项目,如果大家觉得这个项目还不错,希望大家给个Star并Fork,可以让更多的人学习。如果有任何问题,随时给我留言我会及时回复的。