LUNA16数据集(一)简介
LUNA16,全称Lung Nodule Analysis 16,是16年推出的一个肺部结节检测数据集,旨在作为评估各种CAD(computer aid detection计算机辅助检测系统)的banchmark,因为每个CAD都是基于自己的数据集,很难比较之间的性能优劣,这时候banchmark就很重要,在此之前比较知名的数据集就是Anode09了,不过这个数据集太小,训练集只有5个病例。
目前为止,比赛已经停止结果提交,不过数据集仍然可以下载,并且在leaderboard上有各路大神团队的比分及算法描述,可以自行查阅。
官方地址: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,构成了LUNA16.这里要解释两件事,一,剔除3mm以上的CT是因为切片越薄效果越好,这不难理解,对肺部进行扫描,肯定是扫描得出的数据越多越好,想的极端点,如果整个肺部只有一张切片,这厚度绝对够了吧哈哈,那就连3D数据都没法获取了,更别说有效检测肺结节。二,切片space是啥,个人理解就是切片出来的数据是3D的(把一张张二维切片组合一起),有z,y,x三个维度,spacez指的就是切片厚度,spacey和spacex指的是每张切片的单个像素代表着实际宽高多少的肺部组织。所有的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,前者要求实现一个完整的检测系统,后者要求对给定区域进行二分类,是否为结节。
我跑了一个github上的代码,只跑了任务一,所以任务二的比赛细节就不讲了。
具体而言,整个数据集是十份的,每份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,不过bootstrap的置信度区间我没理解,有待考察。
目前任务一也就是检测的leaderboard已经被刷到了0.951的高分,来自平安科技,第二名0.950,来自健培公司,我跑的这个算法达到0.84,也不错,不过这前两名是真的恐怖,虚心学习之~
LUNA16数据集(一)简介的更多相关文章
- LUNA16数据集(三)预处理
在(一)和(二)中简单介绍了LUNA16数据集的组成,以及肺结节的可视化,有了对数据集的基本了解后,还要对数据集进行预处理,计算机视觉中原始数据一般不会直接送入神经网络,这里也是如此. 这篇博客想写已 ...
- LUNA16数据集(二)肺结节可视化
在检测到肺结节后,还需要可视化,这样才能为诊断服务. 我使用的项目地址为:https://github.com/wentaozhu/DeepLung 项目基于论文:DeepLung: Deep 3D ...
- LUNA16数据集的百度云链接
可能需要会员链接:https://pan.baidu.com/s/1KTjoGKfLB_1Y-BQzerhGgg 提取码:g901
- 【机器学习】Iris Data Set(鸢尾属植物数据集)
注:数据是机器学习模型的原材料,当下机器学习的热潮离不开大数据的支撑.在机器学习领域,有大量的公开数据集可以使用,从几百个样本到几十万个样本的数据集都有.有些数据集被用来教学,有些被当做机器学习模型性 ...
- 在Ubuntu内制作自己的VOC数据集
一.VOC数据集的简介 PASCAL VOC为图像的识别和分类提供了一整套标准化的优秀数据集,基本上就是目标检测数据集的模板.现在有VOC2007,VOC2012.主要有20个类.而现在主要的模型评估 ...
- 利用DSB2017冠军开源代码为LUNA16生成mask
代码地址:https://github.com/lfz/DSB2017 先展示下生成的mask与真实mask subset9 subset8 subset7 subset6 subset5 subse ...
- Candidate Generation and LUNA16 preprocessing
在这个kernel中,我们将讨论有助于更好地理解问题陈述和数据可视化的方法. 我还将提供有用的资源和信息的链接. 此脚本是用Python编写的. 我建议人们在桌面上安装anaconda,因为here提 ...
- 【机器学习】Iris Data Set(鸢尾花数据集)
[机器学习]Iris Data Set(鸢尾花数据集) 注:数据是机器学习模型的原材料,当下机器学习的热潮离不开大数据的支撑.在机器学习领域,有大量的公开数据集可以使用,从几百个样本到几十万个样本的数 ...
- 【医学图像】3D Deep Leaky Noisy-or Network 论文阅读(转)
文章来源:https://blog.csdn.net/u013058162/article/details/80470426 3D Deep Leaky Noisy-or Network 论文阅读 原 ...
随机推荐
- VotingClassifier
scores : array of float, shape=(len(list(cv)),) Array of scores of the estimator for each run of the ...
- python pdb 基础调试
当手边没有IDE,面对着python调试犯愁时,你就可以参考下本文:(pdb 命令调试) 参考:http://docs.python.org/library/pdb.html 和 (pdb)help ...
- SQL server 2008安装教程
下载SQL server 2008 r2(网上资源很多,这里给出一个:安装) 解压后右键以管理员权限打开set-up 这里可能会出现问题:.net framework 3.5未安装,可以参考 快速安装 ...
- Condition实现多个生产者多个消费者
Condition实现多对多交替打印: import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.R ...
- SQLServer+.net 事务锁表问题
最近操作Sqlserver遇到一个锁表问题.找了好久才搞明白原因和解决办法. 故障现象: 每次启动事务后,执行了删除或者修改操作以后,再执行查询操作就锁表. 解决过程: 1:最初以为SQLServer ...
- ROS Learning-027 (提高篇-005 A Mobile Base-03) 控制移动平台 --- Twist 消息
ROS 提高篇 之 A Mobile Base-03 - 控制移动平台 - Twist 消息 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14 ...
- Blender 基础 骨架 01
Blender 基础 骨架 01 我使用的Blender版本:Blender V 2.77 前言 本讲介绍: 骨架的基本使用方式. 骨架是角色动画里面最常使用的元素,它可以准确控制一个模型的变形,尤其 ...
- GCC 版本与C11标准
1. GCC版本是否支持C11 C89=C90:gcc选项是:-ansi, -std=c90 or -std=iso9899:; 带了GNU扩展的:-std=gnu90 C94=C95:gcc选项:- ...
- Redis面试考点
什么是Redis? Redis 是一个基于内存的高性能key-value数据库. Redis的特点以及缺点? Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据 ...
- backstop bsg6