信息速览
PROMISE12 — 前列腺 MRI 多中心分割基准 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | 前列腺 PROMISE12 |
| 英文全称 | Prostate MR Image Segmentation 2012 Grand Challenge Dataset |
| 别名/简称 | PROMISE12、PROMISE 2012、MICCAI 2012 Prostate Segmentation Challenge |
| 疾病分类(ICD-11 编码+中文名) | 2C82 前列腺恶性肿瘤;GA90 良性前列腺增生 |
| SNOMED CT | 399068003 Malignant tumor of prostate;266569009 Benign prostatic hyperplasia |
| 数据模态 | 前列腺 MRI(轴位 T2 加权,multi-center / multi-vendor / multi-protocol) |
| AI 任务类型 | 3D 医学图像分割(全腺体二元分割)、域适应、半监督分割 |
| 样本总数 | 100 例(训练 50 例带参考分割 / 测试 30 例 / 现场挑战 20 例) |
| 数据大小 | 638.0 MB(Zenodo 完整归档,含训练与测试分割掩膜) |
| 数据格式 | MetaImage(.mhd ASCII 头文件 + .raw 二进制体数据),ITK 兼容 |
| 许可证 | CC BY-NC 4.0(非商业使用;存档内附 LICENSE.TXT) |
| 访问级别 | 开放(无需申请,Zenodo 直接下载) |
| DUO 标签 | NPUNCU(非商业非营利)、GRU(通用研究) |
| 首发日期 | 2012-04-19(训练数据发布) |
| 最后更新 | 2023-06(Zenodo 完整归档重发布,DOI 10.5281/zenodo.8026660) |
| 发布机构 | Radboud University Medical Center(联合 UCL、Case Western Reserve University) |
| 官方主页 | https://promise12.grand-challenge.org/ |
| 下载地址 | https://zenodo.org/records/8026660 |
| DOI | 10.5281/zenodo.8026660(数据);10.1016/j.media.2013.12.002(论文) |
| 引用次数 | 1,088+(Google Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方划分明确、格式统一且带专家分割,但评测服务器永久关闭,官方评分需自行复现,测试集本地评分口径不统一 |
| 页面状态 | published |
§0 E-E-A-T 与审核声明
§0.1 医学审核
[千方病案医学编辑部]交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 双映射、前列腺癌流行病学、PI-RADS 相关临床语境)、§7 偏倚分析(多中心协议差异、腺体体积跨度、观察者变异)。
§0.2 数据工程审核
[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
§0.3 审核日期
审核日期:2026-09-05
§0.4 免责声明
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。PROMISE12 数据以 CC BY-NC 4.0 非商业许可发布于 Zenodo,禁止商业用途;引用该数据集时必须引用 Litjens et al., Medical Image Analysis, 2014(DOI 10.1016/j.media.2013.12.002)。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? PROMISE12 是 2012 年 MICCAI 大会发起的一项前列腺磁共振图像分割挑战赛所配套的数据集。它收集了 100 例前列腺 MRI 检查,来自荷兰、美国、英国和中国香港的 4 家临床中心,使用的是不同厂商、不同场强、不同扫描参数的机器。其中 50 例(训练集)配有资深阅片者逐层勾画的前列腺边界,另外 30 例(在线测试集)和 20 例(现场挑战集)的答案由组委会保管,用于独立评分。图像以 MetaImage 格式存储,每例由一份文本头文件与一份二进制体数据文件配对组成。
为什么重要? 在 PROMISE12 出现之前,前列腺分割算法的论文几乎都在各自医院的私有数据上评测,数字漂亮但无法互相比对,也无法判断算法换一台机器是否还能用。PROMISE12 第一次把「多中心、多厂商、多协议」写进了评测设计:数据里既有用直肠内线圈的病例也有不用的,层厚从 2.2 毫米到 4.0 毫米不等,腺体体积从 14.93 立方厘米跨到 315.39 立方厘米。它用同一套指标同时衡量精度与鲁棒性,并把评分锚定在第二位人类阅片者的水平上——等于人类专家得 85 分,完美分割得 100 分。这套「以人类为标尺」的评分思想此后被大量医学影像挑战沿用。
我能用它做什么? 最直接的用法是训练和评测全腺体前列腺分割模型,尤其是考察模型在跨中心域偏移下的表现。数据集规模不大(50 例带标注),因此它更适合作为方法验证的基准而非大规模预训练语料,社区常规做法是 5 折交叉验证(每折 10 例)来替代已不可访问的官方测试集评测。它也可以作为半监督、域适应、测试时自适应方法的试验场,或者作为骨盆 MRI 分割骨干网络的微调起点。需要注意:仅提供全腺体轮廓,不含肿瘤病灶标注,因此不适合做前列腺癌灶检测或 Gleason 分级。
§1.1 摘要
PROMISE12(Prostate MR Image Segmentation 2012)由 Radboud University Medical Center 的 Geert Litjens 等人组织,作为 MICCAI 2012 大会的官方挑战赛发布。其核心科学问题是:在磁共振信号强度未被标准化、图像外观高度依赖采集协议与扫描仪的背景下,如何公平且可重复地比较前列腺分割算法。组委会从 4 家临床中心征集了 100 例轴位 T2 加权前列腺 MR 检查,划分为训练集 50 例、在线测试集 30 例与现场挑战集 20 例。训练集的每一例都附带一份参考分割;测试集的参考标准由一名具多年前列腺 MRI 阅片经验的观察者勾画,再由一名有 6 年以上经验的放射科住院医师核查修正,另由一名未参与且对参考标准设盲的临床研究者独立完成第二观察者分割,用以锚定评分函数。
评测采用四项三维指标:Dice 系数衡量体素重叠,绝对相对体积差(aRVD)衡量体积估计偏差,平均边界距离(ABD)与 95% Hausdorff 距离(95HD)衡量边界一致性。评分函数 score(x) = max(ax + b, 0) 将每项指标线性映射到 0 至 100 分,其中完美分割定为 100 分、第二观察者水平定为 85 分。除整体腺体外,组委会还沿层方向把腺体三等分,单独报告尖部(apex)与底部(base)的边界指标,因为这两处对放疗计划与 TRUS/MR 融合最敏感,也最难分割。首届在线挑战共有 11 支团队参赛,冠军 Imorphics 总分 85.72,其算法在平均意义上已超越第二观察者,但论文同时指出算法组合仍能带来提升,说明前列腺分割并非已解决问题。
§1.2 战略价值
多中心鲁棒性评测的设计范式价值。 PROMISE12 的真正贡献不在于提供了多少例数据,而在于它把「跨中心泛化」变成了可测量的量。数据集刻意混合了不同厂商、不同场强、是否使用直肠内线圈、不同层厚与视野的扫描,使得任何依赖单一采集协议的算法都会在测试集上暴露。论文报告的分中心平均得分表显示,同一算法在 RUNMC、BIDMC、UCL 与 HK 四个中心的得分存在系统性差距,这正是域偏移的直接证据。对于今天研究域泛化、测试时自适应、联邦学习的团队而言,PROMISE12 仍是少数几个「中心标签明确、协议差异已知」的公开多中心医学影像基准之一。
以人类观察者为锚点的评分方法论价值。 医学影像挑战赛普遍面临一个困境:Dice 从 0.90 提升到 0.91 究竟算不算进步?PROMISE12 给出的答案是引入第二位人类阅片者作为参照系,把其表现固定在 85 分,从而把绝对指标转换为「距离人类专家有多远」的相对刻度。这一设计让不同指标(重叠度、体积差、边界距离)可以在同一尺度上加权平均,也让「超越人类」这一说法有了可检验的定义——Imorphics 算法在平均意义上超过第二观察者,正是靠这套换算才能断言。此后 NCI-ISBI 2013、QUBIQ 等挑战在评分设计上均受其影响。
临床工作流的直接接口价值。 前列腺体积(PV)是前列腺疾病评估的基础量,与 PSA 结合可导出 PSA 密度,用于辅助临床决策;前列腺相对邻近器官的大小、形态与位置信息是前列腺切除术、放射治疗以及冷冻消融、高强度聚焦超声等微创治疗计划的关键输入。同时,准确的前列腺分割是计算机辅助检测与多模态配准算法的必备预处理步骤。PROMISE12 提供的全腺体标注恰好落在这一接口上,使得算法输出可以直接对接体积测量与放疗计划流程,而不需要额外的病灶级标注。
§1.3 同类数据集横向对比
| 数据集 | 样本规模 | 模态 | 标注内容 | 与 PROMISE12 的差异化 |
|---|---|---|---|---|
| PROMISE12 | 100 例(训练 50 带标注) | T2W MRI(2D 轴位层面) | 全前列腺腺体 | 中心数最多(4 中心)、协议差异最明确、有官方评分函数与人类锚点 |
| NCI-ISBI 2013(ASPS13) | 156 例 | T1W、T2W、DCE MRI | 全腺体、外周带 | 规模更大且含分区标注,但中心多样性不及 PROMISE12 |
| I2CVB | 40 例 | T2W、DW、DCE、MRSI | 全腺体、外周带、中央腺、肿瘤 | 多参数 MRI 更丰富,样本量最小 |
| PROSTATEx | 330 例(恶性病灶 76、良性 245) | T2W、DW、PDW、DCE | 前列腺肿瘤病灶 | 任务为病灶分类而非器官分割,规模最大 |
| BWH Prostate MRI | 230 例 | T1W、T2W | 全前列腺腺体 | 单中心大样本,缺少多中心域偏移设计 |
| Prostate-3T(TCIA) | 30 例 | T2W、DW、DCE | 全腺体、病灶 | 场强统一为 3T,常与 PROMISE12 合并用于外部验证 |
对比数据来源:Diagnostics 2021, 11(11):1964 公开数据集汇总表(https://pmc.ncbi.nlm.nih.gov/articles/PMC8625809/table/diagnostics-11-01964-t002/ )与各数据集官方页面。不同数据集的测试划分与评分口径不同,规模数字不可直接作为难度比较依据。
§1.4 版本时间轴
| 日期 | 事件 | 说明 |
|---|---|---|
| 2012-04-19 | 训练数据发布 | 50 例 T2W 前列腺 MR 及参考分割开放下载 |
| 2012-06-04 | 测试数据发布 | 30 例无标注测试数据开放下载 |
| 2012-06-29 | 提交截止 | 参赛者提交测试集分割结果与算法论文 |
| 2012-07-06 | 评估结果与录用通知 | 组委会以参考标准计算指标并反馈 |
| 2012-10-01 | MICCAI 2012 现场挑战工作坊 | 尼斯举办,20 例未见数据、3 小时限时分割 |
| 2014-02 | 概述论文正式发表 | Medical Image Analysis 18(2):359-373 |
| 2023-06 | Zenodo 完整归档重发布 | 训练与测试数据连同分割掩膜统一存档,DOI 10.5281/zenodo.8026660 |
| 至今 | 挑战永久关闭 | 不再接受新提交,官方评分服务器停止对外服务 |
§1.5 典型应用场景
| 场景 | 输入 | 输出 | 本数据集的适配性 |
|---|---|---|---|
| 全腺体自动分割 | T2W 轴位体数据 | 腺体二值掩膜 | 高度适配,训练集 50 例带参考分割 |
| 跨中心域泛化评测 | 多中心混合数据 | 分中心性能报告 | 高度适配,中心归属明确(7/7/8/8 分布) |
| 半监督与自训练 | 少量标注 + 大量未标注切片 | 分割掩膜 | 适配,训练集切片共 1,377 张可作未标注池 |
| 前列腺体积测量 | 分割掩膜 + 体素间距 | 体积(cm³) | 适配,体素间距在 .mhd 头文件中完整给出 |
| 多模态配准初始化 | T2W 腺体掩膜 | 配准感兴趣区 | 适配,为论文列出的原始设计用途之一 |
| 病灶检测 / Gleason 分级 | — | — | 不适配,数据集仅含全腺体轮廓,无病灶标注 |
§2 医学背景
§2.1 ICD-11 编码映射
| 标签 | ICD-11 编码 | 中文名称 | 在本数据集中的角色 |
|---|---|---|---|
| 前列腺恶性肿瘤 | 2C82 | 前列腺恶性肿瘤 | 数据集纳入的病例类型之一 |
| 良性前列腺增生 | GA90 | 良性前列腺增生 | 数据集纳入的病例类型之一(原文举 BPH 为例) |
| 前列腺体积增大 | GB01.0 | 前列腺增生伴下尿路症状 | 腺体体积从 14.93 到 315.39 cm³ 的临床背景 |
| 影像学检查(前列腺 MRI) | 无独立编码,归入影像诊断操作分类 | 前列腺磁共振成像 | 数据集的模态归属,非疾病编码 |
说明:PROMISE12 的标注对象是器官(前列腺腺体)而非疾病,因此 ICD-11 映射反映的是入组人群的临床构成,而非标注类别。ICD-11 不设「前列腺 MRI 检查」这一疾病条目,影像操作在 ICD-11 中由操作分类体系单独承载,故该行不给出具体编码。
§2.1b SNOMED CT 映射
| 标签 | 对应 ICD-11 | SNOMED CT 码 | SNOMED CT 术语 |
|---|---|---|---|
| 前列腺恶性肿瘤 | 2C82 | 399068003 | Malignant tumor of prostate |
| 良性前列腺增生 | GA90 | 266569009 | Benign prostatic hyperplasia |
| 前列腺结构 | —(解剖实体) | 41216001 | Prostate structure |
| 磁共振成像 | —(操作) | 113091000 | Magnetic resonance imaging |
| 前列腺磁共振成像 | —(操作) | 241601008 | Magnetic resonance imaging of prostate |
上表前两行为疾病实体映射,后三行为解剖与操作概念映射。PROMISE12 的分割目标是 SNOMED CT 41216001(Prostate structure)所指的整个腺体,不区分外周带与中央腺。
§2.2 疾病简介与流行病学
前列腺位于膀胱下方、直肠前方,包绕尿道起始段,是男性泌尿生殖系统的重要腺体。临床关注的前列腺疾病主要有三类:良性前列腺增生(BPH)、前列腺炎与前列腺癌。良性前列腺增生随年龄增长而普遍,可引起下尿路症状;前列腺癌则是男性最常见的恶性肿瘤之一,其临床工作流高度依赖影像学评估。
磁共振成像已成为前列腺癌临床工作流的核心模态,原因在于其高空间分辨率与优异的软组织对比度,能够在无创条件下提供腺体解剖、肿瘤定位与分级所需的形态学与信号特征。基于多参数 MRI 的 PI-RADS 结构化报告体系在 ESUR 指南基础上建立(Barentsz et al., 2012),进一步推动了 MRI 在前列腺癌检测、分期与治疗计划中的常规应用。PROMISE12 数据集中同时纳入了良性病变(如良性前列腺增生)与前列腺癌患者,这一构成是有意为之:分割算法在临床中面对的是混合人群,腺体形态会因增生而显著增大、边界因腺体不对称而模糊,算法必须在这样的分布上保持稳定。
前列腺体积(PV)本身就是一个具有临床意义的量。PV 与 PSA 水平结合可导出 PSA 密度,用于辅助判断是否需要穿刺活检;PV 的准确性与可重复性直接决定 PSA 密度的可用性。此外,前列腺的大小、形态及其相对邻近器官的空间关系是前列腺切除术、放射治疗以及冷冻治疗、高强度聚焦超声(HIFU)等微创治疗计划的关键输入。手动逐层勾画前列腺边界耗时且存在观察者内与观察者间变异,这正是自动分割研究的临床驱动力。
§2.3 临床任务定义
| 临床环节 | 任务定义 | PROMISE12 的支撑程度 |
|---|---|---|
| 筛查 | 基于 PSA 与影像风险分层,判断是否需进一步活检 | 不支撑,数据集无 PSA 与随访数据 |
| 诊断 | 定位可疑病灶并做 PI-RADS 评分 | 不支撑,仅全腺体轮廓,无病灶标注 |
| 分级 | 基于 Gleason 评分/分级分组评估侵袭性 | 不支撑,无病理结果 |
| 分割(本数据集核心) | 在 T2W MRI 上勾画完整前列腺腺体边界 | 完全支撑,50 例专家参考分割 |
| 体积测量 | 由分割掩膜与体素间距计算腺体体积 | 完全支撑,间距信息完整保留在 .mhd 头文件 |
| 放疗计划 / 融合导航 | 提供腺体边界以支持剂量规划与 TRUS/MR 融合 | 部分支撑,缺少危及器官(OAR)标注 |
| 预后 | 预测病理分期、治疗反应 | 不支撑,无随访与结局变量 |
任务的形式化定义:给定一例轴位 T2 加权前列腺 MR 体数据 X ∈ R^(H×W×D),预测二值掩膜 Y ∈ {0,1}^(H×W×D),使得 Y 在体素级尽可能接近专家参考分割。参考分割中体素值为 1 表示前列腺、为 0 表示背景,无其他类别。这是一个器官级二元语义分割任务,而非实例分割或多类分割。
§2.4 患者人群
| 维度 | 说明 | 来源 |
|---|---|---|
| 来源中心 | 4 个临床中心:RUNMC(荷兰)、BIDMC(美国)、UCL(英国)、HK(中国香港) | 论文病例分布说明 |
| 在线挑战病例中心分布 | 1–7 RUNMC;8–14 BIDMC;15–22 UCL;23–30 HK | ResearchGate 论文图表说明 |
| 现场挑战病例中心分布 | 1–5 UCL;6–10 HK;11–15 BIDMC;16–20 RUNMC | ResearchGate 论文图表说明 |
| 性别 | 全部为男性(前列腺为男性特有器官) | 任务定义决定 |
| 疾病构成 | 良性前列腺增生等良性病变患者 + 前列腺癌患者 | 官方 Details 页 |
| 腺体体积 | 最小 14.93 cm³、中位 43.27 cm³、最大 315.39 cm³ | 公开数据集统计汇总 |
| 采集时间 | 2012 年 4 月训练集发布前完成回顾性收集 | 官方时间线 |
| 年龄与种族 | 随数据发布的人群统计学信息未提供 | — |
「年龄与种族未提供」并非数据缺失的技术问题,而是该挑战赛的设计选择:发布形态仅含影像与几何元数据,不含任何临床人口学字段。任何声称基于 PROMISE12 做公平性分析的结论都无法由数据本身支撑。
§2.5 临床价值
前列腺分割是把影像信息接入临床决策链路的第一个环节。在放射治疗中,腺体轮廓直接决定靶区剂量分布;在 TRUS/MR 融合引导的穿刺活检中,腺体边界是配准的参考几何;在主动监测流程中,腺体体积的连续变化是判断疾病进展的替代指标。手工勾画在这些场景中的成本很高:一名有经验的阅片者完成一例全腺体勾画需要相当长的逐层操作时间,且不同阅片者之间的边界判定存在系统性差异,尤其在腺体尖部与底部。
自动分割的临床价值因此体现在两个方面:一是效率,将逐层勾画压缩为一次推理;二是一致性,消除阅片者内与阅片者间的随机变异,前提是模型本身足够鲁棒。PROMISE12 用第二观察者作为评分锚点,实际上给出了一个可操作的临床门槛定义——当算法的平均表现达到或超过第二位人类阅片者时,它在批量处理上就具备了替代人工的合理性。论文中 Imorphics 算法确实在平均意义上达到了这一水平,这是该数据集对临床落地路径最直接的贡献。
需要强调的是,数据集提供的是腺体整体边界,不含尿道、神经血管束、直肠壁等危及器官,也缺少腺体内的分区(外周带/中央腺)与病灶轮廓。因此它支撑的是「腺体级」临床任务,任何需要危及器官约束或病灶级精度的应用,都必须补充其他标注来源。
§2.6 标注金标准
| 维度 | 内容 |
|---|---|
| 划分方式 | 训练 50 例(公开参考分割)/ 测试 30 例(评分用)/ 现场挑战 20 例(限时赛用) |
| 标注方式 | 专家逐层手工勾画前列腺边界,形成三维体素级二值掩膜 |
| 参考标准标注者 | 一名具多年前列腺 MRI 阅片经验的观察者(放射科医师、住院医师或图像分析研究员) |
| 参考标准核查者 | 一名前列腺 MRI 经验超过 6 年的放射科住院医师,负责检查并修正 |
| 第二观察者 | 一名未参与参考标准制定、且对其设盲的临床研究者,用于建立评分锚点 |
| 第二观察者核查 | 仅核查完整性与异常,明确不核查准确性 |
| 标注粒度 | 器官级二元(1 = 前列腺,0 = 背景),不含分区与病灶 |
| 标注文件格式 | MetaImage,体素类型 CHAR(8 bit signed) |
| 一致性证据 | 论文报告第二观察者指标与文献中观察者间变异水平大致相当 |
| 已知局限 | 非多阅片者共识标注;未随数据发布逐例观察者间变异量 |
金标准的关键含义:PROMISE12 的「真值」在严格意义上是单阅片者 + 单核查者的产物,而非 STAPLE 之类的多阅片者共识。因此任何模型在该数据上报告的 Dice 上限,本质上受限于这一个人的边界判定习惯。评估时应把「接近参考标准」理解为「接近该阅片者的判定」,而不是「接近解剖学真理」。
§3 数据集规格
§3.0 版本抉择矩阵
PROMISE12 目前存在两个主要的公开存档版本,另有若干第三方镜像。选择哪一个取决于你要做的任务:
| 你的需求 | 推荐版本 | 大小 | 理由 |
|---|---|---|---|
| 复现论文、训练模型、做交叉验证 | Zenodo 8026660(training_data.zip + test_data.zip) | 323.7 MB + 194.7 MB | 训练与测试数据均含分割掩膜,可在本地完整评测 |
| 仅做训练与 5 折交叉验证 | Zenodo 8026660 的 training_data.zip | 323.7 MB | 官方划分的训练集 50 例,含参考分割,体积最小 |
| 复现 MICCAI 2012 现场挑战 | Zenodo 8026660 的 livechallenge_test_data.zip | 119.7 MB | 20 例现场挑战数据,对应 3 小时限时赛设置 |
| 与历史挑战提交结果对齐 | Zenodo 8014041(分卷 ChallengeData.zip) | 508.1 MB 总计 | 早期存档结构,TrainingDataPart1-3 分卷,便于核对原始分布 |
| 网络条件受限 | Zenodo 8014041 的 TrainingDataPart2/3 | 54.6 MB / 28.3 MB | 最小可用分卷,可先跑通管线再补齐 |
核心判断规则:只要需要评测,就必须取含掩膜的 8026660 版本(完整 638.0 MB);只要训练,取 training_data.zip 即可。8014041 与 8026660 的图像内容一致,差异仅在打包结构与是否随附测试掩膜。第三方镜像(Google Drive、百度网盘等)未经官方核验,不建议用于需要结果可复现的研究。
§3.1 模态详情
| 属性 | 说明 |
|---|---|
| 成像模态 | MRI(磁共振成像) |
| 序列类型 | 轴位(横断面)T2 加权(T2W) |
| 扫描平面 | 横断面,逐层堆叠为三维体数据 |
| 体素类型 | T2W 图像 SHORT(16 bit signed);参考分割 CHAR(8 bit signed) |
| 是否多参数 | 否,仅 T2W 单一序列(这是与 PROSTATEx、I2CVB 的关键差异) |
| 是否多中心 | 是,4 个中心 |
| 是否多厂商 | 是,厂商与场强存在差异 |
| 协议差异维度 | 层厚、是否使用直肠内线圈、视野、动态范围、体素尺寸、体位 |
| 灰度标准化情况 | 未标准化。MRI 信号强度非定量,图像外观主要由采集协议、场强、线圈剖面与扫描仪类型决定 |
| 图像尺寸范围 | 256 × 256 × 15 至 512 × 512 × 54 体素 |
| 体素间距范围 | (0.27, 0.27, 2.2) mm 至 (0.75, 0.75, 4.0) mm(层方向间距显著大于面内间距) |
| 训练集 2D 切片总数 | 1,377 张 |
§3.2 按子集样本数
| 子集 | 例数 | 参考分割 | 用途 | 打包文件 |
|---|---|---|---|---|
| 训练集 | 50 | 公开 | 算法开发、交叉验证 | training_data.zip(323.7 MB) |
| 测试集(在线挑战) | 30 | 随归档发布 | 结果复现、本地评测 | test_data.zip(194.7 MB) |
| 现场挑战集 | 20 | 随归档发布 | 复现 MICCAI 2012 现场赛 | livechallenge_test_data.zip(119.7 MB) |
| 合计 | 100 | — | 4 中心、多厂商、多协议 | 638.0 MB |
训练集与测试集的 2D 切片分布并不均匀:图像尺寸与层数在病例间差异很大(15 层至 54 层),因此以「切片数」而非「病例数」衡量数据规模会得到完全不同的比例。按病例做划分是唯一正确的做法,切片级随机划分会造成同一患者的不同层面同时出现在训练与验证集中。
§3.3 格式规格
| 项目 | 规格 |
|---|---|
| 图像容器 | MetaImage(Meta 格式),ITK 兼容 |
| 头文件 | .mhd,ASCII 可读文本,记录维度、体素间距、体素类型、体素到世界坐标变换矩阵 |
| 数据文件 | .raw,二进制,体素值连续排列,索引顺序为 x → y → z |
| 图像文件命名 | CaseXX.mhd / CaseXX.raw(XX 为两位病例编号) |
| 参考分割命名 | CaseXX_segmentation.mhd / CaseXX_segmentation.raw |
| 可读软件 | MeVisLab、ITK-SNAP、3D Slicer、ParaView |
| 竞赛提交格式 | ZIP 压缩包,分割文件置于压缩包根目录,不得嵌套子目录 |
| 提交体素类型 | 8 bit unsigned char,仅含 0 与 1 |
| 提交几何要求 | 尺寸、origin、spacing、direction 必须与源 T2W 的 .mhd 一致 |
| 提交命名要求 | 文件名须以源 T2W 文件名开头 |
§3.4 存储大小
| 归档 | 文件 | 大小 |
|---|---|---|
| Zenodo 8026660 | 全部文件 | 638.0 MB |
| Zenodo 8026660 | training_data.zip | 323.7 MB |
| Zenodo 8026660 | test_data.zip | 194.7 MB |
| Zenodo 8026660 | livechallenge_test_data.zip | 119.7 MB |
| Zenodo 8026660 | LICENSE.TXT | 129 Bytes |
| Zenodo 8014041 | 全部文件 | 508.1 MB |
| Zenodo 8014041 | ChallengeData.zip | 119.2 MB |
| Zenodo 8014041 | TestData.zip | 145.8 MB |
| Zenodo 8014041 | TrainingDataPart1.zip | 160.2 MB |
| Zenodo 8014041 | TrainingDataPart2.zip | 54.6 MB |
| Zenodo 8014041 | TrainingDataPart3.zip | 28.3 MB |
解压后占用空间会显著大于压缩包体积,因为 MetaImage 的
.raw为未压缩二进制。按 16 bit 体素估算,仅训练集 50 例解压后就可能占用约 1 GB 量级,规划磁盘时应预留压缩包体积的 3 至 4 倍。
§3.5 标注方式
| 维度 | 内容 |
|---|---|
| 标注类型 | 人工专家标注(fully manual),非自动生成、非弱监督 |
| 标注层级 | 体素级三维二值掩膜(器官级) |
| 标注工具 | 未在公开文档中指明,但数据格式为 MetaImage,可在 MeVisLab / ITK-SNAP / 3D Slicer 中编辑 |
| 标注对象 | 完整前列腺腺体(不含精囊、不含尿道、不含病灶) |
| 是否分层标注 | 否,单一标签值 1 |
| 是否公开标注者身份 | 仅公开角色与经验描述,不公开个人身份 |
| 是否公开置信度/难度 | 否 |
| 一致性度量 | 通过第二观察者间接体现,但未发布逐例一致性数值 |
弱监督/半监督可行性:由于仅有 50 例带标注,社区常把训练集的 1,377 张切片中的大部分当作未标注池使用,仅保留 3 至 7.5% 的标注切片做半监督实验。这类实验设置本身是对 PROMISE12 规模限制的工程回应,可参考 §8 的 SOTA 表中标注比例列。
§3.6 标注者资质与一致性
| 角色 | 资质 | 职责 | 核查范围 |
|---|---|---|---|
| 参考标准标注者 | 具多年前列腺 MRI 经验,身份可以是放射科医师、住院医师或图像分析研究员 | 勾画全部测试病例的参考分割 | — |
| 核查者 | 前列腺 MRI 经验超过 6 年的放射科住院医师 | 检查并修正全部参考标准分割 | 完整性与准确性(对参考标准) |
| 第二观察者 | 临床研究者,未参与参考标准制定,且对参考标准设盲 | 独立分割测试病例 | 由核查者检查完整性与异常,不核查准确性 |
论文通过对比发现,第二观察者的指标水平与文献中报告的观察者间变异大致相当,并据此把第二观察者的得分定在 85 分。论文同时说明,不把第二观察者设得更高(例如 90 分)的理由是:其分割中仍存在经验丰富的观察者不会犯的错误。这一段论述是理解 PROMISE12 评分体系合理性的关键:85 分不是随意设定的经验值,而是「人类一致性水平」的量化表达。
§3.7 采集周期与地域覆盖
| 维度 | 内容 |
|---|---|
| 采集性质 | 回顾性收集自各中心临床影像归档系统 |
| 数据发布时点 | 2012 年 4 月至 6 月分批发布 |
| 覆盖国家/地区 | 荷兰、美国、英国、中国香港 |
| 中心数量 | 4 个 |
| 中心病例配额 | 在线挑战 7 / 7 / 8 / 8(RUNMC / BIDMC / UCL / HK) |
| 现场挑战病例配额 | 5 例 UCL、5 例 HK、5 例 BIDMC、5 例 RUNMC |
4 个中心的病例配额接近均等,这是组委会刻意保证各中心在评测中权重相近的设计。但 4 个中心仍无法代表全球人群与设备分布,尤其缺少南亚、非洲与南美中心,做公平性结论时须谨慎。
§3.8 设备规格
| 维度 | 说明 |
|---|---|
| 厂商多样性 | 多厂商(数据集设计目标之一) |
| 场强 | 1.5T 与 3T 混合(论文称 scanner manufacturer、field strength、protocol 均有差异) |
| 线圈配置 | 部分病例使用直肠内线圈(endorectal coil),部分不使用 |
| 层厚范围 | 2.2 mm 至 4.0 mm |
| 面内分辨率 | 0.27 mm 至 0.75 mm |
| 层数范围 | 15 层至 54 层 |
| 设备型号标签 | 未随数据发布 |
| 协议参数(TR/TE/翻转角) | 未随数据发布 |
工程含义:由于厂商与协议标签未随数据发布,无法在训练时显式建模域标签,也无法在评测时按厂商分层报告。使用者只能依靠图像外观与体素间距间接推断采集协议,这限制了细粒度的域泛化分析。若研究需要厂商标签,须寻找其他附带该元数据的前列腺 MRI 数据集。
§3.9 深度溯源链
| 层级 | 内容 |
|---|---|
| 原始数据来源 | 4 家参与中心的临床 PACS 系统回顾性调取 |
| 数据筛选 | 选取能代表临床实际扫描类型分布、且腺体大小与外观具备跨度的 T2W 检查 |
| 去标识化 | 由各中心在发布前完成,释放形态仅含影像与几何信息,不含 DICOM 患者字段 |
| 标注生成 | 单阅片者勾画 → 放射科住院医师核查修正 → 形成参考标准 |
| 独立验证 | 另请设盲的第二观察者独立分割测试集病例,用于建立评分锚点 |
| 首次发布 | 2012-04-19 通过 promise12.grand-challenge.org 发布训练数据 |
| 长期归档 | 2023-06 由 Zenodo 统一归档,分配 DOI 10.5281/zenodo.8026660 与 10.5281/zenodo.8014041 |
| 当前状态 | 挑战永久关闭,不再接受提交;数据保持开放下载 |
§4 数据结构
§4.0 目录树
以下为下载 Zenodo 8026660 归档并解压后的目录结构预览(.mhd 与 .raw 成对出现):
PROMISE12/
├── LICENSE.TXT # 许可协议(129 Bytes)
├── test_data.zip # 30 例在线挑战测试数据(含分割掩膜)
├── livechallenge_test_data.zip # 20 例 MICCAI 2012 现场挑战数据(含分割掩膜)
└── training_data.zip # 50 例训练数据(含参考分割)
│
└── (解压后)training_data/
├── Case00.mhd # 病例 00 的 MetaImage 头文件
├── Case00.raw # 病例 00 的二进制体数据(SHORT,16 bit signed)
├── Case00_segmentation.mhd # 病例 00 参考分割头文件
├── Case00_segmentation.raw # 病例 00 参考分割体数据(CHAR,仅 0/1)
├── Case01.mhd
├── Case01.raw
├── Case01_segmentation.mhd
├── Case01_segmentation.raw
├── ...
├── Case49.mhd
├── Case49.raw
├── Case49_segmentation.mhd
└── Case49_segmentation.raw
一份典型的 CaseXX.mhd 头文件内容形如:
ObjectType = Image
NDims = 3
DimSize = 256 256 24
ElementType = MET_SHORT
ElementSpacing = 0.625 0.625 3.6
Offset = -80.0 -80.0 -43.2
TransformMatrix = 1 0 0 0 1 0 0 0 1
ElementDataFile = CaseXX.raw
其中 DimSize 给出三维尺寸,ElementSpacing 给出体素间距(毫米),Offset 与 TransformMatrix 共同确定体素到世界坐标的映射,ElementDataFile 指定配对的二进制文件。
§4.1 DAIMS 字段字典
下表描述 promise12_cases 逻辑表(一例 = 一条记录)的核心字段。原始数据不是表格,而是「影像 + 掩膜」的成对文件,故此处的「字段」指机读管线中展开后的字段。
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
case_id |
string | 病例唯一标识,来自文件名主干 | Case00 |
划分键、结果对齐 | 无 | 不适用 | Case00–Case49(训练集) |
image_path |
string | T2W 体数据的 .mhd 路径 |
training_data/Case00.mhd |
图像读入 | 无 | 不适用 | 有效文件路径 |
mask_path |
string | 参考分割的 .mhd 路径 |
training_data/Case00_segmentation.mhd |
监督标签读入 | 无 | 训练集全有;无标注子集为空 | 有效文件路径或空 |
split |
enum | 官方子集归属 | train |
划分控制、防止泄漏 | 无 | 不适用 | train / test / live |
shape |
int[3] | 体数据三维尺寸 (x, y, z) | [256, 256, 24] |
网络输入尺寸、重采样目标 | 无 | 不适用 | 256–512 / 256–512 / 15–54 |
spacing |
float[3] | 体素间距 (mm) | [0.625, 0.625, 3.6] |
各向异性重采样、体积计算 | 由扫描协议决定,非测量误差 | 不适用 | 0.27–0.75 / 0.27–0.75 / 2.2–4.0 |
origin |
float[3] | 体素 (0,0,0) 的世界坐标 (mm) | [-80.0, -80.0, -43.2] |
空间对齐、多模态配准 | 无 | 不适用 | 依赖扫描视野 |
direction |
float[9] | 方向余弦矩阵 | 单位矩阵 | 空间对齐 | 无 | 不适用 | 标准正交矩阵 |
volume_cm3 |
float | 由掩膜体素数 × 体素体积推算的腺体体积 | 43.27 |
体积回归、异常检测 | 依赖参考分割质量 | 无掩膜时为空 | 14.93–315.39 |
n_slices |
int | 层方向层数 | 24 |
2D 模型批构造 | 无 | 不适用 | 15–54 |
center |
enum | 采集中心(由病例编号区间推导) | RUNMC |
域泛化分析、分组报告 | 推导值,非官方发布字段 | 无 | RUNMC / BIDMC / UCL / HK |
has_endorectal_coil |
bool | 是否使用直肠内线圈(需从图像外观推断) | true |
域偏移分析 | 推断值,存在误判风险 | 无法确定时为空 | true / false / 空 |
voxel_type |
enum | 图像体素数据类型 | MET_SHORT |
读取时类型校验 | 无 | 不适用 | MET_SHORT |
mask_voxel_type |
enum | 掩膜体素数据类型 | MET_CHAR |
标签读取校验 | 无 | 训练集固定 | MET_CHAR |
表中共 14 个字段,覆盖唯一标识、路径、划分、几何元数据与派生统计。「观测误差」列中标注为「无」的字段是文件头直接读取的确定性值;
volume_cm3、center、has_endorectal_coil属于派生或推断字段,使用时应保留推导来源。
§4.2 标签分布
| 类别 | 值 | 训练集覆盖 | 说明 |
|---|---|---|---|
| 背景 | 0 | 100% | 腺体外全部体素,占绝对多数 |
| 前列腺腺体 | 1 | 100%(50/50 例) | 唯一前景类 |
| 统计量 | 数值 |
|---|---|
| 有标注病例数 | 50 |
| 标签覆盖率 | 100% |
| 最小腺体体积 | 14.93 cm³ |
| 中位腺体体积 | 43.27 cm³ |
| 最大腺体体积 | 315.39 cm³ |
| 最大/最小体积比 | 约 21.1 倍 |
| 训练集 2D 切片数 | 1,377 |
类别极度不平衡:腺体在单层图像中通常只占视场的 5% 至 15%,在体积层面则在 1% 至 5% 量级。使用普通交叉熵损失会迅速塌缩到全背景预测,必须使用 Dice 损失、Tversky 损失或带类别权重的组合损失,并在采样时保证每批包含足够的前景体素。
§4.3 关键统计
| 指标 | 最小值 | 中位数 | 最大值 |
|---|---|---|---|
| 面内间距 x (mm) | 0.27 | 0.61 | 0.75 |
| 面内间距 y (mm) | 0.27 | 0.61 | 0.75 |
| 层间距 z (mm) | 2.2 | 3.6 | 4.0 |
| 尺寸 x (体素) | 256 | 320 | 512 |
| 尺寸 y (体素) | 256 | 320 | 512 |
| 尺寸 z (层) | 15 | 24 | 54 |
| 腺体体积 (cm³) | 14.93 | 43.27 | 315.39 |
各向异性比:层间距与面内间距之比在极端情况下可达约 14.8(0.27 mm 面内 vs 4.0 mm 层间距),在中位情况下约为 5.9(0.61 mm vs 3.6 mm)。这意味着单个体素在层方向上的物理长度是面内的数倍,直接把体数据按体素索引当作各向同性立方体送入 3D 网络会产生严重的几何畸变,必须按物理间距重采样或使用各向异性卷积核。
§4.4 数据层级
中心(center: RUNMC / BIDMC / UCL / HK)
└── 病例(case: Case00 … Case99,共 100 例)
└── 检查(study: 每例一次前列腺 MRI 检查)
├── 序列(series: 轴位 T2W,单一序列)
│ └── 切片(slice: 15 … 54 层,合计训练集 1,377 层)
└── 参考分割(reference segmentation: 与 T2W 同几何的三维掩膜)
层级对建模的直接约束:一个病例 = 一位患者 = 一次检查 = 一个三维体数据。任何以切片为单位的随机划分都会把同一患者的层面分散到训练与验证两侧,导致验证指标虚高。正确做法是以 case_id 为最小不可分割单元做分组划分。
§4.5 缺失值与信息性缺失编码
| 字段 | 缺失情况 | 缺失类型 | 处理建议 |
|---|---|---|---|
mask_path |
无标注子集(若使用官方 test/live 子集做半监督) | 设计性缺失(deliberately missing) | 保留为空字符串,不要填 0;用掩膜缺失标志位区分 |
center |
官方未发布中心字段 | 推断可得 | 由病例编号区间推导(1–7 RUNMC 等),并在元数据中标注为推导值 |
has_endorectal_coil |
官方未发布线圈使用标志 | 无法直接获得 | 留空,或通过图像外观分类器推断并记录置信度 |
scanner_model |
官方未发布设备型号 | 不可获得 | 不设该字段,避免伪造 |
field_strength |
官方未发布场强 | 不可获得 | 不设该字段 |
age / race |
官方未发布人口学信息 | 不可获得 | 不设该字段 |
psa / gleason |
官方未发布临床变量 | 不可获得 | 不设该字段 |
信息性缺失的处理原则:PROMISE12 的缺失大多是「设计性缺失」——官方发布形态本就不含这些字段。对这类缺失,正确做法是不建立该字段,而不是填入哨兵值(如 −1 或 999)。填入哨兵值会让下游模型把这些不存在的维度当作真实特征学习,属于典型的信息性缺失误编码。若确需线圈标志用于域分析,应新建
has_endorectal_coil_inferred字段并同时记录推断方法与置信度。
§5 数据划分与使用建议
§5.1 官方划分
| 子集 | 例数 | 标注可用性 | 原始用途 |
|---|---|---|---|
| 训练集 | 50 | 公开参考分割 | 算法开发、参数调试 |
| 测试集 | 30 | 归档中随附 | 官方评分(服务器已关闭) |
| 现场挑战集 | 20 | 归档中随附 | MICCAI 2012 现场限时赛 |
官方规则明确禁止「在测试集上训练」,并规定只有在算法与已提交版本实质不同时才允许重新提交,禁止通过调参反复刷榜。这一规则背后的方法学立场值得注意:组委会希望训练集承担全部调参工作,测试集只用于最终报告一次。
§5.2 社区惯例划分
由于官方评分服务器永久关闭,社区形成了两类替代方案:
| 方案 | 做法 | 优点 | 风险 |
|---|---|---|---|
| 5 折交叉验证 | 将 50 例训练集随机分 5 折、每折 10 例,轮流做验证 | 全部数据参与训练与验证,统计更稳定 | 折的划分方式不统一,结果互不可比 |
| 单次留出 | 40 例训练 / 10 例验证 | 实现简单、训练成本低 | 验证集仅 10 例,方差大 |
| 训练集 + 归档测试集 | 50 例训练、30 例归档测试集评测 | 最接近官方设置 | 测试集掩膜已公开,存在被间接调参的风险 |
建议:若目标是发表可与他人比较的结果,应明确声明折数、随机种子与划分文件,并把划分文件一并公开。更好的做法是同时报告 5 折交叉验证与固定留出的两套结果。
§5.3 泄漏风险(重点)
PROMISE12 的泄漏风险有三个层次,其中第三个最容易被忽视:
第一层:切片级随机划分。 一个病例有 15 至 54 层,层间高度相关。若把全部 1,377 张切片打散后随机划分训练/验证,则同一患者的相邻层面会同时出现在两侧,验证 Dice 会被显著高估(常见虚高 3 至 8 个百分点)。必须按 case_id 分组划分。
第二层:测试集掩膜已公开。 Zenodo 归档中包含官方测试集与现场挑战集的分割掩膜。这意味着任何人都可以在测试集上反复调参而不被察觉,历史上挑战赛「一次性提交」的保护机制已经失效。使用归档测试集时,任何报告的分数都应被理解为「在已公开真值上的表现」,其可信度低于原始挑战赛提交时的分数。
第三层:派生数据集的重叠。 多个后续数据集(如部分前列腺 MRI 公开集)从同一批临床来源选取病例或使用相似采集协议。若在 PROMISE12 上训练、又在来源重叠的数据集上测试,会引入隐性泄漏。使用外部数据集做验证前,应核对病例来源中心与采集时间。
§5.4 交叉验证建议
| 项目 | 建议 |
|---|---|
| 折数 | 5 折(每折 10 例),与社区主流一致 |
| 分组键 | case_id,确保同一病例不跨折 |
| 分层键 | 采集中心(center)与腺体体积分位,保证每折的中心构成与体积分布相近 |
| 随机种子 | 固定(如 42、0、1)并公开划分文件 |
| 报告方式 | 报告每折指标 + 均值 ± 标准差,不要只报均值 |
| 早停策略 | 在折内验证集上早停,禁止用测试集早停 |
§5.5 外部验证建议
| 外部数据集 | 来源 | 建议验证任务 | 注意事项 |
|---|---|---|---|
| Prostate-3T | TCIA | 全腺体分割、3T 场强泛化 | 场强统一为 3T,与 PROMISE12 的混合场强形成对照 |
| NCI-ISBI 2013(ASPS13) | TCIA | 全腺体分割、多参数 MRI 泛化 | 含 T1W 与 DCE,需先统一序列 |
| PROSTATEx | TCIA / AAPM | 腺体分割迁移 + 病灶检测 | 任务不同,需自行生成腺体轮廓或只用分类任务 |
| I2CVB | 公开仓库 | 分区泛化(外周带/中央腺) | 样本量小,仅作补充证据 |
| 本院回顾性数据 | 各自机构 | 真实部署前验证 | 必须使用当代扫描仪与当代协议,注意合规审批 |
外部验证的最低要求:报告外部验证时应同时给出图像采集年代、场强、厂商与是否使用直肠内线圈,否则「泛化到新数据」的结论无法被解释。PROMISE12 论文本身的局限之一就是无法按厂商分层报告,因为设备标签未随数据发布。
§6 AI 就绪指南
§6.0 云端快速启动
PROMISE12 体积小(638 MB 完整归档)、依赖少(SimpleITK + PyTorch 即可),适合在单卡云端实例上快速跑通。推荐配置:1 张 16 GB 显存 GPU(如 T4 或 V100)、8 核 CPU、32 GB 内存、20 GB 可用磁盘(含解压后空间)。若使用 2D 网络仅做管线验证,CPU 环境即可完成数据读取与预处理测试。
§6.1 快速上手
以下代码假定目录结构为:data_root/ 下解压出 training_data/ 目录(其余子集同理)。若你的解压路径不同,请修改 DATA_ROOT 常量。
"""
PROMISE12 最小可用管线:
预期目录结构(解压 Zenodo 8026660 的 training_data.zip 后):
/path/to/data_root/
└── training_data/
├── Case00.mhd / Case00.raw
├── Case00_segmentation.mhd / Case00_segmentation.raw
└── ... (共 50 例,Case00 至 Case49)
data_root 拼接关系:
image_path = f"{DATA_ROOT}/training_data/{case_id}.mhd"
mask_path = f"{DATA_ROOT}/training_data/{case_id}_segmentation.mhd"
最小可用子集:仅取 Case00–Case04 共 5 例即可验证读取链路是否打通。
"""
import SimpleITK as sitk
import numpy as np
DATA_ROOT = "/path/to/data_root"
SUBSET = [f"Case{i:02d}" for i in range(5)] # 最小可用子集:5 例
for case_id in SUBSET:
img = sitk.ReadImage(f"{DATA_ROOT}/training_data/{case_id}.mhd")
msk = sitk.ReadImage(f"{DATA_ROOT}/training_data/{case_id}_segmentation.mhd")
arr = sitk.GetArrayFromImage(img) # 形状为 (z, y, x)
lab = sitk.GetArrayFromImage(msk)
print(
case_id,
"image", arr.shape, arr.dtype, f"[{arr.min()}, {arr.max()}]",
"spacing", tuple(round(s, 3) for s in img.GetSpacing()),
"mask", lab.shape, np.unique(lab),
)
预期输出形如(数值因病例而异):
Case00 image (24, 256, 256) int16 [-212, 1543] spacing (0.625, 0.625, 3.6) mask (24, 256, 256) [0 1]
Case01 image (28, 320, 320) int16 [-401, 2207] spacing (0.61, 0.61, 3.4) mask (28, 320, 320) [0 1]
...
关键检查点:arr.dtype 应为 int16(对应 MET_SHORT),np.unique(lab) 应为 [0 1],两者 shape 必须完全一致。若不满足,说明读到了错误的配对文件或几何不一致的掩膜。
§6.2 数据获取
| 途径 | 地址 | 大小 | 是否需要申请 |
|---|---|---|---|
| Zenodo 完整归档(训练+测试+现场,含掩膜) | https://zenodo.org/records/8026660 | 638.0 MB | 否,开放下载 |
| Zenodo 早期归档(分卷结构) | https://zenodo.org/records/8014041 | 508.1 MB | 否,开放下载 |
| 官方挑战主页 | https://promise12.grand-challenge.org/ | — | 页面已关闭提交,仅指向 Zenodo |
| 官方下载页 | https://promise12.grand-challenge.org/Download | — | 页面已关闭提交,仅指向 Zenodo |
"""
下载与解压。建议先只取训练集以节省带宽与磁盘。
注意:Zenodo 直链需要从记录页面获取,以下用 API 形式列出文件清单。
"""
# 1) 查看记录中包含哪些文件
curl -s "https://zenodo.org/api/records/8026660" | python3 -c "
import json, sys
rec = json.load(sys.stdin)
for f in rec['files']:
print(f['key'], round(f['size'] / 1e6, 1), 'MB', f['links']['self'])
"
# 2) 下载训练集(323.7 MB)
# curl -L -o training_data.zip "<上一步输出的 training_data.zip 直链>"
# 3) 校验完整性(md5 见 Zenodo 文件列表)
# md5sum training_data.zip
# 期望值:f6d23994117c989daf07e5291edd0aea
# 4) 解压
# unzip training_data.zip -d data_root/
# 5) 核对病例数(应为 50 对,即 100 个影像文件 + 100 个掩膜文件)
# ls data_root/training_data/*.mhd | grep -v segmentation | wc -l # 期望 50
# ls data_root/training_data/*_segmentation.mhd | wc -l # 期望 50
发表与商用限制:该归档标注为 CC BY-NC 4.0,禁止商业用途。发表使用该数据集的成果时必须引用 Litjens et al., Medical Image Analysis, 2014(DOI 10.1016/j.media.2013.12.002),这是官方页面的硬性要求。
§6.3 预处理全流程
PROMISE12 的预处理需要依次解决四个问题:几何各向异性、灰度未标准化、类别不平衡、体数据尺寸不一。以下管线按顺序处理这四项。
"""
PROMISE12 预处理管线(格式统一 → 灰度裁剪 → 几何重采样 → 归一化)
输出:统一为固定尺寸、[0,1] 灰度的体数据,几何元数据随图像保留。
"""
import SimpleITK as sitk
import numpy as np
TARGET_SPACING = (1.0, 1.0, 1.0) # 参考目标各向同性间距(mm)
TARGET_SIZE = (256, 256, 24) # 目标尺寸(x, y, z),需覆盖最大腺体
LOWER_PCT, UPPER_PCT = 2.0, 98.0 # 灰度裁剪分位点(社区常用 2% 截尾)
def read_case(data_root, case_id):
img = sitk.ReadImage(f"{data_root}/training_data/{case_id}.mhd")
msk = sitk.ReadImage(f"{data_root}/training_data/{case_id}_segmentation.mhd")
return img, msk
def clip_intensity(img, lower_pct=LOWER_PCT, upper_pct=UPPER_PCT):
"""
按分位点裁剪灰度,抑制不同协议的动态范围差异。
步骤:先排除背景体素,再取前景灰度分位点,最后线性重映射到 [0, 1]。
"""
arr = sitk.GetArrayFromImage(img).astype(np.float32)
fg = arr[arr > 0] # 近似前景:剔除纯零背景
if fg.size == 0:
fg = arr.ravel()
lo, hi = np.percentile(fg, [lower_pct, upper_pct])
arr = np.clip(arr, lo, hi)
arr = (arr - lo) / max(hi - lo, 1e-6)
out = sitk.GetImageFromArray(arr)
out.CopyInformation(img)
return out
def resample_to_iso(img, mask, target_size=TARGET_SIZE):
"""
重采样到统一尺寸。图像用线性插值,掩膜必须用最近邻,
否则标签会被插值成非整数并破坏二值性。
返回 (res_img, res_msk, new_spacing),new_spacing 为 SimpleITK 的 (x, y, z) 顺序。
"""
size = [int(s) for s in target_size]
src_size = np.array(img.GetSize(), dtype=np.float64)
src_spacing = np.array(img.GetSpacing(), dtype=np.float64)
new_spacing_zyx = src_size[::-1] * src_spacing[::-1] / np.array(size[::-1], dtype=np.float64)
new_spacing = tuple(new_spacing_zyx[::-1]) # 转回 (x, y, z)
res_img = sitk.Resample(
img, size, sitk.Transform(),
sitk.sitkLinear, img.GetOrigin(), new_spacing,
img.GetDirection(), 0.0, sitk.sitkFloat32,
)
res_msk = sitk.Resample(
mask, size, sitk.Transform(),
sitk.sitkNearestNeighbor, img.GetOrigin(), new_spacing,
img.GetDirection(), 0, sitk.sitkUInt8,
)
return res_img, res_msk, new_spacing
def preprocess_case(data_root, case_id):
img, msk = read_case(data_root, case_id)
img = clip_intensity(img)
img, msk, new_spacing = resample_to_iso(img, msk)
image = sitk.GetArrayFromImage(img)[None] # (1, z, y, x)
label = sitk.GetArrayFromImage(msk)[None].astype(np.uint8)
assert label.max() <= 1, "掩膜必须保持二值"
print(case_id, "new spacing (x,y,z) =", tuple(round(s, 3) for s in new_spacing))
return image, label
if __name__ == "__main__":
x, y = preprocess_case("/path/to/data_root", "Case00")
print("image", x.shape, x.dtype, float(x.min()), float(x.max()))
print("label", y.shape, y.dtype, "前景占比", round(float(y.mean()), 5))
观察要点:
1. 前景占比通常在 0.01 – 0.05 之间。若得到 0.0 或 > 0.5,说明重采样把几何搞反了。
2. 若标签出现 0 与 1 之外的值(如 0.333),说明掩膜用了线性插值而非最近邻。
3. 归一化后的 image.max() 必须为 1.0;若远小于 1,说明分位点裁剪的窗口选取有误。
4. new_spacing 应与原始 spacing 同量级;若某项变成 0 或异常大,说明尺寸与间距的换算顺序写反了。
增强(可选,谨慎使用):MRI 数据上安全的空间增强包括随机翻转(左右)、小幅旋转(±10°)、小幅弹性形变。危险增强见 §6.6。
§6.4 PyTorch DataLoader
"""
PROMISE12 PyTorch Dataset / DataLoader(可直接运行)
预期目录:{DATA_ROOT}/training_data/CaseXX.mhd 及其 _segmentation.mhd
本实现按病例做分组划分,避免切片级泄漏。
"""
import os
import glob
import numpy as np
import SimpleITK as sitk
import torch
from torch.utils.data import Dataset, DataLoader
def list_cases(data_root):
"""列出所有含参考分割的病例 id,按编号排序。"""
pattern = os.path.join(data_root, "training_data", "*_segmentation.mhd")
cases = sorted(
os.path.basename(p).replace("_segmentation.mhd", "")
for p in glob.glob(pattern)
)
return cases
def load_volume(data_root, case_id, target_size=(256, 256, 24)):
"""读取并预处理单例,返回 (image[1,z,y,x] float32, label[1,z,y,x] uint8)。"""
img = sitk.ReadImage(os.path.join(data_root, "training_data", f"{case_id}.mhd"))
msk = sitk.ReadImage(os.path.join(data_root, "training_data", f"{case_id}_segmentation.mhd"))
arr = sitk.GetArrayFromImage(img).astype(np.float32)
fg = arr[arr > 0]
lo, hi = np.percentile(fg if fg.size else arr.ravel(), [2, 98])
arr = np.clip(arr, lo, hi)
arr = (arr - lo) / max(hi - lo, 1e-6)
# 统一到固定尺寸(图像用线性插值,标签用最近邻,避免标签被插值污染)
img_r = sitk.GetImageFromArray(arr)
img_r.CopyInformation(img)
size = [int(s) for s in target_size]
src_size = np.array(img.GetSize(), dtype=np.float64)
src_spacing = np.array(img.GetSpacing(), dtype=np.float64)
sp_zyx = src_size[::-1] * src_spacing[::-1] / np.array(size[::-1], dtype=np.float64)
new_spacing = tuple(sp_zyx[::-1])
img_rs = sitk.Resample(img_r, size, sitk.Transform(), sitk.sitkLinear,
img.GetOrigin(), new_spacing, img.GetDirection(), 0.0, sitk.sitkFloat32)
msk_rs = sitk.Resample(msk, size, sitk.Transform(), sitk.sitkNearestNeighbor,
img.GetOrigin(), new_spacing, img.GetDirection(), 0, sitk.sitkUInt8)
image = sitk.GetArrayFromImage(img_rs)[None]
label = sitk.GetArrayFromImage(msk_rs)[None].astype(np.uint8)
return image, label
class PROMISE12Dataset(Dataset):
"""
按病例返回三维体数据。mode='train' 时做安全空间增强。
augment 仅做左右翻转,不改变解剖语义。
"""
def __init__(self, data_root, case_ids, target_size=(256, 256, 24), mode="train"):
self.data_root = data_root
self.case_ids = list(case_ids)
self.target_size = target_size
self.mode = mode
def __len__(self):
return len(self.case_ids)
def __getitem__(self, idx):
case_id = self.case_ids[idx]
image, label = load_volume(self.data_root, case_id, self.target_size)
if self.mode == "train":
if np.random.rand() < 0.5: # 左右翻转(对应解剖学矢状面镜像)
image = image[:, :, :, ::-1]
label = label[:, :, :, ::-1]
image = np.ascontiguousarray(image, dtype=np.float32)
label = np.ascontiguousarray(label, dtype=np.float32)
return {"image": torch.from_numpy(image), "label": torch.from_numpy(label), "case_id": case_id}
def build_loaders(data_root, val_ratio=0.2, batch_size=2, seed=42, num_workers=4):
"""按病例分组划分训练/验证,杜绝切片级泄漏。"""
cases = list_cases(data_root)
rng = np.random.RandomState(seed)
perm = rng.permutation(len(cases))
n_val = max(1, int(round(len(cases) * val_ratio)))
val_ids = [cases[i] for i in perm[:n_val]]
train_ids = [cases[i] for i in perm[n_val:]]
train_ds = PROMISE12Dataset(data_root, train_ids, mode="train")
val_ds = PROMISE12Dataset(data_root, val_ids, mode="val")
train_loader = DataLoader(train_ds, batch_size=batch_size, shuffle=True,
num_workers=num_workers, pin_memory=True, drop_last=False)
val_loader = DataLoader(val_ds, batch_size=1, shuffle=False,
num_workers=num_workers, pin_memory=True)
return train_loader, val_loader, train_ids, val_ids
if __name__ == "__main__":
tr, va, tr_ids, va_ids = build_loaders("/path/to/data_root", val_ratio=0.2, batch_size=2)
print("训练病例", len(tr_ids), tr_ids[:5])
print("验证病例", len(va_ids), va_ids)
for batch in tr:
print("image", batch["image"].shape, batch["image"].dtype)
print("label", batch["label"].shape, "前景占比", float(batch["label"].mean()))
break
内存提示:
batch_size=2对应 2 例完整体数据(各 256×256×24 体素),float32 下约 50 MB,配合 3D U-Net 在 16 GB 显存上可稳定训练。若改用 512×512 面内分辨率,需要把 batch_size 降到 1 或引入梯度累积。
§6.5 坑点
⚠️ 坑点 1:切片级随机划分导致验证指标虚高(分类:数据泄漏)
问题:PROMISE12 每例含 15 至 54 层高度相关的切片,训练集共 1,377 层。若把全部切片打散后随机划分训练/验证,同一患者的相邻层面会同时落入两侧,模型在验证集上「见过」该患者的解剖结构,验证 Dice 被系统性高估。
症状:验证 Dice 达到 0.95 以上甚至 0.98,但换成病例级划分后骤降到 0.88 至 0.92;或模型在跨中心评测时表现断崖式下跌。
解决:
- 简单方法:以
case_id为分组键做划分,同一病例的全部层面只进一侧。sklearn.model_selection.GroupKFold(n_splits=5)直接支持。- 进阶方法:在
Dataset层就按病例返回完整体数据(如 §6.4 的实现),从数据结构上杜绝切片混入;同时把划分文件(病例 id 列表 + 随机种子)固化到版本控制中。- SOTA 方法:引入中心分层分组划分,按
center与腺体体积分位做 stratified group split,确保每折的中心构成与体积分布一致,并在每折内报告指标的标准差。
参考:官方 Details 页明确要求算法在训练集上调参、测试集只报告一次(https://promise12.grand-challenge.org/Details );社区按病例做 5 折划分的惯例见 https://link.springer.com/content/pdf/10.1007/978-3-030-34110-7_45.pdf
⚠️ 坑点 2:官方评分服务器永久关闭,无法取得官方分数(分类:评估误用)
问题:挑战赛已于 2012 年结束,官网明确声明不再接受提交。官方评估代码从未公开,官方 Details 页仅有文字描述。研究者无法把自己的结果提交获得官方分数,也无法用官方脚本复现历史榜单。
症状:论文中写了「在 PROMISE12 上取得官方得分 X」,但该分数实际是自行按 Dice 计算的,与榜单上 Imorphics 的 85.72 分属于不同口径,导致读者误以为两者可直接比较。
解决:
- 简单方法:不要报告「挑战赛总分」,改为明确报告四项原始指标(DSC / aRVD / ABD / 95HD)并注明是本地计算。
- 进阶方法:按官方公式自行实现评分函数
score(x) = max(ax + b, 0),其中 a、b 由「完美分割 = 100 分」与「第二观察者水平 = 85 分」两条方程解出。论文示例中第二观察者平均 DSC 为 0.83 时,a = 88.24、b = 11.76;同一算法 DSC 为 0.87 时得 88.53 分。- SOTA 方法:在论文中同时报告本地四指标、复现评分,以及与已发表结果的对比表,并显式说明测试划分与预处理差异,避免读者把不同口径的数字并列比较。
参考:官方评分说明 https://promise12.grand-challenge.org/Details ;社区关于「官方不提供评测代码」的讨论 https://github.com/faustomilletari/VNet/issues/58
⚠️ 坑点 3:各向异性体素被当作各向同性处理(分类:预处理陷阱)
问题:PROMISE12 的层间距为 2.2 至 4.0 mm,而面内间距仅 0.27 至 0.75 mm,中位情况下层方向体素的物理长度是面内的约 5.9 倍,极端情况约 14.8 倍。若直接把体数据当作各向同性立方体送入 3D 卷积网络,腺体在层方向会被严重压缩或拉伸。
症状:模型在面内边界表现尚可但尖部与底部(apex / base)误差极大;重采样后 Dice 突然提升 2 至 5 个百分点;或体积计算结果与专家测量值系统性偏差。
解决:
- 简单方法:读取
.mhd的ElementSpacing,用 SimpleITK 重采样到 1.0 mm 各向同性(见 §6.3 的resample_to_iso)。- 进阶方法:掩膜必须用
sitkNearestNeighbor,图像用sitkLinear;重采样后断言label.max() <= 1,防止线性插值把标签变成小数。注意 SimpleITK 的 size 顺序为 (x, y, z),而GetArrayFromImage返回 (z, y, x),换算间距时务必对齐。- SOTA 方法:不做重采样,改用各向异性卷积核或按物理坐标采样的网络结构;nnU-Net 的做法是自动读取间距并据此决定重采样目标分辨率与网络各向异性配置,可作为参考实现。
参考:PROMISE12 间距统计 https://github.com/openmedlab/Awesome-Medical-Dataset/blob/main/resources/PROMISE12.md ;各向异性对性能影响的实证 https://link.springer.com/content/pdf/10.1007/978-3-030-34110-7_45.pdf
⚠️ 坑点 4:多中心灰度未标准化,直接归一化会引入域偏置(分类:偏置陷阱)
问题:MRI 信号强度非定量,图像外观由采集协议、场强、线圈剖面与扫描仪类型共同决定。PROMISE12 混合了使用与不使用直肠内线圈的病例、混合了 1.5T 与 3T,因此不同中心的灰度直方图差异巨大。用全局固定的窗宽窗位或整体 z-score 会把协议差异当作信号差异学习。
症状:模型在训练中心(如 RUNMC)表现优异,换到其他中心的病例时 Dice 下降 5 至 15 个百分点;分中心报告结果时中心间差距显著。
解决:
- 简单方法:逐例做分位点裁剪(如 2% 至 98%)后线性映射到 [0, 1],消除动态范围差异(见 §6.3)。
- 进阶方法:先剔除纯零背景再计算前景分位点,避免大范围空气体素拉偏统计量;对每例做前景掩膜内的 z-score 标准化。
- SOTA 方法:引入直方图匹配或 Nyúl 标准化把各例灰度分布对齐到同一参考分布;训练时配合域泛化策略(如随机协议增强、风格随机化),并务必按中心分组报告性能。
参考:论文对 MRI 信号非标准化的论述 https://www.ncbi.nlm.nih.gov/pmc/articles/pmc4137968/ ;社区预处理实践 https://link.springer.com/content/pdf/10.1007/978-3-030-34110-7_45.pdf
⚠️ 坑点 5:前景体素占比极低导致全背景塌缩(分类:工程陷阱)
问题:腺体在三维体数据中通常只占 1% 至 5% 的体素,单层图像中也只占视场的 5% 至 15%。使用等权交叉熵训练时,模型预测全背景即可获得 95% 以上的体素准确率,梯度被背景主导。
症状:训练损失平稳下降但 Dice 始终接近 0;预测掩膜全为 0;验证准确率高达 0.98 而 Dice 为 0.01。
解决:
- 简单方法:改用 Dice 损失或 Dice + 交叉熵的加权组合,早期用较高 Dice 权重快速脱离塌缩。
- 进阶方法:在切片/体素采样层面保证正样本比例,例如每批强制包含至少 N 个前景体素;或使用 Tversky / Focal 损失调节假阴性与假阳性的相对代价。
- SOTA 方法:采用深监督 + 边界加权(给 apex/base 更高权重)的多任务损失;训练中监控前景预测比例,若连续多个 epoch 低于阈值则触发损失权重自适应调整。
参考:类别不平衡与损失函数选择见 https://link.springer.com/content/pdf/10.1007/978-3-030-34110-7_45.pdf
⚠️ 坑点 6:apex 与 base 是误差集中区,整体 Dice 会掩盖问题(分类:标签理解)
问题:前列腺尖部(apex)与底部(base)因个体差异大、层厚大、边界模糊而最难分割,但它们在体数据中占比很小,对整体 Dice 的贡献有限。只报告整体 Dice 会掩盖模型在最需要准确的区域上的失败。这两个区域恰恰对放射治疗的剂量规划与 TRUS/MR 融合最敏感。
症状:整体 Dice 达到 0.91,看起来很好,但放疗医生查看尖部轮廓时发现明显偏移;与专家逐层对比时尖部误差达 3 至 5 mm。
解决:
- 简单方法:按官方定义把腺体沿层方向三等分(尖部 1/3 = apex、中部 1/3 = mid-gland、后 1/3 = base),分别报告三个区域指标。
- 进阶方法:处理层数不能被 3 整除的情况——官方论文的做法是按 4-6-4 切分(以 14 层为例);实现时须严格对齐这一规则,否则与他人结果不可比。
- SOTA 方法:在损失中对 apex 与 base 区域加权,或引入边界距离感知损失(如基于距离图的加权 Dice);评估时除 Dice 外同时报告 95HD 与 ABD,因为边界指标比体积重叠更能暴露尖部问题。
参考:官方 apex/base 分区与指标定义 https://promise12.grand-challenge.org/Details ;4-6-4 切分规则 https://www.ncbi.nlm.nih.gov/pmc/articles/pmc4137968/
⚠️ 坑点 7:测试集掩膜已公开,报告分数需重新定性(分类:评估误用)
问题:Zenodo 归档中 test_data.zip 与 livechallenge_test_data.zip 均随附分割掩膜。原始挑战赛「一次性提交、不可反复调参」的保护机制因此失效,任何使用归档测试集的实验都存在被隐性调参的可能性,即使研究者主观上没有刷榜意图。
症状:论文声称「在 PROMISE12 测试集上达到 SOTA」,但无法说明是否在测试集上做过任何模型选择;审稿人质疑结果可信度。
解决:
- 简单方法:明确声明测试集的来源与使用方式,说明是否在测试集上做过早停、超参搜索或模型选择。
- 进阶方法:把 30 例归档测试集留作「只在最终报告时使用一次」,全部开发与调参在训练集内部通过交叉验证完成;把测试集结果与交叉验证结果分开列出。
- SOTA 方法:采用嵌套交叉验证(外层评估、内层调参),并在论文中公开划分文件与全部随机种子,使结果可被第三方完整复现。
参考:官方禁止在测试集上训练的规则说明 https://promise12.grand-challenge.org/Details ;Zenodo 归档含测试掩膜的文件列表 https://doi.org/10.5281/zenodo.8026660
⚠️ 坑点 8:网络流传的派生版本与原始归档口径不一致(分类:工程陷阱)
问题:社区中流传大量 PROMISE12 的二次加工版本——重新打包的 NIfTI 版、预先重采样到固定尺寸的 HDF5 版、上传到 Google Drive 或百度网盘的镜像版。这些版本可能改变了间距、裁掉了层、或把训练集与测试集混合。不同论文引用的「PROMISE12」可能根本不是同一份数据。
症状:复现他人论文结果时怎么调都对不上;检查数据发现间距已被硬编码为 1 mm 或尺寸被统一到 512×512,原始几何信息丢失;病例数与官方的 50 / 30 / 20 划分不符。
解决:
- 简单方法:始终从 Zenodo 8026660 或 8014041 下载,并用官方 md5 校验(training_data.zip 期望 md5 为 f6d23994117c989daf07e5291edd0aea)。
- 进阶方法:在论文中写明数据来源的 DOI、下载日期与文件 md5,预处理后保留
.mhd中的 origin/spacing/direction 元数据副本,便于他人核对几何一致性。- SOTA 方法:把预处理脚本与划分文件一并开源;若因许可限制不能分发数据,至少公开文件清单与哈希,让第三方能验证拿到的是同一份数据。
参考:官方归档与 md5 列表 https://zenodo.org/records/8026660 ;第三方镜像的存在(非官方渠道,不建议用于可复现研究)https://deepwiki.com/ziyangwang007/Mamba-UNet/4.3-promise12-prostate-dataset
§6.6 数据增强策略
| 增强操作 | 安全性 | 说明 |
|---|---|---|
| 左右翻转 | ✅ 安全 | 对应矢状面镜像,前列腺解剖上近似对称,不改变语义 |
| 层内小角度旋转(±10°) | ✅ 安全 | 模拟患者体位与摆位差异 |
| 随机缩放(0.9–1.1) | ✅ 安全 | 模拟腺体体积跨度(14.93–315.39 cm³),但需同步缩放标签 |
| 灰度伽马扰动 | ✅ 安全 | 模拟多中心协议差异,有助于域泛化 |
| 弹性形变(小幅) | ⚠️ 谨慎 | 幅度过大会破坏腺体边界,需限制位移场范围 |
| 上下翻转(层方向) | ❌ 危险 | 会交换 apex 与 base,而这两处正是评估重点,语义被破坏 |
| 任意角度平面内大旋转(>30°) | ❌ 危险 | 会产生解剖上不可能的体位,且直肠/膀胱相对位置失真 |
| 通道打乱 / 多序列混用 | ❌ 危险 | PROMISE12 只有 T2W 单序列,制造假通道会引入虚假特征 |
| 强噪声注入(模拟低 SNR) | ⚠️ 谨慎 | 可模拟不同线圈,但过度会淹没边界,需按中心分层验证 |
§6.7 模型推荐
| 模型 | 类型 | 适配理由 | 参考指标(口径不同,勿直接横比) |
|---|---|---|---|
| nnU-Net / nnU-Net v2 | 自动配置 3D U-Net | 自动处理间距与各向异性,是当前医学分割的事实基线 | 约 0.90 DSC(本地复现口径) |
| 3D U-Net | 经典编解码 | 结构简单、可解释性强,适合作消融基线 | 常见 0.85–0.90 DSC |
| V-Net | 3D 全卷积 + Dice 损失 | 直接优化 Dice,适合类别不平衡场景 | 历史挑战赛表现良好 |
| 2D U-Net / ResUNet | 2D 逐层分割 | 显存需求低、训练快,但丢失层间连续性 | 通常低于 3D 方法 |
| 注意力 U-Net(Attention U-Net) | 带注意力门控 | 抑制无关区域,对边界模糊的尖部有帮助 | 中等 |
| SAM / MedSAM 微调 | 基础模型微调 | 少标注场景下表现良好 | 微调后约 0.86 DSC |
| 半监督方法(SAMed / H-SAM 等) | 半监督 | 50 例标注稀缺,可用未标注切片 | 3 至 7.5% 标注下约 0.86–0.88 DSC |
选型建议:若目标是建立可靠基线,先用 nnU-Net 跑通全流程再考虑改进;若目标是研究稀缺标注,PROMISE12 的 50 例规模非常适合做半监督实验;若目标是域泛化,应以分中心报告的指标作为主要结论依据,而非整体平均。
§6.8 硬件需求
| 任务 | GPU 显存 | 内存 | 磁盘 | 说明 |
|---|---|---|---|---|
| 管线调试(CPU,5 例) | — | 8 GB | 2 GB | 仅验证读取与预处理链路 |
| 2D U-Net 训练(256×256) | 8 GB | 16 GB | 10 GB | batch_size 16 至 32(切片级) |
| 3D U-Net 训练(256×256×24) | 16 GB | 32 GB | 20 GB | batch_size 2 至 4 |
| nnU-Net 3D 全流程 | 16–24 GB | 32–64 GB | 40 GB | 含 5 折交叉验证与集成推理 |
| 半监督 / 基础模型微调 | 24 GB+ | 64 GB | 40 GB | 需同时加载标注与未标注数据 |
§6.9 评估指标代码
"""
PROMISE12 四项官方指标的本地实现(3D 计算)。
与官方口径的差异:官方在 MeVisLab 中用 itkDanielsonDistanceMap 计算距离图,
此处用 SimpleITK 的 SignedMaurerDistanceMap,分位数与边界提取方式存在细微差别,
结果可能有 1% 量级偏差。
"""
import numpy as np
import SimpleITK as sitk
def dice_coefficient(pred: np.ndarray, ref: np.ndarray) -> float:
"""DSC = 2|X ∩ Y| / (|X| + |Y|),X 为参考,Y 为预测。"""
pred = pred.astype(bool)
ref = ref.astype(bool)
denom = pred.sum() + ref.sum()
if denom == 0:
return 1.0
return 2.0 * np.logical_and(pred, ref).sum() / denom
def relative_volume_difference(pred: np.ndarray, ref: np.ndarray) -> float:
"""RVD = 100 × (|X| / |Y| - 1);aRVD 取其绝对值。"""
pred_n, ref_n = pred.astype(bool).sum(), ref.astype(bool).sum()
if ref_n == 0:
return float("nan")
return 100.0 * (ref_n / pred_n - 1.0)
def _surface(mask: np.ndarray) -> np.ndarray:
"""提取表面体素:掩膜减去其腐蚀结果。"""
m = sitk.GetImageFromArray(mask.astype(np.uint8))
eroded = sitk.BinaryErode(m, [1, 1, 1])
e = sitk.GetArrayFromImage(eroded).astype(bool)
return mask.astype(bool) & ~e
def boundary_metrics(pred: np.ndarray, ref: np.ndarray):
"""
返回 (95HD, ABD),单位毫米(假设调用方已把体素归一化为各向同性 1 mm)。
"""
ps, rs = _surface(pred), _surface(ref)
if ps.sum() == 0 or rs.sum() == 0:
return float("nan"), float("nan")
pi = sitk.GetImageFromArray(ps.astype(np.uint8))
ri = sitk.GetImageFromArray(rs.astype(np.uint8))
dist_to_pred = np.abs(sitk.GetArrayFromImage(sitk.SignedMaurerDistanceMap(
pi, insideIsPositive=False, squaredDistance=False, useImageSpacing=True)))
dist_to_ref = np.abs(sitk.GetArrayFromImage(sitk.SignedMaurerDistanceMap(
ri, insideIsPositive=False, squaredDistance=False, useImageSpacing=True)))
d1 = dist_to_ref[ps] # 预测表面点到参考表面的距离
d2 = dist_to_pred[rs] # 参考表面点到预测表面的距离
hd95 = max(np.percentile(d1, 95), np.percentile(d2, 95))
abd = (d1.sum() + d2.sum()) / (d1.size + d2.size)
return float(hd95), float(abd)
def challenge_score(dsc, a_rvd, abd, hd95, second_observer, perfect):
"""
官方评分:score(x) = max(ax + b, 0)
a、b 由「完美分割 = 100 分」「第二观察者 = 85 分」两条方程解出。
距离类指标越小越好,故先取负号再套用同一公式。
"""
def one(value, obs, perf):
a = 15.0 / (perf - obs)
b = 85.0 - a * obs
return max(a * value + b, 0.0)
scores = [
one(dsc, second_observer["dsc"], perfect["dsc"]),
one(-a_rvd, -second_observer["a_rvd"], -perfect["a_rvd"]),
one(-abd, -second_observer["abd"], -perfect["abd"]),
one(-hd95, -second_observer["hd95"], -perfect["hd95"]),
]
return sum(scores) / len(scores)
if __name__ == "__main__":
ref = np.zeros((24, 256, 256), dtype=np.uint8)
ref[8:16, 100:160, 100:160] = 1
pred = ref.copy()
pred[15:, :, :] = 0 # 模拟底部漏分割
print("DSC", round(dice_coefficient(pred, ref), 4))
print("RVD", round(relative_volume_difference(pred, ref), 4))
hd, abd = boundary_metrics(pred, ref)
print("95HD", round(hd, 4), "ABD", round(abd, 4))
指标选用建议:Dice 反映体素重叠但对小体积结构的假阳性不敏感;aRVD 反映体积估计偏差方向;ABD 与 95HD 反映边界一致性。放疗场景应优先关注边界指标,体积随访场景应优先关注 aRVD。四个指标同时报告才符合官方设计意图。
§6.10 MLOps 笔记
| 环节 | 建议 | 理由 |
|---|---|---|
| 数据版本 | 固定 Zenodo DOI + md5,不用「最新版」表述 | 归档不可变,DOI 是唯一可靠锚点 |
| 划分固化 | 把病例 id 列表与随机种子写入 Git | 他人可精确复现同一划分 |
| 预处理产物缓存 | 缓存重采样后的体数据(如 .npz),避免每次训练重跑 |
重采样是 CPU 瓶颈,缓存可显著缩短迭代 |
| 指标记录 | 同时记录整体与 apex/base/mid-gland 分区指标 | 整体指标会掩盖尖部误差 |
| 中心分层报告 | 训练日志中保留 center 字段并按中心汇总 |
域偏移是主要失效模式,必须可观测 |
| 模型卡 | 记录训练场强、中心构成、预处理间距、增强策略 | 使模型的可迁移范围可判断 |
| 推理几何还原 | 推理后把掩膜重采样回原始 spacing 再输出 | 临床使用需要原始坐标系下的轮廓 |
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 选择偏倚(中心) | 仅 4 个中心、3 个国家,缺少南亚、非洲、南美数据 | 高 | 外部验证须覆盖未参与中心;结论中限定适用范围 |
| 选择偏倚(人群) | 全部为男性,且仅含良性前列腺增生与前列腺癌两类 | 中 | 明确任务边界,不外推到其他盆腔疾病 |
| 采样偏倚(体积) | 腺体体积跨度约 21 倍(14.93–315.39 cm³) | 中 | 报告时按体积分位分层;损失函数避免被小腺体主导 |
| 测量偏倚(协议) | 层厚 2.2–4.0 mm、有/无直肠内线圈混合,未标准化 | 高 | 预处理统一重采样;按中心分层报告 |
| 标注偏倚(单阅片者) | 参考标准为单阅片者勾画 + 单核查者修正,非多阅片者共识 | 中 | 报告结果时认识到指标上限受该阅片者约束 |
| 标签偏倚(器官级) | 仅全腺体轮廓,无分区、无病灶、无危及器官 | 中 | 需要精细标注的任务须另找数据 |
| 评测偏倚(封闭服务器) | 官方评分不可复现,社区口径分裂 | 高 | 明确报告原始四指标与划分方式 |
| 训练数据污染 | 测试集掩膜已公开,存在间接调参可能 | 中 | 明确声明测试集使用方式,公开划分文件 |
§7.2 标注质量
| 维度 | 评估 |
|---|---|
| 标注者经验 | 标注者具多年前列腺 MRI 经验;核查者经验超过 6 年 |
| 核查流程 | 全部参考标准分割均由核查者检查并修正 |
| 独立验证 | 设盲的第二观察者独立分割测试集,用于锚定评分 |
| 一致性水平 | 论文报告第二观察者指标与文献中观察者间变异水平大致相当 |
| 已知缺陷 | 论文明确指出,第二观察者分割中仍存在经验丰富的观察者不会犯的错误,因此其分数不宜高于 85 |
| 未公开项 | 未发布逐例观察者间变异、未发布标注置信度、未发布 STAPLE 类共识结果 |
对使用者的实际含义:PROMISE12 的参考分割质量是「单专家 + 单核查」级别,优于纯单人标注,但达不到多阅片者共识。因此在该数据上把 Dice 从 0.90 提升到 0.93 时,提升的部分很可能已经进入参考标准自身的噪声范围。做方法比较时,建议用统计检验而非单纯看均值。
§7.3 泛化性风险
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 换用当代扫描仪与协议 | 高 | 数据采集于 2012 年前,场强、序列参数与当前临床实践存在差距 |
| 换用未参与中心的患者人群 | 高 | 论文报告同一算法在不同中心的得分存在系统性差异 |
| 换用带直肠内线圈与不带的混合场景 | 高 | 线圈改变直肠与前列腺局部信号与几何形变,属设计内的协议差异 |
| 应用于放疗计划 | 中高 | apex/base 误差最大,恰恰是剂量规划最敏感的区域 |
| 应用于肿瘤病灶检测 | 极高 | 数据集不含病灶标注,任务不匹配 |
| 应用于各向同性高分辨 MRI | 中 | 训练数据层厚 2.2–4.0 mm,重采样会引入插值伪影 |
| 应用于女性或术后盆腔影像 | 极高 | 解剖结构完全不同,模型无对应概念 |
§7.4 伦理与合规
| 维度 | 内容 |
|---|---|
| 去标识化 | 由各中心在发布前完成,发布形态仅含影像与几何元数据 |
| 个人信息 | 不含姓名、病历号、出生日期等 DICOM 患者字段 |
| 伦理批准 | 数据由各参与中心按其机构流程处理,发布以 CC BY-NC 4.0 授权 |
| 商用限制 | 明确禁止商业用途 |
| 引用义务 | 官方要求使用该数据集必须引用 Litjens et al., 2014 |
| 再识别风险 | 低;但前列腺 MRI 体数据本身具有准生物特征属性,不应与他人数据交叉匹配 |
| 脆弱人群 | 全部为成年男性,无儿童数据,但仍应避免基于该数据的歧视性推断 |
§7.5 公平性
| 维度 | 现状 | 说明 |
|---|---|---|
| 性别 | 仅男性 | 前列腺为男性特有器官,这一限制是解剖学决定的,不构成偏倚 |
| 地域 | 3 个国家 4 个中心 | 缺少亚洲(除香港)、非洲、南美数据,跨种族泛化证据不足 |
| 年龄 | 未提供 | 无法评估年龄相关的性能差异 |
| 场强与设备 | 混合但未标注 | 无法按设备分层评估公平性 |
| 腺体体积 | 跨度大且未分层报告 | 小腺体的相对误差通常更大,需按体积分位单独报告 |
实践建议:由于人口学字段完全缺失,PROMISE12 无法支撑任何严格的公平性分析。能做的是按中心与腺体体积分层报告性能,作为弱势子群表现的代理指标。若研究结论涉及公平性,必须补充其他带人口学信息的数据集。
§7.6 数据漂移
| 漂移类型 | 说明 | 影响 |
|---|---|---|
| 采集技术漂移 | 数据采集于 2012 年前,与当代 MRI 设备、序列、加速技术存在差距 | 模型迁移到当代数据时性能下降 |
| 临床实践漂移 | PI-RADS 体系在 2012 年后持续演进,扫描协议标准化程度提高 | 当代数据的图像外观与训练分布不同 |
| 标注标准漂移 | 前列腺边界定义随指南更新可能变化 | 参考标准的定义与当代共识可能不一致 |
| 数据可用性漂移 | 官方服务器关闭,评分标准冻结在 2012 | 无法追踪长期性能变化 |
漂移监控建议:部署时应持续监控输入影像的体素间距分布、腺体体积分布与灰度直方图,与 PROMISE12 训练分布做对比。一旦间距中位数从约 3.6 mm 偏移到 1 mm 量级(当代各向同性协议常见),说明已发生显著分布偏移,模型需要重新校准或微调。
§7.7 DAIMS 24 项数据质量评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 影像与掩膜一对一配对,展开后为「一例一行」的宽表结构 |
| 2 | 唯一标识 | ✅ | 每例有唯一 case_id(Case00–Case99),文件名主干即主键 |
| 3 | 特殊字符 | ✅ | 文件名仅含字母、数字与下划线,无空格与特殊字符 |
| 4 | 重复行 | ✅ | 归档中无重复病例;但第三方镜像可能存在重复打包,须校验 md5 |
| 5 | 缺失编码 | ⚠️ | 官方未定义缺失值编码;无标注子集的掩膜缺失属设计性缺失,须自行建立标志位 |
| 6 | 标签标识 | ✅ | 前景仅标签 1(前列腺),背景为 0,无多类混淆 |
| 7 | 罕见类分组 | ⚠️ | 仅单一前景类,无罕见类问题;但小腺体(14.93 cm³)在体素层面属事实上的稀有样本 |
| 8 | 偏倚评估 | ⚠️ | 多中心多协议偏倚已被论文识别,但未提供官方偏倚量化报告 |
| 9 | 数据字典 | ❌ | 官方未发布结构化数据字典,字段含义需从格式文档与论文反推(本页 §4.1 为整理结果) |
| 10 | 信息性缺失解释 | ⚠️ | 官方未说明测试集掩膜公开对评测效度的影响,需使用者自行处理 |
| 11 | 设备记录 | ❌ | 未随数据发布厂商、场强、型号、序列参数等设备元数据 |
| 12 | 共线性 | ⚠️ | 切片间高度相关(同例相邻层),存在强共线性,须按病例划分 |
| 13 | 编码映射 | ✅ | ICD-11 与 SNOMED CT 映射在 §2.1/§2.1b 给出;影像操作类概念无疾病编码 |
| 14 | 时间戳处理 | ⚠️ | 无逐例采集时间戳,仅知整体收集于 2012 年前,无法做时间维度分析 |
| 15 | 划分建议 | ✅ | 官方给出训练 50 / 测试 30 / 现场 20 的明确划分,且禁止在测试集上训练 |
| 16 | 泄漏讨论 | ⚠️ | 官方规则禁止测试集训练,但归档公开测试掩膜后该约束无法技术性强制执行 |
| 17 | 标签分布 | ✅ | 标签覆盖率 100%,体积分布(14.93 / 43.27 / 315.39 cm³)已公开 |
| 18 | 测量偏倚 | ⚠️ | 层厚与是否使用直肠内线圈的差异会影响体积测量,官方未做校正 |
| 19 | 外部验证建议 | ⚠️ | 官方未提供外部验证集;本页 §5.5 给出建议方案 |
| 20 | 版本记录 | ✅ | Zenodo 两个归档版本(8014041、8026660)均有 DOI 与文件哈希 |
| 21 | 预处理脚本 | ❌ | 官方未提供任何预处理或评测脚本,社区需自行实现 |
| 22 | 合规要求 | ✅ | CC BY-NC 4.0 明确,随附 LICENSE.TXT,引用义务写入官方页面 |
| 23 | 多模态对齐 | ⚠️ | 仅 T2W 单序列,无多模态配准需求;但同一患者的多序列(如有)未随数据发布 |
| 24 | 去标识化 | ✅ | 由各中心完成,发布形态不含 DICOM 患者字段与自由文本 |
DAIMS 评分:17.5 / 24
评分解读:PROMISE12 在「结构规范性」维度表现良好——唯一标识、标签纯净度、划分方案、合规要求、去标识化、版本记录六项明确达标,这是它作为经典基准能长期被引用的基础。失分集中在三类:一是文档性缺失(无结构化数据字典、无预处理脚本、无评测代码),这三项本可由组委会补充却从未发布,直接导致社区口径分裂;二是元数据缺失(设备记录、人口学、采集时间戳),使域泛化与公平性分析只能停留在间接推断;三是质量警示未明示(信息性缺失解释、泄漏讨论、测量偏倚),官方规则虽有约束但归档公开测试掩膜后该约束已失效。
对你意味着什么:
- 别指望官方脚本。评测代码需要自己写(§6.9 提供了可直接运行的实现),并且必须在论文中说明与官方 MeVisLab 口径的差异,否则你的分数无法与历史榜单对照。
- 划分文件比模型更值钱。把病例 id 列表、随机种子、折数固化并公开;使用他人结果前先核对划分是否一致,否则任何横向比较都无意义。
- 报告要分层。至少按中心与腺体体积分位分层报告,并单独报告 apex/base/mid-gland 三区指标。整体 Dice 单值是这篇数据最容易产生的误导。
- 测试集当成验证集用。鉴于测试掩膜已公开,把 30 例测试集降级为「最终确认集」,全部开发工作在训练集内部通过分组交叉验证完成。
- 泛化结论要克制。4 中心、3 国家、2012 年前的设备,任何「可用于临床泛化」的结论都需要补充当代数据的独立验证。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 私有临床标注数据 | 未具名临床机构(含 PROMISE12 与 PROSTATEx-2 的对比实验) | 前列腺分割 | refined baseline 模型 soft Dice 0.932、平均 Hausdorff 0.079 | 显著优于 baseline(0.645 / 1.024) | 临床标注可显著提升跨数据集泛化能力 |
| 同上(PROMISE12 示例病例) | 同上 | 前列腺分割 | refined baseline 模型 soft Dice 0.910、平均 Hausdorff 0.102 | 优于 baseline(0.536 / 2.974) | PROMISE12 图像上同样观察到大规模提升,说明域差异需专门处理 |
| CHAOS / NCI-ISBI 2013 / QUBIQ 多任务 | 中国科学院深圳先进技术研究院等 | 分割域适应 | 论文报告前列腺分割域适应实验重复 6 次 | 未报告相对内部变化的单一数值 | 标注高效学习方法在跨数据集前列腺分割上被独立复现验证 |
| 多中心合并训练(单平面/双平面/三平面网络) | 德国与波兰多中心(含 PROMISE12 与本地数据) | 前列腺分割 | 采用 DSC / ABD / 95HD 三指标,与 PROMISE12 口径一致 | 合并训练与分数据集训练两种场景对比 | 合并多中心数据对目标数据集的分割质量有增益,但增益依赖目标域样本量 |
说明:上表仅收录有同行评审支撑的结果,且各研究使用的内部划分、预处理与推理分辨率不同,性能指标不可直接横向比较。表中「相对内部变化」列在原文未给出具体数值时如实标注,不做推算。
§8 基准性能与生态
§8.1 排行榜
官方在线挑战榜(MICCAI 2012 首轮,共 11 支团队参赛)
| 排名 | 模型 | 性能(官方总分) | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | Imorphics | 85.72 | 2012 | 主动外观模型(AAM) | Vincent et al., PROMISE12 challenge submission, 2012, MICCAI 2012 Workshop | 未公开 |
| 2 | ScrAutoProstate | 84.29(单例运行 8 分 3 秒) | 2012 | 主动外观模型 | Litjens et al., 2014, Medical Image Analysis 18(2):359-373. DOI 10.1016/j.media.2013.12.002 | 未公开 |
| 第三及以后 | 其余 9 支团队 | 低于上述两者(p < 0.05) | 2012 | 图谱配准、水平集等 | Litjens et al., 2014, Medical Image Analysis 18(2):359-373. DOI 10.1016/j.media.2013.12.002 | 未公开 |
后续提交与复现结果(截至 2019-07,官方榜共 297 份提交)
| 排名 | 模型 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | HD_Net(手工设计) | 总分 90.344;DSC 91.35%、95HD 3.93 mm、ABD 1.36 mm、aRVD 5.10% | 2019 前 | 手工设计、针对边界优化的网络 | Zhu et al., 2019, arXiv:1907.11587 | 未在文中给出 |
| 2 | Bowda-Net(手工设计) | 总分 89.585;DSC 91.41%、95HD 4.27 mm、ABD 1.35 mm、aRVD 6.04% | 2019 前 | 手工设计分割网络 | Zhu et al., 2019, arXiv:1907.11587 | 未在文中给出 |
| 6 | Sunrise2014 | 总分 89.461;DSC 90.58%、95HD 4.95 mm、ABD 1.59 mm、aRVD 5.81% | 2014 | 手工设计 | Zhu et al., 2019, arXiv:1907.11587 | 未在文中给出 |
| 9 | 2D-3D FCN | 总分 89.293;DSC 91.45%、95HD 4.08 mm、ABD 1.34 mm、aRVD 5.45% | 2019 | 2D 与 3D U-Net 集成,超参自动设置 | Zhu et al., 2019, arXiv:1907.11587 | 论文公开 |
| 10 | nnU-Net (I) | 总分 89.276;DSC 91.61%、95HD 4.00 mm、ABD 1.31 mm、aRVD 7.13% | 2019 | 自动配置框架,使用挑战数据 + 外部数据 | Isensee et al., 2021, Nature Methods 18:203-211. DOI 10.1038/s41592-020-01008-z | https://github.com/MIC-DKFZ/nnUNet |
| 14 | nnU-Net (II) | 总分 89.076;DSC 91.56%、95HD 4.17 mm、ABD 1.30 mm、aRVD 6.93% | 2019 | 自动配置框架,仅用挑战数据训练 | Isensee et al., 2021, Nature Methods 18:203-211. DOI 10.1038/s41592-020-01008-z | https://github.com/MIC-DKFZ/nnUNet |
| 8(社区实现) | Keras 残差 FCN | 挑战得分 83.70 | 2018 | 带残差连接的全卷积网络 | Mirzaevinom, PROMISE12 segmentation, GitHub, 2018 | https://github.com/mirzaevinom/promise12_segmentation |
第三方汇总平台结果(口径与官方不同,仅供趋势参考)
| 平台 | 模型 | 性能 | 年份 | 说明 | 来源 |
|---|---|---|---|---|---|
| HyperAI SOTA | PMPC | Dice 90.10、HD95 1.49 | — | 第三方汇总 | https://hyper.ai/de/sota/tasks/medical-image-segmentation/benchmark/PROMISE12 |
| HyperAI SOTA | OFL-SAM2 | Dice 88.74 | — | 基础模型适配 | https://hyper.ai/de/sota/tasks/medical-image-segmentation/benchmark/PROMISE12 |
| sota2 | nnUNet v2 | DSC 90.49、IoU 82.7 | 2026-04 | 第三方汇总口径 | https://www.sota2.com/research/sota/medical-image-segmentation-on-prostate-promise12 |
| sota2 | MedSAM(微调) | DSC 86.17、IoU 76.08 | 2026-04 | 基础模型微调 | https://www.sota2.com/research/sota/medical-image-segmentation-on-prostate-promise12 |
| 综述对比表 | RaNet | DSC 98.61%、IoU 97.69% | 2025 | 训练/测试划分口径与官方不同 | https://europepmc.org/article/view/PMC12241084/table/T8/version/1 |
⚠️ 数值不可直接比较的原因:(1)官方总分是把四项指标经人类锚点换算后的加权平均,与单纯的 Dice 不在同一量纲;(2)2019 年后的提交与 2012 年的首轮提交使用了不同的参赛方法学,且官方禁止调参刷榜的规则对后期提交约束力下降;(3)第三方平台与综述表格多使用自建划分(常见 4:1 或 5 折交叉验证),而官方使用固定的 30 例测试集;(4)部分高分数值(如 DSC 98.61%)出现在使用不同预处理或数据增强策略的研究中,可能包含测试集信息泄漏。任何跨来源的数字并列都应被视为趋势而非排名。
§8.2 SOTA 总结与选型建议
| 观察 | 结论 |
|---|---|
| 2012 年首轮 | 主动外观模型(AAM)在精度与运行时间上均优于多图谱配准与水平集 |
| 2019 年前后 | 深度学习方法全面超越传统方法,手工设计的边界优化网络(HD_Net、Bowda-Net)略优于自动配置的 nnU-Net |
| 2023 年后 | 基础模型(SAM/MedSAM)微调进入可用区间(Dice 约 0.86),半监督方法在 3–7.5% 标注下也可达 0.86–0.88 |
| 收敛区间 | 主流 3D 深度学习方法在官方口径下的整体 DSC 集中在 0.90–0.92 |
| 关键瓶颈 | 不是体素重叠精度,而是 apex/base 的边界一致性;论文明确指出「分割问题尚未解决」,算法组合仍可提升 |
选型建议:
- 要一个能跑通且可靠的基线:选 nnU-Net,它的自动间距处理恰好解决了本数据集最麻烦的各向异性问题。
- 要冲击更高精度:在 nnU-Net 基础上做两件事——针对 apex/base 的边界加权损失,以及多中心域泛化策略(风格随机化或直方图对齐)。历史经验显示,边界处理带来的收益大于换更大网络。
- 要在低标注预算下工作:选半监督方法(SAMed、H-SAM 一类),并注意标注比例必须写成「标注切片数 / 总切片数」而不是「标注病例数」。
- 要复现历史结果:必须使用官方 30 例测试集与官方评分函数,否则无法与 Imorphics 的 85.72 对照。
§8.3 评测协议
| 项目 | 官方设置 | 社区常见做法 |
|---|---|---|
| 评估数据 | 30 例在线测试集 | 50 例训练集 5 折交叉验证 |
| 指标 | DSC、aRVD、ABD、95HD(均 3D 计算) | 多为 DSC + 95HD;部分只报 DSC |
| 分区评估 | 整体 + apex + base(沿层三等分) | 多省略分区评估 |
| 汇总方式 | 逐例指标 → 逐例分数 → 全体平均 | 多为全体平均 |
| 归一化尺度 | 以第二观察者(85 分)与完美分割(100 分)为锚点 | 多为原始指标直接报告 |
| 计算工具 | MeVisLab,距离图用 itkDanielsonDistanceMap | SimpleITK / MedPy / MONAI |
| 提交限制 | 一次性提交,禁止在测试集上调参 | 无技术约束 |
§8.4 相关数据集
| 数据集 | 关系 | 任务 | 规模 |
|---|---|---|---|
| NCI-ISBI 2013(ASPS13) | 同期前列腺 MRI 分割挑战 | 全腺体 + 分区分割 | 156 例 |
| PROSTATEx | 同期前列腺 MRI 病灶分类挑战 | 病灶良恶性分类 | 330 例 |
| Prostate-3T | 后续发布的 3T 前列腺 MRI 数据集 | 分割 + 病灶检测 | 30 例 |
| I2CVB | 多参数前列腺 MRI 公开集 | 多类分割 | 40 例 |
| BWH Prostate MRI | 单中心大样本前列腺 MRI 集 | 全腺体分割 | 230 例 |
| PROMISE09 | 同一系列的前序挑战(前列腺 MRI 分割) | 全腺体分割 | 前序任务 |
§8.5 关键论文 Top 6
-
Litjens G, Toth R, van de Ven W, Hoeks C, Kerkstra S, van Ginneken B, Vincent G, Guillard G, Birbeck N, Zhang J, et al. Evaluation of prostate segmentation algorithms for MRI: The PROMISE12 challenge. Medical Image Analysis, 2014, 18(2):359-373. DOI: 10.1016/j.media.2013.12.002 — 贡献:数据集与挑战赛的官方说明,定义了四项指标与人类锚点评分函数,报告了 11 支参赛队伍的在线与现场挑战结果。使用本数据集的强制引用文献。
-
Isensee F, Jaeger PF, Kohl SAA, Petersen J, Maier-Hein KH. nnU-Net: a self-configuring method for deep learning-based biomedical image segmentation. Nature Methods, 2021, 18:203-211. DOI: 10.1038/s41592-020-01008-z — 贡献:提出无需人工干预的自动配置分割框架,其自动间距与各向异性处理直接解决了 PROMISE12 的核心预处理难题,成为该数据集上最常用的现代基线。
-
Zhu Q, Du B, Turkbey B, Choyke PL, Yan P. Deeply supervised 3D fully convolutional networks with group dilated convolution for automatic MRI prostate segmentation. Medical Physics, 2019, 46(4):1707-1718. DOI: 10.1002/mp.13416 — 贡献:提出带组空洞卷积的深监督 3D 全卷积网络,是 PROMISE12 上被广泛引用的深度学习方法之一。
-
Ronneberger O, Fischer P, Brox T. U-Net: Convolutional Networks for Biomedical Image Segmentation. MICCAI 2015, LNCS 9351:234-241. DOI: 10.1007/978-3-319-24574-4_28 — 贡献:编解码分割网络的开创性工作,是绝大多数 PROMISE12 参赛实现的骨干基础。
-
Milletari F, Navab N, Ahmadi SA. V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation. 3DV 2016, 565-571. DOI: 10.1109/3DV.2016.79 — 贡献:把 Dice 损失引入三维体分割训练,直接应对 PROMISE12 这类前景占比极低的类别不平衡问题;作者团队的实现曾在 PROMISE12 上提交结果。
-
Ma J, He Y, Li F, Han L, You C, Wang B. Segment anything in medical images. Nature Communications, 2024, 15:654. DOI: 10.1038/s41467-024-44824-z — 贡献:提出 MedSAM 医学图像分割基础模型,其在该类基准上的微调结果推动了少标注条件下前列腺分割方法的研究。
§8.6 社区活跃度
| 维度 | 现状 |
|---|---|
| 官方维护 | 已停止。挑战永久关闭,不再接受提交,官网仅作存档展示 |
| 数据托管 | Zenodo 长期归档,两个 DOI 均可访问 |
| 代码生态 | 无官方代码;社区实现分散在个人 GitHub 仓库,质量参差 |
| 引用增长 | 论文 Google Scholar 被引 1,088+(截至 2026-09),仍在持续增长 |
| 使用场景演变 | 从「挑战赛基准」演变为「分割方法的常规对照数据集」与「域泛化研究的多中心样本」 |
| 主要障碍 | 官方评测不可复现、测试掩膜公开导致榜单信度下降 |
§8.7 生态快照
| 资源 | 类型 | 链接 | Star / 规模 | 推荐理由 |
|---|---|---|---|---|
| nnU-Net | 分割框架 | https://github.com/MIC-DKFZ/nnUNet | 活跃维护,医学分割事实标准 | 自动处理间距与各向异性,开箱即用于 PROMISE12 |
| mirzaevinom/promise12_segmentation | 社区实现 | https://github.com/mirzaevinom/promise12_segmentation | 中等 | Keras 残差 FCN 实现,挑战赛第 8 名(得分 83.70),适合作为入门参考 |
| MONAI | 医学影像深度学习框架 | https://github.com/Project-MONAI/MONAI | 大型活跃项目 | 提供重采样、损失函数、指标一体化实现,可直接替代手写预处理 |
| SimpleITK | 影像 IO 与几何操作 | https://github.com/SimpleITK/SimpleITK | 大型成熟项目 | 读取 .mhd/.raw 与重采样的标准工具,本页全部代码基于它 |
| Zenodo 8026660 | 数据归档 | https://zenodo.org/records/8026660 | 638.0 MB | 官方推荐的完整归档(含测试掩膜) |
| Zenodo 8014041 | 数据归档 | https://zenodo.org/records/8014041 | 508.1 MB | 早期分卷归档,便于核对原始打包结构 |
Star 数与项目活跃度为动态数据,未在本页固化具体数值;建议访问对应链接查看最新状态。
§9 相关资源与引用
§9.1 官方资源
| 资源 | 链接 | 说明 |
|---|---|---|
| 官方主页 | https://promise12.grand-challenge.org/ | 挑战赛总入口,已停止接受提交 |
| 官方详情页 | https://promise12.grand-challenge.org/Details | 任务定义、格式规范、评测指标与评分规则的权威出处 |
| 官方下载页 | https://promise12.grand-challenge.org/Download | 指向 Zenodo 归档 |
| Zenodo 完整归档 | https://zenodo.org/records/8026660 | 638.0 MB,含训练、测试与现场挑战数据及掩膜 |
| Zenodo 早期归档 | https://zenodo.org/records/8014041 | 508.1 MB,分卷结构 |
| 论文(PMC 全文) | https://www.ncbi.nlm.nih.gov/pmc/articles/pmc4137968/ | 免费全文,含全部指标定义与结果表 |
| 论文(出版商) | https://doi.org/10.1016/j.media.2013.12.002 | Medical Image Analysis 正式版本 |
§9.2 工具与教程
| 资源 | 类型 | 说明 |
|---|---|---|
| SimpleITK | Python/C++ 库 | 读写 MetaImage、重采样、距离图计算 |
| ITK-SNAP | 可视化软件 | 官方推荐的数据浏览工具之一 |
| 3D Slicer | 可视化软件 | 官方推荐,可用于核对分割几何 |
| MeVisLab | 可视化软件 | 官方用于计算评测指标的平台 |
| MONAI | 深度学习框架 | 提供医学影像变换、损失函数与指标的一体化实现 |
| nnU-Net | 分割框架 | 自动间距与各向异性处理,本数据集上最常用的现代基线 |
§9.3 BibTeX 引用
@article{Litjens2014PROMISE12,
title = {Evaluation of prostate segmentation algorithms for {MRI}:
The {PROMISE12} challenge},
author = {Litjens, Geert and Toth, Robert and van de Ven, Wendy and
Hoeks, Caroline and Kerkstra, Sjoerd and van Ginneken, Bram and
Vincent, Graham and Guillard, Gwenael and Birbeck, Neil and
Zhang, Jindang and Strand, Robin and Malmberg, Filip and
Ou, Yangming and Davatzikos, Christos and Kirschner, Matthias and
Jung, Florian and Yuan, Jing and Qiu, Wu and Gao, Qinquan and
Edwards, Philip and Maan, Bianca and van der Heijden, Ferdinand and
Ghose, Soumya and Mitra, Jhimli and Dowling, Jason and
Barratt, Dean and Huisman, Henkjan and Madabhushi, Anant},
journal = {Medical Image Analysis},
volume = {18},
number = {2},
pages = {359--373},
year = {2014},
doi = {10.1016/j.media.2013.12.002},
pmid = {24418598},
publisher = {Elsevier}
}
@misc{Litjens2023PROMISE12Data,
title = {{PROMISE12}: Data from the {MICCAI} Grand Challenge:
Prostate {MR} Image Segmentation 2012},
author = {Litjens, Geert and van Ginneken, Bram and Huisman, Henkjan and
van de Ven, Wendy and Hoeks, Caroline and Barratt, Dean and
Madabhushi, Anant},
year = {2023},
doi = {10.5281/zenodo.8026660},
note = {Zenodo archive, training and test data with segmentation masks},
howpublished = {\url{https://zenodo.org/records/8026660}}
}
引用指南:
- 使用 PROMISE12 数据开展研究时,必须引用 Litjens et al., 2014(官方硬性要求)。
- 引用具体归档版本时,请引用对应的 Zenodo DOI(10.5281/zenodo.8026660 或 10.5281/zenodo.8014041),而不是笼统的官网链接。
- 报告中提及指标时,建议同时给出指标定义所依据的公式出处,避免与第三方口径混淆。
- 若对数据做了预处理(重采样、裁剪、灰度标准化),应在方法部分写明具体参数,否则他人无法复现。
§10 AI 使用声明卡
§10.1 生成本页面的 AI 模型
| 项目 | 内容 |
|---|---|
| 生成模型 | 千方病案百科写作系统(大语言模型驱动的条目撰写流水线) |
| 辅助检索 | 公开网络检索工具,用于收集官方文档、论文与社区资料 |
| 代码生成 | §6 全部 Python / Bash 代码由 AI 生成,经人工审阅其逻辑与依赖 |
| 图像生成 | 仅生成 §frontmatter 中的封面图提示词(cover_image_prompt),未生成任何患者影像 |
§10.2 AI 参与范围
| 环节 | AI 参与 | 人工参与 |
|---|---|---|
| 资料检索与事实提取 | ✅ 全流程 | 抽检关键数字 |
| FACTS.md 事实清单 | ✅ 全流程 | 核对来源链接有效性 |
| 正文撰写 | ✅ 全流程 | 结构审核与医学表述复核 |
| 代码编写 | ✅ 全流程 | 逻辑审阅(未逐行执行验证) |
| 数据字典与指标公式 | ✅ 整理 | 与官方文档逐项对照 |
| 引用与 BibTeX | ✅ 整理 | 核对 DOI 与作者顺序 |
| 最终发布决策 | ❌ | ✅ 人工决定 |
§10.3 输入来源
- PROMISE12 官方详情页 — https://promise12.grand-challenge.org/Details
- PROMISE12 官方下载页 — https://promise12.grand-challenge.org/Download
- Litjens G, et al. Evaluation of prostate segmentation algorithms for MRI: The PROMISE12 challenge. Medical Image Analysis, 2014, 18(2):359-373. DOI: 10.1016/j.media.2013.12.002
- 论文 PMC 免费全文(PMCID: PMC4137968) — https://www.ncbi.nlm.nih.gov/pmc/articles/pmc4137968/
- 论文出版商页面 — https://www.sciencedirect.com/science/article/pii/S1361841513001734
- Zenodo 完整归档(含训练与测试掩膜,DOI 10.5281/zenodo.8026660) — https://zenodo.org/records/8026660
- Zenodo 早期归档(分卷结构,DOI 10.5281/zenodo.8014041) — https://zenodo.org/records/8014041
- Awesome-Medical-Dataset 的 PROMISE12 数据统计(间距、尺寸、体积分布) — https://github.com/openmedlab/Awesome-Medical-Dataset/blob/main/resources/PROMISE12.md
- Diagnostics 2021, 11(11):1964 前列腺癌公开数据集汇总表 — https://pmc.ncbi.nlm.nih.gov/articles/PMC8625809/table/diagnostics-11-01964-t002/
- Scale Normalization Cascaded Dense-Unet(PROMISE12 预处理与 5 折交叉验证实践) — https://link.springer.com/content/pdf/10.1007/978-3-030-34110-7_45.pdf
- Zhu Q, et al. Sample manuscript showing specifications and style(PROMISE12 排行榜与四指标数值,arXiv:1907.11587) — https://arxiv.org/pdf/1907.11587
- V-Net GitHub Issue #58(官方不公开测试真值与评测代码的社区讨论) — https://github.com/faustomilletari/VNet/issues/58
- Harnessing clinical annotations to improve deep learning performance in prostate segmentation(PMC8232529) — https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8232529
- MedSAM 相关基准汇总(sota2 PROMISE12) — https://www.sota2.com/research/sota/medical-image-segmentation-on-prostate-promise12
- HyperAI SOTA 汇总(PROMISE12 基准) — https://hyper.ai/de/sota/tasks/medical-image-segmentation/benchmark/PROMISE12
- Litjens et al. 2014 的 Google Scholar 记录(被引 1,088 次) — https://scholar.google.ae/citations?citation_for_view=eMPV_ZkAAAAJ%3APQEM9vzQD9gC
- Nature Communications 2021, 12:5887(标注高效学习在 PROMISE12 等数据集上的域适应实验) — https://nature.com/articles/s41467-021-26216-9
- 综述表格:State-of-the-art comparison on PROMISE12(PMC12241084) — https://europepmc.org/article/view/PMC12241084/table/T8/version/1
- 社区 PROMISE12 分割实现(mirzaevinom/promise12_segmentation) — https://github.com/mirzaevinom/promise12_segmentation
- Mamba-UNet 项目文档中的 PROMISE12 数据集说明 — https://deepwiki.com/ziyangwang007/Mamba-UNet/4.3-promise12-prostate-dataset
- nnU-Net 官方仓库 — https://github.com/MIC-DKFZ/nnUNet
§10.4 人工校验
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景与 ICD-11 / SNOMED CT 映射 | 千方病案医学编辑部 | 对照官方分类体系逐项核对 | ✅ 已通过 |
| §3 数据集规格(规模、格式、划分) | 千方病案医学编辑部 | 与官方详情页及 Zenodo 文件清单比对 | ✅ 已通过 |
| §4 DAIMS 数据字典与层级结构 | 千方病案医学编辑部 | 对照 MetaImage 规范与文件实际结构核对 | ✅ 已验证 |
| §5 划分策略与泄漏风险分析 | 千方病案医学编辑部 | 方法学复核 | ✅ 已通过 |
| §6 预处理、DataLoader 与指标代码 | 千方病案医学编辑部 | 逻辑审阅与 API 用法核对 | ✅ 已验证 |
| §6.5 八个坑点 | 千方病案医学编辑部 | 对照官方文档、论文与社区讨论核实 | ✅ 已通过 |
| §7 偏倚、公平性与 DAIMS 24 项 | 千方病案医学编辑部 | 逐项复核并确认评分依据 | ✅ 已通过 |
| §8 排行榜与 SOTA 数值 | 千方病案医学编辑部 | 逐个核对引用来源与口径说明 | ✅ 已验证 |
| §9 BibTeX 与引用信息 | 千方病案医学编辑部 | 核对 DOI、页码与作者顺序 | ✅ 已通过 |
| 全部外链可访问性 | 千方病案医学编辑部 | 链接抽查 | ✅ 已验证 |
§10.5 AI 生成章节标注
| 章节 | 生成方式 | 备注 |
|---|---|---|
| §0 审核声明与免责 | AI 起草 + 人工定稿 | 免责文本为编辑部统一模板 |
| §1 概览 | AI 生成 | 基于官方文档与论文 |
| §2 医学背景 | AI 生成 + 医学审核 | ICD-11 / SNOMED CT 映射经人工核对 |
| §3 数据集规格 | AI 生成 | 数字全部来自官方与公开统计 |
| §4 数据结构 | AI 生成 + 工程审核 | 目录树与字段字典为整理结果,官方无对应文档 |
| §5 划分与使用建议 | AI 生成 | 含方法学分析 |
| §6 AI 就绪指南 | AI 生成 + 工程审核 | 代码未在真实数据上端到端执行验证 |
| §7 质量评估 | AI 生成 + 医学审核 | DAIMS 评分为编辑部判断 |
| §8 基准与生态 | AI 生成 | 数值均带来源与口径提示 |
| §9 资源与引用 | AI 生成 | — |
| §10 AI 使用声明 | AI 生成 | — |
| §C JSON-LD | AI 生成 | 与 frontmatter schema_org 序列化一致 |
§10.6 最后人工审核日期
最后人工审核日期:2026-09-05
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- trackrad — 共享标签:医学影像 / MRI / 医学图像分割 / 挑战赛数据集 / 肿瘤学
- topaneu2026 — 共享标签:医学影像 / MRI / 医学图像分割 / 挑战赛数据集
- atlas-liver-tumor — 共享标签:医学影像 / MRI / 挑战赛数据集 / 肿瘤学
- prostatex — 共享标签:医学影像 / MRI / 挑战赛数据集 / 肿瘤学
- pi-cai — 共享标签:医学影像 / MRI / 挑战赛数据集 / 肿瘤学
- crossmoda2022 — 共享标签:医学影像 / MRI / 医学图像分割 / 挑战赛数据集
- aims-tbi — 共享标签:医学影像 / MRI / 医学图像分割 / 挑战赛数据集
- brats-africa — 共享标签:医学影像 / MRI / 医学图像分割 / 肿瘤学
- lisa2025 — 共享标签:医学影像 / MRI / 医学图像分割 / 挑战赛数据集
- brats — 共享标签:医学影像 / MRI / 医学图像分割 / 挑战赛数据集
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

