信息速览

儿童骨龄 RSNA — 儿童手部 X 光骨龄评估 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | 儿童骨龄 RSNA |
| 英文全称 | RSNA Pediatric Bone Age Machine Learning Challenge Dataset |
| 别名/简称 | RSNA Bone Age;2017 RSNA Pediatric Bone Age Challenge |
| 疾病分类(ICD-11) | 5A91(青春期延迟);5A92(外周性性早熟);5B11(身材矮小症,不可归类在他处者);5B53(婴幼儿发育迟缓) |
| SNOMED CT | 官方未发布 SNOMED 编码;官方术语采用 RadLex RID10351(数字放射摄影)与 RadElement RDE123(骨龄,单位月) |
| 数据模态 | 儿童左手后前位 X 光(数字放射摄影,PNG) |
| AI 任务类型 | 回归(骨龄预测,单位月);辅助输入为性别二值标签 |
| 样本总数 | 14,236 张(训练 12,611 / 验证 1,425 / 测试 200) |
| 数据大小 | Kaggle 镜像 v2 约 9.97 GB(12.8k 个文件) |
| 数据格式 | PNG 图像 + CSV 标注表(boneage-training-dataset.csv / boneage-test-dataset.csv) |
| 许可证 | RSNA 数据使用协议(学术研究与教育及其他非商业用途) |
| 访问级别 | 开放(官网 ZIP 下载 / Kaggle 镜像) |
| DUO 标签 | NPUNCU(非商业非营利用途) |
| 语言 | 标注表与文档为英文 |
| 首发日期 | 2017-08-05(训练数据发布) |
| 最后更新 | 2017-10-07(测试集发布,挑战赛收官) |
| 发布机构 | RSNA(北美放射学会) |
| 官方主页 | RSNA Pediatric Bone Age Challenge 2017 |
| 下载地址 | Kaggle:kmader/rsna-bone-age |
| DOI | 10.1148/radiol.2018180736 |
| 引用次数 | 450+(OpenAlex,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方划分与标注 CSV 即取即用,测试集 200 张却不含公开骨龄标签,且无官方预处理脚本,需自行裁剪归一化 |
| 页面状态 | published |
§0 E-E-A-T 审核与免责
§0.1 医学审核:[千方病案医学编辑部] 交叉审核:§2 医学背景(ICD-11 与术语映射、骨龄评估临床方法学)、§7 偏倚与公平性分析。审核日期:2026-09-05。
§0.2 数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 与 8 个坑点。审核日期:2026-09-05。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。该数据集按 RSNA 数据使用协议发布,仅限学术研究与教育及其他非商业用途,禁止尝试识别或联系任何受试者;再分发时须附数据集下载链接并引用 Halabi 等 2018 年 Radiology 论文。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? 这是北美放射学会(RSNA)2017 年儿科骨龄机器学习挑战赛的官方数据集:14,236 张儿童左手后前位 X 光片,每一张都带有儿科放射科医师判读的骨龄(以月为单位)和性别标签,划分为 12,611 张训练、1,425 张验证、200 张测试,图像来自斯坦福 Lucile Packard 儿童医院与科罗拉多儿童医院的临床 PACS(Halabi et al., 2018)。图像为 PNG 格式、标注为两个 CSV 文件,下载后一小时内即可完成第一次数据体检。
为什么重要? 骨龄评估是儿科内分泌与生长发育门诊最常用的影像学检查,传统 Greulich-Pyle 图谱对照法耗时长且读片者间差异可达半年以上。该挑战赛前五名模型的平均绝对距离(MAD)为 4.2-4.5 个月,已明显优于单一人类评分员约 5.8-6.5 个月的误差水平,成为"AI 影像任务超越人类读片"的经典示范(RSNA 挑战赛报告;BoneXpert 复盘)。它也是少数建立了"赛事→官方论文→外部审计"完整证据链的医学影像数据集。
我能用它做什么? 训练端到端骨龄回归模型、研究性别分层建模、构建医学影像预处理基准、评估多中心图像异质性对模型的影响。它也是医学影像教学与计算机视觉课程最友好的入门数据集之一——PNG 图像加两个 CSV 文件即可跑通全流程,免费 T4 级 GPU 即可训练出接近文献水平的基线。
§1.1 技术摘要
本节供需要"一段话讲清数据集怎么来的"的读者快速取用,细节均可在对应章节展开:
RSNA 骨龄数据集的构建始于 Larson 等人 2017 年在 Radiology 发表的深度学习骨龄研究:研究团队从两家儿童医院的临床 PACS 收集 14,036 张带临床骨龄报告的左手 X 光,训练出与专家读片水平相当的卷积神经网络(Larson et al., 2017)。2017 年,这批图像与标注被捐赠给 RSNA,由其放射信息学委员会策划为挑战赛数据集并扩大为 14,236 张:12,611 张训练集与 1,425 张验证集带有"骨龄(月)+ 性别"标注,200 张测试集的骨龄金标准则由 6 名评审的加权平均值构成,权重依各评审相对表现赋值(0.14-0.21),仅在评测阶段使用。挑战赛历时约 10 周,260 个个人或团队注册,48 名参赛者提交 105 次结果,主评测指标为月单位平均绝对距离(MAD),一致性相关系数(CCC)为并列破题时的次级指标;最终前五名 MAD 为 4.2、4.4、4.4、4.5、4.5 个月(Halabi et al., 2018)。图像为 PNG 格式、分辨率经归一化处理,数字拍摄与扫描胶片并存,无烧录 PHI。整个构建链条——临床 PACS → 研究库 → 挑战赛数据集 → 公共镜像——每一步都有对应文献或官方页面背书,这使它成为少数溯源完整的万张级医学影像数据集。
§1.2 战略价值
维度一:作为回归型医学影像任务的"标定型"基准。 与分类任务不同,骨龄预测是连续变量回归,天然要求更细的误差度量与校准评估。该数据集提供了定义清晰的评测口径(MAD/CCC)、固定的 200 张测试集与人类读片者基线(单评分员 MAD 5.8 个月、6 人加权参考标准自身不确定度约 2.6 个月),使任何新方法都能在同一把尺下与 2017 年以来的数百篇文献直接对话。正因如此,2017 年之后几乎每一篇自动骨龄评估论文都在引用它作为对照(综述对比表)。
维度二:儿科影像公开数据稀缺性的高质量填补。 儿童医学影像长期受伦理与隐私约束,公开数据集远少于成人领域。该数据集以约 1.4 万张规模、覆盖 1-228 个月连续发育谱、附带临床级标注,成为学界研究儿科图像分割、关键点检测、多区域建模与不确定性估计的通用底座;其冠军模型的后续审计更催生了对性别与发育阶段偏倚的系统性研究方法(Beheshtian et al., 2022)。
维度三:医学 AI 挑战赛方法论的可复用遗产。 该挑战赛确立了一套被 RSNA 系列赛事沿用至今的赛事模板:三段式数据发布、人类评审基线锚点、复合加权金标准、方法说明强制提交与年会公开授奖。对主办方而言它是赛事设计的参照系;对研究者而言它示范了如何把"竞赛数字"沉淀为"可审计的科学结论"——从 105 次提交中识别出的集成效应与偏倚问题,后续都发表了独立同行评审论文,这一"赛事→论文→审计"的完整证据链在医学影像公开数据集中并不多见。
§1.3 同类数据集横向对比
选择骨龄数据集时的三个常见误区是"只看张数"“只看是否公开”“忽略金标准定义”;下表把评测口径与获取约束一并呈现:
| 数据集 | 规模 | 模态 | 标注 | 差异化定位 |
|---|---|---|---|---|
| RSNA Bone Age(本词条) | 14,236 张 | 儿童左手 PA 位 X 光(PNG) | 骨龄(月)+ 性别,测试集金标准为 6 评审加权均值 | 规模最大、评测口径最标准化的公开骨龄回归基准 |
| Digital Hand Atlas(Gilsanz-Ratib 系) | 29 个年龄-性别参考类(0-18 岁) | 手腕 X 光 | 图谱参考标准 | Larson 2017 曾取 913 张作为外部测试集,用于跨库泛化对照 |
| BoneXpert 内部训练库(Visiana) | 约 30,000 例(含 RSNA 14,036、图宾根 8,250 等) | 手部 X 光 | 商用 CE 认证系统标注体系 | 闭源商用,仅可作系统级对比,不可下载 |
| 私有单中心临床集(多篇论文) | 数百至数千张 | 手部 X 光 | GP/TW3 判读 | 用于外部验证,无公开下载渠道 |
横向对比的三点结论:其一,RSNA Bone Age 是唯一同时具备"万张级规模 + 公开下载 + 统一评测口径"的骨龄数据集,其余公开资源要么规模小、要么口径分散;其二,Digital Hand Atlas 的价值在外部验证而非训练——其参考类结构与回归标注不完全兼容,但作为跨库泛化测试被 Larson 2017 确立为惯例;其三,商用系统(BoneXpert 等)训练库规模更大但封闭,学术工作只能以官方测试集 MAD 做间接比较,这进一步凸显了本数据集作为"公共标尺"的不可替代性。
§1.4 版本时间轴
| 时间 | 事件 |
|---|---|
| 2017-08-01 | 挑战赛网站开放,注册启动 |
| 2017-08-05 | 训练集 12,611 张与验证集 1,425 张(带标注)发布 |
| 2017-10-07 | 测试集 200 张(无公开标签)发布 |
| 2017-10-15 | 提交截止,评测完成 |
| 2017-11-27 | RSNA 年会机器学习展馆公布获奖名单 |
| 2018-11 | Halabi 等挑战赛报告发表于 Radiology(DOI 10.1148/radiol.2018180736) |
| 2019 | 集成学习分析表明 4 模型集成可将泛化 MAD 降至 3.79 个月 |
| 2022 | Beheshtian 等发表冠军模型外部验证与偏倚审计 |
| 截至 2026-09 | Kaggle 镜像累计下载 29.1K 次、浏览 179K 次 |
时间轴上的两个关键节点值得展开:2017-08-05 数据发布到 2017-10-15 提交截止仅约 10 周,参赛者需要在窗口内完成从数据理解到模型提交的全流程,这一紧凑设计保证了各方案在相同算力时间预算下的可比性;2018-11 的 Radiology 官方报告则把挑战赛的临时规则固化为可引用的学术口径(MAD/CCC、三段划分、金标准定义),此后 8 年的所有后续文献实际上都在复用这套协议,形成了罕见稳定的长周期基准。
§1.5 典型应用场景
- 骨龄自动评估模型研发:以训练集 12,611 张监督学习,输出月级骨龄预测,对标挑战赛 4.2 个月 MAD 基准。这是最主流的用法——从 2017 年冠军方案到 2026 年的不确定性建模,几乎所有新骨干网络与新训练技巧都选择在此数据集上首验。
- 性别分层与偏倚审计研究:利用性别标签复现 Beheshtian 等发现的女童误差偏倚,练习公平性评估方法。分性别重训练、FiLM 条件化、分性别校准曲线等设计均以该数据集为实验台。
- 医学影像预处理教学:图像数字/扫描双来源、尺寸异质、需要裁剪与对比度增强,是极好的预处理管线练习素材。学生可在一天内跑通"读取-裁剪-增强-训练-评估"全链路,成本远低于 CT/MRI 数据集。
- 关键点检测与分割迁移研究:社区常用 U-Net/关键点模型先定位手部与腕骨再回归,可复现 Iglovikov 等多区域建模思路;手部解剖结构清晰,也是医学关键点检测教学的标准案例。
- 模型校准与不确定性量化:将回归误差与临床显著错误率(改变正常/延迟/提前诊断)关联分析,训练置信度可控的辅助诊断原型。骨龄任务是医学回归问题中少数有明确"临床决策阈值"语义的任务,适合研究校准(calibration)与选择性预测(selective prediction)。
§2 医学背景
本章为非临床读者提供理解该数据集所需的最低医学知识:骨龄是什么、临床怎么用、编码如何挂载。全部临床表述以公开发表的综述与 WHO 分类为据。
§2.1 ICD-11 编码映射
骨龄评估服务的核心临床场景是儿童生长与青春期发育障碍的筛查、诊断与随访。相关 ICD-11 编码(第 5 章内分泌、营养或代谢疾病)如下:
| ICD-11 编码 | 中文名称 | 英文名称 | 与骨龄评估的关系 |
|---|---|---|---|
| 5A91 | 青春期延迟 | Delayed puberty | 骨龄落后于实际年龄是中枢或体质性青春期延迟的关键佐证 |
| 5A92 | 外周性性早熟 | Peripheral precocious puberty | 外周性性早熟患儿常见骨龄提前 |
| 5B11 | 身材矮小症(不可归类在他处者) | Short stature, NEC | 矮小症鉴别诊断依赖骨龄判断生长潜能 |
| 5B53 | 婴幼儿发育迟缓 | Stunting in infants, children or adolescents | 营养性生长迟缓常伴骨龄延迟 |
| L2-5A9(块) | 某些青春期疾患 | Certain disorders of puberty | 青春期发育异常评估的通用分类块(5A90-5A9Z) |
编码依据 WHO ICD-11 中文版第 5 章(维基文库镜像)。映射逻辑说明:本数据集本身不携带诊断标签,骨龄只是这些疾病共用的客观测量之一;因此 ICD-11 映射描述的是"骨龄评估服务的临床场景",而非图像的可分类疾病。为数据集建立 ICD-11 索引的正确方式是"按临床用途挂载"——检索生长障碍相关数据集时会命中本数据集,但不应声称每张图像都对应某个 ICD-11 诊断。
§2.1b 术语与编码映射
官方数据集描述文档未发布 SNOMED CT 编码,而是采用放射学术语体系 RadLex 进行机器可读映射;骨龄标签本身被登记为 RadElement 数据元素。本表按官方文档口径整理:
| 标签/概念 | ICD-11 | 官方编码(RadLex 体系) | 术语说明 |
|---|---|---|---|
| 成像模态:数字放射摄影 | — | RadLex RID10351 | Preferred name: digital radiography |
| 骨龄标注(月) | — | RadElement RDE123 | 元素名 Skeletal age;值域 0-216 个月、步长 1;存储为字母数字电子表格 |
| 标注模式:全检查层级标签 | — | Whole study label | 每张图像一个标注,人工判读 |
§2.2 疾病与临床背景简介
骨龄(bone age)指骨骼发育的成熟度年龄,通过左手(含腕部)X 光片上各骨化中心的出现、形态与骺-干骺融合程度来综合判定,是儿童生物成熟度最重要且最具代表性的指标(骨龄评估方法学综述)。临床主流方法有二:
| 维度 | Greulich-Pyle(GP)图谱法 | Tanner-Whitehouse(TW)评分法 |
|---|---|---|
| 原理 | 患者片子与系列标准图对照取最接近者 | 对各骨逐一分期计分后查表换算骨龄 |
| 速度 | 快(数分钟) | 慢(逐骨评分,约 10-20 分钟) |
| 机构采用率 | 约 76% | 较低,多用于研究 |
| 重复性 | 依赖读片者经验,差异较大 | 相对更客观、可重复 |
| 参考库局限 | 基于 20 世纪中叶美国儿童 | TW3 修订过参考库 |
GP 图谱法快速易行,约 76% 的机构采用;TW 法对桡骨、尺骨、掌骨、指骨与腕骨逐一分期计分后换算骨龄,重复性更好但更耗时(SAA 综述)。骨龄与实际年龄偏差超过一定范围提示生长问题:骨龄提前可见于性早熟、先天性肾上腺增生等;骨龄延迟可见于生长激素缺乏、甲状腺功能减退、体质性青春期延迟、慢性病与营养不良等。骨龄亦是预测成人身高与指导骨科手术时机的关键参数。本数据集的全局"骨龄(月)"标签与 GP 法输出直接对应,与 TW 分期则需经伪标签等派生方法衔接。
流行病学要点:矮小与生长迟缓是儿科内分泌最常见的就诊主诉之一;中国等东亚地区儿童生长发育门诊量近年显著增长,骨龄片判读需求大而儿科放射科医师稀缺,这正是自动骨龄评估落地的核心驱动力。从方法学历史看,GP 图谱法自 1959 年问世以来地位稳固,但其参考人群为 20 世纪 30-40 年代美国白人儿童,应用于当代多族裔人群时存在系统性偏差;TW 法(TW2/TW3)经多次修订试图修正参考库,却因操作繁琐难以普及。两法共同的痛点是读片者间与读片者内差异:文献报道专业评估者对同一批片子的判读差异最高约 9.84 个月,不同医师对同一张片的判读可相差半年以上。这些"主观性赤字"构成了深度学习方法的价值空间——模型学习的是成千上万次判读的平均行为,等价于一个不知疲倦的"集体读片者"。骨龄评估在法医年龄鉴定领域亦有应用,但公开数据集对此年龄段覆盖不足——一项系统综述指出 RSNA 数据库中 18 岁及以上样本仅约 0.1%(PLOS ONE 综述)。
为什么选左手? 2 个月龄以后,左手(含腕部)的骨化中心数量最多、发育时间表覆盖出生到成熟全周期,且被认为是全身骨骼系统的代表性窗口;同时手部远离性腺与眼晶状体,辐射敏感组织受照剂量最低,适合作为常规随访检查。左优于右的传统源于多数人为右利手,左手受伤与劳损概率更低,骨龄干扰因素更少。
标准读片工作流概览:临床中一张骨龄片的判读依次覆盖——腕部 7 块腕骨的出现与融合、掌骨与指骨 13 个骨骺的宽度/融合分期(TW 法的 RUS 区)、尺桡骨远端骨骺、拇指内侧籽骨(青春期启动标志)。本数据集的全局骨龄标签等效于上述流程的最终输出值,为自动化管线提供了"端到端可对齐"的监督信号。
§2.3 临床任务定义
| 任务要素 | 定义 |
|---|---|
| 任务类型 | 连续回归——输入儿童左手 X 光(可选叠加性别),输出骨龄估计值(单位:月) |
| 筛查场景 | 与实际年龄比对生成"正常/延迟/提前"三分类提示,供内分泌门诊分诊 |
| 诊断支持 | 结合身高曲线、激素水平,为生长激素缺乏、性早熟、甲状腺功能减退等鉴别提供骨骼成熟度证据 |
| 随访监测 | 治疗前后骨龄变化速率(如抗性早熟治疗抑制骨龄进展) |
| 身高预测 | 骨龄是剩余生长潜能评估(如 TW 法身高预测公式)的核心输入 |
| 评测口径 | 挑战赛以月单位 MAD 为主指标、CCC 为次指标;人类基线为 6 名评审加权参考(评审员相对该参考的平均 MAD 为 5.8 个月) |
| 标注层级 | 官方为"全检查层级"标签,适合筛查与辅助诊断建模;不包含骨龄之外的诊断标签 |
任务边界的最后一点澄清:该数据集不包含身高、激素水平、诊断等临床协变量,因此"骨龄 + 临床信息融合预测"类研究只能以骨龄预测为第一阶段、外部数据为第二阶段;把本数据集当作"儿科内分泌全任务数据集"来规划实验,会在数据获取阶段即告失败。
§2.4 患者人群画像
| 维度 | 描述 |
|---|---|
| 来源机构 | 斯坦福 Lucile Packard 儿童医院、科罗拉多儿童医院(临床 PACS 回溯性采集);Kaggle 致谢页另列 UCLA 为贡献方 |
| 采集设计 | 回顾性、临床指征驱动(因生长评估等临床原因拍摄) |
| 年龄范围 | 1-228 个月(约 0-19 岁),女性样本 4-216 个月 |
| 性别构成 | 训练集男 6,833 / 女 5,778(女约 45.8%);验证集男 746 / 女 679;测试集男 100 / 女 100 |
| 种族/族裔 | 数据集未发布该字段 |
| 就医类型 | 儿科门诊与专科转诊混合(官方未细分) |
| 疾病构成 | 未发布逐例诊断;含健康发育随访与生长障碍就诊混合 |
| 伦理审批 | Stanford 与 Colorado 两院 IRB 批准,患者知情同意豁免;图像经人工复核排除烧录 PHI |
人群画像的两点提示:疾病构成未发布意味着数据集内"正常与异常发育"的比例不可知,做筛查场景建模时无法据此估计先验概率;疾病与种族字段的双重缺失,使本数据集只能支撑"骨龄回归"这一主任务本身,任何下游诊断类任务都需要外部标签。
§2.5 临床价值与转化路径
自动骨龄评估的工程价值在于把一名有经验内分泌科医生约 8-20 分钟的读片过程压缩到秒级,并消除读片者间差异(临床 AI 骨龄落地报道)。基于该数据集及其衍生技术,多家机构已推出商业化系统:Visiana 的 BoneXpert 于 2019 年发布 v3 版本(分析 28 块骨、RSNA 测试集 MAD 4.1 个月,为 CE 认证医疗器械);VUNO Med-BoneAge、16 Bit 等亦已商用(BoneXpert 复盘;digiBONE 论文)。对研究者而言,该数据集是从"实验室模型"走到"可注册医疗设备"之间最常被引用的中间验证场。
转化路径上可区分三个层次:辅助阅片(AI 出骨龄值、医师签字确认)已是成熟业态,国内多家三甲医院的生长发育门诊采用"医生+AI"双签模式;自动化全流程(无需医师复核的独立判读)在监管上要求更高,目前以商用 CE/FDA 路径推进;科研纵深则转向骨骺分割、骨龄标准差预测(给参考区间而非点估计)与多族裔曲线适配。使用本数据集的研究者应清楚自己处于哪一层——数据集的训练标签分辨率与人群构成只直接支撑前两层的早期验证。
§2.6 参考标准与标注体系
| 属性 | 内容 |
|---|---|
| 标注对象 | 每张左手 X 光的骨龄估计(月)+ 性别 |
| 标注方式 | 人工判读;以 Greulich-Pyle 图谱法为基本参照(官方描述登记为"人工标注、电子表格输出") |
| 训练/验证集标注者 | 各参与机构的儿科放射科医师(官方描述:每机构 2 名);训练集标签由单名医师读片产生,多年读片变异在训练中被平均 |
| 测试集金标准 | 6 名评审独立评估后加权平均(权重 0.14-0.21,均值 0.17,依各评审相对表现赋权) |
| 标注者一致性 | 评审员相对测试集金标准的平均绝对偏差(MAD)为 5.8 个月;BoneXpert 团队推导单一人类评分员相对"真值"MAD 约 6.5 个月、6 人平均参考标准自身不确定度约 2.6 个月 |
| 参考标准性质 | 复合加权均值(半客观参考标准),非单一金标准判读 |
使用参考标准时的两个注意点:引用人类基线时必须区分"单一评审员误差"(5.8-6.5 个月)与"多人加权参考的集体误差"(约 2.6 个月)——模型 4.2 个月的成绩是击败了前者、逼近后者的噪声下限,而不是"超越全体人类共识";此外加权参考是为竞赛排名设计的,做临床一致性研究时应重新采集独立多读片样本而非复用该 200 张测试集。
§3 数据集规格
本章回答"拿到手的是什么":版本怎么选、图像什么规格、标注什么结构、边界条件(设备、时间、地域)如何。所有规格描述以官方数据描述文档与挑战赛论文为准,社区二手信息单独标注。
§3.0 版本抉择矩阵
该数据集存在官方渠道与社区镜像两种获取路径,选择建议如下:
| 你的需求 | 推荐版本 | 大小 | 理由 |
|---|---|---|---|
| 快速跑通模型、参加课程项目 | Kaggle 镜像 kmader/rsna-bone-age v2 | 约 9.97 GB | 一条 kaggle 命令下载,目录结构社区通用,Notebook 环境免下载 |
| 复现 2017 挑战赛官方评测 | RSNA 官网 ZIP | 官方未标注 | 含挑战赛原始三段式划分与官方数据描述文档 |
| 大规模预处理实验/多机训练 | Kaggle 镜像 + 自建切分 | 约 9.97 GB | 测试集无公开标签,社区惯例从带标签的 14,036 张重切训练/验证/测试 |
| 学术引用与合规审计 | 官方渠道 + Halabi 2018 论文 | — | 许可条款、引用要求以 RSNA 官方协议为准 |
| 差异维度 | RSNA 官方渠道 | Kaggle 镜像(kmader) |
|---|---|---|
| 目录与文件命名 | 官方 ZIP 结构(随批次可能不同) | boneage-training-dataset/ 等社区标准命名 |
| 标签文件 | 训练+验证带标签 | 训练带标签;验证集标签多数版本缺失 |
| 版本号 | 无正式版本号 | v2(截至 2026-09) |
| 文档 | 含官方数据描述文档(RadLex 映射) | 页面描述 + 致谢信息 |
| 适用 | 合规审计、官方口径复现 | 日常建模与教学 |
§3.1 模态详情
- 成像方式:儿童左手后前位(PA)X 光片,RadLex 术语 digital radiography(RID10351)。
- 成像规格:数字 DR 与扫描胶片并存;分辨率经归一化处理,但原始像素尺寸不一(社区报告最高约 2080×1600 像素),不同站点的 kVp、源像距、探测器像素间距(约 0.1-0.5 mm/px)与放大率存在差异(BoneAgeTW2 预印本)。
- 官方预处理:无(官方描述 Pre-processing: None),仅分辨率归一化;PHI 经人工复核排除,无烧录 PHI。
- 体位与方向:标准 PA 位、指尖朝上、拇指外展;数据集内不含侧位片或双腕片,全部为单手单图。
- 灰度特性:8 位灰度 PNG,背景近纯黑,软组织与骨骼对比度因来源(扫描/数字)差异明显;CLAHE 增强是社区标配。
模态层面的实操含义:研究者不能假设"同一分布"——扫描胶片子集存在倾斜、暗角与不均匀光照,数字子集则可能有金属饰品伪影与体位差异;把这两类来源混合训练虽然能提升鲁棒性,但做域适应实验时需要把来源当作协变量显式记录。
§3.2 按子集样本数
| 子集 | 图像数 | 男性 | 女性 | 标签可用性 |
|---|---|---|---|---|
| 训练集 | 12,611 | 6,833 | 5,778 | 骨龄(月)+ 性别,公开 |
| 验证集(挑战赛排行榜集) | 1,425 | 746 | 679 | 骨龄(月)+ 性别,公开 |
| 测试集 | 200 | 100 | 100 | 仅性别公开;骨龄金标准保密,用于官方评测 |
| 合计 | 14,236 | 7,679 | 6,557 | — |
性别与子集构成来源:BoneAgeTW2 预印本数据表;官方数据描述文档给出训练/验证集女性占比 0.46(平均 127 个月)、测试集 0.50(平均 132 个月)。
关于子集构成的解读:测试集男女各 100 张是官方刻意平衡的设计,训练集男略多于女则是自然就诊结构;两性平均月龄接近(127 vs 132)但两性的骨成熟速度不同,因此"月龄相同"的两性影像在骨骼形态上有系统性差异——这正是坑点 1(性别输入)的生理学根源。
§3.3 文件格式
| 内容 | 格式 | 说明 |
|---|---|---|
| 图像 | PNG | 8 位灰度为主,文件名即图像 id(如 1377.png) |
| 训练标注 | CSV(boneage-training-dataset.csv) | 列:id、boneage(月)、male(TRUE/FALSE) |
| 测试标注 | CSV(boneage-test-dataset.csv) | 列:Case ID、Sex(M/F);不含骨龄 |
| 官方文档 | ZIP 内 PDF/说明页 | RSNA 官网数据描述文档(RadLex/RDE123 映射) |
格式层面的三个实操细节:PNG 均为灰度,读入后无需通道转换,用预训练 RGB 骨干时复制通道即可;CSV 的 male 列在不同工具链中被解析为布尔或字符串,建模前统一为 0/1 数值;文件名是纯整数且无前导零,按字符串排序会乱序,任何按文件遍历的逻辑都应先转 int。
§3.4 存储大小
Kaggle 镜像 v2 约 9.97 GB、12.8k 个文件(截至 2026-09);官方 RSNA 渠道 ZIP 大小未公开标注。解压后含训练集图像目录、测试集图像目录与两个 CSV。若批处理为统一 500×500 的 NPZ,体积约降至 3-4 GB;统一 256×256 则约 1 GB 以内,适合课程与快速实验环境。存储规划按"原始 10 GB + 预处理产物 4 GB + 训练缓存 5 GB"预留即可覆盖绝大多数单人研究场景。
§3.5 标注方式
- 人工标注:骨龄由儿科放射科医师按图谱法人工判读,输出以月为单位的整数;官方 RadElement 定义值域 0-216 个月、步长 1,实际数据覆盖 1-228 个月。
- 标注层级:全检查层级(Whole study label)——每张图像一个全局标签,无逐骨分期标注。
- 弱监督衍生用法:社区常以骨龄+性别生成各骨预期发育阶段的伪标签做 TW 式分段建模(如 BoneAgeTW2 的概率分期策略),此类派生标注不属于官方数据。
标注粒度决定了任务的"可解释性上限":全局标签让模型可以直接端到端训练,但无法回答"是哪块骨的发育落后把骨龄拉低了一年"这类临床问题;若产品需要向医生解释依据,就必须引入分割或关键点网络提供中间证据——这些中间标注全部要靠社区自行生产,数据集本身不提供。
§3.6 标注者资质与一致性
训练/验证集:各机构 2 名儿科放射科医师级别读片者;测试集:6 名评审加权平均,评审员相对金标准平均 MAD 5.8 个月。参照临床文献,GP 法读片者间差异可达数月级别(有研究报告专业评估者之间差异最高约 9.84 个月,巴西队列论文),因此约 4-6 个月的模型误差已进入"超越单一人类"区间。
加权机制值得注意:6 名评审的权重并非均分,而是按每人相对其他人的表现赋值(0.14-0.21,均值 0.17),表现越稳定者权重越高。这一设计压制了离群评审对金标准的污染,但也让金标准成为一个"模型化的复合评分"而非任何单一权威判读——复现者若用单名医师重新标注测试集,得到的 MAD 系统性偏高约 1-2 个月,这不是模型退化,而是标准差异。
§3.7 采集周期
官方文档未披露图像临床采集的具体时间窗口。数据集于 2017-08-05 对参赛者发布;如需时间维度信息,建议引用时写"采集窗口未披露,2017 年发布"。
时间信息缺失对两类研究有实际影响:趋势研究(如"当代儿童骨成熟是否提前")无法用它做基线,因为不知道这些儿童拍片的确切年代;漂移监控也无法定义"数据龄期",只能以发布时间 2017 年作为保守上界。若你的应用对时间敏感,应在数据卡中显式声明这一盲区。
§3.8 地域覆盖
美国两家儿科医院(加州斯坦福、科罗拉多州奥罗拉)为主;Kaggle 致谢页另列加州大学洛杉矶分校(UCLA)为贡献方。单国、多中心、高收入医疗体系样本,无低资源地区影像。
对地域覆盖的实操判断:骨成熟度存在已知的人群间差异(营养、气候、遗传背景均影响发育节奏),美国两院样本训练的模型在东亚、非洲人群上使用时,应预期出现系统性偏移而非随机误差;跨人群部署前建议先在目标人群少量标注样本上做校准回归(预测值 vs 本地金标准的线性校正),这一步的成本远低于重新训练,且已被多家商用系统列为标准交付流程。
§3.9 设备规格
官方未随数据发布设备元数据(扫描仪型号、曝光参数、像素间距)。社区分析(BoneAgeTW2 预印本)指出站点间存在以下维度的真实差异:
| 设备维度 | 差异范围 | 对建模的影响 |
|---|---|---|
| 探测器像素间距 | 约 0.1-0.5 mm/px | 尺度先验不稳定,需靠裁剪归一化吸收 |
| kVp / 曝光参数 | 站点间不同 | 灰度分布漂移,CLAHE 可部分补偿 |
| 源像距(SID)与放大率 | 站点间不同 | 手部在画面中的绝对大小不一致 |
| 影像来源 | 数字 DR 与扫描胶片混合 | 噪声与畸变模式不同,扫描件有倾斜/暗角 |
| 患者摆位 | 轻度旋转/平移差异 | 需要小角度增强或关键点配准 |
这意味着基于 DICOM 的精确设备溯源在该数据集上不可行(图像以 PNG 分发、无元数据侧车文件)。做"跨站点鲁棒性"研究时,只能以来源医院或图像风格聚类作为站点代理变量,并在论文中明确这一近似。
§3.10 深度溯源链
| 层级 | 溯源内容 |
|---|---|
| 原始临床影像 | 两家儿童医院临床 PACS,因临床指征拍摄 |
| 研究级整理 | Larson 等 2017 Radiology 研究(DOI 10.1148/radiol.2017170236)将 14,036 张整理为训练/测试集并验证 CNN 模型 |
| 挑战赛级策划 | RSNA 放射信息学委员会 2017 年接收捐赠、扩充至 14,236 张、设计三阶段评测(Halabi 2018,DOI 10.1148/radiol.2018180736) |
| 社区分发 | Kaggle 镜像(kmader,2017 年上传,v2 约 9.97 GB);官方 RSNA 页面 ZIP |
| 学术审计 | 集成分析(2019)、外部验证与偏倚审计(Beheshtian 2022)等持续跟踪 |
| 社区教学 | Kaggle Notebooks、大学课程项目与开源复现构成第三层传播 |
溯源链的断裂点提示:从"原始临床影像"到"研究级整理"这一环,图像经历了 DICOM→PNG 的格式转换与归一化,原始 DICOM(含完整设备与曝光信息)并未随数据集分发且已不可追溯;因此本数据集的任何下游分析都应自认为是"从 PNG 层开始"的,无法上溯补齐拍摄级元数据。
§4 数据结构
本章以 Kaggle 镜像的目录结构为基准展开——它是当前社区的事实标准;官方 ZIP 的差异已在 §3.0 版本矩阵中说明。
§4.0 解压后目录树
Kaggle 镜像(kmader/rsna-bone-age)解压后的典型结构:
rsna-bone-age/
├── boneage-training-dataset.csv # 12,611 行:id, boneage(月), male(TRUE/FALSE)
├── boneage-test-dataset.csv # 200 行:Case ID, Sex(M/F);无骨龄列
├── boneage-training-dataset/ # 训练+验证图像(社区默认从训练 CSV 重切验证集)
│ ├── 1377.png
│ ├── 1378.png
│ ├── ...
│ └── 14370.png
└── boneage-test-dataset/ # 测试集 200 张图像
├── 4360.png
├── ...
└── 4689.png
说明:图像文件名为整数 id,与 CSV 的 id 列一一对应;训练 CSV 覆盖挑战赛训练集 12,611 张,验证集 1,425 张在多数 Kaggle 版本中未随附独立标签,社区通行做法是从训练 CSV 中分层重切。目录树的三个易错点:一是解压后文件夹名可能与上图略有出入(不同下载批次),以 CSV 所在目录为根对齐路径;二是测试目录图像数应为 200,若多于 200 说明混入了其他批次文件;三是不要把处理后的 .npy 缓存写回原始目录,避免二次解压时校验失败。
§4.1 DAIMS 字段字典
下表覆盖 Kaggle 镜像两个 CSV 的全部列与图像像素本体;"信息性缺失编码"列遵循 §4.5 的机制说明:
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| id | Integer | 图像唯一整数标识,对应 PNG 文件名 | 1377 | 主键;关联图像与标签 | 无 | 无缺失 | 1377-14370(训练) |
| boneage | Integer(标签) | 骨龄,单位月,儿科放射科医师判读 | 138 | 回归目标 | 读片者 MAD 数月级 | 测试集不发布(有意保密) | 1-228(女 4-216) |
| male | Boolean(标签) | 性别,TRUE=男 | TRUE | 辅助输入;分层分析 | 自报/登记性别,未细分 | 无缺失 | TRUE/FALSE |
| Case ID | Integer | 测试集图像标识(CSV 列名) | 4360 | 关联测试图像 | 无 | 无缺失 | 4360-4389 等 |
| Sex | String | 测试集性别(M/F) | M | 测试集分层 | 同 male | 无缺失 | M/F |
| 图像像素 | Uint8 数组 | 左手 PA 位灰度图,尺寸不一 | — | 模型输入 | 扫描/数字混合噪声 | — | 约 2080×1600 内不等 |
§4.2 标签分布
- 骨龄:训练集均值约 127 个月、跨度 1-228 个月;官方描述训练/验证集平均 127 个月,测试集平均 132 个月。分布集中于 120-180 个月(约 10-15 岁),12 个月以下与 216 个月以上样本极稀疏;18 岁及以上仅约 0.1%(PLOS ONE 综述)。
- 性别:训练集男 54.2% / 女 45.8%,两性骨龄参考曲线不同(同一骨骼成熟度在两性对应不同月龄),是必须显式建模的协变量。
- 子集对齐:测试集性别各 100 张、年龄-性别构成与训练分布刻意对齐(官方设计)。
下载数据后应首先运行一段分布体检代码,确认手中副本与官方口径一致:
import pandas as pd
df = pd.read_csv("/data/rsna-bone-age/boneage-training-dataset.csv")
assert len(df) == 12611, f"训练行数异常: {len(df)}" # 官方规模校验
assert df.id.is_unique, "存在重复 id" # 唯一性校验
assert df.boneage.between(1, 228).all(), "骨龄越界" # 值域校验
assert set(df.male.unique()) == {True, False}, "性别字段异常"
print("性别分布:\n", df.male.value_counts(normalize=True)) # 男约 0.54 / 女约 0.46
print("骨龄分箱:\n", pd.cut(df.boneage, [0, 24, 48, 96, 144, 192, 240]).value_counts().sort_index())
# 预期:96-144 与 144-192 两个分箱占绝对多数,0-24 分箱样本极少
这段体检脚本的输出建议原样存档到项目仓库:它同时充当"数据快照指纹"——未来任何一次重新下载或镜像更新,只要重跑一遍并与存档比对,就能立刻发现数据漂移或渠道变更。
§4.3 关键统计
下表汇总跨文献高频引用的硬数字,每条均给出可回溯来源:
| 统计项 | 数值 | 来源 |
|---|---|---|
| 图像总数 | 14,236 | Halabi 2018 |
| 训练集骨龄跨度 | 1-228 个月 | 社区标签统计(Kaggle CSV) |
| 测试集金标准构成 | 6 评审加权平均(权重均值 0.17) | PMC6884060 |
| 评审员相对金标准 MAD | 5.8 个月 | PMC6884060 |
| 训练集女性占比 | 0.46 | RSNA 官方数据描述 |
| 18 岁以上样本占比 | 约 0.1% | PLOS ONE 综述 |
| 挑战赛注册规模 | 260 人/队、48 名提交者、105 次提交 | Halabi 2018 |
| 4 模型集成泛化 MAD | 3.79 个月 | PMC6884060 |
§4.4 数据层级
数据集为两层扁平结构:检查(Study)→ 图像(Image)。每例检查基本对应一张左手 X 光(Beheshtian 2022 将 1,425 张验证图像描述为 1,425 名个体的图像),不存在序列/切片层级;官方未发布患者 ID 与随访时间轴,因此无法可靠识别同一儿童的多次检查。
这一扁平结构对建模是利好(无帧间依赖、无序列采样策略),对流行病学分析则是限制(无法做纵向生长轨迹建模)。若研究需要"同一儿童多次检查"或"追踪治疗前后骨龄变化",本数据集不适用,应转向机构内纵向队列。
§4.5 缺失值与信息性缺失
| 缺失情况 | 机制 | 处理建议 |
|---|---|---|
| 测试集骨龄标签 | 信息性缺失(有意保密,供官方评测) | 不得猜测;如需本地评估,从训练 CSV 分层重切出本地测试集 |
| 种族/族裔、设备、时间戳 | 未采集/未发布 | 不做填补;在论文 limitations 中声明 |
| 验证集标签(部分镜像) | Kaggle 部分版本未附带 1,425 张验证标签 | 以官方渠道补齐或改用训练集重切 |
| 训练 CSV | 无缺失行 | 12,611 行完整 |
处理信息性缺失的原则:测试集标签的保密是评测机制的一部分,任何"预测标签再当真值"的行为都会造成循环论证;社区常见的错误是把测试集性别用于"按性别取平均预测"的伪评估——这类操作产生的数字没有任何参考价值,正式发表会被审稿直接质疑。
§4.6 派生字段与社区扩展惯例
社区在实践中形成了几个广泛使用的派生字段,建议在自有管线中统一命名以便代码互认:
| 派生字段 | 定义 | 用途 |
|---|---|---|
img_path |
图像目录 / f"{id}.png" |
关联图像与标签的物理路径 |
boneage_zscore |
(boneage - mean) / (2 * std) |
回归目标的稳定化编码(坑点 2) |
gender / sex_code |
male → 1,female → 0 | 模型性别分支输入 |
age_bin |
pd.cut(boneage, 10) 等分箱 |
分层抽样与分箱评估 |
stratum |
age_bin × male 组合键 |
交叉验证分层 |
is_scanned(自建) |
按图像风格聚类标注的扫描/数字来源 | 域适应与稳健性分析(非官方字段) |
其中最后一项需要强调:数据集不携带来源标记,"扫描/数字"区分只能通过图像统计特征近似聚类获得,聚类结果应做人工抽查并在论文中作为"近似变量"报告。
§5 数据划分与使用建议
本章先讲官方怎么切、再讲社区怎么用、最后给泄漏清单与验证建议。核心原则只有一条:评测口径先于模型设计——先确定你的数字将与谁可比,再决定切分方式。
§5.1 官方划分
挑战赛官方三段划分:训练 12,611(带标签)、验证/排行榜 1,425(带标签)、测试 200(标签保密,仅性别公开)。官方评测在 200 张测试集上以 MAD 排名、CCC 破并列。需注意:多数公开渠道(含 Kaggle 镜像)只带 12,611 张训练标签,验证集标签在部分版本中缺失。
划分的隐含设计意图:测试集刻意做到男女各 100 张、年龄构成与训练分布对齐,等于官方已经把"人口构成偏移"从评测中剔除,比拼的是纯建模能力;因此社区在外验时看到的性能变化,几乎全部来自人群与设备漂移,而非构成偏移——这与真实部署环境(构成随地点剧烈变化)不同,解读外验数字时要把这层"官方评测偏乐观"的因素计入。
§5.2 社区惯例划分
由于 200 张官方测试集无公开标签,2017 年后文献的通行做法有两种:其一,在 12,611 张内按 80/10/10 或 90/10 分层重切并报告本地 MAD;其二,将 1,425 张验证集用作内部验证(Beheshtian 2022 的"内验 1,425 张、MAD 6.8 个月"即此口径)。复现挑战赛数字必须申请官方评测或与已发表论文逐项核对测试协议。
重切方案也有高下之分:随机切分会把极端年龄段样本几乎全部赶进训练集,使验证集缺少端点样本、指标虚高;按"性别 × 骨龄分箱"分层重切能让每个子集都保有端点代表,代价是端点折内样本过少、方差大。折中方案是分层重切 + 分箱报告,让读者看到端点误差的置信区间而非被均值掩盖。
§5.3 泄漏风险清单
以下五项按"发生概率 × 后果严重度"排序,均为该数据集社区反复讨论或官方规则明确防范的场景:
- 同一儿童多张片子:官方未发布患者 ID,重切划分时无法排除同一受试者跨集;风险级别中等(数据基本一患一图,但官方未做保证)。缓解:按图像 id 区间与采集近似时间分组切分,并在论文中声明限制。
- 排行榜过拟合:挑战赛期间参赛者可反复提交排行榜阶段数据,直接向 1,425 张验证集拟合超参数会高估性能。缓解:内部再留出集或交叉验证后再上排行榜。
- 预处理统计泄漏:在全量图像上计算归一化均值/方差后再切分属轻度泄漏。缓解:仅用训练折统计量。
- 性别信息泄漏反向利用:性别可从影像高精度推断,若性别与某站点/设备强相关,模型可能学到站点捷径特征。缓解:按站点(如可得)分组的稳健性检查。
- 验证集重复使用:1,425 张验证集既用于选模又用于报告最终性能,属于隐性泄漏;多轮调参后其数字系统性乐观。缓解:冻结模型后仅在最终评估时触碰验证集,或使用嵌套交叉验证。
§5.4 交叉验证建议
推荐 5 折分组交叉验证:按"性别 × 骨龄十分位箱"双重分层抽样,保证每折内两性、各年龄段比例一致;冠军方案之一(季军)即采用 5 折集成(qims 综述)。对性别偏倚研究,另做单性别训练与混合训练的对照。折间方差也应报告:骨龄文献常只报单次切分结果,5 折的 MAD 均值 ± 标准差更具说服力,且标准差本身可提示哪些子区间尚不稳定。
import pandas as pd
import numpy as np
df = pd.read_csv("/data/rsna-bone-age/boneage-training-dataset.csv")
df["age_bin"] = pd.cut(df.boneage, bins=10, labels=False) # 骨龄十分位箱
df["stratum"] = df.age_bin.astype(str) + "_" + df.male.astype(str) # 性别×年龄双层
df["fold"] = df.groupby("stratum").cumcount() % 5 # 层内轮转编号折
for k in range(5): # 5 折迭代
valid = df[df.fold == k]; train = df[df.fold != k]
# 每折的性别比例与年龄均值应与全量接近,可加断言验证
assert abs(valid.male.mean() - df.male.mean()) < 0.05
§5.5 外部验证建议
优先外部库:Digital Hand Atlas(Larson 2017 曾用 913 张做跨库测试);其次本机构回溯数据(Beheshtian 2022 用 1,202 张多中心外验图像)。外验时报告 MAD、临床显著错误率与性别/年龄分亚组误差,参照 Beheshtian 协议(内部 6.8 vs 外部 6.9 个月、外验 16% 临床显著错误)。
外验结果解读的两条经验:MAD 接近不代表模型安全——Beheshtian 的外验 MAD 与内验几乎相同(6.9 vs 6.8 个月),但临床显著错误率高达 16%,说明"平均误差稳定"与"个体决策安全"是两回事;亚组审计必须预注册——性别、年龄箱、成熟度分期应在分析计划中先行定义,避免事后挑选有利切分。
§5.6 使用场景红线
结合许可条款与数据覆盖范围,以下场景不应使用本数据集(或需额外充分论证)。每条红线都能追溯到许可条款、数据覆盖统计或公开审计结论,而非主观谨慎:
- 商用部署:许可限非商业用途;训练出的模型直接售卖或嵌入商业产品均超出授权范围。
- 法医年龄鉴定:18 岁以上样本仅约 0.1%,法律精度要求("概率 bordering on certainty"级)远超数据集支撑能力。
- 独立临床诊断:无前瞻性验证与监管审批前,任何基于该数据的模型只能定位为研究原型或辅助阅片。
- 个人身份推断:许可明令禁止尝试识别受试者;影像本身含指纹级生物特征,再识别研究为伦理红线。
- 作为族裔/人群代表性证据:数据不含族裔字段且来源局限,不能支撑任何人群代表性结论。
- 纵向发育追踪研究:无患者 ID 与随访时间轴,无法识别同一儿童的多次检查;纵向问题请使用机构内队列。
§6 AI 就绪指南
本章是全页的操作核心:从云端启动到完整 DataLoader,从预处理管线到 8 个真实坑点,目标是一天内从零跑出与文献可比的基线。所有代码基于 PyTorch 与 OpenCV,目录假设在 §6.1 与 §4.0 中统一。
§6.0 云端快速启动
Kaggle Notebook 内置该数据集(搜索 kmader/rsna-bone-age,挂载路径为 /kaggle/input/rsna-bone-age/),免下载即可运行;Google Colab 用户用下节 kaggle CLI 拉取。显存需求低,Colab 免费 T4 GPU 即可训练基线模型。
三种启动路径按上手成本排序:Kaggle Notebook(零配置,数据即挂载,适合第一小时验证可行性)→ Colab + kaggle CLI(约 10 分钟配置,下载一次后可反复使用,磁盘约 10 GB)→ 本地环境(需自行管理 GPU 驱动与依赖,适合集成进既有训练框架)。教学场景推荐前两种,研究复现推荐第三种并配合版本快照管理。
§6.1 快速上手
以下代码的目录结构预期:数据解压到 data_root(如 /data/rsna-bone-age/),其下应有 boneage-training-dataset/、boneage-test-dataset/ 两个图像目录与 boneage-training-dataset.csv、boneage-test-dataset.csv 两个标注文件;data_root 与子目录名拼接即得图像路径。最小可用子集为训练 CSV 任取 500 行加对应图像。
import os
import pandas as pd
from PIL import Image
DATA_ROOT = "/data/rsna-bone-age" # 数据根目录
TRAIN_IMG_DIR = os.path.join(DATA_ROOT, "boneage-training-dataset") # 图像目录
CSV_PATH = os.path.join(DATA_ROOT, "boneage-training-dataset.csv") # 标注表
df = pd.read_csv(CSV_PATH) # 列: id, boneage, male
df["img_path"] = df["id"].map(lambda x: os.path.join(TRAIN_IMG_DIR, f"{x}.png"))
df = df[df["img_path"].map(os.path.exists)].reset_index(drop=True)
print(f"可用图像 {len(df)} 张;骨龄范围 {df.boneage.min()}-{df.boneage.max()} 个月")
sample = Image.open(df.img_path.iloc[0]) # 一张左手 PA 位 X 光
print(sample.size, sample.mode) # 尺寸不一、灰度图
三个预期输出值得对照检查:若 可用图像 少于 12,611,说明部分 PNG 缺失或文件名与 CSV 不匹配,先修复数据完整性再训练;骨龄范围 应显示 1-228;sample.size 各图不同属正常(这正是 §6.3 需要预处理的原因),mode 应为 L(8 位灰度)。
§6.2 数据获取
| 渠道 | 方式 | 大小 | 门槛 |
|---|---|---|---|
| Kaggle 镜像 | kaggle datasets download 或网页下载 |
约 9.97 GB | 免费 Kaggle 账号 |
| RSNA 官网 | 挑战赛页面 ZIP 下载 | 官方未标注 | 免费;同意数据使用协议 |
获取流程分四步(Kaggle 渠道):注册 Kaggle 账号并完成手机验证 → 在个人设置页生成 API Token(kaggle.json)→ 将 Token 放置到 ~/.kaggle/kaggle.json 并设置 600 权限 → 执行下载命令并校验文件数(图像 12,811 张 + 2 个 CSV)。RSNA 官网渠道则需在挑战赛页面点击下载并视同接受数据使用协议;两种渠道内容一致,但 Kaggle 版目录命名已成为社区事实标准。
# 需要 pip install kaggle,并把 kaggle.json 放到 ~/.kaggle/
kaggle datasets download -d kmader/rsna-bone-age -p /data/rsna-bone-age --unzip
# 下载完成后校验
find /data/rsna-bone-age -name "*.png" | wc -l # 应约 12,811(训练 12,611 + 测试 200)
wc -l /data/rsna-bone-age/boneage-training-dataset.csv # 应 12,612(含表头)
许可提示:仅限学术研究与教育及其他非商业用途;再分发须附官方下载链接并引用 Halabi 2018(许可全文)。商业部署需另行联系版权方,基于该数据的模型商用化并不自动获得授权。
§6.3 预处理全流程
| 步骤 | 操作 | 目的 | 对应坑点 |
|---|---|---|---|
| 1 | 前景分割裁剪包围盒 | 去除黑边,统一手部占画比例 | 坑点 4 |
| 2 | CLAHE 对比度增强 | 弥合数字/扫描域差异 | 坑点 4 |
| 3 | 缩放至统一尺寸(500 或 512) | 满足骨干网络输入 | 坑点 4 |
| 4 | 标签 z-score 编码 | 稳定回归训练 | 坑点 2 |
从原始 PNG 到可训练张量即以上四步。前三步针对该数据集"数字/扫描混合、背景占比大、尺寸不一"的特点;第四步源于骨龄标准差大(约 40 个月)、直接回归原始月数值收敛慢的社区经验(社区实现示例)。
import cv2
import numpy as np
BONEAGE_MEAN = df.boneage.mean()
BONEAGE_STD = df.boneage.std()
def preprocess(png_path: str, out_size: int = 500) -> np.ndarray:
img = cv2.imread(png_path, cv2.IMREAD_GRAYSCALE) # 灰度读入
_, mask = cv2.threshold(img, 15, 255, cv2.THRESH_BINARY) # 低阈值分离前景
xs = np.where(mask.any(axis=0))[0]; ys = np.where(mask.any(axis=1))[0]
if len(xs) and len(ys): # 裁掉纯黑背景,保留手部包围盒
img = img[ys.min():ys.max()+1, xs.min():xs.max()+1]
img = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)).apply(img) # CLAHE 增强
img = cv2.resize(img, (out_size, out_size)) # 统一尺寸(冠军方案用 500)
x = img.astype(np.float32) / 255.0
return np.expand_dims(x, 0) # (1, H, W)
def encode_label(boneage: float) -> float: # z-score 标签,因子 2 为社区惯例
return (boneage - BONEAGE_MEAN) / (2 * BONEAGE_STD)
def decode_label(z: float) -> float:
return z * 2 * BONEAGE_STD + BONEAGE_MEAN
批量落盘为统一尺寸的 NPZ/目录可显著加速后续训练(避免每个 epoch 重复解码 PNG 与 CLAHE);但注意保留原始副本以便复现,并只在训练折上统计 CLAHE 参数与归一化均值,防止 §5.3 所述的预处理统计泄漏。一个推荐的批处理与质检脚本:
from pathlib import Path
OUT_DIR = Path("/data/rsna-bone-age/processed_500")
OUT_DIR.mkdir(parents=True, exist_ok=True)
sizes = []
for _, row in df.iterrows(): # 全量批处理约 10-20 分钟(单进程)
arr = preprocess(row.img_path, out_size=500)[0]
sizes.append(arr.shape)
np.save(OUT_DIR / f"{row.id}.npy", arr)
sizes = np.array([s[0] for s in sizes])
assert len(OUT_DIR.glob("*.npy")) == len(df) # 输出数量校验
# 质检:随机抽 10 张检查前景占比与灰度范围
sample_ids = df.id.sample(10, random_state=0)
for sid in sample_ids:
arr = np.load(OUT_DIR / f"{sid}.npy")
fg_ratio = float((arr > 0.05).mean()) # 前景(非黑背景)占比
assert fg_ratio > 0.25, f"id={sid} 裁剪异常,前景占比 {fg_ratio:.2f}"
§6.4 PyTorch DataLoader 完整实现
<details>
<summary>展开完整 Dataset + DataLoader 代码(约 50 行)</summary>
设计要点先行说明:性别以独立浮点张量与图像并列输出,由模型侧拼接(对应冠军方案结构);标签在数据集内部完成 z-score 编码,评估阶段统一用 decode_label 还原后再算 MAD,避免"训练用 z 值、评估用月值"的量纲错位;变换管线中灰度图经 ToPILImage 后使用单通道变换,不引入随机翻转(理由见坑点 6)。
import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
class RSNABoneAgeError(Exception):
pass
class RSNABoneAgeDataset(Dataset):
"""目录结构预期:DATA_ROOT/boneage-training-dataset/{id}.png + boneage-training-dataset.csv;
最小可用子集:CSV 前 500 行。输出:图像张量 (1, 500, 500) + 性别标量 + z-score 标签。"""
def __init__(self, dataframe: pd.DataFrame, img_dir: str, train: bool = True):
self.df = dataframe.reset_index(drop=True)
self.img_dir = img_dir
self.train = train
base = [transforms.ToPILImage()]
if train: # 训练态增强:小角度旋转/平移/缩放与亮度扰动,均不改变解剖学左右
base += [transforms.RandomAffine(degrees=6, translate=(0.05, 0.05), scale=(0.9, 1.1)),
transforms.RandomAdjustSharpness(1.5, p=0.3)]
base += [transforms.ToTensor()] # 灰度单通道;不做水平翻转(见坑点 6)
self.tf = transforms.Compose(base)
def __len__(self) -> int:
return len(self.df)
def __getitem__(self, idx: int):
row = self.df.iloc[idx]
img = cv2.imread(os.path.join(self.img_dir, f"{row.id}.png"), cv2.IMREAD_GRAYSCALE)
if img is None:
raise RSNABoneAgeError(f"missing image: {row.id}")
img = preprocess_row(img) # 复用 §6.3 的裁剪+CLAHE+resize
tensor = self.tf(img) # (1, 500, 500)
sex = torch.tensor([1.0 if row.male else 0.0], dtype=torch.float32)
label = torch.tensor([encode_label(row.boneage)], dtype=torch.float32)
return tensor, sex, label
def preprocess_row(img: np.ndarray, out_size: int = 500) -> np.ndarray:
_, mask = cv2.threshold(img, 15, 255, cv2.THRESH_BINARY)
xs = np.where(mask.any(axis=0))[0]; ys = np.where(mask.any(axis=1))[0]
if len(xs) and len(ys):
img = img[ys.min():ys.max()+1, xs.min():xs.max()+1]
img = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)).apply(img)
return cv2.resize(img, (out_size, out_size))
train_ds = RSNABoneAgeDataset(df.sample(frac=0.9, random_state=42), TRAIN_IMG_DIR, train=True)
valid_ds = RSNABoneAgeDataset(df.drop(train_ds.df.index), TRAIN_IMG_DIR, train=False)
train_loader = DataLoader(train_ds, batch_size=32, shuffle=True, num_workers=4, pin_memory=True)
valid_loader = DataLoader(valid_ds, batch_size=64, shuffle=False, num_workers=4)
# 最小训练循环(骨架):MSE 损失在 z-score 空间优化,验证时还原为月并计算 MAD
model = build_model().cuda() # build_model: 骨干 + 性别分支拼接 + 单输出头
optimizer = torch.optim.Adam(model.parameters(), lr=1e-4)
for epoch in range(30):
model.train()
for img, sex, label in train_loader: # 全部张量 .cuda() 后前向
pred = model(img.cuda(), sex.cuda())
loss = torch.nn.functional.mse_loss(pred, label.cuda())
optimizer.zero_grad(); loss.backward(); optimizer.step()
model.eval()
preds, trues = [], []
with torch.no_grad():
for img, sex, label in valid_loader:
preds.append(model(img.cuda(), sex.cuda()).cpu())
trues.append(label)
y_pred = decode_label(torch.cat(preds).numpy().ravel()) # 还原为月
y_true = decode_label(torch.cat(trues).numpy().ravel())
print(f"epoch {epoch}: valid MAD = {mad_months(y_true, y_pred):.2f} 个月")
</details>
§6.5 八个坑点
以下 8 个坑点全部来自该数据集的公开文档、挑战赛规则与后续文献,按"遇到概率"排序;每个坑点给出简单/进阶/SOTA 三级解法,新手至少落实"简单方法"再开始训练。
| # | 坑点 | 分类 | 主要影响阶段 |
|---|---|---|---|
| 1 | 省略性别输入 | 偏倚陷阱 | 建模 |
| 2 | 直接回归原始月数值 | 预处理陷阱 | 建模 |
| 3 | 误以为公开测试集能算 MAD | 工程陷阱 | 评估 |
| 4 | 图像异质性未处理 | 预处理陷阱 | 预处理 |
| 5 | 跨论文横比 MAD | 评估误用 | 评估 |
| 6 | 破坏解剖学方向的增强 | 预处理陷阱 | 建模 |
| 7 | 极端年龄段稀疏 | 偏倚陷阱 | 评估与部署 |
| 8 | 训练标签与测试金标准不同尺 | 标签理解 | 全流程 |
⚠️ 坑点 1:省略性别输入导致系统性偏差(分类:偏倚陷阱)
问题:男女儿童骨骼成熟轨迹不同,同一张影像在两性对应不同骨龄;忽略性别会让模型强行学习一条混合曲线,误差整体抬高并在性别间不均。
症状:验证 MAD 比文献高 1-3 个月;分性别统计时某一性别误差显著更大;训练前期损失下降明显慢于同期论文。
解决:
- 简单方法:把性别作为额外标量与图像特征拼接(冠军方案将性别编码为 32 维向量与 Inception-V3 图像特征连接)。
- 进阶方法:为两性分别训练独立模型或使用 FiLM 条件层让性别调制卷积特征(Iglovikov 等报告加入性别平均降低误差 1.4 个月)。
- SOTA 方法:多区域网络对每性别的成熟度差异显式建模,并在评估时强制输出分性别校准曲线。
参考:qims 综述(冠军方案解析);Iglovikov 等 2018 论文解读
⚠️ 坑点 2:直接回归原始月数值收敛慢且末期震荡(分类:预处理陷阱)
问题:骨龄标签跨度 1-228 个月、标准差约 40 个月,原始量纲下回归损失梯度被大数值主导,网络末期预测在均值附近震荡。
症状:训练数个 epoch 后验证 MAE 停在 15-25 个月不再下降;预测分布向均值收缩。
解决:
- 简单方法:标签 z-score 归一化
(x - mean) / (2 * std),推理后逆变换。- 进阶方法:把 0-228 个月分箱做序数分类,输出类别期望值;或回归 + 分类双头联合训练。
- SOTA 方法:不确定性与回归双头(异方差 aleatoric 头),单模型 Xception 达 MAE 4.10 个月。
参考:社区 z-score 实现;不确定性多流模型
⚠️ 坑点 3:误以为公开测试集能算 MAD(分类:工程陷阱)
问题:
boneage-test-dataset.csv只含 Case ID 与 Sex,骨龄金标准保密在 RSNA 手中;很多新手在测试集上"算 MAE"直接报错或得出荒谬结论。
症状:CSV 没有 boneage 列;或有人把图像 id 顺序误当标签对齐。
解决:
- 简单方法:从训练 CSV 按性别×骨龄分箱分层切 90/10 做本地评估,并声明口径。
- 进阶方法:复用挑战赛 1,425 张验证集(如可得标签)作内部基准,与 Beheshtian 2022 的 6.8 个月口径对齐比较。
- SOTA 方法:复现官方协议——训练集训练、排行榜集选模、只在最终一次提交式评估,禁止迭代调参。
参考:Kaggle 数据页 CSV 结构;挑战赛规则附录
⚠️ 坑点 4:图像异质性未处理(数字/扫描混合、背景黑边、尺寸不一)(分类:预处理陷阱)
问题:数据来自多站点、数字 DR 与扫描胶片并存,分辨率、对比度、背景占比差异大;直接 resize 到 256 会把手部压得忽大忽小,模型学到尺度捷径。
症状:误差在扫描胶片子集上明显更高;Grad-CAM 显示模型关注图像角落的设备标记而非骨骼。
解决:
- 简单方法:阈值分割前景裁剪包围盒后再缩放(§6.3 代码),保证手占满画面。
- 进阶方法:CLAHE 对比度增强 + 关键点配准(中指指尖、头状骨中心、拇指尖三点对齐),冠军与 Iglovikov 方案均配准后再取 ROI。
- SOTA 方法:U-Net 手部分割 + 多区域(腕骨/掌骨/近节指骨)独立子网后集成,抑制背景与体位噪声。
参考:Larson 2017 预处理管线;Neuromation 多区域方案
⚠️ 坑点 5:拿 200 张官方测试集数字跨论文横比(分类:评估误用)
问题:各论文评测集不同——有的用官方 200 张、有的本地重切、有的用 1,425 张验证集;MAD 数值依赖金标准定义(6 人加权 vs 单评vs 临床报告),跨论文直接比大小会得出错误结论。
症状:文献里"同一模型"的 MAD 从 4.97 到 7.52 个月不等(PLOS ONE 综述同表收录);自己的 4.2 个月与别人 6.0 个月其实不可比。
解决:
- 简单方法:引用任何 MAD 数字时核对其评测集与金标准口径,正文中显式标注。
- 进阶方法:复现时同时报告官方测试集(如可得)与本地切分两套数字,用人类基线(单评审 5.8 个月)做锚点解释。
- SOTA 方法:以临床显著错误率(改变正常/延迟/提前分类的比例)补充 MAD,与临床决策直接挂钩。
参考:PLOS ONE 系统综述表 11;集成分析对评测口径的讨论
⚠️ 坑点 6:水平翻转等破坏解剖学方向的增强(分类:预处理陷阱)
问题:数据集为左手 PA 位;水平翻转把左手变右手,垂直翻转把指尖朝下的标准体位倒置,模型可能借此学捷径或在真实(恒为左手)部署时分布失配。
症状:加了随机翻转后训练误差更低、本地验证却变差;或单侧标记(如拇指位置)相关的注意力消失。
解决:
- 简单方法:增强白名单——小角度旋转、平移、缩放、对比度/锐度扰动;禁用水平/垂直翻转。
- 进阶方法:用关键点对齐代替体位增强,把体位变化吸收进配准阶段。
- SOTA 方法:保持解剖一致性的弹性形变(小幅度)+ 直方图域随机化,模拟跨站点胶片差异。
参考:Larson 2017 增强集(翻转仅限左右手一致任务内讨论);社区 Kaggle Notebook 通行约定
⚠️ 坑点 7:极端年龄段样本稀疏导致两端误差被低估(分类:偏倚陷阱)
问题:样本集中于 120-180 个月,婴儿(<12 个月)与 18 岁以上(约 0.1%)极少;模型在两端外推,而常规随机验证集恰好也缺两端样本,指标掩盖了真实缺陷。
症状:整体 MAD 4-5 个月,但按年龄分箱后 <24 个月与 >216 个月分箱误差可达数倍;法医类应用(依赖 18+ 判读)不可用。
解决:
- 简单方法:报告按年龄分箱的 MAD,而不只报全局均值;对端点样本过采样。
- 进阶方法:训练时对罕见段加权损失(focal 回归加权),或融合 Digital Hand Atlas 补充端点。
- SOTA 方法:混入合成/迁移数据并在外验库上按年龄段审计(Beheshtian 协议:按年龄与 Tanner 期分层检验)。
参考:PLOS ONE 综述(0.1% 证据);Beheshtian 2022 分层偏倚
⚠️ 坑点 8:训练标签与测试金标准不是同一把尺(分类:标签理解)
问题:训练集标签是单名医师判读,测试金标准是 6 人加权平均;两种标准的系统性差异让"训练误差"与"官方评测"天然不可加,也解释了为什么模型能超越单一人类——它在学习"平均读片者"。
症状:训练集上微调到接近 0 的损失,测试集 MAD 仍卡在 4-6 个月;把训练集当测试集评估时结果虚高。
解决:
- 简单方法:把 4-6 个月 MAD 视为接近该任务参考标准不确定度下限(参考标准自身约 2.6 个月、单评审 5.8 个月),避免追求不切实际的 1 个月。
- 进阶方法:多模型集成模拟"多人会诊"——4 模型集成把泛化 MAD 从 4.55 降到 3.79 个月。
- SOTA 方法:学习标注噪声模型(评审员方差建模),输出带不确定度的骨龄预测供临床分诊。
参考:集成分析;BoneXpert 对参考标准的推导
§6.6 数据增强策略
| 类别 | 操作 | 说明 |
|---|---|---|
| 安全 ✅ | 小角度旋转(±6°)、平移(±5%)、缩放(0.9-1.1) | 模拟摆位差异,不改变解剖学左右 |
| 安全 ✅ | CLAHE 参数扰动、亮度/锐度抖动 | 模拟数字/扫描域差异 |
| 安全 ✅ | 小幅度弹性形变 | 软组织形变不改变骨成熟特征 |
| 危险 ❌ | 水平翻转 | 左手变右手,破坏"左手 PA 位"先验 |
| 危险 ❌ | 垂直翻转、90° 旋转 | 破坏标准体位,真实部署不存在 |
| 危险 ❌ | 大幅剪切/透视 | 可能伪造骨骺形态,引入非生理畸变 |
冠军方案与多数高排名方案都将增强列为"决定性环节"——季军方案的报告明确表示数据增强是其关键步骤。增强强度的一个实用标定:肉眼检查 20 张增强后的样本,如果无法分辨哪一张是增强图,强度合适;如果骨骺形态出现可疑变形或图像方向异常,立即调低。增强的最终检验标准不是训练损失,而是分箱验证 MAD——策略恰当的标志是 120-180 个月主区间与两端分箱同步改善,而非主区间改善、两端恶化。
§6.7 模型推荐
| 模型 | 输入规模 | 关键设计 | 参考性能(口径各异,勿直接横比) |
|---|---|---|---|
| Inception-V3 + 性别分支 | 500×500 灰度 | 性别编码 32 维向量与图像特征拼接 | 挑战赛冠军 MAD 4.265 个月(官方测试集) |
| ResNet50 多 patch | 49×224×224 | 重叠局部块取预测中位数 | 挑战赛亚军 4.350 个月 |
| 轻量 CNN 5 折集成 | 224×224 | 分折训练后平均预测 | 挑战赛季军 4.382 个月 |
| 多区域 CNN 集成 | 手/腕骨/掌指骨 ROI | 区域子网 + 线性集成 | Iglovikov 等 MAD 4.97 个月 |
| Faster R-CNN 关键点 + 回归 | 原图 + 关键点热图 | 检测骨骼区域再预测 | Escobar 等 MAD 4.14 个月 |
| Xception 双头(不确定性) | 统一预处理管线 | 回归 + aleatoric 不确定性 | 单模型 MAE 4.10 个月 |
| Vision Transformer 混合架构 | 分辨率更高 | 自注意力捕捉全局骨形态 | 近年文献中与 CNN 相当或略优 |
| BoneXpert v3(商用) | 28 块骨自动分割 | CE 认证医疗器械 | RSNA 测试集 MAD 4.1 个月 |
选型经验法则:2020 年之后从头训练一个"骨干 + 性别分支 + z-score 标签"的模型,2-3 天单卡即可进入 5-6 个月 MAD 区间;继续压榨精度的边际收益排序为——关键点配准 > 多模型/多区域集成 > 不确定性建模 > 更大骨干。初学者最常见的错误是跳过配准直接堆大模型,收益远低于预期。
§6.8 硬件需求
| 场景 | 配置 | 说明 |
|---|---|---|
| 基线训练(224×224) | 单卡 8-11 GB(RTX 3060/T4) | batch 32 可行 |
| 复现级训练(500×500 + 集成) | 单卡 16-24 GB 或 2 卡 | 冠军方案为集成,建议多折并行 |
| Kaggle Notebook | 免费 T4/P100 | 数据免下载,单折数小时级 |
| CPU 推理 | 4 核 + 8 GB | 单张秒级 |
| 批量离线预处理 | 多核 CPU 即可 | 12,611 张裁剪+CLAHE 约 10-20 分钟(单进程) |
| 服务化推理 | 1 GPU + 4 vCPU | 骨龄门诊峰值低,单卡足够支撑多家院区 |
硬件总体属于"轻量级"医学影像任务:单图输入、分辨率不高、模型以中小型 CNN 为主,无需多节点训练。真正的时间成本在预处理与实验管理,而非 GPU 算力——这也是它适合作为教学与入门项目的原因之一。
§6.9 评估指标实现
import numpy as np
def mad_months(y_true: np.ndarray, y_pred: np.ndarray) -> float:
"""挑战赛主指标:月单位平均绝对距离(MAD)"""
return float(np.mean(np.abs(y_pred - y_true)))
def ccc(y_true: np.ndarray, y_pred: np.ndarray) -> float:
"""次指标:一致性相关系数(CCC),用于并列裁决"""
mu_t, mu_p = y_true.mean(), y_pred.mean()
var_t, var_p = y_true.var(), y_pred.var()
cov = np.mean((y_true - mu_t) * (y_pred - mu_p))
return float(2 * cov / (var_t + var_p + (mu_t - mu_p) ** 2))
def clinically_significant_rate(y_true: np.ndarray, y_pred: np.ndarray) -> float:
"""临床显著错误率:预测会改变 正常/延迟/提前 分类判定的比例
(Beheshtian 2022 口径:与实际年龄差 2 个标准差阈值由两名资深放射科医师共识划定,
简化实现可用 ±12 个月代理阈值,需在论文中声明)"""
return float(np.mean(np.sign(y_pred - y_true + 1e-9) != np.sign(y_true - y_pred - 1e-9)))
def subgroup_report(y_true, y_pred, sex, age):
"""分亚组审计:输出分性别与分年龄箱的 MAD(公平性审计最低要求)"""
report = {}
for name, mask in [("male", sex), ("female", ~sex)]:
report[name] = round(mad_months(y_true[mask], y_pred[mask]), 2)
for lo, hi in [(0, 96), (96, 168), (168, 240)]:
m = (age >= lo) & (age < hi)
report[f"age_{lo}-{hi}"] = round(mad_months(y_true[m], y_pred[m]), 2)
return report
指标使用顺序建议:先看 MAD 判断总体水平(对照人类基线 5.8 个月与冠军 4.2 个月定位),再用分箱报告定位误差集中的年龄段与性别,最后用临床显著错误率翻译为临床语言。CCC 对系统偏移(整体高估/低估)比 MAD 敏感,两者同报可以区分"精度问题"与"校准问题"。
一个完整的评估报告最低应包含六行结论:总体 MAD、分性别 MAD、分年龄箱 MAD、临床显著错误率、CCC、与人类基线(5.8 个月)及 SOTA(4.2 个月)的相对位置。缺任何一项,读者都无法判断结果的真实临床位置。
§6.10 MLOps 笔记
骨龄任务的工程化门槛低、临床合规要求高,MLOps 的重心不在算力调度而在评测纪律与公平性审计。以下笔记按落地优先级排列:
- 版本管理:数据本身无官方版本号,建议以"获取渠道 + 下载日期"建立内部快照(如
kaggle-v2-2026-09),并在训练配置中固化 CSV 行数校验(12,611)。 - 评测纪律:把 200 张官方测试集视为一次性提交资产;日常迭代只用本地分层切分,防止排行榜式过拟合。
- 监控漂移:上线后监控输入图像的前景占比、灰度直方图与预测分布漂移;扫描胶片占比升高常伴随误差上升。
- 公平性审计常态化:每次模型更新强制输出分性别、分年龄箱的 MAD 与临床显著错误率(Beheshtian 协议),任何亚组显著劣化即阻断发布。
- 可追溯性:记录每个模型的训练数据行数、增强白名单与随机种子,保证与论文口径互查。
落地为管线清单时,推荐按以下检查表执行:
| 阶段 | 自动化检查项 | 阻断条件 |
|---|---|---|
| 数据接入 | CSV 行数 = 12,611;id 唯一;骨龄 1-228 | 任一失败即停止入库 |
| 预处理 | 裁剪后前景占比 ≥ 30%;输出尺寸一致 | 前景过低样本进人工复核队列 |
| 训练 | 训练/验证 MAD 曲线;分性别 MAD 差值 | 分性别差 > 1.5 个月告警 |
| 评估 | 本地测试 MAD;临床显著错误率 | MAD > 7 个月或错误率 > 15% 阻断发布 |
| 发布 | 模型卡记录训练数据快照与种子 | 缺模型卡不发布 |
§7 质量评估与局限性
本章的立场是"用证据说话":所有偏倚、泛化与漂移判断均给出可核验的文献或官方文档出处;无法证实的问题(如逐例疾病构成、读片者随机效应大小)明确标注为信息缺失,而非用推测填补。
§7.1 已知偏倚
下表汇总公开发表与官方文档可稽的偏倚。判定原则:每一条都必须有外部证据或官方披露支撑,避免凭直觉罗列。
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 性别偏倚 | 冠军模型外部审计显示女孩误差显著大于男孩(内验 P=.01),外验中年龄与 Tanner 分层亦有显著差异(P<.001) | 高 | 分性别训练/校准;报告分性别 MAD |
| 年龄端点稀疏 | <12 个月与 18 岁以上(约 0.1%)样本极少,两端外推 | 高 | 过采样、加权损失、融合外部端点数据 |
| 地域/设备单一 | 样本来自美国两家医院,设备与人群多样性有限 | 中 | 外部库验证;跨站点增强 |
| 标注标准分层 | 训练单评审标签 vs 测试 6 人加权金标准,标准不一致 | 中 | 以集成逼近"平均读片者";报告参考标准不确定度 |
| 临床指征选择偏倚 | 回顾性采集,受检者多因生长疑虑就诊,健康儿童分布可能失真 | 中 | 谨慎外推至筛查场景 |
| 性别构成不均 | 训练集男 54.2% / 女 45.8%,叠加两性成熟曲线差异 | 中 | 亚组审计常态化;分性别模型作为对照 |
理解这张表的正确姿势:严重程度是"对临床转化的阻碍度"而非"数据质量缺陷"——性别偏倚不意味着数据是错的,而是提示建模与评估方式必须适配人群结构;地域单一也不减损它在 2017 年的先锋价值,只是限定了 2026 年使用者对泛化边界的预期。
§7.2 标注质量
训练/验证标签由儿科放射科医师人工判读(每机构 2 名读片者),测试金标准为 6 名评审加权平均(权重 0.14-0.21);评审员相对金标准平均 MAD 5.8 个月,参考标准自身不确定度约 2.6 个月(BoneXpert 团队推导)。与 GP 法读片者间差异可达约 9.84 个月的文献报道对照,标注一致性处于合格水平,但意味着约 4 个月以下的 MAD 改进已逼近参考标准噪声地板。
三个对使用者有直接影响的推论:第一,训练标签来自不同读片者的单次判读,训练时模型学到的是读片者群体的"平均行为",这正是集成模型天然占优的原因;第二,验证集标签与训练标签同源同质,因此验证 MAD 的下降不一定代表对 6 人加权金标准的改进,最终应尽量以官方协议口径复核;第三,若自行重标注子集做对照实验,单评审标签会引入额外噪声,需多人标注取均值才有意义。
§7.3 泛化性
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 外部多中心医院(多元人群) | 低-中:MAD 几乎不衰减,但临床显著错误率高 | Beheshtian 2022:内验 6.8 vs 外验 6.9 个月(P=.64),外验 16% 改变临床诊断 |
| 女性受检者 | 中:误差系统性偏大 | 内验分性别 P=.01 |
| 极端年龄(<2 岁、>18 岁) | 高:样本稀疏导致外推 | PLOS ONE 综述:18 岁以上仅约 0.1% |
| 低资源/非数字化站点 | 中-高:扫描胶片与参数差异 | 数据含扫描胶片;设备元数据未发布,无法精确评估 |
| 东亚等不同发育节奏人群 | 中-高:参考曲线人群差异 | 骨成熟度人群差异为临床共识;数据无族裔字段,需本地校准 |
| 法医年龄鉴定 | 高:18+ 覆盖缺失且法律精度要求不同 | PLOS ONE 综述明确指出该缺口 |
§7.4 伦理考量
数据采集经 Stanford 与 Colorado 两院 IRB 批准并豁免患者知情同意;图像发布前经人工复核排除烧录 PHI,标签仅含整数 id、骨龄与性别,无法直接回溯个人。许可限非商业用途并禁止尝试识别受试者。儿童影像数据再利用需注意:任何后续人工标注或再分发应通过所在机构 IRB/伦理审查,且不得尝试从影像或标注反推儿童身份。
儿童数据的特殊伦理考量还有三条:其一,儿童无法自主同意,数据发布依赖 IRB 豁免逻辑(回溯性、去标识、最小风险),后续使用者不得以新用途突破该豁免边界;其二,性别标签应理解为登记性别而非自我认同性别,涉及性别身份研究时应谨慎解释;其三,骨龄在移民与司法语境中直接影响个体处境,任何向法医场景的迁移都涉及超出数据集设计初衷的伦理审查。
§7.5 公平性
性别是该数据集最重要的公平性维度:训练集男 54.2%、女 45.8%,且两性骨成熟曲线不同;公开审计已证实模型对女孩误差更大。种族/族裔字段未发布,无法直接审计种族公平性,这本身即是使用局限。建议所有下游工作强制报告分性别 MAD、分年龄箱 MAD 与临床显著错误率三项亚组指标。
公平性缺陷的机理值得展开:训练分布中两性样本量接近,因此性别偏倚更可能来自两性成熟时序本身与标签噪声的交互——女孩青春期启动更早、骨骺融合窗口更短,快速成熟期的判读方差更大,模型在同样噪声水平下更难拟合。这一机理提示缓解手段应偏向"分性别建模 + 成熟速度分层",而非简单过采样。
§7.6 数据漂移
发布至今近十年,儿科影像设备从传统 DR 向 photon-counting 等新技术演进,扫描胶片比例持续下降;若以该数据训练的系统部署于现代全数字化环境,输入分布已发生漂移。此外不同族裔与地区儿童骨成熟参考曲线差异(如东亚人群 GP 曲线应用差异)构成人群漂移源。缓解:外部验证 + 输入直方图监控 + 分站点/分设备周期性重校准。
建议的最小漂移监控集:
| 监控对象 | 指标 | 告警阈值(示例) |
|---|---|---|
| 输入图像 | 前景占比均值、灰度直方图 KS 距离 | KS > 0.15 |
| 输入构成 | 扫描胶片风格样本占比 | 环比上升 > 10 个百分点 |
| 输出分布 | 预测骨龄均值与分位数漂移 | 均值漂移 > 6 个月 |
| 误差表现 | 周期性抽检集 MAD、临床显著错误率 | MAD > 7 个月 |
| 亚组公平 | 分性别 MAD 差值 | 差值 > 1.5 个月 |
§7.7 DAIMS 数据就绪度 24 项检查
以下 24 项按数据就绪度标准逐项核查。判定口径:✅ 为"有官方依据且可直接使用",⚠️ 为"部分满足或依赖社区补齐",❌ 为"缺失且无法在本数据集内弥补"。
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | CSV 一行一例,无重复表头 |
| 2 | 唯一标识 | ✅ | 整数 id 全局唯一并对应文件名 |
| 3 | 特殊字符 | ✅ | 标签表仅含数字与布尔值,无特殊字符风险 |
| 4 | 重复行 | ✅ | 12,611 行无重复 id |
| 5 | 缺失编码 | ⚠️ | 测试集骨龄标签整体缺席(有意保密),本地评估需重切 |
| 6 | 标签标识 | ✅ | boneage/male 语义清晰、单位明确(月) |
| 7 | 罕见类分组 | ⚠️ | <12 个月与 18 岁以上样本稀疏且无专门分组标记 |
| 8 | 偏倚评估 | ✅ | 有独立发表的外部偏倚审计(性别/年龄/Tanner 分层) |
| 9 | 数据字典 | ✅ | 官方数据描述文档(RadLex/RDE123)+ Kaggle 字段说明 |
| 10 | 信息性缺失解释 | ✅ | 测试集保密机制官方明示 |
| 11 | 设备记录 | ❌ | 无扫描仪型号/曝光参数/像素间距元数据 |
| 12 | 共线性 | ✅ | 仅 3 个标签字段,无共线性问题 |
| 13 | 编码映射 | ✅ | RadLex RID10351 与 RadElement RDE123 官方映射 |
| 14 | 时间戳处理 | ❌ | 无检查日期与采集窗口披露 |
| 15 | 划分建议 | ✅ | 官方三段划分 + 社区分层重切惯例均有文档 |
| 16 | 泄漏讨论 | ✅ | 官方规则禁止测试集人工评级;社区明确排行榜过拟合风险 |
| 17 | 标签分布 | ✅ | 官方性别/年龄分布与论文分布图可复核 |
| 18 | 测量偏倚 | ✅ | 评审员 MAD 5.8 个月、权重公开可审计 |
| 19 | 外部验证建议 | ✅ | Beheshtian 2022 提供完整外验协议模板 |
| 20 | 版本记录 | ⚠️ | 官方无版本号;Kaggle 镜像有 v2 但变更日志缺失 |
| 21 | 预处理脚本 | ⚠️ | 无官方脚本;社区实现丰富但口径不一 |
| 22 | 合规要求 | ✅ | 许可、引用与再分发条款清晰 |
| 23 | 多模态对齐 | ✅ | 图像-表格通过 id 严格对齐,无对齐歧义 |
| 24 | 去标识化 | ✅ | PHI 人工复核排除;标签不泄露身份 |
DAIMS 评分:19.0 / 24
评分解读:17 项达标(✅)、4 项部分达标(⚠️,各计 0.5)、2 项不达标(❌)。扣分集中在设备元数据与时间戳缺失、官方预处理与版本管理缺位,而非数据本身质量——这正是"临床研究数据集"转变为"工业化 AI 资产"时常显示的差距形态。与同类影像挑战赛数据集横向对照,本数据集的标注协议文档化程度(RadLex/RDE123 官方定义)高于多数同行,但工程化配套(脚本、版本、元数据)低于 PhysioNet 系数据集。
对你意味着什么:你可以立即用这份数据训练出与文献可比的骨龄回归模型(字段干净、对齐可靠、划分清晰);但不要指望它支撑设备溯源、跨时段漂移分析或法医级 18 岁以上评估。立项第一天就该建立:以"渠道+日期"命名的内部版本快照、分层重切的本地评测协议,以及分性别/分年龄的强制审计报表。若你的研究目标是发表,把 DAIMS 扣分项(设备、时间戳、版本)写进 limitations 的对应位置,可以显著减少审稿往返。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 1,202 张多元人群外验图像 | Beheshtian 等合作多中心 | 骨龄回归 | MAD 6.9 个月;临床显著错误率 16%(194/1,202) | 与内验 MAD 6.8 个月无显著差异(P=.64) | 数值泛化良好但亚组偏倚显著(性别、年龄、Tanner 分层差异显著) |
| Digital Hand Atlas 913 张 | 南加州大学(Gilsanz-Ratib 图谱系) | 骨龄回归 | RMS 0.73 年 | 与商用系统 0.61 年接近 | 跨库验证可行, Larson 2017 基线 |
| 内部验证集 1,425 张(Beheshtian 口径) | 挑战赛验证集 | 骨龄回归 | MAD 6.8 个月 | 基准 | 分性别误差 P=.01,女孩更大 |
| RSNA 官方测试集 200 张 | RSNA 挑战赛组委会 | 骨龄回归 | 冠军 MAD 4.265 个月 | 与 1,425 张排行榜集表现一致 | 金标准为 6 人加权,噪声地板约 2.6 个月 |
这张矩阵的总体结论:在"数值回归精度"维度,本数据集训练的模型跨库外验表现稳定;在"个体决策安全"维度,外验暴露的临床显著错误率与亚组偏倚才是真正的短板。外验设计时应把两者分开报告,避免用 MAD 单一数字给系统安全性背书。
§8 基准性能与生态
本章的数字来自官方挑战赛报告、后续同行评审论文与厂商公开技术资料;所有跨口径比较的注意事项在 §8.1 与 §6.5 坑点 5 中展开。
§8.1 排行榜
下表汇总官方测试集与代表性后续结果。数值不可直接比较:各行的评测集(官方 200 张 vs 本地重切 vs 1,425 验证集)与金标准定义(6 人加权 vs 单评审)不同,详见 §6.5 坑点 5。
| 排名 | 模型/方案 | 性能(MAD,月) | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | 16 Bit Inc. | 4.265 | 2017 | Inception-V3 + 性别分支集成 | Halabi et al., 2018, Radiology. DOI 10.1148/radiol.2018180736(挑战赛收录) | 未公开 |
| 2 | Ian Pan | 4.350 | 2017 | CNN 多模型集成 | 同上 | 未公开 |
| 3 | F. Kitamura | 4.382 | 2017 | 多 patch 回归 + 集成 | 同上 | 未公开 |
| 4 | H. Thodberg(Visiana/BoneXpert 系) | 4.505 | 2017 | 模型重训练骨龄专家系统 | 同上 | 未公开 |
| 5 | MD.ai | 4.525 | 2017 | CNN 集成 | 同上 | 未公开 |
| — | 4 模型异质集成 | 3.79(估计泛化) | 2019 | 48 个参赛模型低相关集成 | Radiology: Artificial Intelligence, 2019. DOI 10.1148/ryai.2019190053 | 未公开 |
| — | 单模型 Xception 双头 | 4.10(本地 MAE) | 2026 | 不确定性回归 + 双线性池化 | Springer 多流模型研究, 2026. DOI 10.1007/s44443-026-00681-y | 未公开 |
| — | BoneXpert v3(商用) | 4.1 | 2019 | 28 块骨自动分割 + 大规模重训练 | Visiana 产品页, 2019(bonexpert.com) | 商用闭源 |
| — | Iglovikov 等 | 4.97 | 2018 | 配准 + 多区域 CNN 集成 | Iglovikov et al., 2018, DLMIA Workshop(MICCAI) | 未公开 |
| — | Larson 等(基线) | 6.00(≈0.50 年) | 2017 | 单一 CNN 回归 | Larson et al., 2017, Radiology. DOI 10.1148/radiol.2017170236 | 未公开 |
阅读此表的三个提醒:第一,排名行(1-5)为 2017 年官方测试集口径,其余行为各自论文口径,跨行比较只做方向性参考;第二,挑战赛前五名间无统计学显著差异,RSNA 官方将五名并列授奖,"第 1 名"不应被解读为显著领先;第三,2020 年后大量论文的数字来自本地重切与更宽松的外部数据使用(2017 年规则禁止外部数据),时间越晚的数字并不天然越强。
§8.2 SOTA 总结与选型建议
先说结论,再给路径:
在官方测试集口径下,挑战赛前五名(4.2-4.5 个月)与 BoneXpert v3(4.1 个月)处于同一水平带,且统计上难分伯仲;本地重切口径下 2020 年后单模型已可做到 4.1-5.0 个月。给从业者的选型建议:以 Inception-V3/EfficientNet 级骨干 + 性别分支 + CLAHE 预处理为起点即可接近 5 个月 MAD;追求极限收益来自三处——关键点配准、多区域/多模型集成与不确定性建模,每一项约值 0.3-0.7 个月。低于 4 个月的报告应首先核对评测口径而非盲目追高。
三个方向仍有真实空间:其一,校准与选择性预测——让模型对低置信样本输出"建议人工复核"而非硬预测,把 16% 的临床显著错误率压向个位数;其二,极端年龄段——婴儿与 18 岁以上段仍无满意方案,需要外部数据或合成数据补强;其三,可解释分期——把全局回归分解为逐骨/分区的成熟度证据输出,向 TW 工作流的临床习惯靠拢,BoneAgeTW2 等预印本已开始探索。
§8.3 评测协议
官方协议:训练集(12,611)训练、排行榜集(1,425)阶段性排名、测试集(200)最终一次提交;主指标 MAD(月)、次指标 CCC;参赛者须提交逐例预测 CSV;禁止对测试集人工评级、禁止非公开外部数据。
| 协议要素 | 官方 2017 规则 | 社区复现惯例 |
|---|---|---|
| 训练数据 | 12,611 张(可重标注训练集,但禁止人工评测试集) | 12,611 张或从 14,036 张带标签图像重切 |
| 阶段排名 | 排行榜集 1,425 张,可反复提交 | 作为内部验证集使用,或并入训练 |
| 最终评测 | 200 张测试集一次性提交,MAD 排名、CCC 破并列 | 无公开标签,以本地重切替代并声明口径 |
| 预训练限制 | 仅允许公开数据预训练的模型(迁移学习可用) | 已放开为社区常态,但引用 2017 榜单数字时需注意口径差异 |
| 提交格式 | ZIP 含逐例预测 CSV + 方法说明 | 不适用 |
社区复现协议:以 1,425 张验证集或训练集分层重切为内验,报告 MAD 并标注金标准口径;推荐补充临床显著错误率与分亚组误差(Beheshtian 协议)。任何号称"超越挑战赛冠军"的结果,第一步都是核对其评测协议与 2017 年官方协议的可比性。
§8.4 相关数据集
| 数据集 | 规模 | 模态 | 获取 | 与本数据集的关系 |
|---|---|---|---|---|
| Digital Hand Atlas | 29 个年龄-性别参考类(0-18 岁) | 手腕 X 光 | 学术申请 | 经典外部验证库(Larson 2017 用 913 张) |
| 图宾根队列 | 8,250 例 | 手部 X 光 | 非公开 | BoneXpert v3 训练构成部分 |
| RSNA 颅内出血 CT 挑战集 | 约 2.5 万 CT 序列 | 头颅 CT | Kaggle | 同为 RSNA 挑战赛系列,评测文化一致 |
| 本数据集 2017 原始研究库 | 14,036 张 | 手部 X 光 | 已并入本数据集 | Larson 2017 训练验证库,本数据集的直接前身 |
| 各国单中心骨龄队列(文献引用) | 数百至数千例 | 手部 X 光 | 非公开 | 外部验证的主要现实来源 |
寻找外部验证数据时的次优策略:若无法获得 Digital Hand Atlas,可在合作医院回溯性收集 200-1,000 张带临床骨龄报告的左手片,按 Beheshtian 协议做"内验 vs 外验 + 亚组审计"三件套——这套设计在该数据集文献中已被充分接受,数据规模并不是外验发表的门槛,协议规范才是。
§8.5 关键论文 Top 6
以下 6 篇覆盖"数据集诞生—方法奠基—集成方法论—偏倚审计—前沿探索"的完整脉络,按时间序排列:
- Halabi SS, Prevedello LM, Kalpathy-Cramer J, et al. The RSNA Pediatric Bone Age Machine Learning Challenge. Radiology, 290(2), 2018. DOI 10.1148/radiol.2018180736 — 数据集与挑战赛官方报告,定义规模、评测口径与获奖结果;一切引用的锚点文献。
- Larson DB, Chen MC, Lungren MP, Halabi SS, Stence NV, Langlotz CP. Performance of a Deep-Learning Neural Network Model in Assessing Skeletal Maturity on Pediatric Hand Radiographs. Radiology, 287(1):313-322, 2017. DOI 10.1148/radiol.2017170236 — 数据集前身研究,确立 CNN 与专家读片相当的结论,并首次给出"训练集越大越准"的规模效应曲线(1,558→12,611 张 RMS 1.08→0.73 年)。
- Iglovikov V, Kalinin A, Shvets A. Pediatric Bone Age Assessment Using Deep Convolutional Neural Networks. DLMIA Workshop (MICCAI), 2018 — 配准 + 多区域建模代表作,量化性别输入收益(平均降低误差 1.4 个月),开创区域子网集成路线。
- Radiology: Artificial Intelligence 集成分析, 2019. DOI 10.1148/ryai.2019190053 — 对 48 个参赛模型做异质集成,证明低相关集成(相关系数 0.47)优于朴素 Top-K 组合(0.67),把泛化 MAD 从 4.55 降至 3.79 个月。
- Beheshtian E, Putman K, Santomartino SM, Parekh VS, Yi PH. Generalizability and Bias in a Deep Learning Pediatric Bone Age Prediction Model Using Hand Radiographs. Radiology, 306(2), 2022. DOI 10.1148/radiol.220505 — 冠军模型外部验证与性别/年龄/Tanner 偏倚审计,确立"泛化良好但亚组偏倚显著"的核心结论。
- BoneAgeTW2, arXiv 预印本, 2026. arXiv 2607.23224 — TW2 分段自动化与伪标签策略,代表从全局回归回到可解释分期的最新尝试(预印本,未经同行评审)。
§8.6 社区活跃度
Kaggle 镜像页累计浏览 179K、下载 29.1K、评论 21 条(截至 2026-09),"学习/研究/应用/LLM 微调"用途标签齐全;挑战赛原生社区(RSNA ML 系列)持续扩展至肺炎、颅内出血等后续赛事,使"RSNA 挑战赛"成为医学影像 AI 的事实标准品牌。学术侧引用持续增长(Halabi 2018 论文 OpenAlex 被引 450+,截至 2026-09),新方法论文几乎必引。
| 活跃度指标 | 数值(截至 2026-09) | 含义 |
|---|---|---|
| Kaggle 镜像浏览 | 179K(近 30 天约 890) | 新进入者持续流入 |
| Kaggle 镜像下载 | 29.1K(近 30 天约 517) | 实际使用规模稳定 |
| Halabi 2018 被引 | 450+(OpenAlex) | 学术影响力持续增长 |
| 开源复现项目 | 多个教学级项目持续维护(2024 年仍有提交) | 长尾生态健康 |
活跃度的三个信号值得关注:Kaggle 镜像页每月仍有数百次下载,说明新进入者持续涌入;开源复现项目(如 boneageassessment 等教学项目)在 2024 年仍有提交,长尾维护活跃;近两年新论文开始把该数据集用于非传统任务(不确定性量化、TW 分期伪标签、多粒度特征编码),表明其研究生命周期远未结束。
§8.7 生态快照
| 资源 | 类型 | 链接 | 热度(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| Kaggle 镜像 kmader/rsna-bone-age | 数据镜像 | kaggle.com/datasets/kmader/rsna-bone-age | 下载 29.1K | 获取最便捷,目录结构社区通用 |
| Halabi 2018 挑战赛报告 | 官方论文 | doi.org/10.1148/radiol.2018180736 | 被引 450+ | 一切口径与规则的权威出处 |
| 官方数据描述文档 | 官方文档 | rsna.org(PDF) | — | RadLex/RDE123 与标注协议的机器可读定义 |
| 挑战赛规则与时间线附录 | 官方文档 | bonexpert.com 附录 PDF | — | 评测协议、预训练限制等规则原文 |
| BoneXpert RSNA 复盘 | 厂商技术博客 | bonexpert.com | — | 人类基线与参考标准不确定度的最佳推导文 |
| Beheshtian 2022 偏倚审计 | 同行评审论文 | doi.org/10.1148/radiol.220505 | — | 外验与公平性评估的方法学模板 |
| boneageassessment 开源项目 | GitHub 项目 | git.tdem.in/giuseppeantoniomotisi/boneageassessment | 活跃维护(2024 提交) | 完整预处理+训练流水线,含挑战赛结果表 |
生态使用建议:初学者按"Kaggle 镜像 → Halabi 2018 → 集成分析 → Beheshtian 2022"的顺序建立认知,一天内可以走完"拿到数据 → 理解口径 → 知道上限 → 知道坑在哪"的完整路径;工程团队则应把官方数据描述文档作为数据卡(datasheet)模板的起点。
§9 相关资源与引用
本章提供引用所需的全套材料:官方与社区链接、BibTeX 条目与三类高频场景的引用模板。
§9.1 官方与社区资源
下表按"先官方、后社区"排序;链接均为 2026-09 核验的活跃地址:
| 资源 | 说明 | 链接 |
|---|---|---|
| 官方挑战赛页面 | 数据下载入口、规则与获奖名单 | RSNA Pediatric Bone Age Challenge 2017 |
| 官方数据集描述文档 | RadLex/RDE123、标注协议、许可的机器可读定义 | RSNA 官方 PDF |
| 组织委员会与时间线附录 | 挑战赛规则原文、评审权重与日程 | bonexpert.com 附录 PDF |
| Kaggle 镜像 | 推荐获取渠道,社区标准目录结构 | kmader/rsna-bone-age |
| 集成分析论文全文 | 48 模型集成方法与置信区间 | PMC6884060 |
| 偏倚审计论文全文 | 外验协议与亚组分析方法学 | Radiology 2022 |
| 系统综述 | 2007-2019 年骨龄自动化方法与基准汇总 | PLOS ONE 2019 |
| 近期综述对比表 | 2017 年后基于 RSNA 数据集的方法横向对比 | PMC12864807 |
| 商用系统技术复盘 | 人类基线与参考标准不确定度推导 | bonexpert.com |
§9.2 BibTeX 引用
以下条目可直接导入文献管理器;全部字段值均来自检索核实的出版信息:
@article{halabi2018rsna,
title = {The RSNA Pediatric Bone Age Machine Learning Challenge},
author = {Halabi, Safwan S and Prevedello, Luciano M and Kalpathy-Cramer, Jayashree and Mamonov, Artem B and Bilbily, Alexander and Cicero, Mark and Pan, Ian and others},
journal = {Radiology},
volume = {290},
number = {2},
year = {2018},
doi = {10.1148/radiol.2018180736}
}
@article{larson2017performance,
title = {Performance of a Deep-Learning Neural Network Model in Assessing Skeletal Maturity on Pediatric Hand Radiographs},
author = {Larson, David B and Chen, Matthew C and Lungren, Matthew P and Halabi, Safwan S and Stence, Nicholas V and Langlotz, Curtis P},
journal = {Radiology},
volume = {287},
number = {1},
pages = {313--322},
year = {2017},
doi = {10.1148/radiol.2017170236}
}
@inproceedings{iglovikov2018pediatric,
title = {Pediatric Bone Age Assessment Using Deep Convolutional Neural Networks},
author = {Iglovikov, Vladimir and Kalinin, Alexander and Shvets, Alexey},
booktitle = {Deep Learning in Medical Image Analysis (DLMIA), MICCAI Workshop},
year = {2018}
}
@article{beheshtian2022generalizability,
title = {Generalizability and Bias in a Deep Learning Pediatric Bone Age Prediction Model Using Hand Radiographs},
author = {Beheshtian, Elham and Putman, Kristin and Santomartino, Samantha M and Parekh, Vishwa S and Yi, Paul H},
journal = {Radiology},
volume = {306},
number = {2},
year = {2022},
doi = {10.1148/radiol.220505}
}
BibTeX 说明:Halabi 2018 作者列表以 “and others” 截断(论文作者逾 18 人,LaTeX 侧可按目标期刊格式展开);集成分析论文(DOI 10.1148/ryai.2019190053)因作者名单未在本页核实来源中完整确认,未列入 BibTeX,引用时请从期刊页面补全后使用,切勿凭记忆填写作者。
§9.3 引用指南
使用本数据集时,按许可条款必须引用 Halabi 2018(数据集官方论文);如使用 Larson 2017 描述的原始研究库背景请并列引用;方法学对比建议同时引用 Iglovikov 2018 与 Beheshtian 2022。任何再分发(镜像、精选子集、教程数据包)须附 RSNA 官方下载链接并保留上述引用声明。
三类高频场景的引用模板:论文方法节写"基于 RSNA Pediatric Bone Age Challenge 数据集(Halabi et al., Radiology 2018),使用其 12,611 张训练图像";对比实验写"在官方 200 张测试集上评测,主指标为月单位 MAD";数据卡或模型卡写"数据来源 RSNA 2017 挑战赛,仅限非商业学术用途,测试集金标准为 6 名评审加权平均"。避免只写"Kaggle 数据集"——镜像页不是数据集的权威出处,正式发表必须回溯到 Radiology 论文与 RSNA 官方页面。
§10 AI 使用声明卡
§10.1 AI 模型列表
- 文本生成与结构化撰写:大语言模型(千方病案医学编辑部生产管线)
- 事实检索与核验:联网检索引擎(检索日期 2026-09-15)
- 代码示例生成:大语言模型辅助生成,经人工静态审查
本页面未使用 AI 图像生成工具生成任何医学影像示例;封面图为按提示词生成的抽象插画,不含真实患者影像。
§10.2 AI 参与范围
AI 参与了初稿撰写、结构组织、代码示例起草与文献检索整理;事实性数字全部经过检索来源核对并记录于 FACTS 清单;最终结构、医学表述与合规声明经人工审核定稿。AI 未接触任何受控原始数据,未执行自动化医学判断。
边界说明:AI 产出的所有规模数字、基准成绩、日期与许可条款均逐条对应检索来源,无来源的候选内容一律删除而非保留;代码块未在本页生产环境中实际执行(数据集需单独获取),其正确性依赖静态审查与社区惯例核对,使用者首次运行时应按 §6.1 的校验预期逐项核对输出。
§10.3 输入来源列表
以下 16 条来源支撑本页全部事实性内容,编号与正文关键数字处可回溯:
- Halabi SS, et al. The RSNA Pediatric Bone Age Machine Learning Challenge. Radiology, 290(2), 2018. DOI 10.1148/radiol.2018180736
- Larson DB, et al. Performance of a Deep-Learning Neural Network Model in Assessing Skeletal Maturity on Pediatric Hand Radiographs. Radiology, 287(1):313-322, 2017. DOI 10.1148/radiol.2017170236
- RSNA 2017 Pediatric Bone Age Challenge Dataset Description(官方 PDF). rsna.org
- Improving Automated Pediatric Bone Age Estimation Using Ensembles of Models from the 2017 RSNA Machine Learning Challenge. Radiology: Artificial Intelligence, 2019. DOI 10.1148/ryai.2019190053
- Beheshtian E, et al. Generalizability and Bias in a Deep Learning Pediatric Bone Age Prediction Model. Radiology, 306(2), 2022. DOI 10.1148/radiol.220505
- Kaggle 镜像页 kmader/rsna-bone-age(数据结构、许可、活跃度). kaggle.com
- 2017 RSNA ML Challenge 组织委员会与时间线附录. bonexpert.com/refs/radiol.2018boneAgeChallengeAppendix.pdf
- BoneXpert:RSNA challenge boosts automated bone age ratings. bonexpert.com
- WHO ICD-11 中文版第 5 章(维基文库镜像). zh.wikisource.org
- PLOS ONE 2019 骨龄自动评估系统综述. journals.plos.org
- 多区域与商用系统综述(QIMS). qims.amegroups.org;Frontiers in Endocrinology digiBONE. frontiersin.org
- Iglovikov V, et al. Pediatric Bone Age Assessment Using Deep Convolutional Neural Networks. DLMIA 2018(经 Neuromation 技术解读核对)
- 不确定性多流模型研究. Springer, 2026. DOI 10.1007/s44443-026-00681-y
- BoneAgeTW2 预印本. arXiv 2607.23224
- Dataset Ninja RSNA Bone Age 页面(许可条款转录). datasetninja.com
- 中国新闻网:医院里的 AI 读片岗位报道(临床落地时效与流程佐证). chinanews.com
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| frontmatter 与 INFOBOX 字段 | 千方病案医学编辑部 | 逐字段与 FACTS 清单比对 | ✅ 已通过 |
| §2 医学背景与 ICD-11 映射 | 千方病案医学编辑部 | 对照 WHO ICD-11 中文版核对编码 | ✅ 已通过 |
| §4 数据字典与 §6 代码 | 千方病案医学编辑部 | 静态审查 + 字段一致性核对 | ✅ 已通过 |
| §6.5 坑点与 §7 偏倚分析 | 千方病案医学编辑部 | 与 Beheshtian 2022、集成分析原文比对 | ✅ 已通过 |
| §8 排行榜数字 | 千方病案医学编辑部 | 与 Halabi 2018 及综述表逐项核对 | ✅ 已通过 |
| §5 划分与泄漏讨论 | 千方病案医学编辑部 | 与挑战赛规则附录比对 | ✅ 已通过 |
| 许可与合规声明 | 千方病案医学编辑部 | 对照 RSNA 数据使用协议条款 | ✅ 已通过 |
§10.5 AI 生成章节标注
以下章节由 AI 辅助生成初稿并经人工审核定稿:§1 概览、§3 规格、§6 AI 就绪指南(含代码与坑点)、§8 基准生态、§C JSON-LD。§0、§10 与全部免责声明为模板化人工内容。
各章的人工干预重点:§2 的 ICD-11 编码与术语映射逐条对照官方中文版核定;§4 与 §6 的代码块统一了变量命名与目录假设,并补齐断言校验;§5 的划分建议与 §7 的偏倚结论改写为与 Beheshtian 2022 原文一致的分性别表述,避免过度概括。
§10.6 最后人工审核
最后人工审核日期:2026-09-05(与 §0 审核声明一致)。审核范围覆盖全部章节的事实表述、代码静态审查、编码映射与合规声明;FACTS 事实清单与本页同目录存档,供后续更新时追溯每个数字的出处。
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- fracatlas — 共享标签:医学影像 / 骨骼肌肉影像 / X光影像
- mura — 共享标签:医学影像 / 骨骼肌肉影像 / X光影像
- grazpedwri-dx — 共享标签:医学影像 / 骨骼肌肉影像 / X光影像
- shenzhen-tb — 共享标签:医学影像 / X光影像
- cxr-cardiomegaly — 共享标签:医学影像 / X光影像
- cxr-phone — 共享标签:医学影像 / X光影像
- oai — 共享标签:医学影像 / 骨骼肌肉影像
- vindr-spinexr — 共享标签:医学影像 / 骨骼肌肉影像 / X光影像
- chexpert — 共享标签:医学影像 / X光影像
- nih-chestx-ray14 — 共享标签:医学影像 / X光影像
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
