LUNA16数据集

LUNA16,全称Lung Nodule Analysis 16,是16年推出的一个肺部结节检测数据集,旨在作为评估各种CAD(computer aid detection计算机辅助检测系统)的banchmark。

官方地址:https://luna16.grand-challenge.org

该数据集还有一个官方论文,Validation, comparison, and combination of algorithms for automatic detection of pulmonary nodules in computed tomography images: the LUNA16 challenge,本篇博客中主要内容也取于本论文。

论文地址:https://arxiv.org/abs/1612.08012

一  数据

LUNA16的数据来源于一个更大的数据集LIDC-IDRI,该数据集共有1018个CT扫描,也就是1018个病例,每个CT图像都有xml格式的标签文件,这个数据集的数据来源于7家不同的学术机构,所采用的扫描器及其相关参数都不尽相同,所以,1018个图像可以说分布不均,用论文中的话来说就是very heterogeneous(非常异构)。

LUNA16数据集将切片厚度(slice thickness)大于3mm的CT去除,同时将切片space不一致以及缺失部分切片的CT也去除,最后产生了888张CT,以.mhd格式存储。

在LIDC-IDRI数据集中,有三种区域会标注出来,直径>3mm的结节,直径<3mm的结节以及非结节(但是肺部畸变区域),回到LUNA16,在888张CT中,共有36378个结节被标出(LIDC-IDRI标注的),在LUNA16中,只有直径>3mm的结节作为样本,直径<3mm的结节和非结节都不纳入进来,而直径<3mm的结节有11509个,非结节区域有19004个,这样还剩下36378-11509-19004=5765个,针对这5765个结节区域,若两个结节离的太近(此处太近的定义为中心距离小于半径之和,也就是相交了),则对两个结节进行合并,合并的中心和半径是该两个结节的均值,经过这样处理,还剩下2290个结节。由于标注的时候是四位专家一起标注,有些结节只有一位专家标注,有些有两位,最好的情况是四位都标注了,根据这个规则,分别有2290,1602,1186,777个结节由至少1,2,3,4位专家标注,LUNA16选取至少由三位专家标注的1186个结节作为最后要检测的区域,也就是我们做实验时下载的数据。

总结一下,数据筛选流程

(1)将直径>3mm的结节筛选出来,其它的不用,此时还有5765个结节

(2)将相近的结节融合,融合后还有2290个结节

(3)将三个以上专家标注的结节作为检测使用,共有1186个结节,也就是最后的实验数据。

(4)补充一点,不用的结节不是真的不用,2290-1186=1104个只有一位专家标注的结节,以及11509个直径<3mm的结节和19004个非结节合在一起作为irrelevant findings,这些区域,既不作为正样本也不作为负样本,所以如果你的算法检测出这些区域,不会处理为false positive,当然更不是true positive,直接无视之。

LUNA16共有10个子文件夹,subset0~subset9,这是为了做10折交叉验证,每个文件夹里都是病例,每个病例对应两个文件,文件名相同,后缀不同,其中.mhd文件存储着ct的基本信息,.raw文件存储着实际的ct数据,可以看到,ct文件还是挺大的,LUNA16足足一百多G,下载起来也挺耗时的。

二 比赛规则

比赛共有两项,一个是complete nodule detection,另一个是false positive reduction,前者要求实现一个完整的检测系统,后者要求对给定区域进行二分类,是否为结节。

整个数据集是十份的,每份CT数相等,针对该数据集要执行10折交叉验证,总共可以分为四步

(1)取一份做测试集,其余九份做训练集

(2)在训练集上训练算法

(3)在测试集上测试,并生成结果文件

(4)完成10折交叉验证后,将所有结果融合为一份

最终提交文件要求为.csv格式,每行为一个标注,具体格式就是 image identifier,x,y,z,score,其中第一个代表某个CT,x,y,z为结节坐标,score为置信度。

对于提交的结节候选区,如果提交的坐标位于结节半径范围内,则为正,也就是true positive,如果有多个候选区都与一个结节相关,则选取置信度最高的。若候选区检测出irrelevant nodules,则忽略掉,既不是正也不是负,剩下的候选区都可以归为false positive了。

有了正负样本的定义,就要进行评估,LUNA16采用的是FROC(Free-Response Receiver Operating Characteristic)准则,这一准则的定义及细节需要百度或者维基了解下。其实就是一张图,纵轴为召回率,横轴为FPs/scan,

召回率就是标记的结节你找出来几个,FPs/scan就是平均每个CT的FP数,注意是数,不是百分比。

上图就是运行某个肺结节检测模型的FROC图,横轴明显是FP的数目。

最终的评比准则是0.125,0.25,0.5,1,2,4,8七个点召回率的平均值,论文中还提到bootstrap的方法,就是对测试集的每个CT进行重采样,最终就是有的CT可能出现多次,而有的CT可能没有,然后将采样得到的CT的候选区集合起来,计算FROC。

目前任务一也就是检测的leaderboard已经被刷到了0.951的高分,来自平安科技,第二名0.950,来自健培公司。

引自LUNA16数据集(一)简介 - wuzeyuan - 博客园 (cnblogs.com)

相关数据集介绍肺部肿瘤检测数据集汇总(新更 2/20/20) - 知乎 (zhihu.com)

### LUNA16 数据集处理方法 #### 肺实质分割 对于 LUNA16 数据集的处理,可以通过肺实质分割来提取感兴趣的区域。这种方法能够有效减少背景噪声的影响并专注于目标结构。具体实现方式已在相关资料中提及[^1]。通过该技术,可以利用已有的算法框架完成数据预处理,并进一步用于模型训练。 #### Pandas 和 Scikit-Learn 的应用 为了更高效地管理与分析数据,可借助 Pandas 库进行数据整理和清洗操作[^2]。此过程通常涉及读取原始文件、转换格式以及筛选特定字段等内容。与此同时,在特征工程阶段引入 Scikit-Learn 工具包有助于构建机器学习管道,从而提升预测性能。 #### 项目资源链接 如果希望深入了解整个流程,则可以从官方文档或者第三方开源项目获取更多信息。例如,“NWI-IMC037 Final Project” 提供了一个完整的解决方案概述及其源码仓库地址[^3]。这为研究者们提供了一条清晰的学习路径。 #### 医学影像领域其他参考资料 除了上述提到的内容外,还有更多关于医学图像方面的公开数据库可供参考[^4]。这些额外的信息可能对扩展实验范围有所帮助。 以下是 Python 实现的一个简单例子展示如何加载 CT 扫描图片: ```python import numpy as np import pandas as pd from skimage import measure, morphology from mpl_toolkits.mplot3d.art3d import Poly3DCollection import matplotlib.pyplot as plt def plot_3d(image, threshold=-300): p = image.transpose(2,1,0) verts, faces, _, _ = measure.marching_cubes(p, level=threshold) fig = plt.figure(figsize=(10, 10)) ax = fig.add_subplot(111, projection='3d') mesh = Poly3DCollection(verts[faces], alpha=0.70) face_color = [0.45, 0.45, 0.75] mesh.set_facecolor(face_color) ax.add_collection3d(mesh) ax.set_xlim(0, p.shape[0]) ax.set_ylim(0, p.shape[1]) ax.set_zlim(0, p.shape[2]) plt.show() # 假设我们已经有一个三维数组表示CT扫描结果 sample_scan = np.random.rand(100, 100, 100)*1000 - 1000 plot_3d(sample_scan) ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值