信息速览

PENGWIN — 骨盆骨折碎片实例分割基准数据集 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | PENGWIN |
| 英文全称 | Pelvic Bone Fragments with Injuries Segmentation Challenge |
| 别名/简称 | PENGWIN Challenge、PENGWIN 2024 |
| 疾病分类(ICD-11) | NB52 区段骨盆骨折谱系;骶骨骨折(不伴骨盆环破坏)NB52.10 |
| SNOMED CT | 77493009(Fracture of pelvis,骨盆骨折) |
| 数据模态 | 3D CT(Task 1)+ DeepDRR 合成 2D X-ray(Task 2) |
| AI 任务类型 | 骨折碎片实例分割(2D 端为位编码多标签分割) |
| 样本总数 | 150 例 CT(100 例公开训练)+ 50,000 张合成 X-ray 训练图 |
| 数据大小 | CT 训练集 8.08 GB(无损压缩)/ 33.77 GB(解压) |
| 数据格式 | MHA(MetaImage,CT)+ TIFF(X-ray) |
| 许可证 | CC BY-NC-SA 4.0 |
| 访问级别 | 开放(Zenodo 公开下载,无需注册申请) |
| DUO 标签 | NCU(非商业使用;源自 CC BY-NC-SA 4.0 非商业条款) |
| 语言 | 中文(临床采集环境)+ 英文(文档与标注工具) |
| 首发日期 | 2024-04-03(Zenodo v1.0.0) |
| 最后更新 | 2024-04-03(v1.0.0;挑战赛总结论文 2026-05 出版于 IEEE TMI) |
| 发布机构 | 北京航空航天大学、北京积水潭医院、北京罗森博特科技、约翰霍普金斯大学、德国癌症研究中心(DKFZ)等 |
| 官方主页 | pengwin.grand-challenge.org |
| 下载地址 | CT 训练集(Zenodo 10927452)、X-ray 训练集(Zenodo 10913196) |
| DOI | 10.5281/zenodo.10927452(CT);10.5281/zenodo.10913195(X-ray) |
| 引用次数 | 数据集论文 4+(Frontiers 统计,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方训练集 + 官方工具脚本 pengwin_utils.py + 多支获奖团队开源代码,可直接加载;扣分项:验证/测试划分未公开、uint32 位编码 mask 需自行解码、CT 几何逐例差异需手动重采样 |
| 页面状态 | published |
§0 E-E-A-T 审核与免责声明
医学审核:千方病案医学编辑部交叉审核:§2 医学背景(骨盆环解剖、Tile 与 Young-Burgess 分型、骨盆骨折流行病学)、§7 偏倚分析(选择偏倚与标注歧义)。本页所有疾病编码均对照 WHO ICD-10/ICD-11 浏览器、SNOMED CT 国际版与 MedGen 概念页核实。
数据工程审核:千方病案医学编辑部交叉审核。医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。所有规模数字、榜单成绩与许可条款均于 2026-09-15 前后经官方挑战页、Zenodo 记录、IEEE TMI 与 Frontiers 论文逐一核实。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。PENGWIN 以 CC BY-NC-SA 4.0 发布,禁止商业用途且衍生作品须以相同许可共享。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? PENGWIN 是伴随 MICCAI 2024 国际医学影像会议发起的骨盆骨折分割挑战赛数据集,全称 Pelvic Bone Fragments with Injuries Segmentation Challenge(骨盆骨折碎片分割挑战赛)。它的核心资产是 150 例骨盆骨折复位手术前的 CT 扫描,由 6 家中国医院在 2017 至 2023 年间采集,每一块骨折碎片都被逐一勾画并编号。在此之上,组织方用 DeepDRR 仿真技术合成了 50,000 张带标注的术中 C 臂 X-ray 图像。截至 2026-09,公开可下载的部分为 100 例 CT 训练集与对应的 50,000 张 X-ray 训练集。
为什么重要? 骨盆骨折是死亡率最高的复合骨折之一,官网口径的致残率超过 50%、死亡率超过 13%;而手术复位规划依赖的逐碎片分割,目前仍主要靠医生半手动勾画,复杂病例一画就是 30 分钟以上。PENGWIN 首次把"每一块碎骨"作为独立的分割对象发布成公开基准,使"骨折不再是CTV 里的一团影子,而是可逐块计数、逐块对位的实例"成为可研究的问题。
我能用它做什么? 训练或评测 3D CT 骨折碎片实例分割模型(官方基线 nnUNet 的碎片 IoU 为 0.9003,冠军 MIC-DKFZ 达 0.9296);研究 2D 投影影像下的重叠碎片分割(最优仅 0.774,是公开的难题);复用官方 pengwin_utils.py 快速可视化与解码;或将 CT 分割接入术前复位规划管线。注意:数据以 CC BY-NC-SA 4.0 发布,只能用于非商业研究。
§1.1 技术摘要
PENGWIN 的构建流程是"真实 CT + 半自动标注 + 投影仿真"三段式。首先,组织方从 6 家中国医院(含北京积水潭医院、佛山市中医院)收集 150 例拟行骨盆复位手术患者的术前 CT,覆盖 16 至 94 岁(均值 44.1±16.8 岁)、63 例女性与 87 例男性、平均每例 5.7±1.4 块骨碎片的多样化骨折形态(骨盆环脱位、单/双侧髋骨骨折、骶骨骨折及复合伤)。标注采用四步半自动流程:以在 CTPelvic1K 上预训练的 nnUNet 生成初始解剖分割,标注员手工修正后识别骨折碎片,最后由资深骨科专家逐例验证,体积小于 500 mm³ 的碎屑被排除。标签采用两级层级编码:第一级按解剖起源分为骶骨(1–10)、左髋骨(11–20)、右髋骨(21–30),第二级在组内按碎片大小排序。随后,100 例训练 CT 经 DeepDRR 框架(解析射线追踪 + 学习式散射估计与噪声注入)渲染为 50,000 张 448×448 的模拟 C 臂图像,其中一半叠加了最多 10 根虚拟 K-wire 或骨科螺钉以模拟术中器械干扰;3D 标注沿相机几何投影为 2D 位编码多标签掩码。挑战赛按 100/20/30 划分训练、验证与测试集,最终 16 支队伍的算法在 Grand-Challenge 平台以 Docker 容器受评,冠军 CT 碎片 IoU 0.9296 已接近观察者间一致性 0.9848,而 X-ray 任务最优 0.774 表明投影重叠仍是未解难题。
阅读本页的路径建议:只想快速评估数据可用性,看 §1.0、§3.0 与 INFOBOX 即可;准备动手训练,从 §6.1 的两个体检脚本开始,按 §6.3 → §6.4 → 坑点 1–4 的顺序搭建管线;做论文相关工作,§8.1 榜单与 §9.3 引用指南能避免最常见的口径错误;负责数据治理或合规,§5.3 泄漏、§7.7 DAIMS 与 §0 免责三节是审阅重点。
§1.2 战略价值
维度一:从语义分割到实例分割的任务升级。 此前公开的骨盆 CT 数据集(如 CTPelvic1K)面向的是"骨盆骨 vs 背景"的语义分割,而手术复位规划真正需要的是每一块碎骨的独立轮廓——只有把碎片逐块分离开,算法才能输出"哪块骨头移到了哪里"的复位指令。PENGWIN 的两级层级标签(解剖起源 × 碎片序号)把这个问题形式化成了可评测的实例分割基准,并配以 IoU-F/HD95/ASSD 三指标与"碎片融合比边界略偏更受罚"的评估哲学。对算法研究者而言,它同时暴露了两个通用难题:实例表示方法的选择(冠军的边界-核心分解 vs 亚军的为主/次碎片分类)会系统性改变结果,以及 3D 实例分离经验在 2D 投影域的迁移失败。
维度二:影像引导手术闭环的数据基石。 PENGWIN 的组织团队横跨临床骨科(北京积水潭医院)、机器人手术企业(北京罗森博特科技)与国际医学影像计算实验室(约翰霍普金斯大学、DKFZ),其 X-ray 子集刻意保留了虚拟 C 臂位姿多样性与手术器械干扰,直接对齐术中导航的真实工作条件。挑战赛的衍生成果已经形成一条从分割到规划的完整证据链:TMI 2026 总结论文报告,冠军的边界-核心方法在模拟复位规划中将解剖对位误差压到 1.695 mm,配套的复位规划管线论文发表于 Medical Image Analysis 2025。对做手术机器人、术中导航或术前规划产品的团队,这是目前少数能同时提供"CT 标注 + 投影仿真 + 规划验证"的开放数据资产。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态 | 标注粒度 | 与 PENGWIN 的差异化 |
|---|---|---|---|---|
| PENGWIN(本页) | 150 例 CT(100 例公开)+ 50,000 张合成 X-ray | 3D CT + 合成 2D X-ray | 逐骨折碎片实例分割,两级层级编码 | 唯一提供"CT 实例碎片 + 投影仿真 + 手术器械干扰"组合的公开基准;附冠军方案代码 |
| CTPelvic1K | 约 1,000 例骨盆 CT | 3D CT | 骨盆骨语义分割 | 规模更大但无碎片实例;PENGWIN 标注流程以其预训练 nnUNet 为起点,二者构成上下游关系 |
| RibFrac Challenge | 约 660 例胸部 CT | 3D CT | 逐肋骨骨折实例检测与分割 | 肋骨骨折数目多、形态细长;骨盆骨折碎片更大、更碎,重叠与融合问题更突出 |
| TotalSegmentator 覆盖骨盆骨 | 广谱多器官 CT 系列 | 3D CT | 多器官(含髋骨)语义分割 | 提供通用解剖先验,可作为 PENGWIN 两阶段方案的第一阶段(冠军方案实际采用了类似思路) |
读表要点:PENGWIN 的规模在骨盆方向不是最大的,但它的稀缺性在"标注粒度 × 任务闭环"上——公开数据里能把每块碎骨分出来并配齐投影域对照组的,目前仅此一家。做语义分割看 CTPelvic1K,做实例分割看 PENGWIN,做通用解剖先验看 TotalSegmentator,三者在两阶段管线里恰好是上下游关系而非竞争关系。
§1.4 版本时间轴
| 时间 | 版本/事件 | 说明 |
|---|---|---|
| 2024-04-03 | Zenodo v1.0.0 | CT 训练集(record 10927452)与 X-ray 训练集(record 10913196)同日发布 |
| 2024 年 | MICCAI 2024 挑战赛周期 | 开发阶段 CT 任务 256 次提交、X-ray 任务 84 次提交;25 国 239 人注册、26 支队伍 |
| 2024 年下半年 | 决赛测试(final test) | CT 任务 11 队、X-ray 任务 5 队提交 Docker 容器,共 16 支队伍受评 |
| 2025-04-03 | arXiv:2504.02382 | 挑战赛总结论文预印本上线 |
| 2025-04-15 | Front. Med. 数据集论文 | Liu et al. 方法与基准数据集论文(DOI 10.3389/fmed.2025.1511487) |
| 2026-05 | IEEE TMI 45(5):2212–2228 | 挑战赛总结论文正式出版(DOI 10.1109/TMI.2025.3650126) |
| 2026 年 | PENGWIN 2026 | 同名续届挑战赛(Peripelvic Fracture Segmentation and Reduction Planning)启动,使用独立 Zenodo 记录,引用数据时须注意区分 2024/2026 两版 |
时间轴里最重要的一条信息是:数据本体自 2024-04-03 后未再更新(Zenodo 停留在 v1.0.0),此后所有演进都发生在论文与社区代码层。这意味着数据下载链接、md5 与目录结构在可预见的将来都是稳定的,生产管线可以放心把 DOI 当作长期版本锁;而"最新进展"应跟踪 TMI 2026 论文与 2026 续赛,而非期待数据包更新。
§1.5 典型应用场景
- 术前复位规划自动化:以 CT 碎片分割为第一步,输出每块碎骨的独立位姿,供复位路径与螺钉固定规划模块使用(官方 MedIA 2025 管线即为此范式)。
- 术中 2D 导航分割研究:在 50,000 张带器械干扰的合成 C 臂图像上研究投影域重叠实例分割,评估模型对 K-wire/螺钉干扰的鲁棒性。
- 两阶段分割范式消融实验:对照冠军(边界-核心分解)、亚军(主/次碎片两阶段)与季军(TotalSegmentator + NexToU)三种实例表示策略,全部代码开源。
- 半自动标注系统冷启动:官方四步标注流程(nnUNet 预分割 + 人工修正 + 专家验证)可直接复用为新骨科标注项目的流程模板。
- 医学影像教学与质控研究:利用观察者间一致性数据(IoU-F 0.9848)研究标注歧义(如发丝样骨折是否计为独立碎片)对模型训练的影响。
五个场景的共同前提是先把任务定位清楚:1–3 是研究型场景,100 例公开训练集配合交叉验证即可启动;4 是流程型场景,重点在标注工具链而非模型;5 是分析型场景,几乎不需要训练模型,重点是利用官方披露的一致性数据做元研究。超出这五类的场景(如急诊检出、儿科应用)应先回看 §7.1 的偏倚表确认分布对齐。
§2 医学背景
§2.1 ICD-11 编码映射
PENGWIN 覆盖的骨折谱系在 ICD-11 中落于损伤章节"骨盆或耻骨联合骨折"(NB52)区段。下表列出经 WHO ICD-10/ICD-11 与 GEMS 映射资料核实的对应关系:
| 损伤标签 | ICD-11 编码 | ICD-10 对照 | 术语 |
|---|---|---|---|
| 骨盆骨折(总类) | NB52 区段 | S32.3–S32.8 | Fracture of pelvis or symphysis pubis |
| 骶骨骨折(不伴骨盆环破坏) | NB52.10 | S32.1 | Fracture of sacrum without disruption of pelvic ring |
| 髂骨/髋骨、髋臼、耻骨、坐骨各亚型 | NB52 区段子码 | S32.3 / S32.4 / S32.5 / S32.6 | Fracture of ilium / acetabulum / pubis / ischium |
说明:PENGWIN 的标签体系按解剖起源(骶骨、左髋骨、右髋骨)组织,与临床骨折分型(Tile、Young-Burgess)是两个正交维度;数据集不提供逐例 ICD 编码,上表为研究者将模型输出对接病历系统时的编码参考。
§2.1b SNOMED CT 映射
| 标签 | ICD-11 | SNOMED CT | 术语 |
|---|---|---|---|
| 骨盆骨折(总类) | NB52 区段 | 77493009 | Fracture of pelvis(disorder) |
| 开放性骨盆骨折(对照参考) | — | 15474008 | Open fracture of pelvis(disorder) |
说明:SNOMED CT 概念码经 MedGen(C0149531)与 Athena OHDSI 词汇库页面核实;PENGWIN 病例均为闭合性术前影像,开放骨折码仅作编码对照。
§2.2 疾病简介与流行病学
骨盆骨折通常由高能量创伤(机动车碰撞、高处坠落、挤压伤)引起,是"最致命的复合骨折"之一:官方挑战页口径的致残率超过 50%、死亡率超过 13%;一项覆盖 11,149 例患者的研究测得骨盆骨折死亡率 14.2%。骨盆环由髂骨、坐骨、耻骨与骶骨围成,环状结构一旦破坏往往意味着高能量传导,常合并大出血(骨盆骨折出血中超过 85% 来自静脉丛或骨断面)、膀胱与尿道损伤(约 6%)、腹腔内脏损伤(约 16%)及神经缺损(约 15%)。流行病学上,骨盆骨折约占成人骨折的 3%,发病高峰年龄 15–28 岁,约 20% 的多发伤患者合并骨盆损伤;不稳定型骨盆骨折死亡风险约 15%,若合并低血压可接近 50%。老年人群则可在低能量跌倒后发生脆性骨盆骨折,构成另一类人群。
临床上按损伤机制与稳定性有两套主流分型:Tile 分型以骶髂后复合体完整性为准,A 型为稳定骨折,B 型为旋转不稳定但垂直稳定(如"开书样"损伤、侧方压缩),C 型为旋转与垂直双重不稳定;Young-Burgess 分型则按致伤机制分为侧方压缩(LC)、前后压缩(APC)、垂直剪切(VS)与混合机制(CM)。PENGWIN 的队列覆盖骨盆环脱位、单/双侧髋骨骨折、骶骨骨折与复合伤,均为拟行手术复位的不稳定或移位病例,与 Tile B/C 型人群高度重叠。
§2.2b 影像学检查路径与表现
骨盆骨折的影像学评估遵循"平片筛查 → CT 确认"的路径,这也是 PENGWIN 双任务(CT 实例分割 + 投影 X-ray 分割)设计的临床原型:
| 检查 | 角色 | 关键要点 |
|---|---|---|
| 骨盆正位 X-ray(AP) | 急诊一线筛查 | 对所有意识丧失的钝性创伤患者实施;与 CT 金标准对照的敏感性约 78% |
| 入口位/出口位 | 补充投照 | 入口位利于观察骨盆缘,出口位利于观察骶骨与骶髂关节 |
| Judet 位 | 髋臼骨折专项 | 髂骨斜位与闭孔斜位双斜位投照 |
| CT(含重建) | 确诊与术前规划金标准 | 血流动力学稳定的患者平片阳性后必查;是碎片分割与复位规划的信息源 |
平片的核心读片难点是投影重叠:骨盆环的前后结构、肠道气体与股骨头在二维投照中相互叠压,细小骨折线与正常血管沟、骶髂关节影难以区分——这正是 PENGWIN Task 2 把"投影域重叠碎片分割"设为独立任务的原因:术中 C 臂只能提供这一类二维影像,而其最优算法 IoU-F 仅 0.774,远低于 CT 域的 0.9296。CT 域的读片要点则是碎片的空间关系:冠状面与矢状面重建用于判断骨盆环的旋转移位,3D 体渲染用于复位规划,每块碎骨的边界识别(即本数据集的标注对象)是这些高级重建的前提。
§2.3 临床任务定义
| 任务 | 输入 | 输出 | 临床意义 |
|---|---|---|---|
| 创伤诊断 | 术前骨盆 CT | 骨折检出与解剖区域分割 | 快速确认骨折范围,辅助急诊分诊 |
| 碎片实例分割(本数据集核心) | 术前骨盆 CT | 骶骨/左髋骨/右髋骨逐碎片掩码 | 复位规划的原子步骤:只有分离出每块碎骨,才能计算"复位到哪" |
| 复位对位与螺钉规划 | 碎片实例 + 健侧镜像先验 | 碎片目标位姿、固定路径 | 机器人辅助闭合复位的核心输入;官方管线解剖对位误差 1.695 mm |
| 术中 2D 导航分割 | C 臂 X-ray(本集为 DeepDRR 合成) | 投影域碎片多标签掩码 | 把术前计划经配准转移到手术室;当前最优 IoU-F 仅 0.774 |
四个任务构成一条递进的临床证据链:急诊场景只需要"有没有骨折"(检出),门诊规划需要"骨折长什么样"(语义分割),手术规划需要"每块碎骨在哪"(实例分割,本数据集核心),术中导航需要"投影里每块碎骨在哪"(2D 多标签分割)。任务越往后,临床价值越高、数据越稀缺、算法越不成熟——PENGWIN 精准切进了后两档。评估使用者自研模型时应首先明确自己处于链条哪一环,再选用对齐的指标:检出用灵敏度/特异度,语义分割用 Dice,实例分割才用 IoU-F/HD95/ASSD 三指标体系。
§2.4 患者人群构成
| 维度 | 数值 | 来源与说明 |
|---|---|---|
| 来源机构 | 中国 6 家医院(含北京积水潭医院、佛山市中医院) | 挑战赛总结论文;其余中心未逐一点名 |
| 采集时间 | 2017–2023 | Zenodo/HF 镜像记录 |
| 入组标准 | 拟行骨盆骨折复位手术的术前患者 | 官方挑战页 |
| 年龄 | 16–94 岁,均值 44.1±16.8 | 挑战赛总结论文 |
| 性别 | 女 63 例 / 男 87 例 | 挑战赛总结论文 |
| 每例碎片数 | 5.7±1.4 块(范围 3–12) | 挑战赛总结论文 |
| 骨折类型 | 骨盆环脱位、单/双侧髋骨骨折、骶骨骨折、复合伤 | 挑战赛总结论文 |
| 种族构成 | 未逐例公开 | 数据集不附带人口学表 |
人群画像对建模的三个直接启示:均值 44.1 岁但跨度 16–94 岁意味着队列同时包含高能量青年创伤与老年脆性骨折两端,骨密度与皮质厚度差异会反映在 HU 分布上,骨窗参数(§6.3 的 150–1500 HU)对老年组可能偏保守;男女比例 63/87 与创伤流行病学方向一致,但做性别公平性审计时女性子集仅 63 例,统计功效有限;每例 3–12 块碎片的宽分布提示"复杂骨折"亚组(≥8 块)样本量小,分层划分(§5.2)正是为了不让这个亚组在某折中缺席。
§2.5 临床价值
骨盆骨折的手术复位是创伤骨科中难度最高的操作之一:骨盆环被大量肌肉、韧带与神经血管束包裹,术中视野有限,闭合复位高度依赖术前对每块碎骨的三维理解。传统半手动分割流程需在 3D 视图中逐层勾画骨折面,简单病例也要 30 分钟以上,复杂病例可达 1 小时,且高度依赖医生经验。PENGWIN 驱动的自动分割把这一步压缩到秒级,其冠军方法在模拟复位规划中实现 1.695 mm 的解剖对位误差——已进入"可用于规划初稿"的区间。更进一步,X-ray 子任务瞄准的是术中环节:机器人辅助闭合复位需要在 C 臂影像上实时追踪碎骨,投影重叠使这一问题远未解决(最优 IoU-F 0.774),PENGWIN 以合成数据先行的方式为该环节建立了可复现的研发闭环,总结论文明确建议未来转向"人机交互式分割"。
§2.6 金标准参考表
| 维度 | 内容 |
|---|---|
| 划分方式 | 100 训练 / 20 验证 / 30 测试(按骨折类型分层抽样);仅训练集公开 |
| 标注方式 | 四步半自动:CTPelvic1K 预训练 nnUNet 自动分割 → 有经验标注员手工修正 → 骨折碎片识别与编号 → 资深骨科专家逐例验证 |
| 标注者 | 经验标注员(修正层)+ 资深骨科专家(终审层,来自北京积水潭医院骨科团队);人数未公开 |
| 标注性质 | 专家复核的逐碎片实例金标准;体积 <500 mm³ 碎屑排除;观察者间一致性 IoU-F 0.9848(作为性能天花板报告于 TMI 论文) |
| 2D 金标准 | 3D 标注沿仿真相机几何投影生成的位编码多标签掩码(非独立人工标注) |
需要特别指出:金标准的最薄弱环节不在 3D 端而在 2D 端——投影掩码的"多标签重叠位"是几何投影的必然产物而非标注错误,但在训练 2D 模型时,损失函数如何处理一个像素同时属于 3 个碎片的情况(sigmoid 多标签 vs softmax 互斥)会显著影响收敛行为;官方选择位编码 + sigmoid 口径,使用者若改用互斥假设等于擅自修改了任务定义。
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐子集 | 大小 | 理由 |
|---|---|---|---|
| 3D 复位规划/碎片实例分割研究 | Task 1 CT 训练集(Zenodo 10927452) | 8.08 GB 压缩 / 33.77 GB 解压 | 实例级 MHA 体数据 + 官方基线与冠军代码,直接可训 |
| 2D 投影分割/器械鲁棒性研究 | Task 2 X-ray 训练集(Zenodo 10913196) | 50,000 张 448×448 TIFF | 单张图像轻量、迭代快;自带 K-wire 干扰半区 |
| 快速跑通与教学演示 | Task 1 前 10 例 + Task 2 单 CT 子包 | <1 GB | 目录按 001–010 分包,最小可用子集即可完成全流程验证 |
| 需要真实术中 X-ray 验证 | 暂无对应公开子集 | — | 全部 X-ray 为 DeepDRR 合成;真实 C 臂验证需自行采集并注明方法差异 |
| 商业产品训练 | 均不适用 | — | CC BY-NC-SA 4.0 禁止商业用途,需联系版权方另获授权 |
§3.1 模态详情
Task 1:3D CT。 多中心术前骨盆 CT,脱敏后由 DICOM 转换为 MetaImage(MHA)格式。逐例几何差异显著:面内矩阵从 322×154 到 512×512 共 71 种形状,切片数 193–414 层;面内 spacing 0.658–1.22 mm,层间 0.625–1.25 mm(75 种组合),队列平均 spacing 约 (0.83, 0.83, 0.89) mm、平均尺寸 (488, 426, 323)。100 例训练数据中 36 例被裁剪至骨盆区域,其余保留更大的采集视野,构成两个处理批次——这是复现几何相关预处理时必须注意的结构性差异。
Task 2:合成 2D X-ray。 由 100 例训练 CT 经 DeepDRR 框架渲染:材料分解(空气/软组织/骨)→ 材质与能谱感知的解析射线追踪 → 深度学习散射估计 → 量子噪声与电子读出噪声注入。每例 CT 生成 500 张(Zenodo 发布口径;论文叙述口径为 400 张,总计 48,600 张含未公开验证/测试部分),分辨率为 448×448 像素,相机几何逐图随机:成像中心采样于某碎片 50 mm 邻域内,视向在偏离垂直轴 45°(Zenodo 口径;论文叙述为 60°)的球面上均匀采样,患者假定为仰卧位。ID 0000–0249 为纯净解剖投影,0250–0499 额外叠加最多 10 根随机位姿的 K-wire 或骨科螺钉。图像为未做任何窗宽窗位处理的原始强度 TIFF。
两个任务的模态对照一览:
| 维度 | Task 1(CT) | Task 2(合成 X-ray) |
|---|---|---|
| 数据本体 | 真实采集体数据 | DeepDRR 从 Task 1 训练集渲染的投影 |
| 真实性 | 临床真值 | 仿真近似(散射/噪声由模型估计) |
| 标注语义 | 逐体素单标签实例(1–24 实测) | 逐像素位编码多标签(重叠像素多实例并存) |
| 典型体素/像素量 | 每例 (488, 426, 323) | 每图 448×448 |
| 核心难点 | 碎片融合/分离、几何异质 | 投影重叠、器械干扰、sim-to-real |
| 临床对应环节 | 术前规划 | 术中导航 |
§3.2 按子集样本数
| 子集 | 样本数 | 发布状态 | 说明 |
|---|---|---|---|
| Task 1 训练集 | 100 例 CT + 100 个标签体 | 公开(Zenodo 10927452) | 唯一公开的 CT 部分 |
| Task 1 验证集 | 20 例 | 未公开 | 挑战赛排行榜用,赛后仍未发布 |
| Task 1 测试集 | 30 例 | 未公开 | final test 受评数据 |
| Task 2 训练集 | 50,000 张(100 CT × 500 张) | 公开(Zenodo 10913196) | 含 25,000 张带器械干扰图 |
| Task 2 验证集 | 8,000 张 | 未公开 | HF 镜像实测记录 |
| Task 2 测试集 | 600 张(30 CT × 20 张) | 未公开 | 论文口径;final test 受评数据 |
§3.3 数据格式
| 内容 | 格式 | 编码说明 |
|---|---|---|
| CT 体数据 | .mha(MetaImage) | NNN.mha 连续编号 001–100;单通道标量体 |
| CT 标签 | .mha(MetaImage) | 整数值标签:0 背景;1–10 骶骨碎片;11–20 左髋骨碎片;21–30 右髋骨碎片 |
| X-ray 图像 | .tif(TIFF) | 448×448 原始强度(未加窗),文件名 NNN_MMMM.tif |
| X-ray 掩码 | .tif(TIFF) | uint32 位编码多标签:第 b 位(1-indexed)置位表示对应碎片投影覆盖该像素 |
| 工具脚本 | .py | 官方 pengwin_utils.py 提供加载/解码/CLAHE 可视化函数 |
格式层面的两个注意点:MHA 是 MetaImage 单文件格式(头信息内嵌 .mha 或配对 .mhd/.raw),SimpleITK 与 nibabel 均可读,但两库读出的数组轴序不同(SimpleITK 为 zyx),混用库时务必先统一轴序约定;TIFF 侧则要区分 8/16 位普通 TIFF 与 uint32 位编码 TIFF——后者必须用 tifffile 读取,普通预览工具会显示成花屏,这不是文件损坏而是编码使然。
§3.4 存储大小
| 子集 | 压缩后 | 解压后 |
|---|---|---|
| Task 1 训练集(图像+标签) | 8.08 GB | 33.77 GB |
| Task 2 训练集 | 分 001–010 等多卷 tar.gz 包 | 约 50,000 张 448×448 TIFF |
| 评测运行时限制 | — | Docker:T4 GPU、8 vCPU、32 GB RAM、每例 10 分钟(Grand-Challenge 平台) |
§3.5 标注方式
半自动四步流水线:第一步,用在 CTPelvic1K 数据集上预训练的 nnUNet 对全盆 CT 做解剖分割;第二步,由有经验的标注员在体渲染与逐切片视图中手工修正边界;第三步,识别并编号骨折碎片,建立"解剖起源 × 碎片大小序"的两级标签;第四步,由资深骨科专家逐例验证终审。质量门槛包括:体积小于 500 mm³ 的碎屑不计为独立碎片;三块解剖骨(骶骨、双髋骨)在全部 100 例中均完整标注(HF 镜像实测标签 1、11、21 无一缺失)。
§3.6 标注者资质与一致性
标注由临床骨科背景团队主导,终审者为北京积水潭医院骨科的资深专家(作者列表中的 Zhao 与 Wu 分别任监督)。挑战赛报告了分割任务的观察者间一致性作为金标准天花板:IoU-F 0.9848、HD95-F 1.317 mm、ASSD-F 0.306 mm;同时坦承在发丝样不完全骨折上,专家之间对"是否构成独立碎片"存在分歧——这是该数据集标注歧义的主要来源。
§3.7 采集周期
2017–2023 年,6 家中国医院连续入组拟手术患者;跨 7 年的采集窗口天然引入扫描设备换代与扫描协议演进,官方描述"多种扫描设备"但未逐例记录设备型号。对时间敏感的建模者,这个窗口意味着两个实际影响:其一,早期与晚期病例的辐射剂量与重建算法(如迭代重建 vs 滤波反投影)可能不同,HU 分布或有轻微系统差;其二,机器人辅助闭合复位技术在同期由探索走向临床落地,队列入组标准是否随时间漂移无法从数据本身验证,只能向作者求证。
§3.8 地域覆盖
全部来自中国境内医院,核心中心为北京积水潭医院(国家骨科医学中心),南方中心包括佛山市中医院;无国际中心、无中国台湾、港澳地区数据说明——使用者在做跨地域泛化评估时应将此视为单国队列。就临床生态而言,积水潭医院的创伤骨科病例量与手术复位技术在国内具代表性,但"代表性中心"不等于"代表性人群":单国队列意味着 CT 扫描协议偏好、人群 BMI 分布与骨折机制谱(如电动车事故占比)可能与欧美公开数据存在系统差,跨域部署前应做分布对齐检查。
§3.9 设备规格
官方仅说明"多种扫描设备采集"并以表格列出设备类型分布,未随数据分发逐例设备元数据;可恢复的信息只有几何指纹(spacing 与矩阵尺寸的 71/75 种组合)。Task 2 的"虚拟设备"参数为公开的仿真设定:448×448 探测器矩阵、C 臂视向偏离垂直轴 ≤45°、成像中心随碎片采样、仰卧位假设。
§3.10 深度溯源链
原始 DICOM(各医院 PACS,脱敏)→ MHA 体数据转换(两个裁剪批次)→ nnUNet(CTPelvic1K 预训练)自动初分割 → 标注员修正 → 碎片识别与两级编号 → 资深骨科专家终审 → v1.0.0 发布于 Zenodo(2024-04-03,DOI 10.5281/zenodo.10927452)→ 同批 CT 经 DeepDRR 渲染为 X-ray 训练集(Zenodo 10913196)→ 挑战赛评测(Grand-Challenge Docker 隔离运行)→ 结果发表于 IEEE TMI 2026。每一环都有可回溯的公开记录, Zenodo 记录由 JHU 的 Killeen 担任联系人,保证跨机构责任明确。
这条溯源链对使用者的实际价值在于责任分层:几何与格式问题(轴序、spacing、裁剪)出在转换层,应对照 MHA 元数据排查;标签歧义出在标注层(nnUNet 初分割的系统性边界偏置会被人工修正覆盖,但专家分歧的发丝样骨折会留下来);而 X-ray 的所有伪影与噪声特性都来自 DeepDRR 渲染层,与真实采集无关——把缺陷归因到正确的层,才能决定是改数据、改标注还是改模型。
§4 数据结构
§4.0 目录树
数据下载解压后的典型目录结构(以官方 Zenodo 包与 HuggingFace 镜像为准):
pengwin/
├── Task_01/ # 3D CT 子集
│ ├── PENGWIN_CT_train_images_part1.zip # 训练图像第 1 卷
│ ├── PENGWIN_CT_train_images_part2.zip # 训练图像第 2 卷
│ │ └── images/ 001.mha ... 100.mha # CT 体数据
│ ├── PENGWIN_CT_train_labels.zip # 标签包
│ │ └── labels/ 001.mha ... 100.mha # 逐碎片实例标签体
│ └── README.MD
└── Task_02/ # 合成 X-ray 子集
├── pengwin_utils.py # 官方加载/解码/可视化工具
├── requirements.txt
└── train/
├── input/images/x-ray/
│ ├── 001-010.tar.gz ... # 分卷包
│ └── (解压后) 001_0000.tif ... 100_0499.tif
└── output/images/x-ray/
├── 001-010.tar.gz ...
└── (解压后) 001_0000.tif ... 100_0499.tif # uint32 位编码掩码
目录结构的三个设计特征会影响工程组织:Task 1 图像与标签是"同编号平行目录",任何 rename 或筛选操作必须双侧同步;Task 2 的 input/output 命名法(而非 images/labels)沿袭了分割挑战赛的传统,且 image 与 mask 的配对关系仅由文件名保证,构建数据清单时应做存在性断言;分卷包(001-010.tar.gz 等)允许按需解压,这让"先拉 10 例跑通全流程再决定是否全量下载"的渐进式接入成为可能。
§4.1 DAIMS 字段字典
| 字段 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| case_id | string | CT 病例编号(文件名主键) | 001 | 分组键、交叉验证分组 | 无 | 无缺失 | 001–100 |
| ct_volume | 3D float/int | 术前骨盆 CT 体数据 | 001.mha | 网络输入 | 几何逐例差异(71 种矩阵形状) | 无缺失 | 面内 322×154 至 512×512 |
| ct_label | 3D int | 逐碎片实例标签体 | 标签 11=左髋骨主碎片 | 分割监督信号 | 发丝样骨折归属存在专家分歧 | 0=背景 | 0–24(实测),名义 0–30 |
| anatomy_group | derived int | 由标签解码的解剖组 | (11-1)//10=1(左髋骨) | 两阶段第一阶段目标 | 依赖标签正确性 | 0 为背景需先屏蔽 | 0 骶骨/1 左髋/2 右髋 |
| fragment_rank | derived int | 组内碎片大小排序(1=主碎片) | (11-1)%10+1=1 | 实例级评估、主/次碎片分类 | 小于 500 mm³ 碎屑已被排除 | 无 | 1–10 |
| xray_image | 2D float | 合成 C 臂投影(原始强度) | 001_0000.tif | 2D 分割输入 | 未加窗,需负 log 变换 | 无缺失 | 448×448 TIFF |
| xray_mask | 2D uint32 | 位编码多标签掩码 | 第 11 位置位=左髋主碎片覆盖 | 2D 分割监督信号 | 投影重叠导致多标签像素 | 全 0=无前景 | 位 1–30 |
| has_hardware | derived bool | 该图是否含虚拟 K-wire/螺钉 | ID 0250–0499 为 True | 器械鲁棒性分组实验 | — | 无 | 0/1 |
§4.2 标签分布
Task 1 的 100 个标签体经逐例实测(HF 镜像报告):三个解剖组在全部 100 例中均出现(100% 覆盖);实际出现的标签值仅为 1–4(骶骨)、11–16(左髋骨)、21–24(右髋骨),即最大标签 24,名义上限 30 从未被触及。队列层面平均每例 5.7±1.4 块碎片(3–12 块)。体积统计(openmedlab 实测)显示骶骨主碎片中位体积 175.6 cm³、左髋骨碎片 262.1 cm³、右髋骨碎片 266.2 cm³,而最小独立碎片仅 0.31 cm³——跨三个数量级的尺度差异是实例分割的主要难度来源之一。
从分布形态还能读出两个隐含事实:其一,三组高序号槽位(骶骨 5–10 号、左髋 17–20 号、右髋 25–30 号)从未出现,说明"单块骨超过 4–6 个独立碎片"的情形被 500 mm³ 排除规则与标注粒度共同截断了,模型在真实部署中遇到更碎的骨盆时属于分布外场景;其二,右髋最大序号(24)低于左髋(16 的组内序号 6),双侧碎片数存在不对称——这意味着左右翻转增强(配标签互换)不仅是几何增广,也隐式平衡了左右髋的实例分布。
§4.3 关键统计
| 统计项 | 数值 | 备注 |
|---|---|---|
| 公开 CT 训练例数 | 100 | 150 例 cohort 的训练划分 |
| 2D 切片总数 | 32,106 | openmedlab 实测 |
| 平均 voxel spacing | (0.83, 0.83, 0.89) mm | 接近各向同性,利于 3D 卷积 |
| 每例 X-ray 训练图 | 500 张 | 一半含器械干扰 |
| 每例碎片数 | 5.7±1.4(3–12) | 论文队列统计 |
| 实测最大标签值 | 24 | 名义 30,切勿按 30 定 one-hot |
这些统计量直接决定了工程决策:接近各向同性的平均 spacing 意味着 3D 卷积可以采用各向同性核与等距重采样而不必做各向异性妥协;71 种矩阵形状与 75 种 spacing 组合排除了"统一输入尺寸"的简单方案,逐例重采样 + 动态 patch 是必选项;而 24 的实测标签上限与 30 的名义上限之间的差距,则要求所有涉及类别数的张量分配与评估脚本在启动时先做一次 np.unique 体检(见 §6.1 与坑点 2)。
§4.4 数据层级
患者(150 名,1 人 1 次术前 CT)→ CT 检查(MHA 体数据)→ 切片(193–414 层/例,全队列 32,106 层)→ 解剖结构(骶骨/左髋骨/右髋骨)→ 骨折碎片实例(平均 5.7 块/例)。Task 2 层级为:源 CT(100 例)→ 相机位姿采样(500 位姿/例)→ X-ray 图像-掩码对(50,000 对)。同一患者贯穿 CT 与 X-ray 两模态,做模态融合实验时不存在患者级错配,但也意味着两模态不可当作独立样本。
这个层级结构对统计口径的影响值得留意:如果你以"切片"为单位报告指标(如逐层 Dice),样本量会被放大两个数量级(32,106 层 vs 100 例),显著性检验的自由度会虚高;正确做法是以病例为独立单位聚合后再做统计推断。同理,Task 2 的 50,000 张图只有 100 个独立来源,任何"图像级"置信区间都应按 100 例聚类校正。
§4.5 缺失值与信息性缺失编码
影像与掩码层面无缺失:100/100 例三个解剖组标签齐全,X-ray 图像-掩码一一对应。真正"缺失"的是随数据不附带的元数据:逐例设备型号、扫描日期、骨折临床分型(Tile/Young-Burgess 逐例标签)与人口学字段均未发布——这些信息在模型 fairness 分析中属于"结构性缺失",任何需要它们的实验都应设计为"不可得"而非"默认值填充"。标签体系中的 0 是显式背景而非缺失;位编码掩码中"某位从未置位"(如位 25–30)表达的是"该实例不存在"而非数据损坏。
针对结构性缺失,工程上有两条务实路径:一是"指纹推断"——用 spacing、矩阵形状与裁剪批次构成几何指纹,做聚类后当作伪中心变量参与分层与敏感性分析,虽不能还原真实设备,但足以暴露"几何簇 × 分数"的交互;二是"协议声明"——在实验记录里显式登记哪些协变量不可得、哪些分析因此放弃,让不可得成为可审计的决策而非沉默的省略。切忌用中位数/众数填充这些元数据:填充后的公平性分析会系统性地低估组间差异,得出"无偏倚"的假阴性结论。
§5 划分与使用建议
§5.1 官方划分
挑战赛将 150 例按骨折类型分层抽样划分为 100 训练 / 20 验证 / 30 测试;Task 2 沿用同一 CT 划分(训练/验证每例 400–500 张合成图,测试每例 20 张)。公开可得的只有 100 例训练集;验证与测试集由平台持有用于排行榜评测,赛后仍未公开。因此任何复现研究都只能在 100 例上自建划分。
§5.2 社区惯例与建议划分
- 五折交叉验证 + 骨折复杂度分层:以每例碎片数为分层变量做 5 折切分,保证各折碎片数分布一致;可参考论文中以骨折类型分层的官方做法。
- 保留几何批次变量:36 例裁剪批次与其余 64 例在视野上系统性不同,建议在报告划分时按批次做组平衡,避免某折全部是裁剪例。
- 固定随机种子并公开切分清单:由于无官方验证划分,社区结果不可比的最大来源就是切分差异;发布代码时附上 case_id 清单是基本礼仪。
一个可直接落地的分层划分骨架(把 100 例切成 80/10/10,同时平衡碎片数与几何批次):
# 依赖:pip install scikit-learn
# 输入:case_ids(1–100)、每例碎片数 fragments_per_case(由标签体统计)、是否裁剪批次 cropped
# 输出:三组 case 清单,建议存为 JSON 纳入版本控制
import json
from sklearn.model_selection import train_test_split
def split_pengwin(case_ids, fragments_per_case, cropped, seed: int = 2024):
"""按碎片数分档分层;同时以批次变量做二次平衡检查。"""
tier = ["lo" if f < 4 else "mid" if f <= 7 else "hi" for f in fragments_per_case]
train, rest = train_test_split(case_ids, test_size=0.20, stratify=tier, random_state=seed)
tier_rest = [t for c, t in zip(case_ids, tier) if c in set(rest)]
val, test = train_test_split(rest, test_size=0.50, stratify=tier_rest, random_state=seed)
for name, group in [("train", train), ("val", val), ("test", test)]:
share = sum(cropped[c - 1] for c in group) / len(group) # 批次占比 sanity check
print(f"{name}: n={len(group)}, 裁剪批次占比={share:.0%}")
return {"train": train, "val": val, "test": test}
with open("pengwin_split.json", "w") as f:
json.dump(split_pengwin(list(range(1, 101)), FRAG_COUNTS, CROPPED_FLAG), f, indent=2)
§5.3 泄漏风险
本数据集的单患者单次 CT 设计使患者级泄漏风险天然较低,但仍有三个真实泄漏通道:其一,Task 2 的 50,000 张 X-ray 由同一批 100 例 CT 渲染,若在 CT 任务与 X-ray 任务间划分不一致(例如 CT 用例 1–80 训练、X-ray 用全部 100 例),会造成跨模态泄漏;其二,自建划分时若按"图像"而非"病例"随机切分 X-ray 图像,同一 CT 渲染的 500 张图会同时出现在训练与验证侧,验证分数将严重虚高;其三,冠军等开源方案的代码仓库若含其自用切分,直接混用数据与切分会污染与官方结果的可比性。正确做法是以 case_id 为分组单位做 GroupShuffleSplit,并让 CT/X-ray 共享同一分组。
§5.4 交叉验证建议
推荐 5 折 GroupKFold(组=case_id,分层=碎片数三档:<4、4–7、>8),每折内监控 IoU-F 与"碎片融合率"(预测把两块真值碎片合并为一块的频率)两个指标,后者是该任务临床代价最高的失败模式。训练侧可使用 nnUNet 自带的折间集成策略复刻 Ensemble 0.9364 的增益路径。
两个细节决定交叉验证分数的可信度:其一,折间必须共享同一预处理缓存(重采样网格、HU 窗参数),否则折间差异混入预处理噪声;其二,X-ray 域的折划分要沿用 CT 折的 case_id(源数据同构),并保证纯净半区(0000–0249)与器械半区(0250–0499)在每折内成对出现,防止某折"从未见过金属"而拉高方差。若做消融实验,固定折划分 + 固定种子后再变动消融变量,是唯一能归因到变量本身的口径。
§5.5 外部验证建议
在 100 例内部交叉验证之外,优先考虑三个外部出口:CTPelvic1K 的骨盆骨语义标注(检验解剖分割阶段的迁移性)、RibFrac 等其他骨折实例数据集(检验碎片表示方法的跨骨骼泛化)、以及机构自采的真实 C 臂图像(检验 DeepDRR 合成域的 sim-to-real 差距——TMI 论文明确将其列为当前最大不确定性)。跨中心验证时至少按"北京积水潭 vs 其他 5 中心"留一法估计中心效应,因逐例中心标签未公开,只能通过几何指纹近似分组。
需要避免的两个"伪外部验证":其一,把 Task 2 的验证/测试合成图当作独立外部集——它们与训练图同源同渲染器,只考察位姿泛化不考察域泛化;其二,用 RibFrac 的骨痂/术后数据宣称"骨折分割通用性"——肋骨与骨盆的碎片形态、CT 剂量与视野差异极大,跨骨骼迁移结论必须限定表述范围。
§6 AI 就绪指南
§6.0 云端快速启动
数据托管于 Zenodo,任何可访问外网的云环境均可直接拉取。Colab/Kaggle 用户建议只加载 Task 2 单卷子包或 Task 1 前 10 例以规避磁盘限额(完整 Task 1 解压需 33.77 GB)。
# 云端最小验证:下载 CT 标签包(约 100 MB 级)并解压
wget -q https://zenodo.org/records/10927452/files/PENGWIN_CT_train_labels.zip
unzip -q PENGWIN_CT_train_labels.zip -d pengwin_task1
ls pengwin_task1 | head # 预期看到 001.mha ... 100.mha(或位于子目录中)
若云端环境无法直连 Zenodo,HuggingFace 镜像是等效替代(§6.2),datasets 库可流式加载而无需落盘全量数据。
§6.1 快速上手
下面的脚本假设目录结构为:data_root/labels/001.mha ... 100.mha(即 data_root 与 MHA 文件直接拼接,无额外子目录)。它读取 1 例 CT 与标签,打印体素 spacing 与标签值集合——这是接入任何训练管线前的标准体检。最小可用子集是任意 1 对 image/label MHA。
# 目录预期:data_root/ 下直接是 NNN.mha(图像与标签分目录时自行替换路径)
# data_root 拼接关系:pathlib.Path(data_root) / f"{case_id:03d}.mha"
# 最小可用子集:单例 CT + 单例标签即可跑通本脚本
import SimpleITK as sitk
import numpy as np
from pathlib import Path
def inspect_case(data_root: str, case_id: int = 1) -> None:
"""读取并体检一例 PENGWIN CT 及其标签。"""
root = Path(data_root)
image = sitk.ReadImage(str(root / f"{case_id:03d}.mha"))
label = sitk.ReadImage(str(root / f"labels/{case_id:03d}.mha"))
arr = sitk.GetArrayFromImage(label) # (z, y, x)
vals = np.unique(arr)
print(f"spacing (x,y,z): {image.GetSpacing()}") # 例:(0.801, 0.798, 0.798)
print(f"size (x,y,z): {image.GetSize()}")
print(f"标签值集合: {vals}") # 预期 ⊂ {0,1..4,11..16,21..24}
# 两级解码:anatomy = (v-1)//10 -> 0 骶骨 / 1 左髋骨 / 2 右髋骨
for v in vals[vals > 0]:
anatomy, rank = divmod(int(v) - 1, 10)
print(f" 标签 {v}: {'骶骨 左髋骨 右髋骨'.split()[anatomy]} 第 {rank + 1} 大碎片")
inspect_case("pengwin_task1/labels_demo") # 替换为你的实际路径
Task 2 的最小验证脚本如下。它演示官方强调的三个必须步骤:uint32 读取、位编码解码、负 log + CLAHE 可视化(直接用官方 pengwin_utils.py 最稳):
# 目录预期:pengwin_task2/train/{input,output}/images/x-ray/001_0000.tif 等
# data_root 拼接关系:{root}/train/input/images/x-ray/{case:03d}_{view:04d}.tif
# 最小可用子集:任意一对 input/output TIFF
import numpy as np
import tifffile
from PIL import Image
def inspect_xray(root: str, case_id: int = 1, view: int = 0) -> None:
"""读取一对合成 X-ray 图像与位编码掩码并体检。"""
img = tifffile.imread(f"{root}/train/input/images/x-ray/{case_id:03d}_{view:04d}.tif")
seg = tifffile.imread(f"{root}/train/output/images/x-ray/{case_id:03d}_{view:04d}.tif")
assert img.shape == (448, 448) and seg.shape == (448, 448)
assert seg.dtype == np.uint32, f"掩码必须按 uint32 读取,当前 {seg.dtype}"
bits = [b + 1 for b in range(30) if (int(seg.max()) >> b) & 1] # 出现过的位(1-indexed)
overlap = ((np.unpackbits(seg.view(np.uint8).reshape(*seg.shape, 4), axis=-1).sum(-1)) > 8).mean()
print(f"强度范围: [{img.min():.4f}, {img.max():.4f}](原始强度,未加窗)")
print(f"出现过的碎片位: {bits}")
print(f"多标签重叠像素占比: {overlap:.2%}")
inspect_xray("pengwin_task2")
运行预期:纯净图(view 0000–0249)bits 只含解剖位,带器械图(0250–0499)除解剖位外还可能出现金属高亮但金属不进掩码——掩码位只编码骨碎片;重叠像素占比通常为两位数百分比,这是投影域任务难度的直接量化。
§6.2 数据获取
| 子集 | 链接 | 大小 | 申请流程 |
|---|---|---|---|
| Task 1 CT 训练集 | zenodo.org/records/10927452 | 8.08 GB(压缩) | 无需注册,直接下载 |
| Task 2 X-ray 训练集 | zenodo.org/records/10913196 | 分卷 tar.gz | 无需注册;建议用 git LFS 或 wget 断点续传 |
| HuggingFace 镜像(Task 1/Task 2) | MedOtter/PENGWIN_Task1 / Task2 | 与 Zenodo 逐字节一致 | 社区镜像,便于 datasets 库流式加载 |
# 完整下载 Task 1(图像分两卷 + 标签一卷)
for f in PENGWIN_CT_train_images_part1.zip PENGWIN_CT_train_images_part2.zip PENGWIN_CT_train_labels.zip; do
wget -c "https://zenodo.org/records/10927452/files/${f}"
done
# Task 2 按需下载前几卷(每卷 10 例 CT × 500 张图)
wget -c https://zenodo.org/records/10913196/files/train.zip # 或按卷下载 input/output tar.gz
下载后校验:Task 2 训练包官方 md5 为 9c90215dae54d8f494a85cfc7b19bc96(HF 镜像实测记录);解压后图像与掩码文件名必须一一对应(NNN_MMMM.tif)。两个容易踩的完整性陷阱:其一,Zenodo 大文件断点续传后务必校验 md5,半截 zip 解压出的 MHA 在 SimpleITK 读取时才会报错,此时排查方向极易被误导到数据本身;其二,HF 镜像经 Git LFS 分发,未装 LFS 时 clone 得到的是指针文件而非数据,校验方式是检查文件体积是否为 130 字节左右的文本。
§6.3 预处理全流程
Task 1 的关键预处理是"统一 spacing + 骨窗 + 标签解码";Task 2 的关键预处理是官方反复强调的"负 log 变换 + 加窗"。以下代码覆盖两条链路:
# 依赖:pip install SimpleITK scipy numpy
import numpy as np
import SimpleITK as sitk
from scipy.ndimage import zoom
CT_SPACING = (0.83, 0.83, 0.89) # 队列平均 spacing,作为统一重采样目标
def resample_ct(volume: np.ndarray, spacing: tuple, target=CT_SPACING) -> np.ndarray:
"""逐例 spacing 差异极大(0.658–1.25 mm),必须重采样到统一网格。"""
factors = [s / t for s, t in zip(spacing, target)] # (x, y, z)
return zoom(volume, zoom=factors, order=1) # 线性插值;标签重采样请改 order=0
def window_bone(volume: np.ndarray, lo: int = 150, hi: int = 1500) -> np.ndarray:
"""骨窗:皮质疑似范围裁剪后线性归一到 0–1。"""
v = np.clip(volume.astype(np.float32), lo, hi)
return (v - lo) / (hi - lo)
def decode_ct_label(label: np.ndarray):
"""两级层级解码。返回 anatomy(0/1/2 三通道)与实例 id 图。"""
fg = label > 0
anatomy = np.zeros_like(label, dtype=np.int8)
anatomy[fg] = ((label[fg] - 1) // 10).astype(np.int8) # 0 骶骨 / 1 左髋 / 2 右髋
return anatomy, label
def preprocess_ct(image_path: str, label_path: str):
img, lab = sitk.ReadImage(image_path), sitk.ReadImage(label_path)
vol = window_bone(resample_ct(sitk.GetArrayFromImage(img)[::-1], img.GetSpacing()[::-1]))
lab_r = resample_ct(sitk.GetArrayFromImage(lab)[::-1], img.GetSpacing()[::-1])
lab_r = np.rint(lab_r).astype(np.int32) # 标签必须最近邻语义,勿用插值灰度
return vol.astype(np.float32), lab_r
def preprocess_xray(raw_tiff: np.ndarray, lo: float = 0.4, hi: float = 2.5) -> np.ndarray:
"""官方建议流程:负 log 变换 -> 加窗。raw_tiff 为未加窗原始强度。"""
neg_log = -np.log(np.clip(raw_tiff.astype(np.float32), 1e-6, None))
return np.clip((neg_log - lo) / (hi - lo), 0.0, 1.0)
def decode_xray_mask(seg: np.ndarray):
"""uint32 位编码 -> (30, H, W) 二值实例掩码。位 b = 10*(组-1) + 组内序号。"""
out = np.zeros((30, *seg.shape), dtype=bool)
for b in range(1, 31):
out[b - 1] = (seg & (1 << (b - 1))) > 0
return out # 仅组 1–4/11–16/21–24 位会出现 1
两个任务的预处理决策对照:
| 决策点 | Task 1(CT) | Task 2(X-ray) |
|---|---|---|
| 是否必须重采样/加窗 | 必须统一 spacing(75 种组合) | 必须负 log + 加窗(原始强度) |
| 插值选择 | 图像线性、标签最近邻语义(rint 后取整) | 不涉及(2D 原生分辨率) |
| 归一化基准 | 骨窗 150–1500 HU(皮质范围) | 全局 lo=0.4, hi=2.5(负 log 域) |
| 强度一致性风险 | 扫描仪差异(无逐例设备元数据可查) | DeepDRR 噪声参数逐图随机 |
| 输出粒度 | 96³ 级 3D patch | 448×448 全图 |
| 官方参考实现 | 论文预处理节 | pengwin_utils.py 增强管线 |
§6.4 PyTorch DataLoader 完整示例
# 依赖:pip install torch SimpleITK numpy
# 目录预期:
# data_root/ct/images/001.mha ... 100.mha
# data_root/ct/labels/001.mha ... 100.mha
import numpy as np
import SimpleITK as sitk
import torch
from torch.utils.data import Dataset, DataLoader
class PengwinCTPatchDataset(Dataset):
"""PENGWIN Task 1:逐例重采样后按 96^3 patch 采样的实例分割 Dataset。"""
def __init__(self, data_root: str, case_ids: list, patch_size: int = 96,
samples_per_case: int = 8):
self.root = data_root
self.case_ids = case_ids
self.ps = patch_size
self.spc = samples_per_case
def __len__(self) -> int:
return len(self.case_ids) * self.spc
def _load(self, cid: int):
img = sitk.ReadImage(f"{self.root}/ct/images/{cid:03d}.mha")
lab = sitk.ReadImage(f"{self.root}/ct/labels/{cid:03d}.mha")
sp = img.GetSpacing() # (x, y, z)
vol = np.clip(sitk.GetArrayFromImage(img).astype(np.float32), 150, 1500)
vol = (vol - 150) / 1350.0
seg = sitk.GetArrayFromImage(lab).astype(np.int32)
return vol, seg, sp # 数组均为 (z, y, x)
def __getitem__(self, idx: int):
cid = self.case_ids[idx // self.spc]
vol, seg, sp = self._load(cid)
# 简化处理:这里按原始网格取 patch;生产环境应先按 §6.3 重采样
z, y, x = vol.shape
pz = min(self.ps, z); py = min(self.ps, y); px = min(self.ps, x)
zz = np.random.randint(0, z - pz + 1); yy = np.random.randint(0, y - py + 1)
xx = np.random.randint(0, x - px + 1)
patch = vol[zz:zz + pz, yy:yy + py, xx:xx + px]
label = seg[zz:zz + pz, yy:yy + py, xx:xx + px]
patch = np.pad(patch, [(0, self.ps - s) for s in patch.shape])
label = np.pad(label, [(0, self.ps - s) for s in label.shape])
return torch.from_numpy(patch[None].copy()), torch.from_numpy(label[None].copy())
dataset = PengwinCTPatchDataset("data_root", case_ids=list(range(1, 81)))
loader = DataLoader(dataset, batch_size=2, shuffle=True, num_workers=4, pin_memory=True)
for image, label in loader: # image: (B,1,96,96,96) label: (B,1,96,96,96) int
break # 接入你的分割网络与层级损失即可
Task 2 的 2D Dataset 同样给出完整实现,注意分组键 case_id 必须保留给 §5.3 的防泄漏划分:
# 目录预期:xray_root/input/images/x-ray/001_0000.tif ... 100_0499.tif(output 同构)
import numpy as np
import tifffile
import torch
from torch.utils.data import Dataset, DataLoader
class PengwinXrayDataset(Dataset):
"""PENGWIN Task 2:合成 C 臂图像 + 位编码多标签掩码。"""
def __init__(self, xray_root: str, pairs: list, lo: float = 0.4, hi: float = 2.5):
self.root = xray_root
self.pairs = pairs # [(case_id, view_id), ...],由分组划分外部生成
self.lo, self.hi = lo, hi
def __len__(self) -> int:
return len(self.pairs)
def __getitem__(self, idx: int):
case_id, view = self.pairs[idx]
stem = f"{case_id:03d}_{view:04d}.tif"
raw = tifffile.imread(f"{self.root}/input/images/x-ray/{stem}").astype(np.float32)
seg = tifffile.imread(f"{self.root}/output/images/x-ray/{stem}") # uint32 位编码
neg_log = -np.log(np.clip(raw, 1e-6, None))
image = np.clip((neg_log - self.lo) / (self.hi - self.lo), 0.0, 1.0)
mask = np.zeros((30, *seg.shape), dtype=np.float32)
for b in range(30):
mask[b] = ((seg >> b) & 1).astype(np.float32) # 位 b(0-indexed)= 官方位 b+1
return torch.from_numpy(image[None]), torch.from_numpy(mask), case_id
pairs = [(c, v) for c in range(1, 81) for v in range(0, 400)] # 示例:仅纯净半区
loader = DataLoader(PengwinXrayDataset("pengwin_task2/train", pairs),
batch_size=16, shuffle=True, num_workers=4)
for image, mask, case_id in loader: # image (B,1,448,448) / mask (B,30,448,448)
break
§6.5 八大坑点
⚠️ 坑点 1:把它当 3 类语义分割训练(分类:标签理解)
问题:标签值 1–30 是"解剖组 × 碎片实例"的两级层级编码,不是 3 个解剖类的像素值。若直接把标签压成 3 类语义分割,碎片分离信息全部丢失,模型输出无法用于复位规划。
症状:训练损失正常收敛、解剖 Dice 很高,但评估 IoU-F 时发现预测把相邻碎骨连成一整块,实例分数反而低于语义基线。
解决:
- 简单方法:保留原始标签直接做 31 类(0 背景 + 1–30)分割,后处理按连通域归并。
- 进阶方法:两阶段方案——第一阶段做骶骨/左髋/右髋 3 类语义分割,第二阶段在各解剖组内做实例分离;官方冠军 MIC-DKFZ 与亚军 SMILE 均为此范式。
- SOTA 方法:采用边界-核心(boundary-core)表示:预测核心类 + 边界类四分类,用中轴变换动态调边界厚度,连通域提取核心后再按最近邻归并边界,显式抑制相邻碎片融合。
参考:Sang et al., IEEE TMI 45(5):2212–2228, 2026, DOI 10.1109/TMI.2025.3650126;冠军代码 https://codebase.helmholtz.cloud/hi-dkfz/applied-computer-vision-lab/challenges/abbc
⚠️ 坑点 2:按名义上限 30 分配 one-hot / 输出通道(分类:标签理解)
问题:文档写"1–10 骶骨、11–20 左髋、21–30 右髋",但 100 例实测最大标签只有 24,实际出现的值仅 1–4、11–16、21–24。按 30 通道建 one-hot 会浪费 6+ 通道并使尾部通道永远无正样本。
症状:训练日志里尾部类别损失恒为 0 或 NaN;按 30 类做类别加权时出现除零或权重爆炸。
解决:
- 简单方法:先对全部标签体跑一次
np.unique,按实测值集合建编码表。- 进阶方法:通道按"解剖组(3)+ 组内序号(≤10)"两级组织,损失分别按组计算再加权。
- SOTA 方法:不做固定 one-hot,用实例索引 + 主/次碎片二分类头(亚军方案),或边界-核心表示让通道数与实例数解耦。
参考:https://huggingface.co/datasets/MedOtter/PENGWIN_Task1 (逐标签体实测记录)
⚠️ 坑点 3:X-ray 原始强度 TIFF 直接喂模型(分类:预处理陷阱)
问题:Task 2 图像是未做任何窗宽窗位处理的原始强度投影。跨图强度分布漂移极大,直接输入网络会让模型学到逐图亮度偏差而非解剖结构。
症状:同一模型在 ID 0001 与 ID 0423 上的预测质量天差地别;训练早期 loss 剧烈震荡不收敛。
解决:
- 简单方法:对每张图先做负 log 变换
-log(I),再做全局窗宽窗位(如 lo=0.4, hi=2.5)。- 进阶方法:负 log 后逐图 CLAHE 对比度归一(官方 pengwin_utils.visualize_sample 的做法),训练与推理保持同一管线。
- SOTA 方法:把负 log + 加窗固化进 DataLoader,并按官方增强管线(pengwin_utils.py)做随机窗宽扰动以增强鲁棒性。
参考:Zenodo record 10913196 官方说明与 pengwin_utils.py 示例
⚠️ 坑点 4:uint32 位编码掩码用普通图像库直读(分类:工程陷阱)
问题:X-ray 掩码是位编码多标签图——每个像素是 30 位二进制向量,同一像素可同时属于多个重叠碎片。用 PIL/OpenCV 按 8/16 位图像读入会把数据截断破坏。
症状:掩码读出来大片全 0 或条纹状噪声;可视化时碎片轮廓消失;重构标签与源 CT 对不上。
解决:
- 简单方法:用
tifffile.imread或 PIL 以 uint32 模式读取,再用位运算解码(见 §6.3decode_xray_mask)。- 进阶方法:直接调用官方
pengwin_utils.load_masks,返回(masks, category_ids, fragment_ids)三元组,避免自实现位序错误。- SOTA 方法:训练前把位编码一次性预解码为逐实例 PNG 缓存(磁盘换时间),并在缓存层加 md5 校验防半写文件。
参考:Zenodo record 10913196 README;https://huggingface.co/datasets/MedOtter/PENGWIN_Task2
⚠️ 坑点 5:忽视逐例几何差异,统一超参数处理 100 例(分类:预处理陷阱)
问题:面内矩阵 322×154 至 512×512 共 71 种形状、spacing 组合 75 种,且 36/100 例被裁剪至骨盆区(两个处理批次)。用统一的滑窗尺寸/归一化策略会在部分病例上切掉髋骨或产生极端纵横比 patch。
症状:验证集上少数病例 IoU-F 掉到 0.5 以下且错误集中在视野边缘;排查发现这些例子的 spacing 明显偏离均值。
解决:
- 简单方法:全部重采样到平均 spacing (0.83, 0.83, 0.89) mm 再训练(§6.3 代码)。
- 进阶方法:先做身体区域检测(阈值 + 形态学,Sano 方案 PeFreCT 的做法)裁掉空气与检查床,再按目标 spacing 重采样,降低无效计算。
- SOTA 方法:两阶段裁剪——第一阶段用低分辨率 U-Net 或 TotalSegmentator 定位骨盆区,第二阶段仅在裁剪区高分辨率推理(季军 MedIG 方案),兼顾显存与精度。
参考:Sang et al., IEEE TMI 2026 各队方法节;https://github.com/pzhhhhh2263/MICCAI-Challenge-PENGWIN2024
⚠️ 坑点 6:X-ray 自建划分按图像随机切,同源 CT 跨训练/验证侧(分类:数据泄漏)
问题:Task 2 的 500 张图共享同一源 CT 的解剖与骨折形态。若按"图像文件"随机划分,同一患者的投影会同时出现在训练与验证集,X-ray 分数虚高且与官方测试协议(按 CT 划分)不可比。
症状:X-ray 验证 IoU 比官方 final test 同类方法高出一大截;换成真实 C 臂数据后性能骤降。
解决:
- 简单方法:以文件名前缀
NNN(源 CT 编号)为分组键做 GroupShuffleSplit。- 进阶方法:CT 与 X-ray 两个任务共用同一 case_id 划分清单,跨任务对比时严格同构。
- SOTA 方法:复刻官方分层(按骨折类型分层抽样 100/20/30 比例),并在论文中公开切分清单供社区对齐。
参考:Sang et al., IEEE TMI 2026 §3.2(数据划分);HF 镜像对官方划分的记录
⚠️ 坑点 7:只报 Dice / 按语义类平均评估(分类:评估误用)
问题:官方协议是 IoU、HD95、ASSD 三指标 ×(骨折 F / 解剖 A)双轨,且最终名次取各指标排名平均、以运行时间破平局。只报整体 Dice 既掩盖了碎片融合(临床代价最高的错误),也无法与排行榜对比。
症状:论文审稿被要求补 IoU-F/HD95;或发现自己 Dice 更高但排行榜名次更低,误以为评测有误。
解决:
- 简单方法:实现 IoU-F(实例级交并比逐例平均)+ HD95 + ASSD,掩码层面区分 F(碎片)与 A(解剖合并)两套真值。
- 进阶方法:加入"融合率/分裂率"诊断指标(预测实例与真值实例的匹配矩阵分析),定位错误类型。
- SOTA 方法:直接复用官方/社区评测脚本与 Docker 镜像,在 T4 GPU + 10 分钟/例约束下测得可提交口径的分数。
参考:Sang et al., IEEE TMI 2026 §3.3(评测协议与指标定义)
⚠️ 坑点 8:把合成 X-ray 成绩当成真实术中性能(分类:偏倚陷阱)
问题:Task 2 全部为 DeepDRR 仿真渲染,散射、噪声与束硬化均由模型近似生成,且渲染自同一批 100 例 CT。评审者已指出"仿真忠实性"是该结论的关键未验证前提——0.774 的 IoU-F 不能外推为真实 C 臂下的性能。
症状:用 Task 2 训练的模型部署到真实术中影像后,分割边界发虚、金属器械周边伪影区域大面积误检。
解决:
- 简单方法:在论文/报告中明确标注"合成域成绩",不做术中性能声明。
- 进阶方法:做域自适应——对真实 C 臂图像做风格迁移到 DeepDRR 域,或反之做仿真参数随机化(加噪、增益、几何扰动)。
- SOTA 方法:转向交互式分割(总结论文的官方建议):让术者在 1–2 个切片上点击纠偏,模型在线更新,以人类在环弥合 sim-to-real 缺口。
参考:Sang et al., IEEE TMI 2026 Discussion;https://pith.science/p/2504.02382 (同行评审意见)
§6.6 数据增强
| 增强 | 安全性 | 说明 |
|---|---|---|
| 随机 3D 缩放(±15%)、平移、旋转(≤10°) | ✅ 安全 | 模拟患者摆位差异;X-ray 域官方本就随机化相机位姿 |
| 随机窗宽窗位扰动 | ✅ 安全 | 增强扫描协议鲁棒性;X-ray 域在负 log 之后施加 |
| 高斯噪声 / 随机 gamma | ✅ 安全 | 与 DeepDRR 的噪声注入机制同向,任务 2 可加大量级 |
| 矢状面镜像翻转 + 左右髋骨标签互换 | ✅ 安全(有条件) | Sano 方案实测有效;必须把左髋组标签(11–20)与右髋组(21–30)互换,骶骨组不变 |
| 水平翻转但不交换左右髋标签 | ❌ 危险 | 解剖语义错乱:网络被教成"左髋骨长在右边" |
| 90°/180° 旋转 | ❌ 危险 | 违背头先进仰卧位的重力与体位先验,等于引入不存在的患者姿态 |
| X-ray 域直接旋转 45° 以上 | ❌ 危险 | 官方相机采样限制在偏离垂直轴 ≤45°(Zenodo 口径),超限角度在真实 C 臂工作流中不存在 |
增强管线的两条实践提示:第一,CT 域的翻转增强必须走"翻转 + 标签组互换"的成对操作,Sano 团队(PeFreCT)实测借此把训练集翻倍且 IoU-A 保持稳定,这是本数据集少数被论文验证过的增广红利;第二,Task 2 的"纯净/带器械"双区结构本身就是天然的域随机化实验设计——训练时把器械半区当增强、评估时按 has_hardware 分组报告指标,可以量化金属干扰的精确代价,这比笼统的平均分更有信息量。
§6.7 模型推荐
| 模型/方案 | 任务 | 排行榜成绩 | 关键技术 | 适用场景 |
|---|---|---|---|---|
| nnUNet 官方基线 | Task 1 CT | IoU-F 0.9003 | 标准配置 nnUNet | 冷启动复现与消融对照 |
| MIC-DKFZ ABBC(冠军) | Task 1 CT | IoU-F 0.9296 / HD95-F 5.866 mm | 两阶段 + 边界-核心分解 + 中轴变换动态边界 | 追求 SOTA 实例分离 |
| SMILE(亚军) | Task 1 CT | IoU-F 0.9096 | 低分辨率定位 + 主/次碎片两阶段 | 显存受限、可解释性优先 |
| MedIG(季军) | Task 1 CT | IoU-F 0.9084 | TotalSegmentator 裁剪 + NexToU | 快速搭建裁剪式两阶段 |
| Mask R-CNN 类实例分割 | Task 2 X-ray | 部分 X-ray 队伍采用 | 2D 实例直接回归 | 投影域重叠较少的场景 |
| 官方方法(Liu et al.) | Task 1 CT | Dice 0.986 / ASSD 0.234 mm(自建 150 例评测) | 级联 UNet + 距离加权损失 | 复现数据集论文管线 |
选型说明:表中 Dice 与 IoU 属于不同口径(前者来自数据集论文的自建评测,后者来自 TMI 榜单),不可横向比较。从工程成本看,nnUNet 基线到 SMILE(+0.009)只需两级训练管线,到 MIC-DKFZ(+0.029)则需要引入边界-核心表示与中轴变换,实现复杂度跳升明显——预算有限的项目建议先把两阶段范式做扎实,再评估是否值得复刻 ABBC;而 X-ray 侧没有强基线,Mask R-CNN 或 nnUNet 2D 配置都是合理的起点,改进空间(0.774 之上)反而更大。
§6.8 硬件需求
| 场景 | 建议配置 | 说明 |
|---|---|---|
| Task 1 训练(3D patch) | 1× 24 GB 显存(RTX 4090/A100 起步)+ 64 GB RAM | 重采样后 96³ patch,batch 2–4;33.77 GB 解压盘 + 缓存空间 |
| Task 2 训练(2D) | 1× 12–16 GB 显存 | 448×448 2D 任务,消费级单卡可训 |
| 挑战赛推理复刻 | T4 GPU、8 vCPU、32 GB RAM、10 分钟/例 | Grand-Challenge 官方评测容器上限 |
| 全量存储 | ≥120 GB 空闲 | Task 1 解压 33.77 GB + Task 2 分卷 + 解码缓存 |
算力规划的三个经验值:3D 域每 epoch 的瓶颈通常在数据加载而非 GPU——逐例重采样务必缓存到本地 NVMe,否则 8 worker 也喂不满一张 A100;Task 2 的 50,000 张图按 batch 16 训练一个 epoch 约 3,125 步,消费级单卡单 epoch 在分钟级,适合做高频消融实验;冠军方案的推理负担主要来自两阶段串行与滑窗重叠,若需在 10 分钟/例的评测预算内跑完,建议按官方协议在 T4 实例上实测延迟后再决定测试时增强的取舍。
§6.9 评估指标代码
# 与官方口径对齐的实例级 IoU 与表面距离骨架实现
# 注意:官方评测在 Grand-Challenge 容器内完成,本代码用于本地研发迭代
import numpy as np
from scipy.ndimage import distance_transform_edt
def instance_iou_per_case(pred: np.ndarray, gt: np.ndarray) -> float:
"""逐实例最优匹配 IoU 的平均值(IoU-F 简化口径)。"""
ious = []
for v in np.unique(gt[gt > 0]):
p = pred == v
g = gt == v
inter = np.logical_and(p, g).sum()
union = np.logical_or(p, g).sum()
if union > 0:
ious.append(inter / union)
return float(np.mean(ious)) if ious else 0.0
def hd95(pred_mask: np.ndarray, gt_mask: np.ndarray, spacing_mm=(0.83, 0.83, 0.89)) -> float:
"""95 分位 Hausdorff 距离(mm):取 pred→gt 与 gt→pred 双向表面的 95 分位。
空集时返回 NaN,由调用方决定折算策略(官方协议中空预测按最差值计)。"""
if pred_mask.sum() == 0 or gt_mask.sum() == 0:
return float("nan")
d_pred = distance_transform_edt(~pred_mask, sampling=spacing_mm)
d_gt = distance_transform_edt(~gt_mask, sampling=spacing_mm)
distances = np.concatenate([d_gt[pred_mask], d_pred[gt_mask]])
return float(np.percentile(distances, 95))
def fusion_rate(pred: np.ndarray, gt: np.ndarray) -> float:
"""融合率:一条预测实例覆盖 ≥2 条真值实例的比例(临床代价最高错误)。"""
fused, total = 0, 0
for v in np.unique(pred[pred > 0]):
covered = np.unique(gt[pred == v])
covered = covered[covered > 0]
total += 1
if len(covered) >= 2:
fused += 1
return fused / total if total else 0.0
§6.10 MLOps 笔记
- 容器化评测:官方协议要求 Docker 容器内推理(T4 GPU / 8 vCPU / 32 GB RAM / 10 分钟每例),本地研发时就应在等价容器内测延迟,避免"本地快、上榜超时"。
- 确定性切分清单:把 case_id 划分写进版本控制的 JSON 文件,训练入口只读清单,杜绝"改一行代码换一次划分"的隐性过拟合。
- 数据版本钉死:Zenodo v1.0.0(2024-04-03)为唯一数据版本,DOI 既是引用也是版本锁;社区镜像需 md5 校验后使用。
- 评测缓存与预解码:位编码掩码解码成本高,推荐在数据准备阶段一次性物化为逐实例掩码,并为缓存文件记录源 md5。
- 监控融合率:把 §6.9 的 fusion_rate 加入训练看板——该指标恶化往往早于 IoU-F 下降,是碎片表示退化的前哨信号。
- 复现冠军结果的路径管理:冠军 ABBC 代码托管在 Helmholtz 的 GitLab 实例,依赖版本与 nnUNet 生态耦合较深;建议以容器锁定其环境而非裸装依赖,避免 nnUNet 版本漂移带来的隐藏差异。
- 跨模态产物追踪:CT 任务与 X-ray 任务共享 100 例源数据,任何衍生制品(切分清单、缓存、预测)都应带 case_id 外键,便于审计"某个 X-ray 图来自哪例 CT"。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 地域偏倚 | 全部 150 例来自中国 6 家医院,无跨洲验证 | 高 | 外部验证时补充本地质;引用几何指纹做中心分组 |
| 入选偏倚 | 仅收录拟手术患者,保守治疗骨折(多数老年人脆性骨折)缺位 | 高 | 用于手术规划场景时基本无害;用于急诊筛查需补数据 |
| 性别不平衡 | 女 63 / 男 87 | 中 | 分性别子集评估;报告按性别分解的指标 |
| 小碎片截断 | <500 mm³ 碎屑被排除,模型学不到微小碎骨 | 中 | 术后评估场景需声明该边界;可自行放宽重标 |
| 合成域偏倚 | X-ray 全为 DeepDRR 渲染,真实 C 臂分布未覆盖 | 高(对 Task 2) | 域随机化/风格迁移;人机交互式部署 |
| 设备元数据缺失 | 不附逐例设备型号,跨设备泛化无法直接分析 | 中 | 用 spacing/矩阵指纹近似分组做敏感性分析 |
偏倚之间的交互效应也需要警惕:地域偏倚与入选偏倚叠加后,数据集实际刻画的是"中国三甲级创伤中心、需要手术干预的中青年高能量骨折"这一窄断面——它在自己的目标场景(手术复位规划)里是合理的对齐,但任何超出该场景的复用(急诊分诊、保守治疗监测、儿科)都属于分布外应用,现有成绩(哪怕是接近观察者间一致性的 0.9296)不构成对这些场景有效性的证据。建议在项目立项时把"目标场景是否落在数据集断面内"作为第一道检查项。
§7.2 标注质量
金标准经四步流程 + 资深骨科专家终审,观察者间一致性(IoU-F 0.9848、ASSD-F 0.306 mm)在 TMI 论文中作为天花板公开,说明标注总体高度可复现。主要不确定带在于不完全骨折:专家对发丝样裂缝是否构成独立碎片存在分歧,此类病例的标签应视为"随机变量"而非绝对真值;在训练中可对这些边界病例降权或做标签平滑。三个解剖组 100% 覆盖、主碎片(标签 1/11/21)零缺失是实测确认的底线质量。
对标注质量的三点工程化解读:
- 一致性天花板近在眼前:冠军 0.9296 与观察者间 0.9848 的差距(约 5.5 个 IoU 点)中,很大一部分可能来自标注歧义而非算法缺陷——继续刷分前应先估算"可达成上限",避免把标注噪声当模型误差去优化。
- 主碎片可靠、次级碎片是方差来源:标签 1/11/21(每块骨的最大碎片)语义清晰、跨标注者分歧最小;高序号小碎片(实测仅到 24 号位)体积小、边界模糊,是评估分数的主要方差来源。消融实验建议按"主碎片 only"与"全实例"双口径报告。
- 2D 掩码不是独立标注:Task 2 的真值由 3D 标注投影生成,其质量继承 3D 层且额外受投影几何影响(重叠处多标签位并存)。任何"2D 标注错误率"分析都应回溯到 3D 源头。
§7.3 泛化性
| 部署场景 | 失效风险 | 证据 |
|---|---|---|
| 中国以外医院 CT | 中高 | 单国队列;扫描协议与人群差异未验证 |
| 老年脆性骨折(低能量) | 高 | 队列均为高能量手术病例 |
| 真实 C 臂术中影像 | 高 | 全部 X-ray 为合成;TMI 论文列为关键未验证前提 |
| 金属植入物大量存在的术后 CT | 中高 | 训练集为术前影像,金属伪影暴露有限(Task 2 仅含虚拟 K-wire) |
| 儿童患者 | 高 | 队列最小 16 岁 |
§7.4 伦理与合规
数据经脱敏后以 MHA 分发,DICOM 头信息移除,不含患者标识、日期或中心元数据。许可为 CC BY-NC-SA 4.0:允许非商业使用与相同方式共享,禁止商业用途;挑战赛数据通过 Grand-Challenge 平台分发并受平台使用条款约束。论文披露作者中含北京罗森博特科技雇员(数据采集与机器人研发关联方),使用者引用时应注意该利益关联。数据不涉及特权医疗信息分发,但任何临床转化仍需独立伦理审批与监管路径。
合规自查的四个问题,接入管线前建议逐条过一遍:你的使用场景是否落在"非商业"边界内(企业内部研发是否算商业用途,以 CC BY-NC-SA 条款原文与法务意见为准);你的衍生数据集是否以相同许可再分发(SA 条款对微调数据卡、蒸馏集同样生效);你的发布物是否保留了官方引用要求(§9.3 的三条论文);若面向欧盟用户部署,本数据集作为训练源是否纳入了你的 GDPR 数据治理记录。
§7.5 公平性
可评估的公平性维度有限(人口学字段未随数据分发):已知性别比 63/87,年龄跨度 16–94 岁连续覆盖。建议使用者在自建验证集上按性别与年龄段(如 <40 / 40–60 / >60)分解 IoU-F,检查小年龄段(两端)是否有系统性掉点;女性骨盆形态学与骨折模式的差异是否影响碎片分离精度值得专项审计。此外还有一个容易被忽略的公平性切面:病例均来自"有手术指征"的人群,而手术决策本身受医疗资源与术者理念影响——若模型未来用于急诊筛查或保守治疗随访,其训练分布与目标人群之间隔着一条"谁做了手术"的选择机制,这属于算法公平与临床公平的交叉地带,应在部署文档中显式声明。
§7.6 数据漂移
采集窗口 2017–2023 跨 7 年,扫描设备换代与协议演进构成温和的时间漂移源;2026 年同名新挑战赛(PENGWIN 2026)将引入新数据,两代数据的分布差异会成为新的漂移轴。监控建议:对新就诊 CT 计算与训练集几何指纹(spacing、矩阵形状)的分布距离,并按 §6.9 指标做季度回测。
漂移监控可落地为三道仪表:第一道是输入漂移——新病例的 spacing/形状指纹落在训练集 71 种形状支撑之外的比例;第二道是预测漂移——逐例碎片数预测值与训练分布(5.7±1.4)的偏移,碎片数是本任务最稳定的分布代理变量;第三道是性能漂移——若能拿到少量专家复核标签,按季度回测 IoU-F 并与首月基线做配对比较。三道仪表成本递增,建议至少落前三道中的前两道。
§7.7 DAIMS 24 项质量评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 影像型数据集:每例一个 MHA/TIFF 文件对,无宽表行列语义混乱风险 |
| 2 | 唯一标识 | ✅ | 001–100 连续编号,文件名即主键;X-ray 以 NNN_MMMM 双层键 |
| 3 | 特殊字符 | ✅ | 全数字文件名,跨平台路径安全 |
| 4 | 重复行 | ✅ | 无重复病例;50,000 张 X-ray 与源 CT 的多对一关系显式可查 |
| 5 | 缺失编码 | ✅ | 图像-标签一一对应,无缺失文件 |
| 6 | 标签标识 | ✅ | 两级层级编码有官方文档与解码公式 |
| 7 | 罕见类分组 | ⚠️ | 名义 30 实例槽位实测仅 24 种出现;组内高序号碎片稀疏 |
| 8 | 偏倚评估 | ⚠️ | 官方报告了人口学与骨折类型分布,但无逐例人口学表供第三方复核 |
| 9 | 数据字典 | ✅ | Zenodo README + 官方 pengwin_utils.py 注释完整 |
| 10 | 信息性缺失解释 | ✅ | 背景值 0 与"实例不存在位"语义明确 |
| 11 | 设备记录 | ⚠️ | 仅"多设备"描述,无逐例设备元数据 |
| 12 | 共线性 | ✅ | 影像数据不适用;无冗余派生列 |
| 13 | 编码映射 | ✅ | anatomy=(v-1)//10 公式官方明确,SNOMED/ICD 映射见本页 §2 |
| 14 | 时间戳处理 | ⚠️ | 仅采集窗口 2017–2023,无逐例日期 |
| 15 | 划分建议 | ⚠️ | 官方划分为 100/20/30 但仅训练集公开,社区需自建划分 |
| 16 | 泄漏讨论 | ⚠️ | 分层抽样有据,但 Task 2 与 Task 1 跨模态同源泄漏需使用者自行防范(见 §5.3) |
| 17 | 标签分布 | ✅ | 每例碎片数 5.7±1.4、各组体积统计均有发表数据 |
| 18 | 测量偏倚 | ⚠️ | 发丝样骨折专家分歧已披露,无逐例歧义度标记 |
| 19 | 外部验证建议 | ✅ | TMI 论文给出 inter-observer 天花板与 Ensemble 参照,明确 sim-to-real 待验证 |
| 20 | 版本记录 | ✅ | Zenodo v1.0.0 + DOI 锁定,2026 新赛另立记录可区分 |
| 21 | 预处理脚本 | ✅ | 官方 pengwin_utils.py 提供加载/解码/可视化 |
| 22 | 合规要求 | ✅ | CC BY-NC-SA 4.0 条款清晰,非商业 + 相同方式共享 |
| 23 | 多模态对齐 | ✅ | X-ray 掩码由 3D 标注沿同一相机几何投影生成,CT-X-ray 逐像素对齐 |
| 24 | 去标识化 | ✅ | DICOM 头移除,MHA 无患者标识/日期/中心信息 |
DAIMS 评分:19.5 / 24(16 项 ✅ 计 1 分、7 项 ⚠️ 计 0.5 分、0 项 ❌)
评分解读:19.5 分处于"高质量可立即用于建模"区间。扣分集中在两类:元数据层缺口(设备、时间戳、逐例人口学,共 3.5 分)与划分/泄漏治理依赖使用者自觉(1 分)。影像与标签本体质量(对齐、去标识化、工具链)近乎满分,这在挑战赛系数据集中属于第一梯队——因为评测平台的可复现性要求倒逼了数据工程规范。
对你意味着什么:可以直接把 PENGWIN 当作骨盆骨折分割的主训练集接入管线,官方脚本让前两天就能跑通端到端训练;但要立刻做三件事——①按 §5.3 以 case_id 建立自己的切分清单并纳入版本控制;②在特征表中显式登记"设备元数据缺失",把所有跨设备结论标注为待验证;③X-ray 相关结论一律带上"合成域"前缀,禁止直接写入术中性能声明。若你的下游需要逐例人口学(公平性审计)或临床分型(Tile/Young-Burgess)标签,需要另行设计采集,数据集本身不提供。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 挑战赛 final test(30 例 CT,held-out) | PENGWIN 组织方平台 | 碎片实例分割 | IoU-F 0.9296(MIC-DKFZ)/ 0.9364(Ensemble) | 相对开发阶段提交有回落 | 冠军已逼近观察者间 0.9848;两阶段+边界-核心为胜出范式 |
| 模拟复位规划评测 | MedIA 2025 管线论文 | 碎片分割 + 复位对位 | 解剖对位误差 1.695 mm(boundary-core 法) | — | 分割质量可转化为规划精度,形成任务闭环 |
| 真实术中 X-ray | 尚无同行评审结果 | 2D 碎片分割 | — | — | TMI 论文明确列为未来工作;当前 0.774 为合成域上限 |
§8 基准性能与生态
§8.1 CT 任务排行榜(final test,IEEE TMI 2026)
| 排名 | 模型/队伍 | IoU-F | HD95-F (mm) | ASSD-F (mm) | IoU-A | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|---|---|
| 1 | MIC-DKFZ | 0.9296 | 5.866 | 1.843 | 0.9810 | 边界-核心分解(ABBC)+ 中轴变换动态边界 | Johannsen et al., 2024, MICCAI PENGWIN(方法详述见 Sang et al., 2026, IEEE TMI. DOI 10.1109/TMI.2025.3650126) | codebase.helmholtz.cloud |
| 2 | SMILE | 0.9096 | 5.562 | 1.663 | 0.9802 | 低分辨率定位 + 主/次碎片两阶段 | Yue et al., 2024, MICCAI PENGWIN(同上) | github.com/yuepeiyan/PENGWIN_Challenge |
| 3 | MedIG | 0.9084 | 6.207 | 1.680 | 0.9798 | TotalSegmentator 裁剪 + NexToU | Pan et al., 2024, MICCAI PENGWIN(同上) | github.com/pzhhhhh2263/MICCAI-Challenge-PENGWIN2024 |
| 4 | MedApp-AGH | 0.9049 | 6.899 | 2.007 | 0.9783 | FracSegNet 改 + 骨折面分割网络 | Jurgas et al., 2024, MICCAI PENGWIN(同上) | github.com/Jarartur/pengwin-challenge-submission |
| 5 | Sano(PeFreCT) | 0.8802 | 6.866 | 1.697 | 0.9491 | 双 UNet + 矢状面镜像增强 | Płotka et al., 2024, MICCAI PENGWIN(同上) | 见 TMI 论文方法节 |
| — | 官方基线 | 0.9003 | 6.967 | 2.178 | 0.9804 | nnUNet 标准配置 | Sang et al., 2026, IEEE TMI | — |
| — | 观察者间一致性 | 0.9848 | 1.317 | 0.306 | 0.9996 | 人工金标准天花板 | Sang et al., 2026, IEEE TMI | — |
| — | Ensemble | 0.9364 | 4.055 | 1.347 | 0.9819 | 多模型集成 | Sang et al., 2026, IEEE TMI | — |
注意:X-ray 任务最优 IoU-F 为 0.774(合成域),与 CT 数值不可直接比较。同一表格内的 CT 分数虽在同一测试集测得,但各队推理环境与后处理不同,且最终名次按多指标排名平均而非单项 IoU,因此跨行比较应以名次为准。
§8.2 SOTA 总结与选型建议
CT 任务的结论已相当收敛:两阶段(解剖先定位 → 组内分碎片)是基本盘,实例表示策略(边界-核心 vs 主/次分类)决定上限。新项目建议直接从 nnUNet 基线(0.9003)起步,叠加边界-核心表示冲击 0.93 区间;集成还能再拿约 0.006 的 IoU-F(0.9296→0.9364)。X-ray 任务 0.774 的天花板意味着任何 2D 投影分割创新都有充足的改进空间,尤其适合做重叠推理与不确定性建模的论文。
一份参考训练配方(结合五强方案的共性做法):
| 阶段 | 配置要点 | 出处依据 |
|---|---|---|
| 第一阶段:解剖分割 | 全盆 CT 三类(骶骨/左髋/右髋);SMILE 用低分辨率 U-Net 提供全局上下文防假阳性,MedIG 直接复用 TotalSegmentator | TMI 论文各队方法节 |
| 第二阶段:碎片分离 | 裁剪至解剖区内训练;SMILE 区分主/次碎片,MIC-DKFZ 用边界-核心四类表示并以中轴变换动态定边界厚度 | 同上 |
| 损失设计 | 数据集论文的 distance-weighted loss 把权重集中在骨折面上;边界类需独立加权防止相邻碎片融合 | Liu et al., Front Med 2025 |
| 后处理 | 连通域提取 + 按解剖边界分裂/合并 + 与第一阶段前景掩码对齐;次级碎片按评测规则重排标签 | TMI 论文 SMILE/冠军后处理节 |
| 增强 | 矢状面镜像 + 左右髋标签互换(PeFreCT 实测有效)、随机缩放旋转、X-ray 域加窗扰动 | TMI 论文 Sano 节;Zenodo 官方增强管线 |
| 推理约束 | 容器内 T4 GPU / 10 分钟每例;滑窗重叠推理 + 测试时增强需在此预算内调参 | Grand-Challenge 评测协议 |
§8.3 评测协议
开发阶段(256 次 CT 提交、84 次 X-ray 提交)+ final test(11 支 CT 队、5 支 X-ray 队,共 16 队)。指标:IoU(实体掩码)、HD95 与 ASSD(表面轮廓),均分骨折(F)与解剖(A)双轨;对每例取平均后按指标独立排名,名次平均定总名次,平局以容器执行时间裁决。提交物为 Docker 容器,平台隔离运行于 T4 GPU(8 vCPU、32 GB RAM、10 分钟/例)。该协议采纳了 Metrics Reloaded 的指标建议,是 2024 年 MICCAI 挑战赛中执行规范度最高的协议之一。
协议中有两处设计对结果解读很关键:其一,"各指标独立排名后取平均"意味着一个 HD95 极差但 IoU 略优的方案不会单凭 IoU 登顶,鼓励的是均衡而非偏科;其二,HD95/ASSD 在表面轮廓而非体素上计算,且以毫米/像素为物理单位,使不同 spacing 的病例间具有可比性——自行复现评测时若在体素单位上算距离,数值会系统性偏差一个量级。
§8.4 相关数据集
| 数据集 | 模态 | 任务 | 与 PENGWIN 的关系 |
|---|---|---|---|
| CTPelvic1K | 3D CT | 骨盆骨语义分割 | PENGWIN 标注流水线的预训练起点;可作解剖阶段迁移源 |
| RibFrac Challenge | 3D CT | 肋骨骨折实例分割与分型 | 同为 MICCAI 骨折实例基准,方法可互相迁移 |
| DeepDRR(工具) | 仿真框架 | X-ray 渲染 | Task 2 数据的生成器,可用于自定义位姿再仿真 |
| TotalSegmentator | 3D CT | 多器官分割 | 季军方案的骨盆定位组件,通用解剖先验 |
选型提示:若你的研究目标是"分割算法本身",上表四个资源可以串成一条完整管线——TotalSegmentator 或 CTPelvic1K 预训练做第一阶段解剖定位,PENGWIN 训练第二阶段碎片分离,RibFrac 检验方法的跨骨骼迁移性;若目标是"复位规划应用",则 PENGWIN + MedIA 2025 管线论文的组合是最短路径。
§8.5 关键论文 Top 5
- Liu Y, Yibulayimu S, Zhu G, et al. Automatic pelvic fracture segmentation: a deep learning approach and benchmark dataset. Front Med. 2025;12:1511487. DOI 10.3389/fmed.2025.1511487 —— 数据集与级联分割方法的原初论文(Dice 0.986 / ASSD 0.234 mm)。
- Sang Y, Liu Y, Yibulayimu S, et al. Benchmark of Segmentation Techniques for Pelvic Fracture in CT and X-Ray: Summary of the PENGWIN 2024 Challenge. IEEE TMI. 2026;45(5):2212–2228. DOI 10.1109/TMI.2025.3650126 —— 挑战赛官方总结:全部榜单数字、标注协议与方法学洞察的权威出处。
- Liu Y, Yibulayimu S, Sang Y, et al. Preoperative fracture reduction planning for image-guided pelvic trauma surgery: A comprehensive pipeline with learning. Med Image Anal. 2025;102:103506. DOI 10.1016/j.media.2025.103506 —— 从分割到复位规划的下游任务闭环。
- Unberath M, Zaech JN, Lee SC, et al. DeepDRR—a universal, robust, and realistic simulator for projection X-ray imaging. Med Phys. 2018 —— Task 2 合成 X-ray 的生成框架。
- Isensee F, Jaeger PF, Kohl SAA, et al. nnU-Net revisited: a step-by-step plan for deep learning-based biomedical image segmentation. Nat Methods. 2021 —— 官方基线与多支获奖队伍的骨干框架。
§8.6 社区活跃度
挑战赛本身聚合了 25 国 239 名注册者与 26 支队伍,是骨盆影像方向近年参与度最高的公开赛事之一;前四名队伍全部开源了完整方案代码,形成"榜单-代码-论文"三位一体的生态。2026 年同名续赛(Peripelvic Fracture Segmentation and Reduction Planning)已启动,社区关注点正从纯分割扩展到复位规划任务链。引用体量尚在早期(数据集论文 Frontiers 统计 4 次,截至 2026-09),属于"标准已立、引用洼地"的窗口期。
对新入场者的三个社区行动建议:其一,复现结果优先跑官方基线(nnUNet 0.9003)再对齐冠军方法,跳过基线的对比论文容易被质疑协议不一致;其二,HuggingFace 上的 MedOtter 镜像附带了逐标签体实测统计(最大标签、批次划分等),是排查"文档说的"与"数据里有的"差异的第一站;其三,2026 续赛沿用 PENGWIN 名称但在 Zenodo 另立记录,引用与实验务必钉死 DOI,防止两代数据混入同一实验。
§8.7 生态快照
| 资源 | 类型 | 链接 | 可得性 | 推荐理由 |
|---|---|---|---|---|
| PENGWIN 官方挑战页 | 官网 | pengwin.grand-challenge.org | 公开 | 任务定义、评测协议与引用格式的一站式出处 |
| Task 1 CT 训练集 | 数据 | zenodo.org/records/10927452 | 公开(CC BY-NC-SA 4.0) | 8.08 GB 主数据 |
| Task 2 X-ray 训练集 | 数据 | zenodo.org/records/10913196 | 公开(CC BY-NC-SA 4.0) | 50,000 张带掩码合成图 |
| MIC-DKFZ ABBC | 冠军代码 | codebase.helmholtz.cloud | 开源 | 边界-核心 SOTA 实现 |
| SMILE 方案 | 亚军代码 | github.com/yuepeiyan/PENGWIN_Challenge | 开源 | 两阶段范式参考实现 |
| MedIG 方案 | 季军代码 | github.com/pzhhhhh2263/MICCAI-Challenge-PENGWIN2024 | 开源 | TotalSegmentator+NexToU 管线 |
| MedApp-AGH 方案 | 第四名代码 | github.com/Jarartur/pengwin-challenge-submission | 开源 | 骨折面分割思路 |
| HF 镜像(MedOtter) | 社区镜像 | PENGWIN_Task1 / Task2 | 公开 | 附逐标签体实测统计,debug 利器 |
§9 相关资源与引用
§9.1 官方资源
- 挑战赛官网与任务说明:pengwin.grand-challenge.org
- CT 训练集(Zenodo,DOI 10.5281/zenodo.10927452):zenodo.org/records/10927452
- X-ray 训练集(Zenodo,DOI 10.5281/zenodo.10913195):zenodo.org/records/10913196
- 官方工具脚本 pengwin_utils.py(随 Task 2 包分发):加载、位编码解码、CLAHE 可视化与增强管线
- 挑战赛总结论文预印本:arxiv.org/abs/2504.02382
- Grand-Challenge 平台(Docker 评测容器规范):grand-challenge.org
- 各获奖队伍开源代码:MIC-DKFZ ABBC(codebase.helmholtz.cloud/hi-dkfz/applied-computer-vision-lab/challenges/abbc)、SMILE(github.com/yuepeiyan/PENGWIN_Challenge)、MedIG(github.com/pzhhhhh2263/MICCAI-Challenge-PENGWIN2024)、MedApp-AGH(github.com/Jarartur/pengwin-challenge-submission)
- HuggingFace 社区镜像(含逐标签体实测统计):MedOtter/PENGWIN_Task1、MedOtter/PENGWIN_Task2
- DeepDRR 仿真框架:Unberath et al. 2018(Task 2 数据生成器,可复用于自定义位姿的再仿真)
§9.2 BibTeX 完整引用
@article{liu2025pengwin,
title = {Automatic pelvic fracture segmentation: a deep learning approach and benchmark dataset},
author = {Liu, Yanzhen and Yibulayimu, Sutuke and Zhu, Gang and Shi, Chao and Liang, Chendi and Zhao, Chunpeng and Wu, Xinbao and Sang, Yudi and Wang, Yu},
journal = {Frontiers in Medicine},
volume = {12},
pages = {1511487},
year = {2025},
doi = {10.3389/fmed.2025.1511487}
}
@article{sang2026pengwin,
title = {Benchmark of Segmentation Techniques for Pelvic Fracture in {CT} and {X-Ray}: Summary of the {PENGWIN} 2024 Challenge},
author = {Sang, Yudi and Liu, Yanzhen and Yibulayimu, Sutuke and Wang, Yunning and Killeen, Benjamin D. and Liu, Mingxu and Ku, Ping-Cheng and Johannsen, Ole and Gotkowski, Karol and Zenk, Maximilian and Maier-Hein, Klaus and Isensee, Fabian and others},
journal = {IEEE Transactions on Medical Imaging},
volume = {45},
number = {5},
pages = {2212--2228},
year = {2026},
doi = {10.1109/TMI.2025.3650126}
}
@article{liu2025pipeline,
title = {Preoperative fracture reduction planning for image-guided pelvic trauma surgery: A comprehensive pipeline with learning},
author = {Liu, Yanzhen and Yibulayimu, Sutuke and Sang, Yudi and Zhu, Gang and Shi, Chao and Liang, Chendi and Cao, Qiyong and Zhao, Chunpeng and Wu, Xinbao and Wang, Yu},
journal = {Medical Image Analysis},
volume = {102},
pages = {103506},
year = {2025},
doi = {10.1016/j.media.2025.103506}
}
@dataset{pengwin2024ct,
title = {PENGWIN Task 1: Pelvic Fragment Segmentation on 3D CT Scans (training set)},
author = {{PENGWIN Challenge Organizers}},
year = {2024},
publisher = {Zenodo},
version = {1.0.0},
doi = {10.5281/zenodo.10927452},
url = {https://zenodo.org/records/10927452}
}
@dataset{pengwin2024xray,
title = {PENGWIN Task 2: Pelvic Fragment Segmentation on Synthetic X-ray Images (training set)},
author = {Killeen, Benjamin and Liu, Mingxu and Ku, Ping-Cheng and others},
year = {2024},
publisher = {Zenodo},
version = {1.0.0},
doi = {10.5281/zenodo.10913195},
url = {https://zenodo.org/records/10913196}
}
§9.3 引用指南
使用数据本体(图像/掩码)时引用两条 Zenodo 数据集记录;报告模型性能或方法学设计时必须引用 IEEE TMI 2026 总结论文(榜单数字的唯一权威出处);使用官方两阶段分割方法时引用 Front Med 2025。若工作涉及 Task 2 合成数据的生成机制,同时引用 DeepDRR 原论文。注意与 2026 年同名新挑战赛的数据记录区分,引用时保留 DOI 以避免版本混淆。
引用时最常见的三个错误:一是只引 Front Med 2025 而把 TMI 榜单数字当成自己的评测结果——两篇论文的测试协议不同(后者是平台 held-out 测试),混引会被审稿人要求重新对齐口径;二是把 HF 镜像当作官方来源引用——镜像与 Zenodo 逐字节一致可直接用,但引用条目应指向 Zenodo DOI;三是引用"150 例"时未注明仅 100 例公开——正确的表述是"150 例 cohort 的 100 例公开训练划分",这直接决定读者能否复现你的实验。
§10 AI 使用声明卡
§10.1 AI 模型列表
本页面的编写与整理过程中使用了通用大语言模型(负责资料汇总、结构组织与代码示例起草);未使用任何专用医学 AI 模型生成医学结论。
§10.2 AI 参与范围
AI 参与范围限于:公开资料的检索摘要整理、章节框架与表格初稿生成、代码示例与文字润色。所有事实性内容(规模数字、榜单成绩、编码映射、许可条款)均由编辑部依据原始来源逐一核实;医学解读与偏倚分析由医学编辑部复核定稿。AI 未参与任何事实的原创判断:所有数字都能在 §10.3 来源列表中找到对应出处,所有代码示例均基于官方 pengwin_utils.py 与 TMI 论文描述的方法学构造,未经数据实机验证的部分已在正文中标注验证建议。
§10.3 输入来源列表
- PENGWIN 挑战赛官网. Overview — Pelvic Bone Fragments with Injuries Segmentation Challenge. https://pengwin.grand-challenge.org/
- PENGWIN Task 1: Pelvic Fragment Segmentation on 3D CT Scans (training set). Zenodo. 2024. DOI 10.5281/zenodo.10927452. https://zenodo.org/records/10927452
- PENGWIN Task 2: Pelvic Fragment Segmentation on Synthetic X-ray Images (training set). Zenodo. 2024. DOI 10.5281/zenodo.10913195. https://zenodo.org/records/10913196
- Sang Y, Liu Y, Yibulayimu S, et al. Benchmark of Segmentation Techniques for Pelvic Fracture in CT and X-Ray: Summary of the PENGWIN 2024 Challenge. IEEE Trans Med Imaging. 2026;45(5):2212–2228. DOI 10.1109/TMI.2025.3650126
- Sang Y, et al. 同上论文预印本. arXiv:2504.02382. 2025. https://arxiv.org/abs/2504.02382
- Liu Y, Yibulayimu S, Zhu G, et al. Automatic pelvic fracture segmentation: a deep learning approach and benchmark dataset. Front Med. 2025;12:1511487. DOI 10.3389/fmed.2025.1511487
- Liu Y, Yibulayimu S, Sang Y, et al. Preoperative fracture reduction planning for image-guided pelvic trauma surgery. Med Image Anal. 2025;102:103506. DOI 10.1016/j.media.2025.103506
- Liu Y, et al. 同上论文 PubMed 收录页. PMID 40303367. https://pubmed.ncbi.nlm.nih.gov/40303367/
- MedOtter. PENGWIN_Task1 / PENGWIN_Task2(Zenodo 镜像与逐标签实测统计). HuggingFace Datasets. https://huggingface.co/datasets/MedOtter/PENGWIN_Task1
- Novel-BioMedAI. Pelvic Bone Fragments with Injuries Segmentation Challenge(官方仓库镜像). HuggingFace Datasets. https://huggingface.co/datasets/Novel-BioMedAI/Pelvic_Bone_Fragments_with_Injuries_Segmentation_Challenge
- openmedlab. Awesome-Medical-Dataset: PENGWIN(切片总数、体积统计实测). GitHub. https://github.com/openmedlab/Awesome-Medical-Dataset/blob/main/resources/PENGWIN.md
- World Health Organization. ICD-10 浏览器:S32 腰椎和骨盆骨折条目(含 S32.1–S32.6 子码). https://icd.who.int/browse10/2014/en
- eMedCodes. S32.1 Fracture of sacrum(ICD-10→ICD-11 GEMS 映射:NB52.10). https://www.emedcodes.com/ICD10/S321.html
- NCBI MedGen. Pelvis fracture(Concept C0149531;SNOMED CT 77493009). https://www.ncbi.nlm.nih.gov/medgen/
- Athena OHDSI. Open fracture of pelvis(SNOMED CT 15474008). https://athena.ohdsi.org/search-terms/terms/75932
- HandWiki/AMBOSS. Pelvic fracture(流行病学与 Tile/Young-Burgess 分型背景). https://handwiki.org/wiki/Medicine:Pelvic_fracture ;https://www.amboss.com/us/knowledge/Pelvic_fracture/
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(编码映射与流行病学数字) | 千方病案医学编辑部 | 对照 WHO ICD-10/ICD-11、MedGen、Athena 与论文原文逐项核对 | ✅ 已通过/已验证 |
| §3 数据集规格(规模、格式、划分) | 千方病案医学编辑部 | 对照 Zenodo 记录、挑战页与 IEEE TMI 论文逐项核对 | ✅ 已通过/已验证 |
| §4 DAIMS 数据字典与标签编码 | 医疗 AI 数据工程师 | 对照官方 pengwin_utils.py 与 HF 镜像实测记录复核 | ✅ 已通过/已验证 |
| §6 预处理 Pipeline 与坑点 | 医疗 AI 数据工程师 | 代码逻辑走查 + 对照官方说明与获奖方案论文 | ✅ 已通过/已验证 |
| §7 质量评估与 DAIMS 24 项 | 千方病案医学编辑部 | 逐项对照来源状态表复核 | ✅ 已通过/已验证 |
| §8 基准与生态(榜单数字、链接有效性) | 千方病案医学编辑部 | 对照 TMI 论文榜单表与各仓库页面逐项核对 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
以下章节由 AI 起草后经人工核实定稿:§1 概览、§3 数据集规格、§4 数据结构、§6 AI 就绪指南、§8 基准与生态、§9 资源与引用。以下章节由人工主导撰写:§0 E-E-A-T 声明、§2 医学背景、§7 质量评估、§10 本声明卡。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致)
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- us-nerve-seg — 共享标签:医学影像 / 医学图像分割 / 挑战赛数据集 / 骨骼肌肉影像
- ctpelvic1k — 共享标签:医学影像 / 医学图像分割 / 手术视频 / 骨骼肌肉影像
- kvasir-instrument — 共享标签:医学影像 / 医学图像分割 / 手术视频
- cadis — 共享标签:医学影像 / 医学图像分割 / 手术视频
- fetreg — 共享标签:医学影像 / 医学图像分割 / 手术视频
- autoimplant — 共享标签:医学影像 / 医学图像分割 / 手术视频
- verse-spine — 共享标签:医学影像 / 医学图像分割 / 挑战赛数据集 / 骨骼肌肉影像
- phakir — 共享标签:医学影像 / 医学图像分割 / 手术视频 / 挑战赛数据集
- pitvis — 共享标签:医学影像 / 手术视频 / 挑战赛数据集
- endovis-challenges — 共享标签:医学影像 / 医学图像分割 / 手术视频
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
