信息速览

MRNet — 膝关节 MRI 损伤检测数据集 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | MRNet Dataset(MRNet-v1.0) |
| 英文全称 | MRNet: A Dataset of Knee MRIs and Competition for Automated Knee MRI Interpretation |
| 别名/简称 | MRNet、MRNet-v1.0、MRNet Competition Dataset |
| 疾病分类 | 膝关节损伤与内部紊乱(ICD-11:ND13 膝部韧带扭伤或断裂 / ND14 膝关节内部紊乱;见 §2.1 映射说明) |
| SNOMED CT | 444488008 Injury of anterior cruciate ligament / 42874001 Tear of meniscus of knee(详见 §2.1b) |
| 数据模态 | 医学影像(MRI 多平面断层堆叠)、二值标签 CSV |
| AI 任务类型 | 检查级二值分类(异常检测、ACL 撕裂检测、半月板撕裂检测)、弱监督多示例学习、跨平面模型融合 |
| 样本总数 | 1,370 例检查 / 1,312 名患者;公开部分 1,250 例(train 1,130 + valid 120),隐藏测试集 120 例 |
| 数据大小 | 约 6.09 GB(MRNet-v1.0.zip,AIMI 平台标注) |
| 数据格式 | .npy(NumPy 数组 [切片数, 256, 256])+ 无表头 CSV 标签 |
| 许可证 | Stanford Dataset Research Use Agreement(RUA) |
| 访问级别 | 申请审核(官方页注册并同意 RUA,下载链接经邮件发放,禁止转发) |
| DUO 标签 | HMB, IRB, PUB |
| 语言 | 英文(标签为数值,无文本) |
| 首发日期 | 2018-11-27(随 PLOS Medicine 论文发布) |
| 最后更新 | v1.0(2018-11-27 后未再更新;2020-12-07 上架 Stanford AIMI 平台) |
| 发布机构 | Stanford Machine Learning Group(计算机科学系 + 放射学系 + 骨科手术系) |
| 官方主页 | https://stanfordmlgroup.github.io/competitions/mrnet/ |
| 下载地址 | https://stanfordmlgroup.github.io/competitions/mrnet/(注册申请后邮件发放) |
| DOI | 10.1371/journal.pmed.1002699(论文)/ 10.71718/rcbp-8c35(AIMI 数据集引证) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方划分清晰、.npy 可直接加载;扣分项:无 DICOM 元数据、无患者人口学字段、隐藏测试集不可得、需自行实现 DataLoader 与训练循环 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、ACL 与半月板损伤临床任务定义、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(.npy 体积组织、标签 CSV 结构)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与 Stanford Machine Learning Group、Stanford AIMI、PLOS 无任何商业利益关联。本页面不销售 MRNet 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受 Stanford University 相关机构的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。MRNet 要求用户在官方页面注册、签署 Stanford Dataset Research Use Agreement(RUA)后方可获得下载链接,且不得向第三方转发数据或私有链接。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? MRNet 是斯坦福大学机器学习组(Stanford ML Group)在 2018 年 11 月随 PLOS Medicine 论文发布的膝关节 MRI 数据集。它收录了 2001-2012 年间在斯坦福大学医学中心拍摄的 1,370 例膝关节 MRI 检查,每例检查包含矢状位、冠状位、轴位三个平面,并带有三个"有病/没病"级别的二值标签:是否异常、是否有前交叉韧带(ACL)撕裂、是否有半月板撕裂。
为什么重要? 膝关节 MRI 是肌骨影像中检查量最大的部位,读片耗时且存在观察者间差异。原论文证明:一个深度学习模型在 ACL 撕裂检测上达到 AUC 0.965,且给放射科医生提供模型预测后,能把 ACL 判读的特异度显著提高 4.8%——相当于每 100 名健康患者中约 5 人可免于不必要的关节镜手术考量。这是医学 AI"人机协同"最早的严谨证据之一,也让 MRNet 成为后续几乎所有膝关节 AI 论文绕不开的基准。
我能用它做什么? 训练检查级二值分类器、研究跨切片弱监督(多示例学习)、做三平面决策融合实验、测模型跨域泛化(论文自带外部验证路径)。注意:它只有检查级标签、没有分割标注、没有患者人口学数据,隐藏测试集不公开且官方评测通道已随竞赛关闭。
§1.1 摘要
MRNet 数据集由 1,370 例膝关节 MRI 检查构成,2001-01-01 至 2012-12-31 采集于 Stanford University Medical Center,覆盖 1,312 名患者(平均年龄 38.0 岁,女性 569 例/41.5%)。每例检查含 axial、coronal、sagittal 三个平面的序列(GE Discovery 扫描仪,56.6% 为 3.0T),发布形态为每例每平面一个 .npy 文件([切片数, 256, 256] 的单通道灰度堆叠),配合 6 个无表头 CSV 提供 abnormal、acl、meniscus 三个二值标签。官方划分按患者分组:训练集 1,130 例(1,088 患者)、验证集 120 例(111 患者,论文称 tuning set)、隐藏测试集 120 例(113 患者,论文称 validation set,参考标准为 3 位 board-certified 肌骨放射科医生多数投票)。配套的 MRNet 模型用预训练 AlexNet 逐切片提特征、跨切片最大池化聚合,三个平面各训一个模型后以 logistic 回归融合,在内部验证集上取得 abnormal 0.937 / ACL 0.965 / meniscal 0.847 的 AUC。论文同时完成两项里程碑工作:以克罗地亚里耶卡 917 例外部队列验证跨域泛化(零样本 ACL AUC 0.824),以及一项 9 位临床专家参与的交叉读片实验,证明模型辅助可使专家 ACL 特异度平均提升 0.048(p < 0.001)。
§1.2 战略价值分析
临床维度:低假阳性即低手术风险。 ACL 撕裂的可疑阳性常导向关节镜探查或重建手术决策。原论文将模型预测提供给 7 位 board-certified 普通放射科医生与 2 位骨科医生后,ACL 判读特异度平均提高 0.048(95% 置信区间显著,p < 0.001;控制错误发现率后 q = 0.006)——在 120 例验证集含 62 例 ACL 阴性的前提下,这一特异度提升对应约 3 名患者免于不必要的手术路径。模型本身 ACL 特异度达 0.968,高于 9 位专家的微均值 0.933,使其具备"高置信度阴性即可排除"的筛查前哨价值。对健康经济学而言,一个低假阳性率的分诊模型比一个高敏感度的黑箱更有落地意义,MRNet 是把这一逻辑量化讲清楚的第一批公开研究。
方法学维度:变长切片堆叠的弱监督范式。 与固定尺寸的自然图像不同,MRI 检查是"变长堆叠的 2D 切片"——同一检查在不同平面的切片数都不相同(例如 axial 25 层 vs coronal 29 层)。MRNet 用"逐切片特征提取 → global average pooling → 跨切片 max pooling"的组合给出了这一数据形态的标准解法,本质上是多示例学习(MIL):检查是 bag,切片是 instance,只有 bag 级标签。此后大量医学影像工作(包括胸部 CT、病理 WSI)沿用了这一范式。数据集按患者分组的划分设计、报告提取标签的噪声声明、以及"内部验证 ≠ 隐藏测试"的双轨评估,都是数据集工程上值得复用的模板。
§1.3 横向对比
| 数据集 | 规模 | 模态与标注 | 标注类型 | 与 MRNet 的差异化 |
|---|---|---|---|---|
| MRNet(本页) | 1,370 例检查 / 1,312 名患者 | 膝 MRI 三平面,检查级二值标签 ×3 | 临床报告提取 + 专家多数投票(验证集) | 弱监督分类基准;有官方隐藏测试与排行榜历史 |
| OAI(骨关节炎倡议) | 约 4,800 名基线受试者,多时点随访 | 膝 MRI + X 线,骨关节炎分级 | 结构化影像评分 | 纵向队列、聚焦退行性病变,非撕裂检测 |
| SKM-TEA(Stanford,2022) | 173 例检查 | 膝 MRI(含 qMRI)+ 3D 分割 + 分类标签 | 像素级分割 + 检查级标签 | 小而深:可做分割,但规模远小于 MRNet |
| Rijeka ACL 数据集(论文外部队列) | 917 例检查 | 矢状位 T1,ACL 标签 | 临床报告提取 | 仅 ACL、单平面;MRNet 论文的跨域验证场 |
选型提示:做检查级分类与弱监督方法研究选 MRNet;做分割或定量软骨/半月板形态学选 SKM-TEA;做骨关节炎纵向进展建模选 OAI。三者标签口径互不兼容,分数不可直接比较。
§1.4 版本演进时间轴
| 时间 | 事件 | 说明 |
|---|---|---|
| 2001-01-01 至 2012-12-31 | 原始检查采集期 | Stanford University Medical Center,GE 扫描仪,常规非增强膝 MRI 协议 |
| 2018-06-02 | 论文投稿 PLOS Medicine | 数据收集与模型开发完成 |
| 2018-11-27 | 论文发表 + 数据集 v1.0 发布 + 竞赛上线 | PLoS Med 15(11): e1002699;MRNet-v1.0.zip 交付,CodaLab 隐藏测试集评测开放 |
| 2019-01-09 至 2019-11-27 | 竞赛排行榜活跃期 | 榜首 mrnet-baseline 单模型平均 AUC 0.917;共 6 个单模型上榜 |
| 竞赛关闭(官方公告) | 官方评测通道关闭 | “This competition is now closed”;隐藏测试集此后不可再评 |
| 2020-12-07 | 上架 Stanford AIMI 共享数据集平台 | 增补引证 DOI 10.71718/rcbp-8c35,文件 6.09 GB |
| 2019-2024 | 社区基准持续演化 | TransMed、MPFuseNet、SGNET 等在公开验证集上自评刷新数字(口径不一,见 §8) |
§1.5 典型 AI 应用场景
- ACL 撕裂排除性筛查:模型 ACL 特异度 0.968,可作为高置信度阴性排除器,辅助分诊低风险患者(原论文已给出专家协同证据链)。
- 弱监督多示例学习研究:变长切片堆叠 + 仅 bag 级标签,是 MIL、attention pooling、跨切片 transformer 的标准试验床。
- 三平面决策融合:axial/coronal/sagittal 各有互补信息,适合研究视图融合与跨平面注意力(原论文用 logistic 回归,后续工作升级为 learned fusion)。
- 跨域泛化与外部验证方法学:单中心 + 双场强(3.0T/1.5T)+ 单一厂商,配合论文公开的里耶卡外部路径,是研究 domain shift 的现成沙盘。
- 医学影像教学与课程基准:数据量适中(6 GB)、标签语义直白、结构简单,是"医学影像分类第一课"的高频选择。
§2 医学背景
§2.1 ICD-11 疾病分类锚定
MRNet 的三个标签在 ICD-11 损伤章节(Injuries to the knee or lower leg,ND 区)中的锚定如下。注意:abnormal 标签覆盖"任何需要报告的膝部异常",不对应单一 ICD-11 码,此处以膝内紊乱与韧带损伤两大主体作泛化锚定,并附映射性质说明。
| 数据集标签 | ICD-11 锚定 | 中文名称 | 映射性质 |
|---|---|---|---|
| abnormal = 1 | ND14(主体)+ ND13 | 膝关节内部紊乱 / 膝部韧带扭伤或断裂 | 泛化锚定:涵盖半月板、韧带、软骨、滑膜等任一影像异常 |
| acl = 1 | ND13 | 膝部韧带扭伤或断裂(前交叉韧带为主体) | 泛化锚定:标签语义为"报告提及 ACL 撕裂" |
| meniscus = 1 | ND14 | 膝关节内部紊乱(半月板撕裂为主体) | 泛化锚定:标签语义为"报告提及半月板撕裂" |
映射警示:MRNet 标签来自临床报告回读,报告书写遵循机构习惯而非 ICD-11 编码规范;上述锚定用于文献检索与队列概念对齐,不可当作逐一编码的金标准。ICD-11 具体细码(如完全断裂 vs 部分撕裂)无法从二值标签恢复。
§2.1b SNOMED CT 映射
| 标签 | SNOMED CT 码 | 首选术语 | 备注 |
|---|---|---|---|
| acl = 1 | 444488008 | Injury of anterior cruciate ligament | 覆盖扭伤与断裂;完全断裂另有更细分概念 |
| meniscus = 1 | 42874001 | Tear of meniscus of knee | 内/外侧与桶柄样撕裂均归入其子类 |
| abnormal = 1 | 无单码对应 | — | 需按具体病变分别编码;建议以 444488008 + 42874001 联合近似 |
同样地,SNOMED 映射是概念级对齐:数据集标签分辨"报告是否提及",不区分急性/慢性、部分/完全,也不能恢复左右膝之外的四分位解剖细节。
§2.2 疾病简介
前交叉韧带(ACL)损伤:ACL 是维持膝关节前向稳定性的核心韧带,断裂多发生于运动中的减速、旋转与落地动作,年轻活跃人群高发。美国每年 ACL 重建超过 10 万例。MRI 是 ACL 损伤影像评估的首选,矢状位序列最敏感;急性期可见韧带连续性中断、水肿信号,慢性期可见韧带吸收。漏诊将导致关节不稳与继发性半月板、软骨损伤。
半月板撕裂:半月板是股骨髁与胫骨平台之间的纤维软骨结构,承担负荷传导与稳定功能。撕裂分创伤性(年轻人,常伴 ACL 损伤——约一半 ACL 断裂合并半月板损伤)与退行性(中老年,可无症状)。MRI 诊断以矢状位为主,分级体系将信号改变分为 1-3 级,3 级(信号达关节面)才对应真性撕裂。这正是影像 AI 的难点:标签若只含"报告提及撕裂",1-2 级信号改变的归属就存在系统性模糊。
数据集的临床含义:MRNet 的三个标签对应"报告是否提及"而非"是否确诊"。原论文的专家读片实验显示,普通放射科医生在 ACL 敏感度上显著高于模型(0.906 vs 0.759),而在半月板特异度上显著高于模型(0.892 vs 0.741)——理解这一医学背景,才能解释 §8 中模型各项 AUC 的不对称。
§2.3 临床任务定义
| 任务 | 输入 | 输出 | 临床定位 | 对应数据集标签 |
|---|---|---|---|---|
| 异常检测 | 三平面 MRI 序列 | 二值(有无任一异常) | 初筛/分诊,阳性转专科 | abnormal |
| ACL 撕裂检测 | 三平面 MRI 序列 | 二值 | 高特异度排除 + 阴性确认 | acl |
| 半月板撕裂检测 | 三平面 MRI 序列 | 二值 | 手术规划参考 | meniscus |
三个任务均为检查级二值分类(非筛查、非分级、非预后)。评估协议为 ROC AUC(原论文)与三任务平均 AUC(竞赛排行榜)。注意任务定位差异:异常检测面向分诊(重敏感度),ACL 检测面向排除(重特异度),半月板检测面向手术规划(重特异度)——单一 AUC 无法表达这些临床偏好差异。
§2.4 患者人群特征
| 维度 | 内容 | 出处 |
|---|---|---|
| 来源机构 | Stanford University Medical Center(单中心) | 论文 Methods |
| 采集时间 | 2001-01-01 至 2012-12-31 | 论文 Methods |
| 检查数 / 患者数 | 1,370 例检查 / 1,312 名患者 | 官方竞赛页 + 论文 |
| 年龄 | 平均 38.0 岁 | 论文摘要 |
| 性别 | 女性 569 例(41.5%) | 论文摘要 |
| 就医类型 | 急/慢性膝痛、随访或术前评估、外伤(最常见适应症) | 官方竞赛页 |
| 设备 | GE Discovery,56.6% 3.0T、其余 1.5T,标准膝线圈 | 官方竞赛页 |
| 种族/民族分布 | 未随数据集公开 | — |
§2.5 临床价值
膝关节是全身肌骨 MRI 检查量最大的部位,读片耗时且受观察者间变异与疲劳影响。原论文测得:模型读完全部 120 例验证集用时不到 2 分钟,而人类专家超过 3 小时。在人机协同实验中,模型辅助显著提高专家 ACL 判读特异度(平均 +0.048),意味着模型作为"第二读者"在忙碌的肌骨门诊有现实分诊价值。对医疗 AI 工程团队而言,MRNet 提供了一条完整证据链——模型指标、专家对照、协同增益、外部泛化四件套齐备,适合作为"临床价值论证方法论"的参考蓝本。
§2.6 金标准/参考标准
| 划分 | 标注方式 | 标注者 | 性质 |
|---|---|---|---|
| 训练集 + 验证集(1,250 例,公开) | 从临床报告手工提取(报告回读) | 签署报告的临床医生(未具名) | 弱金标准:真实临床判读,但非前瞻结构化标注 |
| 隐藏测试集(120 例,不公开) | 3 位 board-certified 肌骨放射科医生多数投票 | 执业 6-19 年(平均 12 年);阅片时可访问全部 DICOM 序列、原始报告、临床史与随访检查 | 参考标准:比报告回读更严格,但依然不是关节镜金标准 |
关键口径:原论文自己在讨论中承认,参考标签基于放射科解读而非手术确认。论文专家实验的 9 位读者(7 位普通放射科医生 + 2 位骨科医生,执业 3-29 年、平均 12 年)读的是验证集 120 例,与测试集参考标准的 3 位 MSK 医生是两批人、两套角色,勿混淆。
§3 数据集规格
§3.0 版本抉择矩阵
MRNet 只发布过 v1.0 一个版本,无版本选择问题;但"从哪里获取"影响体验,矩阵如下。
| 你的需求 | 推荐获取渠道 | 大小 | 理由 |
|---|---|---|---|
| 学术研究 + 可签署 RUA | 官方竞赛页注册申请 | 约 6.09 GB | 一手来源;邮件直发下载链接 |
| 需要 DOI 引证条目 | Stanford AIMI 平台条目 | 约 6.09 GB | 平台提供引证 DOI 10.71718/rcbp-8c35 与文件浏览器 |
| 只想看数据结构再决定 | 社区教程(LearnOpenCV、DeepWiki 镜像) | 0 GB | 不下载数据先理解目录与标签格式 |
| 需要隐藏测试集官方评分 | 无可用渠道 | — | 竞赛已关闭,CodaLab 评测不再接受提交 |
§3.1 模态详细说明
MRNet 发布的是预处理后的 2D 切片堆叠,不是原始 DICOM。每例检查含三个 .npy 文件:
| 属性 | axial(轴位) | coronal(冠状位) | sagittal(矢状位) |
|---|---|---|---|
| 典型序列 | PD 脂肪抑制 | T1 加权 + T2 脂肪抑制 | 质子密度加权 + T2 脂肪抑制 |
| 数组形状 | [切片数, 256, 256] | [切片数, 256, 256] | [切片数, 256, 256] |
| 切片数 | 可变(同一检查三个平面切片数互不相同) | 可变 | 可变 |
| 灰度 | 单通道 8-bit | 单通道 8-bit | 单通道 8-bit |
| 原始 DICOM | 未随数据集发布 | 未随数据集发布 | 未随数据集发布 |
官方竞赛页给出的常规非增强膝 MRI 协议包括:coronal T1 加权、coronal T2 脂肪抑制、sagittal 质子密度(PD)加权、sagittal T2 脂肪抑制、axial PD 脂肪抑制五个序列。发布包将每平面压缩为单一体积文件,序列级细节(TR/TE、层厚、层间距、矩阵)不再保留。
§3.2 样本量拆分
| 子集 | 检查数 | 患者数 | 是否公开 | 标签来源 |
|---|---|---|---|---|
| train(训练集) | 1,130 | 1,088 | 是(MRNet-v1.0.zip) | 临床报告提取 |
| valid(验证集,论文称 tuning set) | 120 | 111 | 是(MRNet-v1.0.zip) | 临床报告提取 |
| hidden test(论文称 validation set) | 120 | 113 | 否(竞赛评测用,已随竞赛关闭停用) | 3 位 MSK 放射科医生多数投票 |
| 合计 | 1,370 | 1,312 | 公开 1,250 例 | — |
标签阳性分布(全库 1,370 例,官方口径):
| 标签 | 阳性数 | 阳性率 |
|---|---|---|
| abnormal | 1,104 | 80.6% |
| acl | 319 | 23.3% |
| meniscus | 508 | 37.1% |
§3.3 数据格式详情
| 文件 | 格式 | 结构 | 示例 |
|---|---|---|---|
| 体积文件 | .npy | [切片数, 256, 256],uint8 灰度 | train/coronal/0000.npy |
| 标签文件 | CSV(无表头) | 两列:病例 ID, 0/1 | train-abnormal.csv |
| ID 命名 | 4 位补零十进制 | 0000 起,连续编号 | 0000、0001、… |
| 压缩包 | zip | 解压后 MRNet-v1.0/ 目录 | MRNet-v1.0.zip(约 6.09 GB) |
§3.4 存储大小
| 项 | 大小 |
|---|---|
| MRNet-v1.0.zip(AIMI 平台标注) | 约 6.09 GB |
| 社区教程报告的解压后体积 | 约 5.7 GB 级 |
| 建议磁盘预留(含解压与预处理缓存) | 20 GB |
§3.5 标注方式
| 标注层 | 方式 | 说明 |
|---|---|---|
| 检查级三标签 | 弱监督(报告回读) | 从放射科报告手工提取"是否提及",阳性不等于影像确诊 |
| 隐藏测试集参考标准 | 专家多数投票 | 3 位 MSK 放射科医生,投票前可访问 DICOM、报告与随访 |
| 切片级/像素级标注 | 无 | 数据集不含任何分割或定位标注;热力图仅为论文可视化手段 |
§3.6 标注者资质
| 角色 | 资质 | 职责 |
|---|---|---|
| 报告提取(全库标签) | 签署临床报告的放射科医生(原报告作者,未具名) | 产生训练/验证标签 |
| 参考标准委员会(测试集) | 3 位 board-certified 肌骨放射科医生,执业 6-19 年(平均 12 年) | 多数投票建立测试集 GT |
| 协同读片实验读者 | 7 位 board-certified 普通放射科医生 + 2 位骨科医生,执业 3-29 年(平均 12 年) | 有/无模型辅助各读验证集一次,读片间隔 washout ≥ 10 天 |
一致性统计(如 kappa)未在公开材料中给出,这是数据集文档的已知空缺。
§3.7 数据采集时间范围
2001-01-01 至 2012-12-31(约 12 年跨度)。注意:采集日期不随公开数据发布,每个 .npy 文件不含任何时间戳;任何按年份分层、漂移监控或时间外推的设计都需要另寻数据源。
§3.8 地理覆盖
单中心:美国加利福尼亚州斯坦福,Stanford University Medical Center(三级学术转诊中心)。论文外部队列来自克罗地亚里耶卡 Clinical Hospital Centre Rijeka,但该队列(917 例矢状位 T1 + ACL 标签)独立发布,不在 MRNet-v1.0.zip 内。
§3.9 采集设备规格
| 属性 | 规格 |
|---|---|
| 厂商/型号 | GE Discovery(GE Healthcare, Waukesha, WI) |
| 场强 | 3.0T:775 例(56.6%);1.5T:其余 595 例 |
| 线圈 | 标准膝关节 MRI 线圈 |
| 协议 | 常规非增强膝 MRI(coronal T1、coronal T2 FS、sagittal PD、sagittal T2 FS、axial PD FS) |
| 对比剂 | 无(非增强) |
注意:场强、厂商信息是全库级描述,公开数据不含逐检查的设备元数据;不能在样本级还原"哪例是 3.0T"。
§3.10 深度溯源链
| 环节 | 内容 | 可追溯性 |
|---|---|---|
| 影像采集 | GE Discovery,常规膝 MRI 协议,2001-2012 | 论文 Methods 级描述;逐检查参数不可追溯 |
| 临床判读 | 放射科报告(训练/验证标签的唯一来源) | 报告原文不发布 |
| 标签提取 | 手工回读报告 → 0/1 CSV | 过程性文档未公开 |
| 测试集 GT | 3 位 MSK 医生多数投票(可访问 DICOM/报告/随访) | 论文与竞赛页描述 |
| 预处理 | DICOM → 256×256 切片 → .npy | 算法细节在论文 Methods;具体脚本未单独发布 |
| 复现代码 | 论文 Supporting Information(S1 Code / S2 Code) | 随论文开放获取发布 |
§4 数据结构详解
§4.0 目录结构预览
MRNet-v1.0.zip 解压后的完整目录树如下(社区实现普遍按此结构加载):
MRNet-v1.0/
├── train/
│ ├── axial/
│ │ ├── 0000.npy # 每例每平面一个文件
│ │ ├── 0001.npy
│ │ └── ... # 共 1,130 个文件
│ ├── coronal/
│ │ ├── 0000.npy
│ │ └── ...
│ └── sagittal/
│ ├── 0000.npy
│ └── ...
├── valid/
│ ├── axial/
│ ├── coronal/
│ └── sagittal/ # 每平面 120 个文件
├── train-abnormal.csv # 无表头:exam_id,0/1
├── train-acl.csv
├── train-meniscus.csv
├── valid-abnormal.csv
├── valid-acl.csv
└── valid-meniscus.csv
关键事实:train 与 valid 的病例 ID 空间互不重叠(按患者分组划分);三个标签 CSV 相互独立成文,均覆盖对应子集全部病例;隐藏测试集 120 例不在包内。
§4.1 DAIMS 标准化字段描述表
| 字段/文件 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| exam_id(文件名) | 文本 | 4 位补零检查标识,train/valid 两套独立空间 | 0000 | 主键,关联体积与标签 | 无 | 无缺失 | 0000-1129(train)/ 0000-0119(valid) |
| plane(目录名) | 枚举 | 解剖平面 | coronal | 多视图输入选择 | 无 | 无缺失 | axial / coronal / sagittal |
| 体积数组 | uint8 数组 | [切片数, 256, 256] 灰度堆叠 | (25, 256, 256) | 分类/弱监督输入 | 无 DICOM 元数据,层厚未知 | 无缺失 | 切片数可变(约十几至数十层) |
| abnormal | 二值 | 任一影像异常 | 1 | 主任务标签 | 报告回读噪声 | 无缺失 | 0 / 1 |
| acl | 二值 | 报告提及 ACL 撕裂 | 0 | 病灶任务标签 | 报告回读噪声;1-2 级损伤归属模糊 | 无缺失 | 0 / 1 |
| meniscus | 二值 | 报告提及半月板撕裂 | 1 | 病灶任务标签 | 报告回读噪声 | 无缺失 | 0 / 1 |
| 患者人口学 | 未发布 | 年龄/性别仅论文级汇总(38.0 岁 / 41.5% 女) | — | 公平性分析受阻 | — | 整层缺失(结构性) | — |
| 采集时间戳 | 未发布 | 任何日期字段均不在公开数据中 | — | 漂移监控受阻 | — | 整层缺失(结构性) | — |
§4.2 标签分布统计
官方披露的全库标签分布(1,370 例):
| 标签 | 阳性 | 阳性率 | 类不平衡比(阴:阳) |
|---|---|---|---|
| abnormal | 1,104 | 80.6% | 约 1:4.2 |
| acl | 319 | 23.3% | 约 3.3:1 |
| meniscus | 508 | 37.1% | 约 1.7:1 |
分层设计保证:验证集与 tuning 集中每个标签至少 50 例阳性(分层随机采样);同一患者的所有检查进入同一划分,因此训练集 1,130 例检查仅对应 1,088 名患者(人均 1.04 例)。
§4.3 关键统计
| 统计项 | 数值 | 说明 |
|---|---|---|
| 检查数(全库) | 1,370 | 官方口径 |
| 公开检查数 | 1,250 | train 1,130 + valid 120 |
| 3.0T 占比 | 56.6%(775 例) | 其余为 1.5T |
| 平均年龄 | 38.0 岁 | 论文摘要 |
| 女性占比 | 41.5%(569 例) | 论文摘要 |
| 模型读片用时 | 120 例 < 2 分钟 | 专家 > 3 小时 |
| 数据体积 | 约 6.09 GB | AIMI 平台标注 |
社区教程(LearnOpenCV)报告的实测观察:同一检查在不同平面的切片数不同(例如 axial 25 层、coronal 29 层),且切片数在训练集内分布范围较宽——这决定了 batch 维度只能逐检查组织(batch_size = 1 是社区默认配置)。
§4.4 数据层级关系
患者(1,312 名,公开部分 1,199 名)
└── 检查(1,370 例;同一患者可能有多例,但全部同 split)
└── 平面序列(每检查 3 个:axial / coronal / sagittal)
└── .npy 体积([切片数, 256, 256])
└── 2D 切片(数十层;无切片级标注)
两层关键约束:第一,患者 → 检查是一对多(人均 1.04 例),任何自定义划分必须按患者分组;第二,检查 → 切片的一对多没有标签,切片级监督信号只能通过弱监督假设间接获得。
§4.5 缺失值情况与信息性缺失编码
MRNet 公开部分没有传统意义的缺失值:每个 CSV 行都完整、每个检查三个平面齐全。真正的"缺失"是结构性的:
| 缺失层 | 性质 | 对 AI 的影响 | 缓解策略 |
|---|---|---|---|
| DICOM 元数据(层厚/TR/TE/线圈) | 结构性缺失(预处理时剥离) | 无法做物理重采样与真 3D 卷积 | 视为 2D 切片堆叠,用跨切片池化 |
| 患者人口学 | 结构性缺失(仅论文汇总) | 无法做样本级公平性分析 | 引用论文汇总值做组级讨论 |
| 采集时间戳 | 结构性缺失 | 无法按年份分层或监控漂移 | 放弃时间维度设计 |
| 测试集 | 整体不可得 | 无法在官方 GT 上评估 | 自建 hold-out + 外部数据验证 |
| 切片级标注 | 从未存在 | 无法直接监督病灶定位 | MIL/attention 弱监督 |
§5 数据划分与使用建议
§5.1 官方数据划分
| 划分 | 检查数 | 患者数 | 可得性 | 用途 |
|---|---|---|---|---|
| train | 1,130 | 1,088 | 公开 | 训练 |
| valid(tuning set) | 120 | 111 | 公开 | 调参/选模型/论文报告 |
| hidden test(validation set) | 120 | 113 | 不可得 | 官方竞赛评分(已停) |
分层随机采样保证每个标签在 valid/tuning 集至少 50 例阳性;同一患者所有检查同 split。
§5.2 推荐划分策略
- 默认直接用官方 train/valid:1,130/120 的比例虽然悬殊,但这是所有已发表数字的可比口径;自划新划分会让你的结果与文献脱钩。
- 如需自建测试集:从 train 内做患者级分组再划出 10-15%,用 GroupShuffleSplit(组 = 患者)并验证患者零交集;valid 只做单次终评,不做迭代调参。
- 不要对 valid 做多轮模型选择:valid 只有 120 例,反复在其上选模型/选 epoch 等于把它当训练信号——见 §6.5 坑点 1。
- 跨平面一致性:同一检查的三个平面必须始终同侧(同 train 或同 eval),切不可按文件名跨平面混划。
§5.3 数据泄漏风险防御
| 泄漏模式 | 触发场景 | 防御 |
|---|---|---|
| 患者级泄漏 | 自划划分按检查而非按患者 | GroupShuffleSplit(组 = 患者);划分后断言患者集合零交集 |
| tuning 集泄漏 | 在 120 例 valid 上反复选模型/早停 | valid 只在最终报告前使用;模型选择改在 train 内交叉验证 |
| 测试集代理泄漏 | 用排行榜历史分数"校准"自己的模型 | 排行榜分数对应隐藏集官方 GT,与你的 valid 自评无换算关系 |
| 预处理泄漏 | 全库(train+valid)联合归一化/切片统计 | 归一化参数只从 train 估计 |
| 标签泄漏 | 用 abnormal 训练 ACL 模型时直接拼接标签 | 三标签独立处理;联合训练时警惕 abnormal 对病灶标签的先验泄漏 |
§5.4 交叉验证建议
- 患者级 5 折 GroupKFold:在 1,130 例 train 上做 5 折,报告折间均值 ± 标准差;单次 120 例 valid 评估的置信区间很宽(论文 ACL AUC 95% CI 达 ±0.028),多折能显著稳定结论。
- 三任务三平面全矩阵:完整复刻需要 9 个模型(3 任务 × 3 平面)+ 融合层,交叉验证代价高;可折中为"单平面单任务 CV + 一次全量融合"。
- 分层维度:按 (abnormal, acl, meniscus) 联合标签做分层,避免某折 ACL 阳性塌缩。
§5.5 外部验证
原论文示范的路径:克罗地亚 Clinical Hospital Centre Rijeka 公开队列(917 例矢状位 T1 + ACL 标签),其中 183 例作外部验证。MRNet 模型零样本迁移 ACL AUC 0.824(内部 0.965),用 734 例外部队列微调后达 0.911。后续研究建议:任何声称"通用膝 MRI 判读"的模型至少应报告一个外部中心的表现,且注明场强/厂商差异(MRNet 全库 GE,多中心数据常混合 Siemens/Philips)。
§6 AI 就绪指南
§6.0 云端快速启动
MRNet 体量小(约 6 GB)、纯 .npy 格式,任何一台带 GPU 的云实例即可运行。推荐配置:AWS g4dn.xlarge / GCP n1-standard-4 + T4 / 阿里云 gn6i,系统盘 30 GB + 数据盘 20 GB。数据获取必须先在官方页完成 RUA 注册并等待邮件链接,云上无法绕过该流程。下载后上传至实例的 /data/MRNet-v1.0/,即可直接进入 §6.1。
§6.1 快速上手
以下代码假设:数据已解压至 data_root(默认 /data/MRNet-v1.0),目录结构与 §4.0 一致;{data_root}/train/coronal/0000.npy 为最小可用子集的入口文件。load_exam 拼接关系为 {data_root}/{split}/{plane}/{exam_id}.npy,exam_id 来自标签 CSV 第一列(4 位补零字符串,读取时务必保留前导零)。
import numpy as np
import csv
from pathlib import Path
DATA_ROOT = Path("/data/MRNet-v1.0")
def load_labels(split: str, task: str):
"""读取无表头 CSV:exam_id, 0/1。返回 {exam_id: label}"""
pairs = np.loadtxt(DATA_ROOT / f"{split}-{task}.csv",
delimiter=",", dtype=str)
return {exam_id: int(label) for exam_id, label in pairs}
def load_exam(split: str, plane: str, exam_id: str) -> np.ndarray:
"""加载单例单平面体积,形状 [n_slices, 256, 256],uint8"""
return np.load(DATA_ROOT / split / plane / f"{exam_id}.npy")
# 最小检查:train 第 0 例,冠状位
abnormal = load_labels("train", "abnormal")
vol = load_exam("train", "coronal", "0000")
print(vol.shape, vol.dtype, vol.min(), vol.max())
# 预期输出类似:(n_slices, 256, 256) uint8 0 255
三个任务(abnormal/acl/meniscus)× 三个平面(axial/coronal/sagittal)自由组合即可开始单模型实验;完整复刻论文需要 9 个模型 + logistic 回归融合(见 §6.7)。
下载完成后,强烈建议先跑一遍完整性自检——确认文件数、CSV 行数与 ID 对齐关系,再进入建模。以下脚本同时给出切片数分布概览(预处理与 batch 策略的输入):
def integrity_check(data_root=DATA_ROOT):
"""下载后自检:文件数 / CSV 对齐 / 切片数分布"""
issues = []
for split, expect in [("train", 1130), ("valid", 120)]:
# 1. 每平面文件数应等于官方检查数
for plane in ["axial", "coronal", "sagittal"]:
files = sorted((DATA_ROOT / split / plane).glob("*.npy"))
if len(files) != expect:
issues.append(f"{split}/{plane}: {len(files)} != {expect}")
# 2. 三个标签 CSV 行数应一致且与文件对齐
label_ids = None
for task in ["abnormal", "acl", "meniscus"]:
pairs = np.loadtxt(DATA_ROOT / f"{split}-{task}.csv",
delimiter=",", dtype=str)
ids = set(exam_id for exam_id, _ in pairs)
if len(pairs) != expect:
issues.append(f"{split}-{task}.csv: {len(pairs)} 行 != {expect}")
if label_ids is None:
label_ids = ids
elif ids != label_ids:
issues.append(f"{split}-{task}.csv: ID 集合与其他 CSV 不一致")
# 3. 抽样验证:CSV 中每个 ID 都有对应 .npy(三平面齐全)
missing = [i for i in sorted(label_ids)[:50]
if not all((DATA_ROOT / split / p / f"{i}.npy").exists()
for p in ["axial", "coronal", "sagittal"])]
if missing:
issues.append(f"{split}: 缺失体积 {missing[:5]}")
# 4. 切片数分布(决定 batch/池化策略)
shapes = [np.load(f, mmap_mode="r").shape[0]
for f in files[:100]]
print(f"{split}: 抽样 100 例切片数 "
f"min={min(shapes)} max={max(shapes)}")
if issues:
print("发现问题:"); [print(" -", s) for s in issues]
else:
print("完整性自检通过")
§6.2 数据获取流程
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 访问官方页 https://stanfordmlgroup.github.io/competitions/mrnet/ | 竞赛已关闭但下载申请入口保持开放 |
| 2 | 填写姓名、机构、邮箱并同意 Stanford Dataset Research Use Agreement | 教育邮箱非必需,但机构信息需真实 |
| 3 | 等待邮件发放私有下载链接 | 链接与人绑定,转发数据或链接违反 RUA |
| 4 | 下载 MRNet-v1.0.zip(约 6.09 GB)并解压 | 校验目录结构是否与 §4.0 一致 |
| 5 | 引用时标注论文 DOI 10.1371/journal.pmed.1002699 | AIMI 平台另给引证 DOI 10.71718/rcbp-8c35 |
合规要点:RUA 禁止再分发;发表成果需引用原论文;不可将数据用于非研究用途(临床决策支持需另行授权与验证)。
§6.3 预处理 Pipeline
从 .npy 到可训练张量的四步流水线。与自然图像的关键差异:切片数可变 → 只能在切片级做标准化与增广,在检查级做聚合。
import numpy as np
import torch
def preprocess_exam(vol: np.ndarray) -> torch.Tensor:
"""[n_slices, 256, 256] uint8 -> [1, 3, n_slices, 256, 256] float
步骤 1:uint8 -> float 归一化到 [0,1]
步骤 2:复制单通道为 3 通道,适配 ImageNet 预训练权重
步骤 3:不 resize、不裁剪(官方已统一为 256x256)
步骤 4:切片维保持在第 2 维,等待跨切片池化
"""
x = vol.astype(np.float32) / 255.0 # [s, 256, 256]
x = np.stack([x, x, x], axis=1) # [s, 3, 256, 256]
return torch.from_numpy(x).unsqueeze(0) # [1, 3, s, 256, 256]
def train_normalization_stats(data_root, split="train", sample_n=200):
"""仅用 train 子集估计归一化统计量(防预处理泄漏)"""
import random
ids = [p.stem for p in (Path(data_root)/split/"coronal").glob("*.npy")]
random.seed(0); ids = random.sample(ids, min(sample_n, len(ids)))
vals = np.concatenate([
np.load(Path(data_root)/split/"coronal"/f"{i}.npy").ravel()
for i in ids])
return vals.mean() / 255.0, vals.std() / 255.0
社区通用做法补充:切片级减均值除标准差(ImageNet 统计或 train 自估统计);可选每检查均匀采样固定切片数(如 16 层)以减少内存峰值——但注意这会损失信息,max pooling 方案更接近原论文。
§6.4 框架加载(PyTorch DataLoader)
完整可运行的 Dataset + DataLoader 实现,覆盖变长切片、单通道转三通道、患者级标签对齐三件事:
import csv
import numpy as np
import torch
from torch.utils.data import Dataset, DataLoader
class MRNetDataset(Dataset):
"""MRNet v1.0 检查级数据集(单任务单平面)"""
def __init__(self, data_root, split="train", task="acl",
plane="coronal", transform=None):
self.data_root = Path(data_root)
self.split, self.task, self.plane = split, task, plane
self.transform = transform
# 读标签:[{exam_id, label}, ...],保留 4 位补零
with open(self.data_root / f"{split}-{task}.csv") as f:
self.samples = [(row[0], int(row[1])) for row in csv.reader(f)]
# 类不平衡权重(逆频率)
pos = sum(label for _, label in self.samples)
neg = len(self.samples) - pos
self.weights = {1: len(self.samples) / (2.0 * pos),
0: len(self.samples) / (2.0 * neg)}
def __len__(self):
return len(self.samples)
def __getitem__(self, idx):
exam_id, label = self.samples[idx]
vol = np.load(self.data_root / self.split / self.plane
/ f"{exam_id}.npy") # [s, 256, 256]
vol = np.stack([vol] * 3, axis=1) # [s, 3, 256, 256]
vol = vol.astype(np.float32) / 255.0
if self.transform is not None:
for i in range(vol.shape[0]): # 切片级增广
vol[i] = self.transform(vol[i])
return (torch.from_numpy(vol),
torch.tensor([1 - label, label], dtype=torch.float32),
self.weights[label])
def make_loader(data_root, split, task, plane, shuffle=False):
ds = MRNetDataset(data_root, split, task, plane)
return DataLoader(ds, batch_size=1, shuffle=shuffle,
num_workers=4, pin_memory=True), ds
loader, ds = make_loader("/data/MRNet-v1.0", "train", "acl", "sagittal",
shuffle=True)
x, y, w = next(iter(loader))
print(x.shape) # [1, n_slices, 3, 256, 256] —— batch 维为 1
print(y, w) # one-hot 标签 + 类权重
实现要点:batch_size=1 是社区默认(变长切片无法直接 stack);one-hot 两维输出配合 BCEWithLogitsLoss;类权重随样本返回,训练循环中乘入 loss。
与上述 Dataset 配套的最小训练循环骨架(含梯度累积与验证 AUC,可直接运行):
import torch
import torch.nn as nn
from sklearn.metrics import roc_auc_score
def run_epoch(model, loader, device, optimizer=None, accum=4):
training = optimizer is not None
model.train() if training else model.eval()
loss_fn = nn.BCEWithLogitsLoss()
ys, ps, total = [], [], 0.0
for step, (x, y, w) in enumerate(loader):
x = x.to(device).squeeze(0) # [s, 3, 256, 256]
logits = model(x).mean(dim=0) # 跨切片聚合 -> [2]
loss = loss_fn(logits, y.to(device)[0]) * w
if training:
(loss / accum).backward()
if (step + 1) % accum == 0:
optimizer.step(); optimizer.zero_grad()
total += loss.item()
if not training:
ys += [int(y[0][1])]; ps += [float(torch.sigmoid(logits[1]))]
return total / len(loader), (
roc_auc_score(ys, ps) if ys else None)
# 用法:model = alexnet_backbone_classifier();见 §6.7 选型
# train_loader, _ = make_loader(root, "train", "acl", "sagittal", shuffle=True)
# valid_loader, _ = make_loader(root, "valid", "acl", "sagittal")
# for epoch in range(50):
# tr_loss, _ = run_epoch(model, train_loader, device, optimizer, accum=4)
# va_loss, va_auc = run_epoch(model, valid_loader, device)
# print(f"ep{epoch:02d} train={tr_loss:.3f} valid={va_loss:.3f} auc={va_auc:.3f}")
§6.5 常见坑点
⚠️ 坑点 1:把 120 例验证集当测试集反复调参——tuning set 过拟合(分类:评估误用)
问题:官方划分中公开的 valid 集在论文里叫 tuning set,本来就是调参用的;隐藏测试集不公开且评测通道已关闭。社区大量后续论文在这 120 例上反复选模型、选 epoch、选超参,再把分数当"测试性能"报告。
症状:同一个模型在不同论文里"valid AUC"相差 0.03-0.05 却无法解释;你的模型在 valid 上 0.98+ 但换任何外部数据崩掉 0.1;审稿质疑"你们是否在验证集上做了模型选择"。
解决:
- 简单方法:valid 只做一次性终评;所有模型选择在 train 内部做患者级 5 折交叉验证。
- 进阶方法:从 train 划出患者级 hold-out(约 10%)作为内部测试集,valid 完全冻结;报告时明确标注"tuning/内部测试/外部验证"三层口径。
- SOTA 方法:采用预注册式评估——冻结模型与超参后,先跑一个外部数据(如里耶卡路径),再回看 valid;或报告 valid 分数时附带 bootstrap 置信区间(120 例 ACL 阳性仅 28 例左右,CI 很宽)。
参考:官方竞赛页 Splits 说明;Bien et al. 2018, PLoS Med 15(11): e1002699(论文对 tuning/validation 命名的明确说明)。
⚠️ 坑点 2:报告提取标签 ≠ 影像金标准——标签噪声封顶敏感度评估(分类:标签理解)
问题:训练/验证标签从临床报告"是否提及"手工提取而来:报告漏写的撕裂就是标签阴性;报告习惯差异(如不报 1-2 级半月板信号改变)直接写进标签分布。模型拟合的是"报告习惯"而非"疾病本身"。
症状:ACL 敏感度怎么调都难超 0.9(报告本身漏诊);模型对"典型撕裂形态但报告未提"的病例系统性给低分;人工抽检发现"标签=0 但影像明显异常"的样本。
解决:
- 简单方法:把结果解读为"报告级判读复现"而非"疾病诊断";论文写作时明确标注标签来源。
- 进阶方法:人工复读一个小规模随机子集(如 valid 全部 120 例),估计标签噪声率并做敏感性分析。
- SOTA 方法:用噪声鲁棒训练(co-teaching、标签噪声正则),或对高置信度分歧样本引入关节镜/手术报告做二次标注(若可得);至少在讨论中量化噪声对 AUC 上限的影响。
参考:Bien et al. 2018 论文 Discussion(作者自述 ground truth 非手术确认);官方竞赛页 Competition 部分(测试集改用 3 位 MSK 医生多数投票的原因)。
⚠️ 坑点 3:三标签独立成文、层级关系自检缺失(分类:标签理解)
问题:abnormal、acl、meniscus 三个 CSV 相互独立,不存在"abnormal=0 则 acl=meniscus=0"的机器可读约束声明。多任务训练时若不做联合一致性处理,可能出现 abnormal=0 而 acl=1 的逻辑冲突样本被当成噪声硬学。
症状:多任务模型对同一检查输出互相矛盾的预测(abnormal 概率 0.2 但 acl 概率 0.9);按 abnormal 过滤后再算 acl 指标时口径对不上文献。
解决:
- 简单方法:训练前跑一致性校验脚本,统计 abnormal=0 且 (acl=1 或 meniscus=1) 的样本数,决定剔除或保留策略。
- 进阶方法:层级损失——先学 abnormal,阳性样本再进入 acl/meniscus 头;推理时对 abnormal<0.5 的检查屏蔽病灶标签输出。
- SOTA 方法:多标签联合建模(如把三标签当 8 种组合状态的多类问题),或在概率层引入 log-线性约束保证 P(acl) ≤ P(abnormal)。
参考:MRNet-v1.0 包内 CSV 结构(§4.0);DeepWiki 对 ahmedbesbes/mrnet 数据结构的解析。
⚠️ 坑点 4:变长切片堆叠——batch 维组织错误(分类:工程陷阱)
问题:同一检查三个平面切片数互不相同(axial 25 层 vs coronal 29 层),不同检查之间切片数差异更大。
DataLoader(batch_size>1)直接 stack 会报形状错误;强行 padding 到最大切片数则浪费数倍显存。症状:
RuntimeError: stack expects each tensor to be equal size;或 batch_size=8 时显存溢出,batch_size=1 时 GPU 利用率极低。解决:
- 简单方法:batch_size=1(社区默认,原论文同款),用梯度累积模拟大 batch。
- 进阶方法:每检查确定性均匀采样固定切片数(如 16 层)后 batch_size>1;注意采样必须无随机性或固定 seed,保证可复现。
- SOTA 方法:自定义 collate_fn 做切片维 padding + 注意力掩码,或改用支持变长输入的跨切片 transformer 结构(如 TransMed 思路),彻底免除固定长度假设。
参考:LearnOpenCV MRNet 教程(切片数实测差异);社区实现 MisaOgura/MRNet、ahmedbesbes/mrnet 的 batch_size=1 配置。
⚠️ 坑点 5:单通道 .npy 遇上 ImageNet 三通道预训练权重(分类:工程陷阱)
问题:MRNet 体积是单通道灰度,主流预训练 backbone(AlexNet/ResNet/DenseNet)期望 RGB 三通道输入。直接
torch.from_numpy送入模型会报通道数错误;把 [s, 256, 256] 错当成 [256, 256] 三维卷积输入则会把切片维当空间维。症状:
expected input [1, s, 256, 256] to have 3 channels;或模型收敛但指标异常低(切片维被错误卷积)。解决:
- 简单方法:
np.stack([vol]*3, axis=1)复制三通道(原论文做法)。- 进阶方法:修改 backbone 第一层为单通道(
in_channels=1),加载预训练权重时对 conv1 权重做通道维求和或均值。- SOTA 方法:MedicalNet/RadImageNet 等医学预训练权重替换 ImageNet 初始化,小样本下通常再提升 1-2 个 AUC 点。
参考:官方项目页模型说明(输入 s × 3 × 256 × 256);社区实现 MisaOgura/MRNet。
⚠️ 坑点 6:.npy 无 DICOM 元数据——把它当 3D 体数据是错误设计(分类:预处理陷阱)
问题:发布体积是预处理产物:无层厚、层间距、TR/TE、线圈与设备信息,且 256×256 是统一 resize 的结果。真实 3D 卷积、各向同性重采样、层间距感知的插值统统无从谈起;两个像素在不同检查里可能对应完全不同的物理距离。
症状:3D CNN 训练不稳定、指标不如 2D 方案;跨检查的空间对齐操作(如配准)结果不可信;审稿人质疑"你如何处理各向异性体素"。
解决:
- 简单方法:明确把数据当作"2D 切片堆叠",用逐切片 2D backbone + 跨切片池化(原论文范式)。
- 进阶方法:如需 3D 感受野,用跨切片 1D 卷积/transformer 组合 2D 特征,避免像素级 3D 卷积假设各向同性。
- SOTA 方法:需要真实 3D 几何的研究换用含 DICOM 的数据集(如 SKM-TEA),或在论文中声明 MRNet 的几何限制并仅报告 2D 范式结果。
参考:官方竞赛页 Dataset Details(发布格式);SKM-TEA 数据集文档(含 DICOM 的替代选择)。
⚠️ 坑点 7:类不平衡 + 双重任务不对称——单一阈值策略失效(分类:偏倚陷阱)
问题:ACL 阳性率仅 23.3%(319/1,370),abnormal 却高达 80.6%。朴素 BCE 训练的 ACL 模型倾向输出低概率(准确率高但敏感度差);更隐蔽的是三个任务的临床最优阈值方向不同——ACL 检测要压假阳性(保特异度),异常检测要保敏感度。
症状:ACL 模型 accuracy 0.85+ 但 AUC 与 recall 很差;三个任务用同一个 0.5 阈值报告 sens/spec,其中一个任务的指标明显反常。
解决:
- 简单方法:类加权 BCE(权重 = 逆频率,§6.4 代码已内置),任务间阈值独立选择。
- 进阶方法:在验证集上按 Youden 指数或目标特异度(如 0.95)逐任务选阈值,并报告该阈值下的 sens/spec 而非仅 AUC。
- SOTA 方法:focal loss 或 non-saturating 加权;多任务共享 backbone 时用 uncertainty weighting 自动平衡三任务损失量级。
参考:官方标签分布(§4.2);原论文 Table 2(任务间 sens/spec 不对称的实证)。
⚠️ 坑点 8:单中心 GE 双场强——跨域泛化的断崖在等着你(分类:偏倚陷阱)
问题:全库来自单一学术中心、单一厂商(GE Discovery),56.6% 为 3.0T 其余 1.5T,2001-2012 年采集。在其他中心、其他厂商(Siemens/Philips)、其他协议数据上,模型性能可能显著下降——原论文已实证:内部验证 ACL AUC 0.965,里耶卡外部零样本只有 0.824。
症状:内部指标漂亮,任何外部数据(哪怕同城的另一家医院)AUC 掉 0.1 量级;场强不同的子集上梯度异常;把模型宣传为"通用膝 MRI 诊断工具"后被审稿人直接驳回。
解决:
- 简单方法:论文中至少报告一个外部中心的表现,并披露厂商/场强差异;避免超出数据支撑范围的泛化声明。
- 进阶方法:跨场强子集一致性检验(内部按 3.0T/1.5T 分层评估作为域内泛化的下界估计);强度归一化(如 White-Stripe/z-score)降低灰度分布依赖。
- SOTA 方法:域自适应(DANN/对抗对齐)或测试时适应(TTA/BN 重估);多中心数据混合训练时按中心做 GroupKFold 报告 leave-one-center-out 结果。
参考:Bien et al. 2018 论文外部验证节(0.824/0.911);官方竞赛页 Dataset Details(设备与场强描述)。
§6.6 数据增强
| 增广 | 适用性 | 说明 |
|---|---|---|
| 随机旋转(±25° 内) | ✅ 安全 | 社区标准配置;过大角度会扭曲解剖 |
| 随机平移(≤11%) | ✅ 安全 | 模拟定位偏移 |
| 随机翻转 | ⚠️ 有条件 | 内外翻转会镜像左右膝解剖(外侧半月板/内侧半月板损伤谱不同),需谨慎或配合左右侧标签 |
| 强度扰动(亮度/对比度/高斯噪声) | ✅ 安全 | 缓解场强与协议差异;配合 z-score 归一化 |
| 随机裁剪 | ⚠️ 有条件 | 只能做小幅平移等价裁剪;丢边界可能裁掉髌上囊等区域 |
| 弹性形变 | ❌ 危险 | 撕裂形态是关键判别特征,形变会伪造或抹掉病理证据 |
| 切片维度随机抽删 | ❌ 危险 | 改变病变在堆叠中的存在性,等价于改标签证据 |
社区标准配置(来自多个公开实现):旋转 ±25°、平移 ±11%、水平/垂直翻转——翻转在 MRNet 上广泛被使用,但严格说左右语义未在官方文档中说明,发表工作建议做有无翻转的消融。
§6.7 模型推荐
| 模型 | 输入范式 | 要点 | 适用场景 |
|---|---|---|---|
| MRNet 基线(AlexNet + 跨切片 max pool) | 2D 切片堆叠 | 原论文同款;简单、稳、复现容易 | 第一基线;结果可与论文直接对话 |
| ResNet-50/DenseNet-121 + attention pooling | 2D 切片堆叠 | 更强切片特征;attention 提供切片热力图 | 主力工作模型 |
| TransMed / 跨切片 transformer | 堆叠级 | 建模切片间关系;计算量大 | 切片间上下文研究 |
| 三平面集成 + logistic 回归 | 检查级融合 | 原论文融合方案;9 模型全量训练 | 追平论文口径的完整复刻 |
| learned fusion(可微门控/注意力) | 检查级融合 | 端到端学三平面权重 | 融合机制研究 |
选型建议:先单平面单任务复现基线(ACL + sagittal 组合最强),确认管道正确后再横向铺开 9 个模型;从头到尾固定随机 seed 与划分,否则 9 个模型的浮动会把融合增益淹没。
§6.8 计算资源需求
| 配置 | 最低 | 推荐 | 说明 |
|---|---|---|---|
| GPU | 8 GB 显存(单模型 batch_size=1) | 16-24 GB | 三平面并行训练时按 3 倍排期 |
| 内存 | 16 GB | 32 GB | .npy 按需加载,内存压力小 |
| 磁盘 | 20 GB | 50 GB | 数据 6 GB + 预处理缓存 + checkpoint |
| 单模型训练时长 | 数小时(1 GPU) | 1-3 小时/任务/平面 | AlexNet 基线远快于 DenseNet |
| 完整复刻(9 模型 + 融合) | 1-2 天 | 半天(多卡) | 原论文时代的算力即可完成 |
§6.9 评估指标
官方口径:每任务 ROC AUC + 三任务平均 AUC(竞赛排行榜指标)。可直接运行的评估代码:
import numpy as np
from sklearn.metrics import roc_auc_score, roc_curve
def evaluate(y_true, y_prob, task_name):
"""y_true: (n,) 0/1;y_prob: (n,) 阳性概率"""
auc = roc_auc_score(y_true, y_prob)
# Youden 最优阈值(仅供参考,正式报告需预注册阈值策略)
fpr, tpr, thr = roc_curve(y_true, y_prob)
j = tpr - fpr
i = int(np.argmax(j))
print(f"{task_name}: AUC={auc:.3f} "
f"best_thr={thr[i]:.3f} sens={tpr[i]:.3f} spec={1-fpr[i]:.3f}")
return auc
def mean_auc(results: dict):
"""results = {'abnormal': auc, 'acl': auc, 'meniscus': auc}"""
return sum(results.values()) / len(results)
注意事项:AUC 的置信区间在 120 例 valid 上很宽(论文 ACL AUC 95% CI 0.938-0.993),务必用 bootstrap(≥1,000 次重采样)报告区间;与文献比较时确认对方口径是"valid 自评"还是"隐藏测试官方评分"(两者不可比,见 §8.1)。
§6.10 MLOps 笔记
- 可复现性:固定
torch.manual_seed+numpy.random.seed;DataLoader(shuffle=True)配generator;记录每模型的(任务,平面,epoch,lr,weight decay)五元组——社区常见 lr 1e-5、weight decay 0.01、Adam 优化器。 - 版本对齐:数据只有 v1.0,重点管理代码与权重版本;checkpoint 命名建议
cnn_{plane}_{task}_ep{epoch:02d}.pt(社区惯例,便于对齐日志)。 - 数据合规追踪:RUA 签署记录、下载日期、数据 hash 归档;禁止把数据镜像到公开对象存储(违反 RUA)。
- 监控与漂移:上线场景按 §4.5 声明——公开数据无时间戳,无法基于本数据做时间漂移基线;部署后需自行积累带时间戳的请求日志。
- 模型卡:报告时附带标签来源(报告提取)、单中心限制、场强分布、外部验证缺口四项,与 rai:dataLimitations 字段保持一致。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 转诊偏倚 | 三级学术中心队列,abnormal 阳性率 80.6%,远高于普通门诊 | 高 | 筛查类应用前必须重估先验与 PPV/NPV |
| 标签噪声偏倚 | 标签=报告回读,报告漏诊直接变成标签阴性 | 高 | 噪声鲁棒训练;子集复读敏感性分析 |
| 设备/协议偏倚 | 单一厂商 GE;3.0T 与 1.5T 混布且样本级不可分辨 | 中-高 | 强度归一化;跨场强分层评估 |
| 年代偏倚 | 2001-2012 采集,部分协议与现代扫描存在代差 | 中 | 部署前用当代数据校准 |
| 年龄结构偏倚 | 平均 38.0 岁,偏运动损伤人群,老年退行性病变覆盖弱 | 中 | 退行性研究换用 OAI 等队列 |
| 双标签任务不对称 | ACL 特异度强(0.968)而敏感度弱(0.759),直接部署会漏诊 | 高(若误用) | 按任务定位选阈值:ACL 用作排除而非确诊 |
§7.2 标注质量评估
MRNet 的标注体系是"弱金标准 + 强参考标准"的双层结构:训练/验证标签(1,250 例)来自报告回读,未提供标注者间一致性统计(kappa 等未公开);隐藏测试集(120 例)由 3 位执业 6-19 年(平均 12 年)的 board-certified 肌骨放射科医生多数投票建立,且阅片时可访问全部 DICOM 序列、原始报告、临床史与随访检查——这是显著高于报告回读的参考标准,但依然不是关节镜金标准。原论文专家实验间接给出了标签质量参照:9 位临床专家与模型的分歧集中在 ACL 敏感度(专家 0.906 vs 模型 0.759)与半月板特异度(专家 0.892 vs 模型 0.741),说明标签的判别信息真实存在,但分辨率不足以支撑 1-2 级损伤的细分研究。
§7.3 泛化性讨论
| 目标场景 | 失效风险 | 证据 |
|---|---|---|
| 同中心当代数据(协议更新) | 中 | 数据止于 2012 年;协议与重建算法已迭代 |
| 其他厂商设备(Siemens/Philips) | 高 | 全库 GE;灰度分布与对比度特性厂商相关 |
| 1.5T → 3.0T 或反向 | 中 | 56.6% 3.0T 混布但样本级不可分辨,无法做受控迁移实验 |
| 外部国家/人群 | 高(实证) | 里耶卡外部零样本 ACL AUC 0.965 → 0.824,下降 0.141 |
| 筛查性低风险人群 | 高 | 转诊队列阳性率 80.6% 与筛查场景先验严重不匹配 |
| 儿科/老年极端年龄 | 中-高 | 平均 38.0 岁,两端覆盖薄弱 |
§7.4 伦理考量
数据经 HIPAA 脱敏:影像以无元数据的 256×256 像素阵列发布,DICOM 头全部剥离,无姓名、日期与扫描标识,仅保留 4 位补零检查 ID。获取需签署 Stanford Dataset Research Use Agreement,禁止再分发数据或私有下载链接。研究伦理审批由原论文团队在数据采集与发表时完成;后续使用者需自行确认所在机构的伦理要求(多数机构对已公开脱敏数据免于再次审批,但需书面确认)。公开数据不含患者人口学字段,二次研究无法做样本级弱势群体保护分析,需在研究设计中声明。
§7.5 公平性评估
公开数据无逐样本人口学,无法做子群体性能审计;可用信息仅为论文级汇总:女性占 41.5%,平均年龄 38.0 岁。已知的公平性风险点:年龄两端(儿科与老年)覆盖薄弱;报告提取标签可能继承临床书写习惯中的系统性差异(如不同人群报告详尽程度不同)。建议:公平性关键研究引用 OAI 等含人口学的队列做交叉验证,或在 MRNet 上仅做方法学开发、在含人口学数据集上完成公平性论证。
§7.6 数据漂移提示
MRNet 是冻结快照(v1.0 后未更新),不存在数据集自身的版本漂移;风险在部署侧:MRI 设备与重建算法持续演进,2012 年前的 GE 数据训练的模型在现代扫描仪上表现未知。由于公开数据无时间戳,无法构造"按采集年份"的漂移监控基线;替代方案是按场强(不可得)、按外部中心、或按图像统计量(灰度直方图距离)做代理监控,并在部署前用当代数据重估校准曲线。
§7.7 DAIMS 24 项数据就绪度评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 数据为宽格式(每行一个样本/事件) | ✅ | 每例检查一个 .npy + CSV 一行 |
| 2 | 有唯一标识符列 | ✅ | 4 位补零 exam_id,train/valid 空间独立 |
| 3 | 无 Unicode 或特殊字符 | ✅ | 纯数字 ID 与 0/1 标签,无文本字段 |
| 4 | 无重复行 | ✅ | 文件按 ID 严格一一对应,无重复病例 |
| 5 | 缺失值已识别并编码 | ⚠️ | 表层无缺失;结构性缺失(元数据/人口学)无官方文档 |
| 6 | 标签列被明确标识 | ✅ | 三任务标签以独立 CSV 明确命名 |
| 7 | 已对罕见类别(<3%)进行分组 | ⚠️ | 仅三个二值标签,无细分亚型可分组 |
| 8 | 偏倚评估已完成 | ✅ | §7.1 六类偏倚与缓解措施 |
| 9 | 有完整的数据字典 | ⚠️ | 官方仅简短说明;本文档 §4.1 补齐 |
| 10 | 对"信息性缺失"有明确编码解释 | ✅ | 全库无缺失字段;结构性缺失在 §4.5 列明 |
| 11 | 数据采集设备和设置已记录 | ⚠️ | 厂商/场强为全库级描述,样本级元数据缺失 |
| 12 | 已移除完全共线性变量 | ⚠️ | 三标签高度相关(同源报告),未做联合去共线处理 |
| 13 | 对编码的映射标准已说明 | ✅ | 0/1 二值语义在官方页明确 |
| 14 | 对时间戳的处理已明确说明 | ❌ | 公开数据完全不含时间戳,采集日期不可恢复 |
| 15 | 训练/验证/测试划分建议已给出 | ✅ | 官方三层划分 + 患者分组规则明确 |
| 16 | 数据泄漏风险已被讨论 | ✅ | §5.3 五种泄漏模式与防御 |
| 17 | 标签分布已被分析 | ✅ | 官方披露三标签阳性率(§4.2) |
| 18 | 选择性测量偏倚已被讨论 | ✅ | 报告回读机制在论文与本文 §7.1 均有讨论 |
| 19 | 外部验证建议已给出 | ✅ | 论文自带里耶卡外部路径(§5.5) |
| 20 | 数据更新和版本信息已记录 | ⚠️ | 仅 v1.0 一个版本,无更新日志体系 |
| 21 | 最小必要预处理脚本已提供 | ⚠️ | 论文附 S1/S2 复现代码,但无维护中的脚本库 |
| 22 | 合规使用要求已明确 | ✅ | RUA 条款明确:申请制 + 禁转发 |
| 23 | 多模态对齐方法已说明 | ❌ | 三平面仅靠文件名 ID 关联;无人口学/报告文本可对齐 |
| 24 | 去标识化方法已被记录 | ✅ | HIPAA 脱敏 + DICOM 头剥离,RUA 明示禁转发 |
DAIMS 评分:18.5 / 24
评分解读:良好——数据本身干净规整(无缺失行、无重复、ID 严密),官方划分与患者分组规则教科书级清晰;扣分集中在"信息层"而非"数据层":无时间戳、无样本级设备元数据、无人口学字段、数据字典与预处理脚本依赖论文附件而非活文档。
对你意味着什么:15 项 ✅ 意味着你可以跳过数据清洗直接进入建模——这在小规模医学影像数据集中难得。开工前必须记住四件事:第一,时间维度不存在,任何按年分层的方案直接放弃;第二,把它当 2D 切片堆叠而不是 3D 体数据(§6.5 坑点 6);第三,valid 集是 tuning set,冻结使用(坑点 1);第四,公开发表前补一个外部数据集的验证,论文自带里耶卡路径可作起点。三条 ❌/低分项都有替代方案,但都不在 MRNet 内部——需要时换 SKM-TEA(要 DICOM 几何)或 OAI(要人口学与纵向设计)。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 里耶卡队列(183 例外部队列) | Clinical Hospital Centre Rijeka, 克罗地亚 | ACL 撕裂检测(矢状位 T1) | 零样本 AUC 0.824(95% CI 0.757-0.892) | 内部 0.965 → 0.824(-0.141) | 跨国家、跨人群、跨协议的泛化损失实证 |
| 里耶卡队列(734 例训练部分微调) | Clinical Hospital Centre Rijeka | ACL 撕裂检测 | AUC 0.911(95% CI 0.864-0.958) | 接近内部水平 | 少量目标域数据微调即可挽回大部分损失 |
| 内部 3.0T/1.5T 混合 | Stanford(库内) | 三任务 | 未分层披露 | — | 官方未提供场强分层评估;场强维度泛化留白 |
MRNet 在 2026 年还值得用吗? 值得——作为方法学基准与教学数据集,它的标签语义直白、体量适中、文献可比性好,弱监督 MIL 与跨平面融合研究依然绕不开它。但任何面向真实临床泛化的声明都必须先补外部验证;需要 3D 几何、分割标注或人口学维度的研究请直接选择更合适的数据集。
§8 基准性能与生态
§8.1 排行榜(官方竞赛 Leaderboard)
官方排行榜报告三任务(abnormal / ACL / meniscal)AUC 的平均值,评测对象为不可公开读取的隐藏测试集(120 例,参考标准为 3 位 MSK 放射科医生多数投票),模型以可执行代码提交至 CodaLab 评分。竞赛现已关闭,榜单冻结于 2019-11。
| 排名 | 模型 | 平均 AUC | 日期 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | mrnet-baseline(单模型) | 0.917 | 2019-01-09 | AlexNet + 跨切片 max pool + logistic 回归融合 | Bien et al., 2018, PLoS Medicine 15(11): e1002699. doi:10.1371/journal.pmed.1002699 | 论文 S1/S2 Code |
| 2 | dc_baseline(单模型) | 0.911 | 2019-05-28 | 竞赛参赛方案 | 社区提交(Mason High),未正式发表 | 未公开 |
| 3 | Triple-MRNet(单模型) | 0.904 | 2019-05-29 | 三模型集成 | Bhalgat, 2019, GitHub 技术报告(竞赛方案) | github.com/yashbhalgat/MRNet-Competition |
| 4 | IL_baseline(单模型) | 0.900 | 2019-04-27 | 竞赛参赛方案 | 社区提交(Stanford Alum),未正式发表 | 未公开 |
| 5 | MagNet(单模型) | 0.860 | 2019-10-31 | 竞赛参赛方案 | 社区提交,未正式发表 | 未公开 |
| 6 | MRPredNet(单模型) | 0.837 | 2019-11-27 | 竞赛参赛方案 | 社区提交(匿名),未正式发表 | 未公开 |
数值不可直接比较的原因:官方排行榜在隐藏测试集上评测(专家多数投票 GT、CodaLab 强制代码提交);而下表社区后续工作全部在公开验证集(120 例,报告提取标签)上自评——数据不同、GT 不同、且存在 tuning 过拟合风险,两套分数之间没有任何换算关系。引用任何数字前先确认口径。
§8.2 SOTA 总结与选型建议
公开验证集口径下的代表性后续工作(各文协议不一,数字仅列供定位参考):
| 模型 | 任务口径 | 报告数字 | 出处 |
|---|---|---|---|
| MRNet 基线 | abnormal / ACL / meniscus | 0.937 / 0.965 / 0.847 | 原论文(内部验证集) |
| MPFuseNet | abnormal / ACL / meniscus | 0.957 / 0.977 / 0.831 | Belton et al., 2021(转引自 PMC 综述) |
| TransMed | abnormal / ACL / meniscus | 0.976 / 0.981 / 0.952 | Liu et al.(转引自 PMC 综述) |
| SGNET | ACL(1,250 例子集) | AUC 0.9747 | Wang et al., 2024, Tomography 10(8): 1263-1276. doi:10.3390/tomography10080094 |
选型建议:复现与对比实验首选 MRNet 基线(口径最干净、与官方排行榜锚定);方法创新建议同时报告"官方口径无法复评"这一事实,并增加外部数据验证以自证稳健;引用 TransMed/SGNET 等数字时必须注明"公开验证集自评"。综述文献提及的更高 ACL AUC(约 0.971)与半月板 AUC 0.94 的结果,后者仅在"正常半月板 vs 3 级撕裂"的简化口径下取得,与全谱标签不可比。
§8.3 官方评测协议
- 指标:三任务 ROC AUC 的算术平均;单任务 AUC 在论文中附带 95% CI。
- 评测数据:隐藏测试集 120 例(论文称 validation set),GT 为 3 位 MSK 放射科医生多数投票。
- 提交形态:可执行代码提交至 CodaLab,评测端运行代码(而非上传预测文件),保证测试集零接触。
- 现状:竞赛已关闭,CodaLab 评测通道不再接受提交;官方排行榜冻结。此后所有已发表数字均为公开验证集自评。
§8.4 相关数据集
| 数据集 | 关系 | 规模 | 与 MRNet 的互补点 |
|---|---|---|---|
| Rijeka ACL 数据集 | 论文外部队列 | 917 例矢状位 T1 | ACL 单任务外部验证场 |
| SKM-TEA | 同机构后继 | 173 例 | DICOM 几何 + 3D 分割标注 |
| OAI | 同器官不同问题 | 约 4,800 基线受试者 | 骨关节炎纵向队列,含人口学 |
| MIMIC-CXR / ChestX-ray 系 | 跨器官同范式 | 数万-数十万级 | 检查级弱监督标签范式的其他应用域 |
§8.5 关键论文 Top 5
- Bien N, Rajpurkar P, Ball RL, Irvin J, Park A, Jones E, et al. (2018). Deep-learning-assisted diagnosis for knee magnetic resonance imaging: Development and retrospective validation of MRNet. PLoS Medicine 15(11): e1002699. doi:10.1371/journal.pmed.1002699 — 数据集与模型的原始论文;提出跨切片 max pool 范式、外部验证路径与人机协同读片实验。
- Bhalgat Y (2019). Triple-MRNet: A framework for knee MRI classification. GitHub 技术报告(MRNet 竞赛方案),github.com/yashbhalgat/MRNet-Competition — 官方排行榜第 3 名的三平面集成方案,社区引用最多的竞赛复现参考。
- Belton RL et al. (2021). MPFuseNet:融合策略 + 空间注意力的膝关节损伤检测网络(转引自 PMC 综述) — 在公开验证集自评 abnormal 0.957 / ACL 0.977 / meniscus 0.831。
- Wang X, Wu Y, Li J, Li Y, Xu S (2024). Deep Learning-Assisted Automatic Diagnosis of Anterior Cruciate Ligament Tear in Knee Magnetic Resonance Images. Tomography 10(8): 1263-1276. doi:10.3390/tomography10080094 — SGNET,双尺度数据增广 + 选择性组注意力,1,250 例子集 ACL AUC 0.9747。
- Farhadi D et al. (2022). Applications of artificial intelligence in orthopaedic surgery. Frontiers in Medical Technology 4: 995526. doi:10.3389/fmedt.2022.995526 — 骨科 AI 综述,系统梳理 MRNet 在 ACL/半月板检测谱系中的位置与口径陷阱。
§8.6 社区活跃度
- 竞赛遗产:官方竞赛(2018-2019)吸引全球团队参与,6 个单模型进入官方排行榜,榜首为原论文基线(0.917),说明数据集的"天花板"设计合理。
- 代码生态:GitHub 上存在数十个复现仓库,其中 MisaOgura/MRNet、ahmedbesbes/mrnet、R-Ahmadi01/MRnet 等提供完整训练管道;DeepWiki 等社区知识库对主流实现做了结构化解析。
- 教学采用:LearnOpenCV 等主流教程平台将其作为"医学影像分类入门"标准案例;多所大学的医学 AI 课程以它为作业数据集。
- 学术热度:原论文发表于高影响因子开放获取期刊且 CC-BY 授权,被后续 ACL/半月板检测、弱监督 MIL、跨域泛化三大方向的论文持续引用(2019-2024 均有新工作)。
§8.7 生态快照
| 资源 | 类型 | 链接 | 推荐理由 |
|---|---|---|---|
| 官方竞赛页 | 数据 + 规则 | https://stanfordmlgroup.github.io/competitions/mrnet/ | 一手数据申请入口与官方口径 |
| 官方项目页 | 论文镜像 + 可视化 | https://stanfordmlgroup.github.io/projects/mrnet | 模型架构图与专家实验摘要 |
| AIMI 数据集条目 | 数据目录 | https://aimi.stanford.edu/datasets/mrnet-knee-mris | 引证 DOI 10.71718/rcbp-8c35 |
| MisaOgura/MRNet | 训练代码 | https://github.com/MisaOgura/MRNet | 论文完整复现(9 模型 + 融合) |
| ahmedbesbes/mrnet | 训练代码 | https://github.com/ahmedbesbes/mrnet | 精简单管道实现,入门友好 |
| LearnOpenCV 教程 | 教程 | https://learnopencv.com/stanford-mrnet-challenge-classifying-knee-mris/ | 数据探索与基线实操 |
注:社区 Star 数为动态指标,此处不列具体数值;访问各仓库页面获取实时数据(截至引用日)。
§9 相关资源与引用
官方资源
| 资源 | 说明 |
|---|---|
| 官方竞赛页 | 数据申请、划分说明、排行榜、提交教程:https://stanfordmlgroup.github.io/competitions/mrnet/ |
| 官方项目页 | 论文摘要、模型架构、热力图示例:https://stanfordmlgroup.github.io/projects/mrnet |
| Stanford AIMI 条目 | 平台化数据目录与引证 DOI:https://aimi.stanford.edu/datasets/mrnet-knee-mris |
| PLOS Medicine 论文全文 | 开放获取(CC-BY):https://doi.org/10.1371/journal.pmed.1002699 |
| 论文 Supporting Information | S1 Code / S2 Code 复现代码,随论文页下载 |
BibTeX 引用(数据集 + 论文)
@article{bien2018deep,
title = {Deep-learning-assisted diagnosis for knee magnetic resonance
imaging: Development and retrospective validation of MRNet},
author = {Bien, Nicholas and Rajpurkar, Pranav and Ball, Robyn L. and
Irvin, Jeremy and Park, Allison and Jones, Erik and Bereket,
Michael and Patel, Bhavik N. and Yeom, Kristen W. and
Shpanskaya, Katie and Halabi, Safwan and Zucker, Evan and
Fanton, Gary and Amanatullah, Derek F. and Beaulieu,
Christopher F. and Riley, Geoffrey M. and Stewart, Russell J. and
Blankenberg, Francis G. and Larson, David B. and Jones,
Ricky H. and Langlotz, Curtis P. and Ng, Andrew Y. and
Lungren, Matthew P.},
journal = {PLoS Medicine},
volume = {15},
number = {11},
pages = {e1002699},
year = {2018},
doi = {10.1371/journal.pmed.1002699}
}
@misc{stanfordmlgroup2018mrnet,
title = {MRNet: A Dataset of Knee MRIs and Competition for Automated
Knee MRI Interpretation},
author = {{Stanford Machine Learning Group}},
year = {2018},
howpublished = {\url{https://stanfordmlgroup.github.io/competitions/mrnet/}},
note = {MRNet-v1.0, Stanford Dataset Research Use Agreement}
}
引用指南:数据使用者必须引用原始论文(bien2018deep);讨论数据集分发与竞赛机制时可加引官方页面条目;AIMI 平台引证 DOI(10.71718/rcbp-8c35)适用于平台化引用场景。
教程与学习资源
| 资源 | 类型 | 链接 |
|---|---|---|
| LearnOpenCV:Stanford MRNet Challenge | 图文教程 | https://learnopencv.com/stanford-mrnet-challenge-classifying-knee-mris/ |
| ahmedbesbes/mrnet 仓库 | 完整训练代码 | https://github.com/ahmedbesbes/mrnet |
| MisaOgura/MRNet 仓库 | 论文级复现代码 | https://github.com/MisaOgura/MRNet |
| yashbhalgat/MRNet-Competition | 竞赛方案代码 | https://github.com/yashbhalgat/MRNet-Competition |
| DeepWiki:MRNet 数据结构解析 | 结构化文档 | https://deepwiki.com/ahmedbesbes/mrnet/2.1-data-structure |
原始论文
- Bien et al. 2018, PLoS Medicine 15(11): e1002699. doi:10.1371/journal.pmed.1002699 — 数据集与 MRNet 模型原文。
- Wang et al. 2024, Tomography 10(8): 1263-1276. doi:10.3390/tomography10080094 — 近期 ACL 检测代表工作(SGNET)。
- Farhadi et al. 2022, Frontiers in Medical Technology 4: 995526. doi:10.3389/fmedt.2022.995526 — 骨科 AI 视角的综述定位。
§10 AI 使用声明卡
§10.1 AI 模型使用
本页面的撰写使用了大语言模型辅助(代码补全、结构组织、语言润色)。所有医学事实、数字与编码映射均经编辑部交叉审核;性能数字全部来自公开论文与官方页面,未使用 AI 生成或推测任何量化结果。
§10.2 AI 参与范围
| 环节 | AI 参与 | 人工把关 |
|---|---|---|
| 文献检索与事实核查 | 检索结果汇总 | 编辑部逐条核对 FACTS 清单 |
| 数据结构描述 | 初稿生成 | 对照数据目录与社区实现验证 |
| 代码示例 | 生成 + 桌面静态推演 | 逻辑审查;标注"基于公开资料整理,未在原始数据上端到端运行" |
| 医学背景与编码映射 | 初稿生成 | 编辑部对照 ICD-11/SNOMED 公共浏览器审核 |
| 坑点分析 | 基于论文 limitations 与社区实现的整理 | 编辑部确认每条坑点有可追溯出处 |
§10.3 输入来源
- Bien N, Rajpurkar P, Ball RL, et al. (2018). Deep-learning-assisted diagnosis for knee magnetic resonance imaging: Development and retrospective validation of MRNet. PLoS Medicine 15(11): e1002699. doi:10.1371/journal.pmed.1002699
- Stanford ML Group. MRNet: A Dataset of Knee MRIs and Competition for Automated Knee MRI Interpretation. https://stanfordmlgroup.github.io/competitions/mrnet/
- Stanford ML Group. Deep learning to assist clinicians in reading knee MRI(项目页). https://stanfordmlgroup.github.io/projects/mrnet
- Stanford AIMI. MRNet: Knee MRI’s(数据集条目,引证 DOI 10.71718/rcbp-8c35). https://aimi.stanford.edu/datasets/mrnet-knee-mris
- Stanford AIMI Shared Datasets 平台条目(MRNet-v1.0.zip,6.09 GB). https://stanfordaimi.azurewebsites.net/datasets/bface6fc-7859-47d7-a1c8-022cd6b17419
- stanfordmlgroup/stanfordmlgroup.github.io 仓库竞赛页源码. https://github.com/stanfordmlgroup/stanfordmlgroup.github.io/blob/master/competitions/mrnet/index.html
- MisaOgura/MRNet 仓库(论文复现,数据结构与预处理说明). https://github.com/MisaOgura/MRNet
- R-Ahmadi01/MRnet 仓库(MRNet SliceCNN Baseline,数据获取与 RUA 说明). https://github.com/R-Ahmadi01/MRnet
- DeepWiki: Data Structure(ahmedbesbes/mrnet 结构化解析). https://deepwiki.com/ahmedbesbes/mrnet/2.1-data-structure
- DeepWiki: MRNet Data Pipeline(dataloader 实现). https://deepwiki.com/ahmedbesbes/mrnet/2-mrnet-data-pipeline
- LearnOpenCV. Stanford MRNet Challenge: Classifying Knee MRIs. https://learnopencv.com/stanford-mrnet-challenge-classifying-knee-mris/
- Wang X, et al. (2024). Deep Learning-Assisted Automatic Diagnosis of ACL Tear. Tomography 10(8): 1263-1276. doi:10.3390/tomography10080094
- Federated knee injury diagnosis using few shot learning(后续基准数字汇总,PMC12326743). https://pmc.ncbi.nlm.nih.gov/articles/PMC12326743/
- Farhadi D, et al. (2022). Applications of artificial intelligence in orthopaedic surgery. Frontiers in Medical Technology 4: 995526. doi:10.3389/fmedt.2022.995526
- Lacuna(论文结构化摘要页,含局限性与效率数字). https://lacuna.tiptreesystems.com/paper/deep-learning-assisted-diagnosis-for-knee-magnetic-resonance-imaging-development/art_ff41d6a750e54da1ab674781fd306a58
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| frontmatter 与 schema_org | 千方病案医学编辑部 | 逐字段比对宪法模板与 FACTS 清单 | ✅ 已通过 |
| §1 概览(速览/摘要/对比/时间轴) | 千方病案医学编辑部 | 数字溯源至论文与官方页 | ✅ 已通过 |
| §2 医学背景与 ICD-11/SNOMED 映射 | 千方病案医学编辑部 | 对照 ICD-11/SNOMED 公共浏览器概念审核 | ✅ 已通过 |
| §3 数据集规格 | 千方病案医学编辑部 | 逐项核对官方竞赛页与论文 Methods | ✅ 已通过 |
| §4 数据结构(目录树/字段字典) | 医疗 AI 数据工程师 | 对照数据结构文档与社区实现 | ✅ 已通过 |
| §5 划分与泄漏防御 | 医疗 AI 数据工程师 | 对照官方 Splits 说明 | ✅ 已通过 |
| §6 AI 就绪指南(代码与 8 坑点) | 医疗 AI 数据工程师 | 代码逻辑审查;坑点逐条溯源 | ✅ 已通过 |
| §7 DAIMS 24 项与偏倚分析 | 千方病案医学编辑部(双岗) | 医学 + 工程交叉审核 | ✅ 已通过 |
| §8 基准与生态 | 千方病案医学编辑部 | 排行榜数字溯源官方页;口径警示复核 | ✅ 已通过 |
| §9 引用与 BibTeX | 千方病案医学编辑部 | DOI 逐条解析验证 | ✅ 已通过 |
| §C JSON-LD | 医疗 AI 数据工程师 | 与 frontmatter schema_org 一致性比对 | ✅ 已通过 |
§10.5 AI 生成章节标注
本页面全部章节由 AI 辅助起草,均经人工交叉审核后发布;其中 §4.1 字段字典、§6.4 DataLoader 代码与 §7.7 DAIMS 评估为 AI 基于多来源整理的综合性内容,人工审核重点覆盖(见 §10.4 审核方式列)。
§10.6 最后审核
最后一次人工审核日期:2026-09-05
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- radimagenet — 共享标签:医学影像 / 骨骼肌肉影像 / MRI
- fastmri — 共享标签:医学影像 / 骨骼肌肉影像 / MRI
- fitzpatrick-17k — 共享标签:医学影像 / 医学问答与基准 / 评测基准
- serv-ct — 共享标签:医学影像 / 医学问答与基准 / 评测基准
- simcol3d — 共享标签:医学影像 / 医学问答与基准 / 评测基准
- cephalometric-isbi — 共享标签:医学影像 / 医学问答与基准 / 评测基准
- chexstruct-cxreasonbench — 共享标签:医学影像 / 医学问答与基准 / 评测基准
- monuseg — 共享标签:医学影像 / 医学问答与基准 / 评测基准
- cvc-clinicdb — 共享标签:医学影像 / 医学问答与基准 / 评测基准
- cvc-colondb — 共享标签:医学影像 / 医学问答与基准 / 评测基准
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

