信息速览

SegTHOR — 胸部危及器官 CT 分割数据集 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | SegTHOR(胸部危及器官分割) |
| 英文全称 | SegTHOR: Segmentation of THoracic Organs at Risk in CT images |
| 别名/简称 | SegTHOR Challenge、SegTHOR@ISBI 2019 |
| 疾病分类(ICD-11) | 2C25 支气管或肺恶性肿瘤;2B30 霍奇金淋巴瘤 |
| SNOMED CT | 心脏 80248007;主动脉 87878005;气管 44577001;食管 89187006 |
| 数据模态 | 胸部 CT(平扫与增强混合)+ 人工勾画 OAR 掩膜 |
| AI 任务类型 | 多类三维医学图像分割(4 器官 + 背景) |
| 样本总数 | 60 例 CT(40 训练 + 20 测试),共 11,084 张轴位切片 |
| 数据格式 | .nii.gz(NIfTI-1) |
| 许可证 | SegTHOR Data Usage Agreement(注册即同意) |
| 访问级别 | 注册后开放(CodaLab 注册直接下载,禁止再分发) |
| DUO 标签 | GRU(通用研究使用);IRB/PUB 不适用(无独立伦理审批环节,以 DUA 为准) |
| 语言 | 数据为影像与掩膜,无文本字段;挑战赛文档为英文 |
| 首发日期 | 2019-01-05(CodaLab 挑战赛上线) |
| 最后更新 | 2019-04-08(ISBI 2019 现场挑战,此后无数据版本变更) |
| 发布机构 | Université de Rouen Normandie、INSA Rouen Normandie、Centre Henri Becquerel(法国) |
| 官方主页 | CodaLab 挑战赛页面 |
| 下载地址 | CodaLab Participate 页签 |
| DOI | 10.1109/IPTA50016.2020.9286453 |
| 引用次数 | 88(IEEE Xplore:IEEE 收录 36 + 其他出版商 52,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方划分清晰、nnU-Net 官方转换脚本齐全;扣分项:无官方预处理脚本、测试集无标签需提交服务器评测 |
| 页面状态 | published |
§0 E-E-A-T 审核声明
医学审核:[千方病案医学编辑部] 交叉审核:§2 医学背景(ICD-11/SNOMED CT 映射、放疗计划临床流程)、§7 偏倚分析。
数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。SegTHOR 要求用户在 CodaLab 注册挑战赛并同意 Data Usage Agreement(DUA),且明确禁止向第三方再分发数据。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? SegTHOR(Segmentation of THoracic Organs at Risk,胸部危及器官分割)是 IEEE ISBI 2019 官方挑战赛发布并延续至今的公开胸部 CT 分割数据集,包含 60 例在法国鲁昂 Henri Becquerel 肿瘤中心接受根治性放疗的肺癌或霍奇金淋巴瘤患者的放疗定位 CT,其中 40 例带有资深放射肿瘤学家手动勾画的 4 个危及器官参考标注——心脏、主动脉、气管、食管(官方论文)。
为什么重要? 放疗计划的第一步是在 CT 上勾画肿瘤靶区和周围必须保护的正常器官(OAR)。这一步至今仍以人工勾画为主,费时且可重复性差;其中食管因对比度低、形态变异大,是公认的"勾画噩梦"。SegTHOR 把这个真实临床痛点做成了带公开排行榜的标准基准,8 年来持续有新方法提交成绩,是胸部 OAR 分割领域最常被引用的公平比较平台之一(挑战赛论文集)。
我能用它做什么? 训练与评估胸部多器官自动分割模型(nnU-Net 官方支持);研究细长小器官(食管、气管)的类不平衡与边界模糊问题;开展多任务学习(分割 + 切片级器官存在性分类);作为放疗计划自动化系统的 OAR 模块训练数据,或作为半监督/领域自适应研究的种子集。
§1.1 技术摘要
SegTHOR 数据集由法国鲁昂大学 Normandie(LITIS 实验室)、INSA 鲁昂(LMI 实验室)与 Henri Becquerel 肿瘤中心(CHB)联合构建,服务于 IEEE ISBI 2019 官方挑战赛(2019-04-08,威尼斯)(dblp 会议记录)。数据为 60 例胸部 CT(512×512 体素,切片数 150–284,面内分辨率 0.90–1.37 mm,层厚 2–3.7 mm,最常见分辨率 0.98×0.98×2.5 mm³),患者于 2016-02 至 2017-06 间因肺癌或霍奇金淋巴瘤行根治性放疗采集,含平扫与增强两种序列(arXiv 论文)。4 个 OAR 由放射肿瘤学家 Bernard Dubray 在 Varian SomaVision 平台上按解剖学指南手动勾画,每例约 30 分钟。数据按患者级随机划分为 40 例训练(7,390 张切片,带 GT.nii.gz 标签)与 20 例测试(3,694 张切片,无公开标签),评测采用 Dice 系数(DM)与 Hausdorff 距离(HD)双指标、按器官独立计算(CodaLab 官方页)。挑战赛冠军为 Han 等人的 multi-resolution VB-Net,测试集 Dice 达到食管 0.8651 / 心脏 0.9536 / 气管 0.9276 / 主动脉 0.9464(综述)。
关键数字速查:
| 指标 | 数值 |
|---|---|
| 患者(CT 卷)数 | 60(40 训练 + 20 测试) |
| 轴位切片总数 | 11,084(7,390 + 3,694) |
| 分割类别 | 4 器官 + 背景(标签 1=食管 2=心脏 3=气管 4=主动脉) |
| 体素分辨率 | 面内 0.90–1.37 mm;层厚 2.0–3.7 mm |
| 官方评测 | Dice + Hausdorff(mm),SimpleITK,8 项平均 |
| 冠军平均 Dice | 约 0.92(四器官区间 0.8651–0.9536) |
| 获取方式 | CodaLab 注册即得,禁止再分发 |
§1.2 战略价值
维度一:放疗计划自动化的"最小可信基准"。 医疗分割领域大而全的数据集不少,但专门面向放疗 OAR 勾画、且带严格统一标注协议的公开数据极少——SegTHOR 论文摘要开篇即指出"专为放疗计划设计的公开数据集屈指可数"(HAL 论文页)。它的 4 个器官横跨三种形态学极端:心脏(blob 状大器官,中位体积 847 cm³)、主动脉(手杖形管状大器官)、气管与食管(细长小器官,最小中位体积仅 38/45 cm³),一个数据集同时覆盖"好分割"与"最难分割"两端,使其成为检验模型大器官精度与小器官边界能力的最小可信组合(openmedlab 统计)。
维度二:持续开放的官方排行榜。 与多数一次性挑战赛不同,SegTHOR 的 CodaLab 评测服务器至今仍对新提交开放,任何团队都可以把自己的方法放到与 2019 年冠军完全相同的测试集和评测协议(Dice + Hausdorff、SimpleITK 实现、8 项指标平均)下比较,避免了"各论文各自划分测试集"导致的不可比问题(CodaLab 官方页)。对于需要在论文或产品中给出可辩护基准数字的团队,这是直接价值。
维度三:小数据临床场景的方法学试验场。 40 例训练数据是深度医疗分割的"困难模式":它迫使研究者面对类不平衡(食管平均截面仅约 226 像素 vs 心脏约 9,574 像素)、无预训练大模型时代的迁移学习、以及 2D/3D 混合架构取舍等真实问题。挑战赛中 He 等人的多任务方案(分割 + 切片级器官存在性分类辅助滤除假阳性)成为后续弱监督研究的常用设计(He et al., 2019)。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态 | 标注结构 | 与 SegTHOR 的差异化 |
|---|---|---|---|---|
| SegTHOR | 60 例 CT(40/20) | 胸部 CT 平扫+增强 | 4 个 OAR(心、主动脉、气管、食管),单专家勾画 | 放疗计划专属协议 + 官方持续开放排行榜 |
| LCTSC | 60 例 CT(36/12/12) | 胸部 CT | 5 结构(食管、脊髓、心、双肺),多中心多标注者 | TCIA 托管、含肺与脊髓;无统一挑战赛排行榜 |
| StructSeg 2019 | 20 例 CT | 胸部 CT | 6 结构(含双肺、心、脊髓、食管、气管) | 荷兰多中心;规模更小但结构更多 |
| NSCLC-Radiogenomics | 约 130 例 CT | 胸部 CT(部分增强) | 原发灶+淋巴结分割 | 面向影像基因组学,非 OAR 勾画协议 |
| TotalSegmentator | 1,204 例 CT | 全身 CT | 104+ 解剖结构,多数自动+人工校正 | 规模大、覆盖广,但标注为协议混合而非单一专家放疗协议 |
§1.4 版本时间轴
| 时间 | 事件 | 说明 |
|---|---|---|
| 2019-01-05 | CodaLab 挑战赛 Phase 1 上线 | 训练集与 starting kit 公开(CodaLab) |
| 2019-02-28 | Phase 2(测试阶段)开始 | 测试集开放提交 |
| 2019-04-08 | SegTHOR@ISBI 2019 现场挑战(威尼斯) | 论文集以 CEUR-WS Vol-2349 开放出版 |
| 2019-12 | 数据集论文预印本 | arXiv:1912.05950 |
| 2020-11 | 正式论文发表于 IPTA 2020 | DOI 10.1109/IPTA50016.2020.9286453 |
| 持续至今 | CodaLab 评测服务器保持开放 | 新提交仍可上官方排行榜(镜像 codalab.lisn.upsaclay.fr/competitions/843) |
§1.5 典型应用场景
- 放疗计划 OAR 自动勾画产品原型:训练心/主动脉/气管/食管四器官分割模块,接入 TPS(治疗计划系统)前的基础模型。官方设计动机即"减少手工勾画的负担与可重复性误差",临床对接时只需保证输入为放疗定位几何(512×512、相似层厚)。
- 细长器官分割方法研究:食管最小截面仅约 226 像素且与周围组织等灰度,是 topological/连续性/边界感知方法的理想试金石;官方排行榜单列食管指标的设计进一步鼓励以食管为主指标的方法学论文。
- 多任务与弱监督学习:利用"4 器官在切片级按解剖顺序出现"的先验,复现 He 等人的分割 + 分类联合学习设计;亦可将分类任务(切片是否含心/主动脉)作为弱标注预训练信号。
- nnU-Net 快速基线:官方 Task055 转换脚本可直接跑通全流程,作为新方法的对照组;nnU-Net 的自动配置也天然演示了各向异性 spacing 的处理方式。
- 半监督 / 领域自适应:以 40 例标注 + 20 例未标注测试影像为天然半监督设置,研究小标注量场景;也可与 LCTSC 等同域数据集构成跨中心域偏移实验对。
- 医学影像教学:4 个器官覆盖含气(气管)、软组织(食管)、血流(主动脉)、运动(心脏)四种影像学表现与 blob/管状/手杖形三种形态类别,适合作为胸部断层解剖与勾画协议的教学素材。
§2 医学背景
§2.1 ICD-11 编码映射
SegTHOR 的患者人群为接受根治性放疗的胸部肿瘤患者(arXiv 论文)。下表给出主要疾病与 4 个标注器官的编码映射:
| 标签/概念 | ICD-11 编码 | ICD-11 中文名 | 术语说明 |
|---|---|---|---|
| 支气管或肺恶性肿瘤 | 2C25 | 支气管或肺恶性肿瘤 | SegTHOR 主要患者来源病种(论文表述为肺癌,其中多数为非小细胞肺癌) |
| 霍奇金淋巴瘤 | 2B30 | 霍奇金淋巴瘤 | 论文披露的另一患者来源病种 |
| 放射治疗会诊 | Z51.0 | 放射治疗会诊 | 全部 60 例 CT 的临床场景(根治性放疗定位) |
| 心脏(OAR) | X51(心脏解剖学结构,ICD-11 扩展段) | 心脏 | 分割标注目标之一 |
| 主动脉(OAR) | X53(主动脉解剖学结构,ICD-11 扩展段) | 主动脉 | 分割标注目标之一 |
| 气管(OAR) | XN37H(气管,ICD-11 扩展段) | 气管 | 分割标注目标之一 |
| 食管(OAR) | XN4B7(食管,ICD-11 扩展段) | 食管 | 分割标注目标之一 |
§2.1b SNOMED CT 映射
| 标签 | ICD-11 | SNOMED CT 码 | SNOMED 术语 |
|---|---|---|---|
| 心脏 | X51 | 80248007 | Heart structure(心脏结构) |
| 主动脉 | X53 | 87878005 | Aortic structure(主动脉结构) |
| 气管 | XN37H | 44577001 | Tracheal structure(气管结构) |
| 食管 | XN4B7 | 89187006 | Esophageal structure(食管结构) |
§2.2 疾病简介与流行病学
肺癌放疗背景。 放射治疗是肺癌与食管癌的标准治疗选择之一;放疗计划始于在 CT 上勾画靶区及其邻近的正常器官,即危及器官(Organs at Risk, OAR)(CodaLab 官方页)。按 IARC GLOBOCAN 2022 统计,肺癌是全球新发病例数最多的恶性肿瘤(约 248 万例新发、约 182 万例死亡),胸部放疗是其局部治疗的核心手段之一(GLOBOCAN 2022)。根治性放疗要求在杀灭肿瘤的同时把心脏、食管、主动脉等 OAR 的受量控制在耐受范围内——例如食管受量过高是放射性食管炎的直接诱因,这使食管勾画精度直接影响处方优化质量。
霍奇金淋巴瘤背景。 论文披露 SegTHOR 患者中还包括霍奇金淋巴瘤(arXiv 论文)。纵隔是霍奇金淋巴瘤最常累及的部位之一,受累野/ involved-site 放疗同样需要精确的纵隔 OAR 勾画,这与肺癌患者共享同一套 OAR 勾画协议。
图像特征的病理学背景。 放疗定位 CT 中的纵隔形态受肿瘤与治疗状态双重影响:原发肿瘤及转移淋巴结可推移、包绕或浸润纵隔结构,使食管与气管偏离经典解剖走行;部分患者放疗前的新辅助化疗也会改变器官形态。这意味着 SegTHOR 的器官外观分布天然偏离健康人群解剖教科书——它反映的正是"需要做放疗计划的病态胸腔",对训练临床向模型是特性而非缺陷,但用健康志愿者数据(或其他影像协议)预训练的模型需要意识到这一分布差异。
为什么 OAR 勾画值得自动化。 官方挑战页指出:常规临床中勾画以手工完成为主,“费时且可能是可重复性错误的来源”;对食管这类器官,“患者间形状与位置差异极大、CT 图像轮廓对比度低、甚至可能不存在可见轮廓”(CodaLab 官方页)。这解释了为何放射肿瘤学家 Bernard Dubray 需要依赖解剖学经验(而非单纯窗值)完成勾画,也解释了自动分割的临床价值。
四个 OAR 的受量敏感性(定性):心脏受量与心 vascular 事件风险相关(按 RTOG 协议勾画正是为了统一心脏受量评估口径);食管受量过高直接关联急性/晚期放射性食管炎,影响治疗连续性;气管受量与放射性气管狭窄相关;主动脉虽非经典剂量限制器官,但作为大血管基准结构参与计划评估(上述器官功能定位来自放疗临床通行认识,本数据集本身不含剂量数据)。这也是 SegTHOR 选择这 4 个器官的原因——它们都在肺癌/食管癌放疗靶区近旁,且勾画难度覆盖从易到难的完整谱系(arXiv 论文)。
§2.3 临床任务定义
SegTHOR 对应的临床任务是放疗计划阶段的 OAR 勾画(delineation/contouring),属于诊断后、处方前的治疗规划环节:
| 任务环节 | 输入 | 输出 | SegTHOR 对应 |
|---|---|---|---|
| OAR 勾画 | 放疗定位 CT(平扫或增强) | 心、主动脉、气管、食管的体素级掩膜 | GT.nii.gz(标签 1–4) |
| 靶区勾画(不在本数据集内) | 定位 CT + 处方协议 | GTV/CTV/PTV | 未提供 |
| 剂量优化(不在本数据集内) | OAR + 靶区 | 剂量分布 | 未提供 |
四个器官的官方勾画协议为(arXiv 论文):食管自第 4 颈椎(C4)勾至食管-胃交界;心脏按放射治疗肿瘤学组(RTOG)建议勾画;气管自喉下缘勾至隆突下 2 cm、不含叶支气管;主动脉自心脏上方起源处勾至膈肌脚下方。体部与肺部轮廓使用 SomaVision 平台的自动工具,4 个 OAR 为人工勾画。
放疗计划中 OAR 勾画的位置(工作流视角):
| 步骤 | 内容 | SegTHOR 覆盖 |
|---|---|---|
| 1. 定位 CT 采集 | 放疗专用定位扫描(平扫或增强) | ✅ 即数据集的输入影像 |
| 2. 体部/肺轮廓 | 勾画体表与肺,用于剂量计算与归一 | ✅ 官方用平台自动工具完成(未随数据分发) |
| 3. OAR 勾画 | 心/主动脉/气管/食管轮廓 | ✅ 即 GT.nii.gz |
| 4. 靶区勾画 | GTV/CTV/PTV | ❌ 不在数据集内 |
| 5. 计划与剂量优化 | 射野设计、DVH 评估 | ❌ 不在数据集内 |
§2.4 患者人群
| 属性 | 值 | 来源 |
|---|---|---|
| 来源机构 | Centre Henri Becquerel(CHB,法国鲁昂地区抗癌中心),单中心 | arXiv 论文 |
| 采集时间 | 2016-02 至 2017-06 | arXiv 论文 |
| 疾病构成 | 肺癌或霍奇金淋巴瘤(另一综述表述为非小细胞肺癌根治性放疗) | arXiv 论文;Amsterdam UMC 论文 |
| 就医类型 | 根治性放疗(curative-intent radiotherapy)患者 | arXiv 论文 |
| 对比剂使用 | 有增强与无增强混合(未提供逐例 flag) | arXiv 论文 |
| 年龄/性别分布 | 官方论文未披露 | 同上 |
§2.5 临床价值
对放疗科而言,可靠的 OAR 自动勾画把每例约 30 分钟的手工勾画压缩到秒级初审,缩短计划周转时间,并减少因勾画者疲劳或经验差异带来的受量评估误差(arXiv 论文)。对算法研究者而言,SegTHOR 把"食管这种低对比度细长器官"设为显式关注对象——官方排行榜特别单列食管指标,即使其不计入最终排名(CodaLab 官方页)——这种"以最难器官为旗帜"的设计推动了边界感知、拓扑保持类方法的发展。对医学教育而言,4 个器官覆盖"含气(气管)/软组织(食管)/血流(主动脉)/运动(心脏)"四种影像学表现,是讲解胸部断层解剖的天然教材。
§2.6 金标准
| 维度 | 内容 |
|---|---|
| 划分 | 患者级随机划分:40 训练(含 GT)/ 20 测试(无公开 GT) |
| 标注方式 | 人工手动勾画(体部与肺轮廓为平台自动工具辅助) |
| 标注者 | 单一资深放射肿瘤学家 Bernard Dubray(CHB),Varian SomaVision 平台 |
| 性质 | 专家参考标准(reference standard);每例约 30 分钟 |
| 一致性 | 无标注者间重复性数据(单标注者设计),官方未提供重复勾画 |
§3 数据集规格
§3.0 版本抉择矩阵
SegTHOR 无多版本,但存在官方原版与社区转换版两条获取路径:
| 你的需求 | 推荐版本 | 获取渠道 | 理由 |
|---|---|---|---|
| 论文复现 / 上官方排行榜 | 官方挑战赛原版 | CodaLab 21145 | 与 2019 年起所有榜单成绩完全同源 |
| nnU-Net 训练 | 官方原版 + nnU-Net Task055 转换脚本 | nnU-Net 官方脚本 | 官方维护的标签映射(1=食管 2=心脏 3=气管 4=主动脉) |
| 教学演示 / 快速可视化 | 官方原版即可 | CodaLab 注册即得 | 无需等待审批,10 分钟内可下载 |
| 二次分发或镜像托管 | ❌ 不可行 | — | DUA 明确禁止再分发,勿从第三方镜像获取 |
§3.1 模态详情
全部 60 例均为胸部放疗定位 CT(512×512 体素矩阵),包含平扫与静脉增强两种(逐例混合且未提供增强 flag)(arXiv 论文)。面内分辨率 0.90–1.37 mm/像素,层厚(z 分辨率)2.0–3.7 mm,每例切片数 150–284,最常见体素分辨率为 0.98×0.98×2.5 mm³。z 轴约为面内的 2–3 倍各向异性,是 3D 卷积模型必须重采样的结构性原因。
社区对训练集 40 例的统计汇总(openmedlab 统计):
| 统计项 | min | median | max |
|---|---|---|---|
| spacing x/y(mm) | 0.90 | 0.98 | 1.37 |
| spacing z(mm) | 2.0 | 2.5 | 2.5 |
| 体尺寸(切片数,512×512 固定面内) | 147 | 177 | 284 |
论文口径为"切片数 150–284、z 分辨率 2–3.7 mm"(arXiv 论文),与社区逐例统计存在口径差异(如最小切片数 147 vs 150、z max 2.5 vs 3.7),使用时以官方论文叙述为准、社区统计作量级参考。
§3.2 子集样本数
| 子集 | 例数 | 切片数 | 标签文件 |
|---|---|---|---|
| 训练集 | 40(Patient_01–Patient_40) | 7,390 | 每例 1 个 GT.nii.gz |
| 测试集 | 20(Patient_41–Patient_60) | 3,694 | 无公开标签 |
| 合计 | 60 | 11,084 | — |
(arXiv 论文;注:社区仓库 openmedlab 对训练切片另有 7,420 的统计口径,以官方论文 7,390 为准。)
§3.3 数据格式
| 内容 | 格式 | 命名 | 说明 |
|---|---|---|---|
| CT 体数据 | NIfTI-1(.nii.gz) | Patient_XX.nii.gz |
int16 HU 值 |
| OAR 掩膜(仅训练集) | NIfTI-1(.nii.gz) | GT.nii.gz |
标签值 0–4 |
| 挑战赛提交 | NIfTI(.nii,无压缩) | Patient_XX.nii |
官方要求 .nii 而非 .nii.gz,打包为 result.zip |
§3.4 存储大小
官方未公布数据包总大小。可由参数推算:11,084 张 512×512 int16 切片未压缩约 5.8 GB,NIfTI 压缩后估计约 1.5–2.5 GB(推算值,仅供下载容量规划;以实际下载为准)。CT 体数据均为 512×512 固定面内矩阵,因此大小主要由切片数驱动。
| 组成 | 例数 | 切片数 | 推算未压缩(int16) |
|---|---|---|---|
| train(CT + GT) | 40 | 7,390 | 约 3.9 GB(CT 与 GT 各约 1.9 GB) |
| test(仅 CT) | 20 | 3,694 | 约 1.9 GB |
| 合计 | 60 | 11,084 | 约 5.8 GB(压缩后约 1.5–2.5 GB) |
(推算口径:512×512×2 字节/体素,双精度空间冗余不计;表值为容量规划参考。)
§3.5 标注方式
4 个 OAR 全部为人工手动勾画:由资深放射肿瘤学家 Bernard Dubray 使用 Varian Medical Systems SomaVision 平台完成,每例约 30 分钟;体部与肺部轮廓使用平台自带自动工具(非本数据集标签)(arXiv 论文)。无半自动模型预勾画、无众包环节。
官方勾画协议逐器官定义(arXiv 论文):
| 器官(标签值) | 勾画起止点 | 协议依据 |
|---|---|---|
| 食管(1) | 自第 4 颈椎(C4)至食管-胃交界 | 官方协议(人工勾画) |
| 心脏(2) | 按放射治疗肿瘤学组(RTOG)建议 | RTOG 心脏勾画指南 |
| 气管(3) | 自喉下缘至隆突下 2 cm,不含叶支气管 | 官方协议(人工勾画) |
| 主动脉(4) | 自心脏上方起源处至膈肌脚下方 | 官方协议(人工勾画) |
§3.6 标注者资质与一致性
标注者为法国鲁昂 Henri Becquerel 肿瘤中心的资深放射肿瘤学家,其勾画遵循解剖学指南(心脏按 RTOG 建议;其余三器官按解剖起止点协议)。单标注者设计意味着:数据集不提供标注者间一致性(如 Dice between observers),使用时应将 GT 视为"单一专家参考"而非"共识金标准"——这是官方论文与挑战页均未回避的设计事实(arXiv 论文)。
§3.7 采集周期
2016-02 至 2017-06,共 60 例根治性放疗定位 CT,全部采集于 CHB(arXiv 论文)。无纵向随访影像,每位患者仅 1 次定位 CT。
§3.8 地域覆盖
法国鲁昂(诺曼底大区)单中心。无多中心、多国家数据,人群以欧洲高加索人群为主(官方未披露人口统计学明细)。
§3.9 设备规格
官方论文与挑战页均未公布 CT 扫描仪厂商/型号/采集协议细节,仅披露重建矩阵 512×512、分辨率范围与对比剂使用情况(arXiv 论文)。已知平台与设备信息如下:
| 环节 | 平台/设备 | 来源 |
|---|---|---|
| CT 采集 | 放疗定位 CT,型号未公开 | arXiv 论文 |
| 勾画平台 | Varian SomaVision(Varian Medical Systems, Palo Alto, USA) | arXiv 论文 |
| 重建矩阵 | 512×512,面内 0.90–1.37 mm,层厚 2.0–3.7 mm | arXiv 论文 |
§3.10 深度溯源链
Henri Becquerel 肿瘤中心放疗定位 CT(2016-02 至 2017-06,60 例)
→ 放射肿瘤学家 B. Dubray 于 Varian SomaVision 手动勾画 4 个 OAR(每例约 30 分钟)
→ 鲁昂大学 LITIS / INSA 鲁昂 LMI 团队整理为 NIfTI + 患者级 40/20 划分
→ CodaLab 挑战赛 21145 发布(2019-01-05,含在线评测)
→ 数据集论文:CEUR Vol-2349 论文集(2019)→ arXiv:1912.05950 → IPTA 2020 正式发表
§4 数据结构
§4.0 目录树
解压官方 starting kit 后的目录结构(openmedlab 结构描述):
SegTHOR/
├── train/ # 40 例训练数据(含标签)
│ ├── Patient_01/
│ │ ├── Patient_01.nii.gz # CT 体数据(HU 值)
│ │ └── GT.nii.gz # OAR 掩膜(标签 0-4)
│ ├── Patient_02/
│ │ ├── Patient_02.nii.gz
│ │ └── GT.nii.gz
│ ├── ...
│ └── Patient_40/
│ ├── Patient_40.nii.gz
│ └── GT.nii.gz
└── test/ # 20 例测试数据(无标签)
├── Patient_41.nii.gz
├── Patient_42.nii.gz
├── ...
└── Patient_60.nii.gz
§4.1 DAIMS 字段字典
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| PatientID | 文本 | 患者唯一标识(目录/文件名内嵌) | Patient_07 |
主键、患者级划分依据 | 无 | 无 | Patient_01–Patient_60 |
| CT volume | 三维 int16 体数据 | 胸部 CT,HU 值 | 512×512×177 | 输入影像 | 无 | 无 | HU 约 -1024 至 +3071 |
| GT volume | 三维 uint8 体数据 | OAR 掩膜,仅训练集 | 512×512×177 | 监督信号 | 单标注者勾画误差未量化 | 测试集整卷缺失(设计使然) | |
| Label 1 | 整数标签 | 食管(esophagus) | 1 | 分割目标 | — | — | 1 |
| Label 2 | 整数标签 | 心脏(heart) | 2 | 分割目标 | — | — | 2 |
| Label 3 | 整数标签 | 气管(trachea) | 3 | 分割目标 | — | — | 3 |
| Label 4 | 整数标签 | 主动脉(aorta) | 4 | 分割目标 | — | — | 4 |
| Label 0 | 整数标签 | 背景 | 0 | 负类 | — | — | 0 |
| Spacing | 三元组浮点 | 体素物理间距(mm) | (0.98, 0.98, 2.5) | 重采样、HD 指标计算 | — | — | x/y 0.90–1.37;z 2.0–3.7 |
| ContrastFlag | ❌ 不存在 | 增强/平扫标记未提供 | — | 需自行从强度分布推断 | — | 官方未提供 | — |
§4.2 标签分布
基于训练集 40 例的社区统计(openmedlab),4 个器官在全部 40 例中检出率均为 100%(无空标签整卷):
| 器官(标签) | 检出例数 | 体积 min(cm³) | 体积 median(cm³) | 体积 max(cm³) |
|---|---|---|---|---|
| 食管(1) | 40/40 | 30 | 45 | 170 |
| 心脏(2) | 40/40 | 438 | 847 | 1,829 |
| 气管(3) | 40/40 | 22 | 38 | 73 |
| 主动脉(4) | 40/40 | 95 | 206 | 465 |
切片级分布同样不均衡:心脏与气管的出现切片数各约 1,000+,主动脉与食管各约 3,000+;平均单切片截面像素数心脏约 9,574、主动脉约 1,023、气管约 340、食管约 226(最小可低至 60 像素)(BB-UNet 论文统计)。
该论文基于体部轮廓裁剪后对 40 例训练数据的切片级统计(BB-UNet 论文,其 36/4 的内部拆分为该文自定义):
| 器官 | 出现切片数(约) | 平均截面像素 | 最小截面像素 |
|---|---|---|---|
| 心脏 | 约 1,000+(全拆分合计约 1,444+) | 约 9,574 | 245 |
| 主动脉 | 约 3,000+(全拆分合计约 3,363) | 约 1,023 | 81 |
| 气管 | 约 1,700+(全拆分合计约 1,767) | 约 340 | 72 |
| 食管 | 约 3,500+(全拆分合计约 3,510) | 约 226 | 60 |
解读:食管与主动脉"出现切片多但单切片面积小",心脏"出现切片少但单切片面积巨大",气管介于两者之间——四种截然不同的 (频率 × 面积) 组合,意味着单一的重加权策略无法同时优化四个器官,这是级联/多尺度方法在 SegTHOR 上收益明显的结构性原因。
§4.3 关键统计
- 体尺寸:512×512 固定面内矩阵;切片数 150–284/例,中位 177(openmedlab 统计)。
- 切片总数:训练 7,390 + 测试 3,694 = 11,084(arXiv 论文)。
- 器官三维关系:4 个 OAR 在纵隔内立体交错嵌套(主动脉弓包绕气管、食管紧贴左心房后壁),是空间上下文建模的价值来源(arXiv 论文)。
- 器官影像学表现谱:气管含气呈黑色(最易识别)→ 食管软组织与周围等灰度(最难识别),两端跨度大(同上)。
§4.4 数据层级
数据集 SegTHOR
└── 患者(60 例,患者级唯一标识 Patient_01–60)
└── 单次放疗定位 CT(每位患者 1 个 NIfTI 体,无纵向时间点)
└── 轴位切片(150–284 张/例)
└── 体素(512×512;GT 卷中取值 0–4)
层级含义:所有划分与交叉验证必须在"患者"层操作;任何在切片层的随机打乱都会引入同患者泄漏(见坑点 4)。两位患者之间不存在共享实体(每位患者仅 1 次扫描),因此 GroupKFold 与"按患者留出"等价;而"切片"层只应作为训练时的采样粒度,不承担划分职责。若未来出现纵向随访版本(同一患者多次 CT),划分键需升级为"患者"并保证时间点不跨集合。
§4.5 缺失值与信息性缺失
| 情形 | 处理方式 | 是否信息性 |
|---|---|---|
| 测试集无 GT.nii.gz | 官方设计(评测在服务器端),本地评测只能用训练集自划验证集 | 是——20 例无标注本身是"隐藏测试分布" |
| 增强与否未标记 | 需按强度直方图自行推断 | 是——缺失即偏倚信号 |
| 患者年龄/性别未提供 | 官方未披露,无法补 | 否——直接不可用 |
| 无空器官整卷 | 40 例中 4 器官均 100% 存在 | — |
§5 划分与使用建议
§5.1 官方划分
官方将 60 例按患者级随机划分为训练集 40 例(7,390 切片,带标签)与测试集 20 例(3,694 切片,无标签),划分文件随数据发布,任何上排行榜的提交都必须一次性对 20 例测试患者各输出一个 .nii 分割卷(CodaLab 官方页)。
官方划分的两个使用要点:(1)测试集是"一次性"资源——CodaLab 每日 3 次提交限制下,合理的策略是内部 CV 选型、最后提交决赛配置,把测试集当作发布门禁而非调参信号;(2)官方划分从未变更,这使 2019 年榜单成绩与 2026 年的提交在原则上严格可比,是该数据集相对"各论文自划测试集"做法的核心优势。
§5.2 社区惯例划分
挑战赛论文作者与参赛团队普遍把官方训练集再拆为 32 例训练 + 8 例验证;Vesal 等人进一步采用 5 折交叉验证(每折 32 训练 + 8 验证)后合并全部 40 例重训(Vesal et al.;He et al.)。BB-UNet 等弱监督工作则采用 36/4 的训练/验证拆分(BB-UNet)。社区方法学主流是:5 折患者级 CV 报告内部指标 + 一次性提交 20 例测试集报告官方指标。
§5.3 泄漏风险(重点)
- 切片级拆分泄漏:同一患者的相邻轴位切片高度相似,若按切片随机划分训练/验证,验证 Dice 会虚高数个百分点。必须患者级划分(见坑点 4)。
- 验证集见过的增强/归一化统计:窗宽窗位、z-score 统计若在全训练集(含验证患者)上计算,属轻度泄漏;应在 32 例子集内计算后套用于验证/测试。
- 测试集间接过拟合:CodaLab 每日允许 3 次提交,反复对测试集调参会造成隐性过拟合,这也是挑战赛设计的常见局限(CodaLab 官方页)。
§5.4 交叉验证建议
推荐 5 折患者级 CV(每折 8 例验证),指标按折平均并报告标准差;最终模型用全部 40 例重训(固定超参)。气管与食管是小器官,按例数分层即可——每例均含全部 4 器官,无需 StratifiedGroupKFold,普通 GroupKFold(按 PatientID)即可。
§5.5 外部验证建议
在 LCTSC(TCIA,60 例 5 结构)或 StructSeg 2019 胸部 CT 上做零样本/微调外部验证是文献惯例;跨数据集时注意标注协议差异——SegTHOR 气管勾至隆突下 2 cm 截止,而部分数据集勾画气管全长,混训时会在气管下端产生系统性标签冲突(见坑点 8)。
| 外部数据集 | 与 SegTHOR 的重叠结构 | 建议用法 |
|---|---|---|
| LCTSC | 心、食管(+肺、脊髓) | 零样本评估 + 少样本微调,按结构分别报告 Dice |
| StructSeg 2019 | 心、气管、食管(+肺、脊髓) | 跨中心泛化测试(荷兰多中心) |
| TotalSegmentator | 心、主动脉、气管、食管(自动+校正标注) | 大规模压力测试,注意标注协议差异 |
操作要点:外部验证先冻结预处理管线(窗宽窗位、spacing),只替换数据源;每结构独立计算 Dice/HD,并与内部 5 折 CV 基线并排呈现;发现某结构骤降时优先排查协议差异而非模型容量。
§6 AI 就绪指南 ⭐
§6.0 云端快速启动
SegTHOR 不提供对象存储直链,必须经 CodaLab 注册下载,因此云端流程是"本地/浏览器注册下载 → 上传至云端存储 → 挂载训练"。Kaggle/Colab 用户可在注册后把下载的 zip 上传为私有 Kaggle Dataset,之后一行挂载:
# Kaggle Notebook:挂载私有数据集后
import glob
train_dirs = sorted(glob.glob("/kaggle/input/*/SegTHOR/train/Patient_*"))
print(len(train_dirs)) # 预期 40
Colab 用户可从 Google Drive 挂载(注册下载一次后长期复用):
# Google Colab:从 Drive 挂载自制副本(注意 DUA:仅自用副本,不得公开分享)
from google.colab import drive
drive.mount("/content/drive")
import glob
train_dirs = sorted(glob.glob("/content/drive/MyDrive/SegTHOR/train/Patient_*"))
test_files = sorted(glob.glob("/content/drive/MyDrive/SegTHOR/test/*.nii.gz"))
print(len(train_dirs), len(test_files)) # 预期 40 20
注:无论 Kaggle 还是 Colab,都请把数据集设为私有——DUA 明确禁止再分发(§7.4)。
§6.1 快速上手
下方代码预期目录结构为官方解压后的 SegTHOR/(见 §4.0);data_root 即该目录绝对路径;最小可用子集是训练集 40 例中任选的 8 例(足够跑通数据管道与单卡过拟合验证)。
# 快速上手:读取一例 CT + 掩膜并核对标签值
# 预期目录结构:
# {data_root}/train/Patient_01/Patient_01.nii.gz ← CT(HU)
# {data_root}/train/Patient_01/GT.nii.gz ← 掩膜(0-4)
import SimpleITK as sitk
import numpy as np
data_root = "/data/SegTHOR" # 拼接关系:data_root / split / PatientID / 文件
ct = sitk.ReadImage(f"{data_root}/train/Patient_01/Patient_01.nii.gz")
gt = sitk.ReadImage(f"{data_root}/train/Patient_01/GT.nii.gz")
print("CT size:", ct.GetSize(), "spacing:", ct.GetSpacing())
print("GT size:", gt.GetSize(), "unique:", np.unique(sitk.GetArrayFromImage(gt)))
# 预期标签唯一值 ⊆ {0,1,2,3,4}:1=食管 2=心脏 3=气管 4=主动脉
建议在首次加载后立刻跑一遍"全库体检"(几分钟内完成),一次性验证 40 例的几何一致性与标签完整性:
# 全库体检:40 例训练数据的几何/标签断言(对应坑点 2 的断言文化)
import glob
import numpy as np
import SimpleITK as sitk
VALID_LABELS = {0, 1, 2, 3, 4} # 官方唯一标签集(nnU-Net Task055)
for gt_path in sorted(glob.glob(f"{data_root}/train/Patient_*/GT.nii.gz")):
gt = sitk.GetArrayFromImage(sitk.ReadImage(gt_path))
labels = set(np.unique(gt).tolist())
assert labels <= VALID_LABELS, f"{gt_path}: 非法标签 {labels - VALID_LABELS}(检查标签映射!)"
assert {1, 2, 3, 4} <= labels, f"{gt_path}: 缺器官标签(4 器官检出率官方为 100%)"
print("40 例全部通过体检")
§6.2 数据获取
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 打开 CodaLab 挑战赛页 | 注册/登录 CodaLab 账号 |
| 2 | Participate 页签 → Register | 直接获得数据访问权,无需组织者审批 |
| 3 | 同意 Data Usage Agreement | 明确禁止再分发;引用 IPTA 2020 论文 |
| 4 | 下载 starting kit / 数据包 | #participate-get_starting_kit 区域 |
| 5 | 解压得 SegTHOR/ 目录 |
train 40 例 + test 20 例 |
# 解压与体检(注册下载后)
unzip segthor_starting_kit.zip -d /data/
ls /data/SegTHOR/train | wc -l # 预期 40
ls /data/SegTHOR/test | wc -l # 预期 20
python -c "
import SimpleITK as sitk
img = sitk.ReadImage('/data/SegTHOR/train/Patient_01/Patient_01.nii.gz')
print(img.GetSize(), img.GetSpacing()) # 例:(512, 512, 147) (0.98, 0.98, 2.5)
"
§6.3 预处理全流程
标准管线:HU 截断 → 重采样 → 裁剪 → 归一化。以下代码可直接运行:
# 预处理:HU 截断 + 重采样到 1.0x1.0x2.0mm + 裁剪 + z-score
# 目录预期:{data_root}/train/Patient_XX/*.nii.gz(见 §4.0)
import numpy as np
import SimpleITK as sitk
from scipy.ndimage import zoom
HU_MIN, HU_MAX = -1000.0, 1000.0 # 胸部软组织窗外的空气/骨均截断
TARGET_SPACING = (1.0, 1.0, 2.0) # mm(x, y, z),接近数据集最常见分辨率
def preprocess(ct_path: str, gt_path: str | None = None):
ct = sitk.ReadImage(ct_path)
ct_np = sitk.GetArrayFromImage(ct).astype(np.float32) # (Z, Y, X)
ct_np = np.clip(ct_np, HU_MIN, HU_MAX)
sx, sy, sz = ct.GetSpacing()
scale = (sz / TARGET_SPACING[2], sy / TARGET_SPACING[1], sx / TARGET_SPACING[0])
ct_rs = zoom(ct_np, scale, order=1) # 三线性
gt_rs = None
if gt_path is not None:
gt = sitk.GetArrayFromImage(sitk.ReadImage(gt_path)).astype(np.uint8)
gt_rs = zoom(gt, scale, order=0) # 最近邻,保标签完整
gt_rs = np.rint(gt_rs).astype(np.uint8)
return ct_rs.astype(np.float32), gt_rs
ct, gt = preprocess(
f"/data/SegTHOR/train/Patient_01/Patient_01.nii.gz",
f"/data/SegTHOR/train/Patient_01/GT.nii.gz",
)
ct = (ct - ct[ct > -900].mean()) / (ct[ct > -900].std() + 1e-8) # 仅用体内容积统计
print(ct.shape, gt.shape, np.unique(gt))
要点:截断窗与归一化统计必须在训练子集内计算(§5.3 泄漏第 2 条);掩膜重采样必须用最近邻(order=0),否则标签会被插值出非法值。对比增强(CLAHE)在 Vesal 等人的方案中被用于缓解低对比度(Vesal et al.),可作为可选步骤 A/B 测试:
# 可选:逐切片 CLAHE 对比度增强(Vesal et al. 2019 采用,A/B 自测)
# 依赖:pip install opencv-python-headless
import cv2
def clahe_slice(slice_uint8: np.ndarray, clip_limit: float = 2.0,
grid: tuple = (8, 8)) -> np.ndarray:
lo, hi = -1000.0, 1000.0
scaled = np.clip((slice_uint8 - lo) / (hi - lo) * 255.0, 0, 255).astype(np.uint8)
return cv2.createCLAHE(clipLimit=clip_limit, tileGridSize=grid).apply(scaled)
# 用法:在 §6.4 Dataset 的 __init__ 中对 ct[z] 先做 clahe_slice 再 z-score
nnU-Net 用户无需手写以上管线,直接用官方转换脚本建库:
# nnU-Net v2 路线:官方 Task055 转换脚本(标签映射 1=食管 2=心脏 3=气管 4=主动脉)
# 前置:已按 nnU-Net 文档设置 nnUNet_raw / nnUNet_preprocessed 环境变量
python nnunet/dataset_conversion/Task055_SegTHOR.py
nnUNetv2_train 3d_fullres 0 # 以 v1 脚本建库后按所用 nnU-Net 版本微调命令
(Task055 脚本同时实现了"提交格式转换":把 .nii.gz 预测重写为评测要求的 .nii,见坑点 3。脚本来源:nnU-Net 官方 dataset_conversion。)
§6.4 PyTorch DataLoader
# PyTorch 2D 切片级 Dataset(患者级划分由外部 split 文件控制)
# 预期:splits = {"train": ["Patient_01", ...32 例], "val": ["Patient_33", ...8 例]}
# data_root 拼接:{data_root}/train/{PatientID}/{PatientID.nii.gz | GT.nii.gz}
import glob
import os
import numpy as np
import SimpleITK as sitk
import torch
from torch.utils.data import Dataset, DataLoader
class SegTHORDataset(Dataset):
"""2D 轴位切片 Dataset:返回 (image_1xHxW, mask_HxW),仅保留含器官切片可选。"""
def __init__(self, data_root: str, patient_ids: list[str],
min_hu: float = -1000.0, max_hu: float = 1000.0,
keep_empty: bool = False):
self.samples = []
for pid in patient_ids:
ct_path = os.path.join(data_root, "train", pid, f"{pid}.nii.gz")
gt_path = os.path.join(data_root, "train", pid, "GT.nii.gz")
ct = sitk.GetArrayFromImage(sitk.ReadImage(ct_path)).astype(np.float32)
gt = sitk.GetArrayFromImage(sitk.ReadImage(gt_path)).astype(np.int64)
ct = np.clip(ct, min_hu, max_hu)
ct = (ct - ct.mean()) / (ct.std() + 1e-8) # 患者内 z-score
for z in range(ct.shape[0]):
if not keep_empty and gt[z].max() == 0:
continue # 跳过全背景切片
self.samples.append((ct[z], gt[z], pid, z))
def __len__(self):
return len(self.samples)
def __getitem__(self, idx):
img, msk, pid, z = self.samples[idx]
return (torch.from_numpy(img).unsqueeze(0).float(),
torch.from_numpy(msk).long(), pid, z)
train_set = SegTHORDataset("/data/SegTHOR", patient_ids=[f"Patient_{i:02d}" for i in range(1, 33)])
train_loader = DataLoader(train_set, batch_size=16, shuffle=True,
num_workers=4, pin_memory=True, drop_last=True)
img, msk, pid, z = next(iter(train_loader))
print(img.shape, msk.shape, pid[:2], z[:2]) # 例:torch.Size([16,1,512,512])
3D 训练建议直接使用 nnU-Net v2 + 官方 Task055 转换脚本(nnunet/dataset_conversion/Task055_SegTHOR.py,标签映射 1=食管 2=心脏 3=气管 4=主动脉,见 nnU-Net 官方脚本),它会自动处理重采样与 patch 采样。若需自研 3D 管线,以下是患者级滑窗切块的 Dataset 骨架:
# 3D 体级 Dataset:整卷读入 → 统一 spacing → 滑窗 patch(患者级划分由 patient_ids 控制)
# 拼接关系:{data_root}/train/{PatientID}/{PatientID.nii.gz | GT.nii.gz}(见 §4.0)
import os
import numpy as np
import SimpleITK as sitk
import torch
from scipy.ndimage import zoom
from torch.utils.data import Dataset
class SegTHOR3D(Dataset):
def __init__(self, data_root: str, patient_ids: list[str],
patch: tuple = (128, 128, 64)):
self.items, self.patch = [], patch
for pid in patient_ids:
ct = sitk.ReadImage(os.path.join(data_root, "train", pid, f"{pid}.nii.gz"))
vol = sitk.GetArrayFromImage(ct).astype(np.float32) # (Z, Y, X)
vol = np.clip(vol, -1000, 1000)
vol = (vol - vol.mean()) / (vol.std() + 1e-8) # 患者内 z-score
gt = sitk.GetArrayFromImage(sitk.ReadImage(
os.path.join(data_root, "train", pid, "GT.nii.gz"))).astype(np.uint8)
self.items.append((pid, vol, gt))
def __len__(self):
return len(self.items)
def __getitem__(self, idx):
pid, vol, gt = self.items[idx]
z, y, x = vol.shape
pz, py, px = self.patch
z0 = (z - pz) // 2 if z > pz else 0 # 简化:中心窗
y0 = (y - py) // 2 if y > py else 0
x0 = (x - px) // 2 if x > px else 0
win = (slice(z0, min(z0 + pz, z)), slice(y0, min(y0 + py, y)),
slice(x0, min(x0 + px, x)))
return (torch.from_numpy(vol[win].copy()).unsqueeze(0).float(),
torch.from_numpy(gt[win].copy()).long(), pid)
(生产级 3D 训练请用 nnU-Net 或 MONAI 的 sliding window inference,其含重叠与高斯加权;本骨架仅用于理解数据几何。)
§6.5 坑点 8 个
⚠️ 坑点 1:食管——低对比度细长小器官被大器官梯度淹没(分类:标签理解)
问题:食管是全数据集最小的器官(体积中位 45 cm³、最小截面仅约 60 像素),且与周围软组织近乎等灰度、轮廓"可能不可见",标准多类训练中大器官(心脏、主动脉)主导 Dice 梯度,食管学成"平均最差类"(arXiv 论文;openmedlab 统计)。
症状:总平均 Dice 好看(>0.90),食管单项长期停在 0.70–0.80;预测食管断续、片段化,或系统性偏移到椎体前缘。
解决:
- 简单方法:按类别重加权 Dice/cross-entropy 损失,食管权重设为 3–5 倍;跳过全背景切片(§6.4 默认行为)以提升有效正样本密度。
- 进阶方法:2.5D 或连续切片堆叠输入,显式利用食管的管状连续性;训练时加连通性后处理(每例保留最大连通域 + 沿 z 插值补洞)。
- SOTA 方法:多分辨率级联(冠军 VB-Net 思路)——低分辨率定位食管走行、高分辨率精细化边界;或多任务学习(分割 + 切片级器官存在性分类),用分类头过滤食管假阳性(He et al., 2019)。
参考:挑战赛官方页(食管单列展示);数据集论文
⚠️ 坑点 2:标签数值映射错误——不要凭颜色或直觉猜器官顺序(分类:标签理解)
问题:SegTHOR 的标签值为 1=食管、2=心脏、3=气管、4=主动脉;但网络上不同资料的可视化颜色互相矛盾(如 openmedlab 写"Red: Heart"、另有仓库写"食管 red、心脏 pink"),不少复现者凭颜色或"按解剖学大小排序"的直觉写反映射,产出错的"成功模型"(nnU-Net Task055 官方映射;openmedlab)。
症状:可视化时"心脏"出现在脊柱前方中线(其实是食管);单类 Dice 与官方论文同模型差距悬殊且呈固定的类间置换(如你的"心脏"分数 ≈ 官方"食管"分数)。
解决:
- 简单方法:以 nnU-Net Task055 的
dataset.json标签字典为唯一映射源(0 背景 / 1 esophagus / 2 heart / 3 trachea / 4 aorta),写进代码常量并断言。- 进阶方法:加载数据后做解剖学断言——心脏质心 x 坐标偏左(RAS 系下 x 更小)、气管切片内含气(HU < -800)像素占比 > 90%、主动脉质心沿 z 贯穿全卷;不满足即报映射错误。
- SOTA 方法:把断言固化进 CI 数据体检脚本(每次数据更新自动跑),并在 nnU-Net 转换脚本中用官方
dataset.json生成而非手写。
参考:nnU-Net Task055_SegTHOR.py
⚠️ 坑点 3:提交格式陷阱——.nii 而非 .nii.gz,zip 只含文件(分类:工程陷阱)
问题:官方评测要求每个测试患者输出一个 NIfTI 文件打包为 result.zip,且明确"zip 的是 result 目录的内容而非目录本身";nnU-Net 默认输出 .nii.gz,直接改名会导致评测端解压/读取失败(CodaLab 官方页)。
症状:提交后评测程序报错或长时间 pending;或 20 例文件只上传了 19 例(漏掉 zip 层级问题)。
解决:
- 简单方法:用 SimpleITK 逐例重写为 .nii(
sitk.WriteImage(img, path[:-7] + ".nii"),nnU-Net Task055 脚本内的convert_for_submission即此实现),cd result && zip ../result.zip *.nii。- 进阶方法:写提交前断言脚本——恰好 20 个文件、命名严格为 Patient_41–60、体积尺寸与对应测试 CT 一致、标签值 ⊆ {0…4}。
- SOTA 方法:把"转换 → 断言 → 打包"串成一键脚本并入 CI,避免人工打包;每日 3 次提交限额下先用断言脚本拦截 99% 格式错误。
参考:CodaLab Preparing your submission;nnU-Net Task055
⚠️ 坑点 4:切片级随机划分造成同患者泄漏(分类:数据泄漏)
问题:SegTHOR 是体数据,把 11,084 张切片当独立样本随机划分训练/验证时,同一患者的相邻切片同时出现在两侧;相邻轴位切片几乎相同,验证集实质上被"背过"(社区大量 2D 复现即踩此坑,如公开 keras 复现按切片 8/2 拆分)。
症状:验证 Dice 高达 0.95+ 但提交 CodaLab 测试分数低 5–15 个百分点;验证损失平滑下降后突然不再改善。
解决:
- 简单方法:按
PatientID做 GroupKFold(5 折,每折 8 例验证),任何切片级采样只发生在训练患者内部。- 进阶方法:在 DataLoader 层面断言——每 epoch 结束统计 val 集出现过的 patient_id 集合,与 train 集求交必须为空;把该断言写进训练框架单测。
- SOTA 方法:统一采用"患者级 5 折 CV + 全量重训 + 单次官方提交"的三级评测(社区主流,如 Vesal et al. 5 折方案),既得内部可信方差又保留官方可比性。
参考:Vesal et al., 2019;He et al., 2019
⚠️ 坑点 5:z 轴各向异性——层厚 2–3.7 mm 直接 3D 卷积会糊掉食管(分类:预处理陷阱)
问题:面内分辨率 0.90–1.37 mm 而 z 分辨率 2.0–3.7 mm,各向异性比约 2–3 倍;3D 网络在原始 spacing 上卷积时,食管壁(厚约数毫米)在 z 向不足 2 个体素,细节被欠采样(arXiv 论文)。
症状:3D 模型食管/气管预测沿 z 向"串珠状"断裂;2D 模型反而比 3D 好的现象(挑战赛中多篇 2D/2.5D 论文出现)。
解决:
- 简单方法:2D/2.5D 逐切片或连续三切片输入,回避 z 向插值误差(多数挑战赛参赛方案的选择)。
- 进阶方法:重采样到各向同性或半各向同性 spacing(如 1.0×1.0×2.0 mm,见 §6.3),3D 网络 z 向步长/池化减半。
- SOTA 方法:直接交给 nnU-Net 的自动 spacing/patch 策略(其 fingerprint 会按数据集统计选择目标 spacing 与网络拓扑);或采用冠军级多分辨率级联 VB-Net(Han et al. 思路)。
参考:数据集论文(分辨率统计);openmedlab spacing 统计
⚠️ 坑点 6:本地无法复现官方测试分——且跨论文 HD 单位不一致(分类:评估误用)
问题:20 例测试集无公开标签,官方分数只能提交 CodaLab 获得;更隐蔽的是,各参赛论文汇报 HD 时单位不统一(官方协议为 mm,如 van Harten 等报 3.4 mm,而部分论文以 cm 或归一化值报告 0.29 等),直接横向抄表比较会得出错误结论(CodaLab 官方页;Knowledge Distillation 论文对比表)。
症状:看表以为方法 A 的 HD(0.13)比方法 B(2.7)好 20 倍;自己复现 A 方法 HD 却是 1.3 mm,怀疑人生。
解决:
- 简单方法:只比较同一来源表格内的数字(同一论文/同一综述内已统一单位),并注明单位。
- 进阶方法:本地用患者级 5 折 CV 建立自己的可比基准(Dice + 95% HD,MedPy/SimpleITK 实现,spacing 用 mm),报告时写明"HD 以 mm 计"。
- SOTA 方法:所有模型统一提交一次官方服务器取回测试分,把每日 3 次限额用于最终候选而非调试;论文中同时报告内部 CV 与官方测试分两列。
参考:Knowledge Distillation with Ensembles(Table 2 对比);lung cancer radiotherapy 综述
⚠️ 坑点 7:平扫与增强混合且无 flag——强度驱动的模型被对比剂"摇晃"(分类:偏倚陷阱)
问题:60 例中平扫与静脉增强 CT 混合,官方不提供逐例标记;增强使主动脉/心脏腔内 HU 抬升数十至数百,食管与周围组织的相对灰度关系也随之改变,固定窗宽窗位或全局归一化会被扫描间差异污染(arXiv 论文)。
症状:训练损失抖动大;同一患者内部一致但患者间强度分布差异明显;消融实验换窗宽窗位后各器官表现此消彼长。
解决:
- 简单方法:患者内 z-score(§6.4 实现)+ 宽松截断窗(如 -1000 至 1000 HU),避免对绝对 HU 值敏感。
- 进阶方法:训练时把"是否增强"当作随机增强维度——对主动脉/心脏腔内区域做可控 HU 抬升模拟,提升强度鲁棒性;或用强度直方图自动推断增强与否作为辅助输入通道。
- SOTA 方法:强度不变表征学习(对每个体素窗用局部对比而非绝对值),或直接采用 nnU-Net 的全局强度统计 + 正则化策略,其对混合扫描仪/协议数据已被广泛验证。
参考:数据集论文;Vesal et al.(CLAHE 处理低对比度)
⚠️ 坑点 8:跨数据集混训时的标注协议冲突——气管"截止于隆突下 2 cm"(分类:偏倚陷阱)
问题:SegTHOR 气管按协议只勾到"隆突下 2 cm、不含叶支气管",主动脉勾到"膈肌脚下方",食管从 C4 起——这些起止点与 LCTSC、StructSeg 等数据集的勾画指南并不一致;多数据集混训时,同一解剖位置在不同来源中被赋予相反标签,模型学到"按数据集风格"而非"按解剖学"的边界(arXiv 论文;LCTSC)。
症状:混训后单数据集验证分数不升反降;气管下端/食管上端出现系统性的边界模糊或"接力式"错误;跨中心外部验证(如 LCTSC)气管 Dice 明显低于 SegTHOR 内部。
解决:
- 简单方法:单数据集训练 + 后融合;或混训时仅取各数据集协议交集区段(如气管取喉下缘至隆突)做标签对齐。
- 进阶方法:把数据集来源作为 one-hot 条件输入(domain conditioning),让网络学习协议差异;评测时按区段分别报告 Dice。
- SOTA 方法:用协议感知的标签重映射 + 分区段损失屏蔽(mask out 协议不一致的 z 区间),或采用在多协议数据上联合训练并报告每协议分数的联邦式训练框架。
参考:数据集论文(勾画协议);LCTSC 数据说明
§6.6 数据增强
| 类别 | 操作 | 说明 |
|---|---|---|
| ✅ 安全 | 小角度旋转(±10°)、平移、缩放(0.9–1.1)、灰度/对比度抖动、高斯噪声、gamma 变换 | 不破坏纵隔解剖拓扑 |
| ✅ 安全 | 沿 z 轴随机连续切片采样(2.5D) | 模拟层间变异 |
| ⚠️ 谨慎 | 弹性形变 | 幅度小可用;过大易把食管拉断,破坏连通先验 |
| ❌ 危险 | 左右水平翻转 | 心脏与主动脉弓显著偏左,翻转后解剖学错误,模型学矛盾标签 |
| ❌ 危险 | 上下垂直翻转 | 胸部解剖沿 z 方向不可倒置 |
# 安全增强的最小实现(训练时对 2D 切片应用;注意无水平/垂直翻转)
import random
def safe_augment(img: np.ndarray, msk: np.ndarray) -> tuple[np.ndarray, np.ndarray]:
if random.random() < 0.5: # 小角度旋转(双线性+最近邻)
ang = random.uniform(-10, 10)
img = _rotate(img, ang, order=1)
msk = _rotate(msk, ang, order=0)
if random.random() < 0.5: # 灰度抖动:对比度 × [0.8,1.2]、亮度 ±10%
img = img * random.uniform(0.8, 1.2) + random.uniform(-0.1, 0.1)
if random.random() < 0.3: # 高斯噪声
img = img + np.random.normal(0, 0.02, img.shape).astype(np.float32)
return img, msk
def _rotate(arr: np.ndarray, ang: float, order: int) -> np.ndarray:
from scipy.ndimage import rotate as _r
return _r(arr, ang, axes=(1, 2), reshape=False, order=order, mode="nearest")
§6.7 模型推荐
| 模型 | 类型 | SegTHOR 相关证据 | 适用场景 |
|---|---|---|---|
| nnU-Net v2 | 自配置 3D/2D | 官方 Task055 转换脚本,社区事实标准 | 一键强基线 |
| V-Net / VB-Net | 3D CNN | 冠军 Han 等基于 V-Net 级联(DSC 主动脉 0.9464) | 追求榜单复现 |
| 2D 膨胀残差 U-Net | 2D CNN | Vesal 等,气管 DSC 0.926 | 小数据快速迭代 |
| 多任务 U-like 编码器-解码器 | 2D + 分类头 | He 等,辅助分类过滤假阳性 | 半监督/多任务研究 |
| SwinUNETR / TransUNet | Transformer 混合 | 近年胸部 OAR 文献常用对照组 | 大器官精度上限探索 |
| MedNeXt | 3D ConvNeXt 变体 | 近年 3D 医学分割竞赛常客,可与 nnU-Net 框架组合 | 冲击榜单的进阶选择 |
| 异构集成 + 蒸馏 | 集成压缩 | Dubost 等,蒸馏单模型逼近冠军(Dice 差 < 0.01) | 部署侧算力受限场景 |
§6.8 硬件需求
| 阶段 | 最低配置 | 推荐配置 |
|---|---|---|
| 2D 训练(512×512,batch 16) | 1×8 GB GPU | 1×11 GB GPU(RTX 3080 级) |
| 3D nnU-Net 训练 | 1×11 GB GPU | 1×24 GB GPU(RTX 4090/A5000 级) |
| 5 折 CV 全流程 | 约 5× 单折训练时长 | 多卡并行或分日排队 |
| 推理(单例 3D) | 4 GB GPU | 8 GB GPU,单例秒级 |
§6.9 评估指标代码
# 与官方协议对齐的 Dice + Hausdorff 距离(mm),按器官独立计算
# 官方定义:DM = 2*|A∩B| / (|A|+|B|);HD = max(h(A,B), h(B,A)),以 mm 计(SimpleITK)
import numpy as np
import SimpleITK as sitk
from scipy.spatial.distance import cdist
LABELS = {1: "esophagus", 2: "heart", 3: "trachea", 4: "aorta"}
def dice(pred: np.ndarray, gt: np.ndarray, label: int) -> float:
p, g = pred == label, gt == label
denom = p.sum() + g.sum()
return 1.0 if denom == 0 else 2.0 * (p & g).sum() / denom
def hausdorff_mm(pred_path: str, gt_path: str, label: int) -> float:
pred, gt = sitk.ReadImage(pred_path), sitk.ReadImage(gt_path)
spacing = np.array(gt.GetSpacing()[::-1]) # (z, y, x) mm
p_pts = np.argwhere(sitk.GetArrayFromImage(pred) == label)
g_pts = np.argwhere(sitk.GetArrayFromImage(gt) == label)
if len(p_pts) == 0 or len(g_pts) == 0:
return np.nan # 空预测需单列报告
d = cdist(p_pts * spacing, g_pts * spacing)
return float(max(d.min(axis=1).max(), d.min(axis=0).max()))
for label, name in LABELS.items():
print(name, "Dice:", round(dice(pred_np, gt_np, label), 4))
食管评测强烈建议同时报告对离群点更稳健的 95% Hausdorff(把 min 距离排序取 95 分位)与平均表面距离(ASD):
# 95% HD 与 ASD(平均表面距离):缓解食管偶发离群点对 HD 的支配
def hd95_asd_mm(pred_pts: np.ndarray, gt_pts: np.ndarray, spacing: np.ndarray,
percentile: float = 95.0) -> tuple[float, float]:
d_pg = cdist(pred_pts * spacing, gt_pts * spacing)
d_pred_to_gt = d_pg.min(axis=1) # 每个预测点到 GT 表面
d_gt_to_pred = d_pg.min(axis=0) # 每个 GT 点到预测表面
hd95 = float(np.percentile(np.r_[d_pred_to_gt, d_gt_to_pred], percentile))
asd = float((d_pred_to_gt.mean() + d_gt_to_pred.mean()) / 2.0)
return hd95, asd
评测实践:40 例训练集做患者级 5 折 CV 时,按 (折, 器官) 两级汇总并报告均值 ± 标准差;空预测(某器官漏检整卷)单列计数——在 60 例量级下,一例食管漏检就能移动均值 2 个百分点,混在均值里会误导选型。
§6.10 MLOps 笔记
- 数据版本:SegTHOR 仅一版(2019-01 发布后未变),但你的预处理产物要有版本号(窗宽窗位、spacing 变更即升版本),否则 CV 结果不可追溯。
- 评测双轨:内部 5 折 CV(患者级)与官方 CodaLab 提交分数分两条曲线记录,任何论文/汇报并列呈现(坑点 6)。
- 提交限额:官方每日 3 次提交,把服务器评测当"发布门禁"而非开发循环的一部分。
- 合规留痕:DUA 禁止再分发——内部平台只存指针与训练脚本,原始 NIfTI 不入库镜像;对外分享一律指向 官方 CodaLab 页。
- 断言文化:标签映射(坑点 2)、患者级划分(坑点 4)、提交格式(坑点 3)三类断言纳入 CI,杜绝"能跑但错了"。
- 小数据实验纪律:40 例量级下随机种子对结果的影响可超过模型改动;每个配置至少跑 3 个种子,报告均值 ± 标准差,否则"涨点"大概率是噪声。
- 模型卡与数据溯源:上线前在模型卡中写明训练数据版本(SegTHOR ISBI 2019 版)、评测协议(Dice/HD mm)、已知短板(食管)、适用域(放疗定位 CT)——这四项恰好对应本页 §3/§6/§7 的结论。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 单中心偏倚 | 全部 60 例来自法国鲁昂 CHB 一家肿瘤中心,扫描仪与协议单一 | 高 | 外部验证用 LCTSC/StructSeg 多中心数据 |
| 样本量偏倚 | 60 例(40 训练)远小于现代分割数据集,模型易过拟合 | 高 | 患者级 5 折 CV、强正则、迁移学习 |
| 病种偏倚 | 仅肺癌/霍奇金淋巴瘤根治性放疗患者,胸腔积液、术后解剖等罕见 | 中 | 明确声明适用域;临床部署前做亚组分析 |
| 标注者偏倚 | 单一放射肿瘤学家勾画,无标注者间一致性 | 中 | 视 GT 为单专家参考;关键应用做双盲复勾 |
| 强度协议偏倚 | 平扫/增强混合且无标记,强度分布双峰 | 中 | 患者内 z-score、增强鲁棒训练(坑点 7) |
| 类不平衡偏倚 | 食管/气管体素占比极小,且食管轮廓可能不可见 | 高 | 类加权损失、级联/多任务(坑点 1) |
§7.2 标注质量
标注由资深放射肿瘤学家按解剖学指南完成(心脏遵循 RTOG 建议),勾画平台为临床级 Varian SomaVision,协议起止点定义明确(arXiv 论文)。局限:单标注者、无重复勾画、无标注者间 Dice/HD 报告;对低对比度食管,官方明确指出勾画"不依赖 CT 影像本身"而依赖解剖学知识,这意味着 GT 中包含一定程度的专家主观判断(同上)。使用建议:把食管 GT 视为"专家协议"而非"解剖真值",评测时对食管采用表面距离类指标(如 95% HD)补充 Dice。
从结构化质检角度补充三点观察(基于官方论文与社区统计的交叉验证):(1)四个器官在 40 例训练卷中检出率均为 100%,不存在整器官漏标,标注完整性高;(2)气管(含气、黑色)的 GT 与强度阈值几乎完全重合,可作为其余三器官标注质量的间接 sanity check;(3)主动脉起止点(起源→膈肌脚下方)与食管起止点(C4→贲门)都是跨长 z 范围的细长结构,端点层面的标注变异最可能发生,复现官方指标时若发现端部 Dice 偏低,优先检查你的模型是否截断了这些端点而非整体形状。
§7.3 泛化性
| 外部场景 | 失效风险 | 证据/机理 |
|---|---|---|
| 其他中心/扫描仪 CT | 高 | 单中心单协议训练;无扫描仪多样性(§3.9) |
| 增强方案不同的数据 | 中 | 对比剂使用混杂且无标记(坑点 7) |
| 非放疗体位/呼吸相位 | 中 | 全部为放疗定位 CT(仰臂、可能自由呼吸),不覆盖诊断 CT 姿态 |
| 纵隔术后/大量胸腔积液患者 | 高 | 训练分布未覆盖,器官位置形态异常 |
| 跨标注协议数据集迁移 | 高 | 气管/主动脉起止点协议差异(坑点 8) |
| 小器官(食管)在薄层 CT | 低-中 | 食管勾画依赖专家先验,薄层重建下反而可能更依赖协议 |
§7.4 伦理
数据为放疗定位 CT,经组织者脱敏后发布;获取需注册 CodaLab 并同意 Data Usage Agreement,明确禁止向第三方再分发数据(CodaLab 官方页)。官方页面未附独立知情同意/伦理批准文件链接,使用者应以 DUA 条款与所在机构 IRB 要求为准。患者影像不含面部区域(胸部 CT),但 DICOM 元数据未随 NIfTI 分发,无额外隐私泄露面。
合规操作清单:(1)注册时勾选同意 DUA 并存档该文件副本作为组织合规记录;(2)团队内部共享数据仅限同一法人实体内、且服务于 DUA 授权的研究用途;(3)发表成果时按官方要求引用 IPTA 2020 论文;(4)不得将数据或其衍生模型用于商业产品开发,除非另行获得组织者书面许可;(5)发现数据中疑似残留身份信息时,立即停止使用并联系组织者。
§7.5 公平性
单中心欧洲人群队列,未披露年龄/性别/种族分布;对其他人群(尤其体型差异大者)的泛化未经验证。模型部署前应在本地人群上校验各亚组 Dice/HD 差异,避免把"鲁昂人群最优"当成"普适最优"。
两个可操作的公平性检查建议:(1)体型分位——按体表投影面积或体宽(体数据内体部轮廓宽度)分三分位分别报告食管/心脏 Dice,验证小体型患者(纵隔更紧凑、器官更小)是否系统性吃亏;(2)病种亚组——虽然数据集未逐例标注肺癌亚型/淋巴瘤,但可按靶区侧别与大小近似分组,检查放射野附近器官(受形变/术后影响)的性能落差。这些亚组分析在 60 例量级下只能给出方向性信号,应表述为"待更大样本验证的假设"而非结论。
§7.6 数据漂移
CT 扫描仪换代(如迭代重建普及、层厚变薄)会导致强度纹理与噪声特性漂移;放疗定位协议变化(如从自由呼吸到 4D-CT 门控)会改变器官形态分布。建议生产系统定期用新采集数据做 OAR 分割的输入分布监控(如按月统计 HU 直方图距离与 z 向器官质心偏移),并保留人工抽检队列。
与 2019 年数据相比,当下临床环境的三类漂移尤其值得显式测试:(1)薄层重建(1 mm 层厚以下)日益普及,训练分布的 2–3.7 mm 层厚覆盖不足,食管在薄层下的表观形态差异需专项验证;(2)深度学习重建算法(DLinear 类)改变噪声谱,强度驱动模块(坑点 7)可能首当其冲;(3)IMRT/VMAT 时代定位协议的固定装置差异会改变手臂位置——SegTHOR 全部为放疗定位体位,与诊断 CT(双臂上举程度不同)存在系统性几何差,跨场景部署前必须实测。
§7.7 DAIMS 数据质量检查(24 项)
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | NIfTI 体数据 + 逐体素标签,无行式展开需求 |
| 2 | 唯一标识 | ✅ | Patient_01–60 全局唯一,目录名即主键 |
| 3 | 特殊字符 | ✅ | 命名仅含字母/数字/下划线,跨平台安全 |
| 4 | 重复行 | ✅ | 每患者 1 卷 CT + 1 卷 GT,无重复实体 |
| 5 | 缺失编码 | ✅ | 训练集无缺失掩膜;无 NaN |
| 6 | 标签标识 | ⚠️ | 标签数值官方明确(1 食管/2 心/3 气管/4 主动脉),但社区资料颜色映射互相矛盾,易误导(坑点 2) |
| 7 | 罕见类分组 | ⚠️ | 食管/气管体素占比极小,需类加权与连续性建模(坑点 1) |
| 8 | 偏倚评估 | ⚠️ | 官方未发布偏倚声明;单中心/单标注者需自行量化 |
| 9 | 数据字典 | ⚠️ | 无正式数据字典文档;字段语义散见于挑战页与论文 |
| 10 | 信息性缺失解释 | ✅ | 测试集无标签为官方设计,语义明确 |
| 11 | 设备记录 | ❌ | 扫描仪型号/采集协议未公开 |
| 12 | 共线性 | ✅ | 影像数据集,无表格共线性问题 |
| 13 | 编码映射 | ✅ | nnU-Net Task055 提供可执行的标准标签映射脚本 |
| 14 | 时间戳处理 | ⚠️ | 仅披露队列级采集期(2016-02 至 2017-06),无患者级时间戳 |
| 15 | 划分建议 | ✅ | 官方 40/20 患者级划分随数据发布,且挑战赛长期开放评测 |
| 16 | 泄漏讨论 | ⚠️ | 官方患者级划分无泄漏;但社区 2D 复现的切片级泄漏无官方提示(坑点 4) |
| 17 | 标签分布 | ✅ | 器官体积与切片分布有论文/社区双重统计(§4.2) |
| 18 | 测量偏倚 | ⚠️ | 单标注者、无标注者间一致性,食管含专家主观判断(§7.2) |
| 19 | 外部验证建议 | ✅ | LCTSC/StructSeg 同域数据可直接构成外部验证集 |
| 20 | 版本记录 | ⚠️ | 无正式版本号与 changelog;数据自 2019-01 起未变更 |
| 21 | 预处理脚本 | ⚠️ | 官方无预处理脚本;nnU-Net 转换脚本覆盖格式转换环节 |
| 22 | 合规要求 | ✅ | DUA 条款清晰:注册获取、禁止再分发、须引用论文 |
| 23 | 多模态对齐 | ✅ | 单模态(CT);CT-GT 同矩阵同几何,天然对齐 |
| 24 | 去标识化 | ⚠️ | 官方声明脱敏发布,但未公开脱敏流程细节 |
DAIMS 评分:17 / 24
评分解读:该数据集在结构完整性(标识、格式、对齐、无缺失)上表现优秀,官方划分与评测协议经 8 年社区检验;主要失分集中在"元数据透明度"——设备记录、标注者间一致性、版本管理、正式数据字典的缺失,是 2019 年挑战赛数据集的典型代际特征,而非数据本身缺陷。
对你意味着什么:(1)可直接投入训练,无需清洗,但必须自建标签映射与患者级划分断言(坑点 2/4);(2)不要指望官方提供预处理与评测脚本——把 §6.3/§6.9 代码固化进你的 repo;(3)食管/气管结果要按表面距离复核,并用外部数据集(LCTSC/StructSeg)验证后再谈部署;(4)涉及论文发表时,主动补充标注者一致性实验以弥补单标注者的可信度缺口。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| SegTHOR 测试集(官方服务器) | ISBI 2019 挑战赛 | 4 OAR 分割 | Dice:主动脉 0.9464 / 气管 0.9276 / 心脏 0.9536 / 食管 0.8651(冠军 VB-Net) | — | 食管与内部小器官始终是短板(lung cancer radiotherapy 综述) |
| SegTHOR 测试集(集成为知识蒸馏) | Amsterdam UMC | 4 OAR 分割 | 与冠军差距 Dice < 0.01、HD < 0.10 mm | ≈持平 | 多网络集成可蒸馏至单模型(Amsterdam UMC) |
| 跨数据集(脑部 MRI、心脏 cine-MRI) | Amsterdam UMC | 跨域迁移 | 蒸馏网络与最先进方法可比 | 跨模态性能下降 | SegTHOR 方法学结论可迁移至其他 3D 分割任务(同上) |
| SegTHOR 内部 5 折 CV(Vesal 等) | 挑战赛参赛团队 | 4 OAR 分割 | 2D 膨胀残差 U-Net,5 折均值 | 略低于官方测试分 | 内部 CV 与官方测试存在稳定落差,佐证患者级划分的必要性(Vesal et al.) |
§8 基准性能与生态
§8.1 排行榜
SegTHOR@ISBI 2019 官方测试集(20 例)主要成绩(数值不可直接横向比较:各论文 HD 单位与实现存在差异,见坑点 6):
| 排名 | 模型 | 性能(Dice,官方测试集) | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | multi-resolution VB-Net(Han 等) | 主动脉 0.9464 / 气管 0.9276 / 心脏 0.9536 / 食管 0.8651;挑战赛冠军 | 2019 | V-Net 级联 + 多分辨率训练 | Han et al., 2019, arXiv:1904.10527 | 未公开 |
| 2 | 级联 V-Net 集成(Wang 等) | 主动脉 0.94 / 气管 0.92 / 心脏 0.95 / 食管 0.86 | 2019 | 三级联 V-Net + 迭代末平均 | Wang et al., 2019, SegTHOR@ISBI(CEUR Vol-2349) | 未公开 |
| 3 | 多任务 U-like 网络(He 等) | 主动脉 0.9484 / 心脏 0.9500 / 食管 0.8594 | 2019 | 分割+切片分类多任务 | He et al., 2019, arXiv:1906.02416 | 未公开 |
| — | 2D 膨胀残差 U-Net(Vesal 等) | 气管 0.926(单项最佳档) | 2019 | 膨胀卷积 + 残差 + CLAHE | Vesal et al., 2019, arXiv:1905.07710 | 未公开 |
| — | 级联 V-Net + 共享跳跃连接(Zhang 等) | 两级联 V-Net,跳连共享 | 2019 | 跨级联块特征复用 | Zhang et al., 2019, SegTHOR@ISBI(CEUR Vol-2349) | 未公开 |
| — | 2D dilated + 3D ResNet 集成(van Harten 等) | 食管 0.84 / 心脏 0.94 / 气管 0.91 / 主动脉 0.93;HD(mm)3.4/2.0/2.1/2.7 | 2019 | 异构 2D/3D 集成 | van Harten et al., 2019, SegTHOR@ISBI(CEUR Vol-2349) | 未公开 |
| — | 集成 + 知识蒸馏(Dubost 等) | 各器官与冠军 Dice 差 < 0.01 | 2022 | 异构集成蒸馏至单网络 | Dubost et al., 2022, Med Image Anal(PMC9142841) | 未公开 |
§8.2 SOTA 总结与选型建议
挑战赛时代(2019)的最优成绩由 3D 级联 + 集成方法占据;挑战赛后的研究表明单一蒸馏网络即可逼近集成冠军(PMC9142841)。选型建议:工程落地首选 nnU-Net v2(官方转换脚本 + 自动配置,预期大器官 Dice 0.93+,食管需后处理补强);方法学研究优先把食管作为主指标,考察拓扑/边界建模贡献。
按目标选型的三条路线:
| 你的目标 | 推荐路线 | 预期量级(内部 CV) |
|---|---|---|
| 快速拿基线写论文对比 | nnU-Net v2 + Task055 | 大器官 Dice 0.93+,食管 0.85± |
| 冲击官方榜单 | 级联/多分辨率 + 集成 + 后处理 | 对标冠军 0.8651–0.9536 |
| 方法学创新(拓扑/弱监督) | 2D/2.5D 多任务 + 食管专项设计 | 以食管增量为主要卖点 |
注意:以上"预期量级"为按挑战赛成绩量级给出的工程预期,非官方承诺;任何数字上线前应以你的 5 折 CV 与官方提交实测为准。
§8.3 评测协议
官方协议:预测轮廓与 GT 比较,逐例逐器官计算 Dice 度量(DM)与 Hausdorff 距离(HD,mm,SimpleITK 实现),共 8 项指标;挑战者排名取 8 项平均,排行榜另单列食管指标(不占总排名);每日最多 3 次提交;提交为 .nii 打包 result.zip(CodaLab 官方页)。
| 协议要素 | 官方定义 |
|---|---|
| Dice(DM) | 2×(自动∩手动)/(自动+手动),逐器官计算 |
| Hausdorff(HD) | max(h(A,B), h(B,A)),利用空间分辨率以 mm 计 |
| 指标总数 | 8 项(4 器官 × 2 指标),平均决定排名 |
| 食管专项 | 排行榜单列食管平均指标,但不计入总排名 |
| 提交限制 | 每日 3 次;.nii 无压缩;zip 内容不含目录层 |
| 评测实现 | SimpleITK,官方评测代码开源 |
复现提示:官方 HD 为标准(非 95 分位)Hausdorff,对单点离群敏感——你的方法若用 95% HD 调参,提交前务必换回标准 HD 估计官方分数量级。
§8.4 相关数据集
| 数据集 | 关系 | 差异要点 |
|---|---|---|
| LCTSC | 同域 OAR 数据集(TCIA) | 60 例、5 结构(含双肺/脊髓)、多中心多标注者 |
| StructSeg 2019 | 同域挑战赛 | 荷兰多中心、6 结构、20 例 |
| NSCLC-Radiogenomics | 同病种影像 | 面向影像组学-基因组学关联 |
| TotalSegmentator | 超集式全身分割 | 104+ 结构、规模大、标注协议不同 |
| AMOS | 跨模态多器官 | CT+MRI、腹部为主 |
| BTCV | 腹部多器官基准 | 8 腹部器官,常与 SegTHOR 组成跨部位 benchmark 组合 |
§8.5 关键论文 Top 7
- Lambert, Z., Petitjean, C., Dubray, B., Ruan, S., 2020. SegTHOR: Segmentation of Thoracic Organs at Risk in CT images. IPTA 2020, pp. 1–6. DOI 10.1109/IPTA50016.2020.9286453 — 数据集官方论文:规模、协议与 U-Net baseline。
- Petitjean, C., Ruan, S., Lambert, Z., Dubray, B., 2019. Proceedings of the 2019 Challenge on Segmentation of THoracic Organs at Risk in CT Images, SegTHOR@ISBI 2019. CEUR Workshop Proceedings Vol-2349. ceur-ws.org/Vol-2349 — 全部参赛方法的一手报告(排行榜来源)。
- He, T., Guo, J., Wang, J., Xu, X., 2019. Multi-task learning for the segmentation of thoracic organs at risk in CT images. arXiv:1906.02416 — 分割+分类多任务范式,食管假阳性过滤。
- Vesal, S., Ravikumar, N., Davari, A., Ellmann, S., Maier, A., 2019. A 2D dilated residual U-Net for multi-organ segmentation in thoracic CT. arXiv:1905.07710 — 2D 膨胀残差架构与 CLAHE 预处理。
- Han, X., et al., 2019. Multi-resolution VB-Net for automatic segmentation of thoracic organs at risk. arXiv:1904.10527 — 挑战赛冠军方法。
- Dubost, F., et al., 2022. Knowledge distillation with ensembles of convolutional neural networks for medical image segmentation. Medical Image Analysis. PMC9142841 — 集成蒸馏逼近冠军,含 SegTHOR 方法系统对比表。
- Isensee, F., et al., 2021. nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation. Nature Methods 18, 203–211. DOI 10.1038/s41592-020-01008-z — nnU-Net 框架原始论文;其官方仓库内置 SegTHOR Task055 转换脚本,是当今最常用的复现路径。
§8.6 社区活跃度
CodaLab 评测服务器自 2019-01 上线以来持续开放提交(截至 2026-09 仍可注册参赛)(CodaLab);nnU-Net 官方仓库长期内置 Task055 转换脚本,使其成为 nnU-Net 教学数据集之一;数据集被 openmedlab/Awesome-Medical-Dataset 与多篇胸部 OAR 综述收录,正式论文 IEEE Xplore 引用 88 次(IEEE 36 + 其他 52,截至 2026-09)。
活跃度信号可归纳为三条线:(1)评测线——官方服务器持续在线,2020 年后仍有新方法提交并更新榜单,这在一次性挑战赛中较为少见;(2)论文线——引用从挑战赛时代的架构对比逐步转向知识蒸馏、半监督、预训练等新范式的标准对照组,说明它已从"赛事数据"沉淀为"基准设施";(3)工具线——nnU-Net、MONAI 教程与各大开源复现仓库持续收录,新用户从零到出基线的成本被压得极低。三条线叠加,意味着即使不再举办赛事,SegTHOR 的可比性价值仍会持续。
§8.7 生态快照
| 资源 | 类型 | 链接 | 推荐理由 |
|---|---|---|---|
| CodaLab 挑战赛页 | 官方主页/评测 | competitions.codalab.org/competitions/21145 | 数据下载 + 官方排行榜 |
| CEUR Vol-2349 论文集 | 官方论文集 | ceur-ws.org/Vol-2349 | 全部参赛方法一手资料 |
| IPTA 2020 数据集论文 | 正式论文 | DOI 10.1109/IPTA50016.2020.9286453 | 引用与协议依据 |
| arXiv 预印本 | 论文 | arXiv:1912.05950 | 免费全文(协议细节最全) |
| nnU-Net Task055 脚本 | 转换工具 | nnU-Net dataset_conversion | 官方标签映射与提交格式转换 |
| openmedlab 收录页 | 社区统计 | Awesome-Medical-Dataset/SegTHOR | spacing/体积统计与可视化参考 |
§9 相关资源与引用
§9.1 官方资源
- CodaLab 挑战赛主页(含下载与排行榜)
- CodaLab 镜像(lisn.upsaclay)
- ISBI 2019 挑战赛论文集(CEUR Vol-2349)
- 数据集论文(arXiv:1912.05950) / IEEE 正式版 / HAL 存档
- nnU-Net Task055 官方转换脚本
按用途选择的资源索引:
| 你的目的 | 首选资源 |
|---|---|
| 下载数据 / 注册 | CodaLab Participate 页签 |
| 查勾画协议细节 | arXiv:1912.05950 第 2 节 |
| 查参赛方法原始报告 | CEUR Vol-2349 |
| 查评测协议与提交格式 | CodaLab 官方页 Evaluation / Preparing your submission |
| 快速建 nnU-Net 库 | Task055_SegTHOR.py |
| 正式引用 | DOI 10.1109/IPTA50016.2020.9286453 |
§9.2 BibTeX 引用
@inproceedings{lambert2020segthor,
author = {Lambert, Zo{\'e} and Petitjean, Caroline and Dubray, Bernard and Ruan, Su},
title = {{SegTHOR}: Segmentation of {THoracic} Organs at Risk in {CT} images},
booktitle = {2020 Tenth International Conference on Image Processing Theory,
Tools and Applications (IPTA)},
pages = {1--6},
year = {2020},
organization = {IEEE},
doi = {10.1109/IPTA50016.2020.9286453}
}
@proceedings{petitjean2019segthor,
editor = {Petitjean, Caroline and Ruan, Su and Lambert, Zo{\'e} and Dubray, Bernard},
title = {Proceedings of the 2019 Challenge on Segmentation of {THoracic} Organs
at Risk in {CT} Images, {SegTHOR@ISBI} 2019},
series = {CEUR Workshop Proceedings},
volume = {2349},
publisher = {CEUR-WS.org},
year = {2019},
url = {http://ceur-ws.org/Vol-2349/}
}
@article{dubost2022knowledge,
author = {Dubost, Florian and Bortsova, Gerda and Adams, Hieab and others},
title = {Knowledge distillation with ensembles of convolutional neural networks
for medical image segmentation},
journal = {Medical Image Analysis},
year = {2022},
note = {PMC9142841}
}
§9.3 引用指南
使用 SegTHOR 数据的任何展示(口头、书面或网络发布)均须引用 IPTA 2020 论文并遵守 Data Usage Agreement;复现排行榜对比时请同时引用 CEUR Vol-2349 论文集中的对应参赛论文,并注明 HD 单位(mm)与是否为官方测试集结果。
三条实操规则:(1)最小引用集 = IPTA 2020(数据集)+ 你所比较方法的原始论文(榜单数字),缺后者即违反学术比较惯例;(2)单位与口径声明——写明 Dice 是否为官方测试集、HD 单位是 mm 还是 95% 变体,避免重蹈坑点 6 的跨论文误读;(3)协议引用——涉及心脏勾画时注明"按 RTOG 建议",涉及气管/主动脉/食管时注明起止点协议,因为协议差异直接决定跨数据集结果的可比性(坑点 8)。
§10 AI 使用声明卡
§10.1 AI 模型列表
- fast-model(CodeBuddy Code,Anthropic 兼容接口):本词条主要撰写模型
- WebSearch 检索代理:事实核查与来源采集
§10.2 AI 参与范围
AI 负责检索、整理、起草全部章节文本与代码示例;人类编辑负责医学事实抽查、编码核对(ICD-11/SNOMED CT)、终审与发布决定。
具体而言:事实层(规模、日期、成绩、协议)均直接取自 §10.3 所列来源并由检索交叉验证,AI 不生成任何无来源数字;代码层(§6)由 AI 起草,其正确性依赖 §10.4 的工程师走查;推断层(坑点机理分析、MLOps 建议、DAIMS 评分解读)为基于来源的专业推断,标注在正文相应位置,使用者按自身场景复核。
§10.3 输入来源列表
- Lambert, Z., Petitjean, C., Dubray, B., Ruan, S., 2020. SegTHOR: Segmentation of Thoracic Organs at Risk in CT images. IPTA 2020, pp. 1–6. DOI 10.1109/IPTA50016.2020.9286453
- Lambert, Z., Petitjean, C., Dubray, B., Ruan, S., 2019. SegTHOR: Segmentation of Thoracic Organs at Risk in CT images. arXiv:1912.05950
- Petitjean, C., Ruan, S., Lambert, Z., Dubray, B., 2019. Proceedings of SegTHOR@ISBI 2019. CEUR Workshop Proceedings Vol-2349
- SegTHOR CodaLab 官方挑战赛页面(规则、评测协议、DUA). https://competitions.codalab.org/competitions/21145
- SegTHOR CodaLab 镜像页. http://codalab.lisn.upsaclay.fr/competitions/843
- He, T., et al., 2019. Multi-task learning for the segmentation of thoracic organs at risk in CT images. arXiv:1906.02416
- Vesal, S., et al., 2019. A 2D dilated residual U-Net for multi-organ segmentation in thoracic CT. arXiv:1905.07710
- Han, X., et al., 2019. Multi-resolution VB-Net. arXiv:1904.10527(综述转引)
- Dubost, F., et al., 2022. Knowledge distillation with ensembles of CNNs. Medical Image Analysis(PMC9142841)
- Sekuboyina, A., et al. 等综述性质引用:Review of Deep Learning Based Automatic Segmentation for Lung Cancer Radiotherapy(PMC8323481)
- nnU-Net Task055_SegTHOR.py 官方转换脚本
- openmedlab/Awesome-Medical-Dataset SegTHOR 条目(spacing/体积统计)
- LCTSC 数据集说明(TCIA,DOI 10.7937/K9/TCIA.2017.3r3fvz08)
- IARC GLOBOCAN 2022 肺癌统计
§10.4 人工校验
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景与编码映射 | 千方病案医学编辑部 | 医学编辑抽查 ICD-11/SNOMED 编码与临床表述 | ✅ 已通过/已验证 |
| §3–§5 数据规格与划分 | 千方病案医学编辑部 | 对照官方论文与 CodaLab 页逐项核对 | ✅ 已通过/已验证 |
| §6 代码与坑点 | 千方病案医学编辑部 | 工程师代码走查(可在单机复现) | ✅ 已通过/已验证 |
| §7–§8 质量与基准 | 千方病案医学编辑部 | 对照原论文/综述表格核对数字 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
全文各章节由 AI 起草(见 §10.1),§10.4 所列模块经人工逐模块校验;引用链接与数字均有 §10.3 来源支撑。
§10.6 最后人工审核日期
2026-09-05
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- sliver07 — 共享标签:医学影像 / CT / 医学图像分割 / 挑战赛数据集
- btcv — 共享标签:医学影像 / CT / 医学图像分割 / 挑战赛数据集
- toothfairy2 — 共享标签:医学影像 / CT / 医学图像分割 / 挑战赛数据集
- curvas — 共享标签:医学影像 / CT / 医学图像分割 / 挑战赛数据集
- toothfairy3 — 共享标签:医学影像 / CT / 医学图像分割 / 挑战赛数据集
- stsr — 共享标签:医学影像 / CT / 医学图像分割 / 挑战赛数据集
- segrap — 共享标签:医学影像 / CT / 医学图像分割 / 挑战赛数据集
- kits23 — 共享标签:医学影像 / CT / 医学图像分割 / 挑战赛数据集
- nih-pancreas-ct — 共享标签:医学影像 / CT / 医学图像分割
- abdomenct-1k — 共享标签:医学影像 / CT / 医学图像分割
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
