HEROHE — H&E WSI 免 IHC 预测 HER2 状态 AI-Ready Wikipedia

509 张乳腺 H&E 全切片,免 IHC 预测 HER2 阳性/阴性

来源 name: "葡萄牙波尔图肿瘤研究所(IPO Porto)/ Ipatimup" url: "https://ecdp2020.grand-challenge.org"发布时间: 2026-09-13最后更新: 2026-09-25 阅读 44
HEROHE — H&E WSI 免 IHC 预测 HER2 状态 AI-Ready Wikipedia

信息速览

数据集名称HEROHE — H&E WSI 免 IHC 预测 HER2 状态 AI-Ready Wikipedia
数据类型["509 张 H&E WSI", "训练 359/360 例 + 测试 150 例", "MIRAX 格式", "CC BY-NC-ND 3.0 开放获取"]
规模约 509 名患者(一例一张全切片)
接入方式name: "葡萄牙波尔图肿瘤研究所(IPO Porto)/ Ipatimup" url: "https://ecdp2020.grand-challenge.org"
AI 就绪度

数据集封面

HEROHE — 免 IHC 预测 HER2 的病理 WSI 挑战数据集 AI-Ready Wikipedia


INFOBOX

字段 内容
数据集名称 HEROHE
英文全称 HER2 on Hematoxylin & Eosin (HEROHE) Challenge
别名/简称 ECDP 2020 HEROHE Challenge;HEROHE dataset
疾病分类(ICD-11) 2C60 乳房恶性肿瘤(浸润性乳腺癌,HER2 状态判定)
SNOMED CT 254837009(Malignant tumor of breast)
数据模态 H&E 染色病理全切片图像(WSI,不含 IHC/ISH 切片)
AI 任务类型 玻片级二分类(HER2 阳性/阴性预测;弱监督/多实例学习)
样本总数 509 张 WSI(论文口径训练 359 + 测试 150;官网口径训练 360:144 阳/216 阴,测试 150:60 阳/90 阴),一例一张
数据格式 MIRAX(.mrxs 主文件 + 同名 .dat 数据文件夹)
许可证 CC BY-NC-ND 3.0 Unported(仅研究用途)
访问级别 开放(官网 Google Drive 直接下载,无需注册审核)
DUO 标签 NCU(非商业);附加 ND 限制(禁止分发修改版)
语言 英文(文档、标签文件与论文)
首发日期 2019-10-01(训练集发布)
最后更新 2022-07-31(挑战总结论文发表;数据此后未更新)
发布机构 葡萄牙波尔图肿瘤研究所(IPO Porto)/ Ipatimup
官方主页 https://ecdp2020.grand-challenge.org/
下载地址 https://drive.google.com/drive/folders/1WRddGoncdJo77Mvy7ics3OkDQ7rW-fht
DOI 10.3390/jimaging8080213
AI 就绪度评分 ⭐⭐⭐(3/5)— 有官方划分、平衡标签与质控金标准,但 MIRAX 专有格式需自行转换、无官方预处理脚本
页面状态 published

§0 E-E-A-T 权威性声明

  • 医学审核者:[千方病案医学编辑部交叉审核] 执业病理信息学顾问,审核范围:§2 医学背景(HER2 生物学、IHC/ISH 评估流程、ASCO/CAP 2018 分类)、§7 偏倚分析。
  • 数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
  • 审核日期:2026-09-05

医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。

技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。HEROHE 按 CC BY-NC-ND 3.0 Unported 许可仅对研究用途开放,使用时必须引用 Conde-Sousa et al., 2022, J. Imaging 8(8):213(DOI: 10.3390/jimaging8080213),且不得用于商业目的、不得分发修改后的材料。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 📌 30 秒速览

这是什么? HEROHE 是一场国际挑战赛的数据集:给 AI 只看常规的 H&E 染色病理切片(就是病理科每天都做的那种"普通染色"),要求判断这位乳腺癌患者的 HER2 基因是阳性还是阴性。真实临床里,HER2 必须靠免疫组化(IHC)甚至原位杂交(ISH)这类额外、更贵的检测才能确定。HEROHE 提供了 509 张来自葡萄牙波尔图肿瘤研究所(IPO Porto)的全切片图像,每一张都附有金标准的 HER2 检测结果。

为什么重要? HER2 阳性乳腺癌约占全部乳腺癌的 15-20%,但恰恰是靶向治疗效果最好的一类。如果 AI 能直接从最普通的 H&E 切片里"看出"HER2 状态,就能省掉一套昂贵的检测流程,在资源有限的地区做低成本初筛,也能提示病理医生复核可疑病例。这场 2020 年的挑战赛证明了这个方向是可行的——最好的队伍做到了 F1 0.68、AUC 0.84。

我能用它做什么? 训练和评测玻片级 HER2 预测模型;练习病理 AI 最主流的弱监督/多实例学习(MIL)范式——因为你只有玻片级标签、没有区域标注;研究染色标准化与跨实验室泛化;或者作为计算病理学的入门实战数据集。数据在 Google Drive 上开放下载,许可允许研究使用。

§1.1 技术摘要

HEROHE(HER2 on Hematoxylin & Eosin)是第 16 届欧洲数字病理学大会(ECDP 2020)的平行挑战赛,由葡萄牙波尔图肿瘤研究所(IPO Porto)与 Ipatimup 组织。数据集共 509 张浸润性乳腺癌 H&E 全切片(WSI):训练集 360 例(144 阳性/216 阴性,论文最终报告 359 张)于 2019-10-01 发布;测试集 150 例(60 阳性/90 阴性)于 2020-01-06 发布,且与训练集来自完全不同的患者。所有切片由 3D Histech Pannoramic 1000 扫描仪以 20x 物镜(0.25 μm/px)数字化,以专有的 MIRAX 格式存储。金标准来自临床常规 IHC + ISH 双检测,按 ASCO/CAP 2018 分类判读,其中 IHC 质控子集(116 例)敏感性 0.98、特异性 1.00。挑战以 F1 为主排名指标,共 21 支队伍提交结果:冠军 Team Macaroon 采用两阶段 ResNet34(CAMELYON16 预训练、256×256 patch)取得 F1 0.68(AUC 0.71),Team MITEL 的五阶段级联 MIL 以 F1 0.67 居次,而 AUC 最高的 Team Piaz(0.84)F1 排名第三——这一排名反转成为评估指标选择的经典教学案例。总结论文于 2022 年发表于 Journal of Imaging。

§1.2 战略价值

维度一:临床-转化价值(形态学到分子的桥梁)。HEROHE 把"从常规染色推断分子状态"这个问题做成了带金标准、带排行榜、带可复现协议的公开基准。HER2 检测流程(IHC 0/1+/2+/3+ 评分,2+ 病例还要加做 ISH)是乳腺癌诊断中成本与时间的重要组成;一条直接从 H&E 预测 HER2 的 AI 路径若被验证,可以在初筛、质控复核、资源受限场景中产生实际价值。挑战后的研究(如 2024 年 Breast Cancer Research 的 HER2-low 弱监督工作)已把 HEROHE 用作多队列训练的核心组件,说明该数据集的形态-分子对应信号足够强、可迁移。

维度二:工程-方法论价值(弱监督病理 AI 的标准练兵场)。HEROHE 具备弱监督学习研究的全部典型要素:玻片级标签、无区域标注、每例一张 WSI、509 例的"适中"规模(单卡可训、又足以支撑 MIL)、统一的扫描仪与分辨率(排除设备混杂变量)。MIRAX 专有格式和 22 个转诊实验室带来的染色异质性,恰好构成了真实病理数据工程的两个最常见障碍——把它跑通一遍,等于把"格式转换 → 背景过滤 → 染色归一化 → MIL 聚合 → 阈值调优"整条管线完整练了一遍。21 支队伍的完整成绩表还提供了一个罕见资源:同一任务、同一测试集下 21 种方法的横向对照。

§1.3 同类数据集横向对比

数据集 规模(WSI) 模态 HER2 相关标注 差异化
HEROHE 509(训练 359/360 + 测试 150) 乳腺 H&E WSI(20x,MIRAX) 玻片级 HER2 阳性/阴性(IHC+ISH 金标准) 唯一专为"免 IHC 预测 HER2"设计、带挑战赛排行榜的基准
TCGA-BRCA 3,111(1,086 患者) 乳腺 H&E WSI HER2 状态可从临床数据关联(IHC/FISH) 规模最大、多中心美国队列,但 HER2 标注需自行对齐、无统一挑战协议
IMPRESS 126(62 患者) 乳腺 H&E + IHC WSI(新辅助化疗后) IHC 切片与 HER2 评分、PD-L1 等标注 提供同切片 H&E/IHC 配对,适合多模态对照,规模小
Post-NAT-BRCA 96(54 患者) 乳腺 H&E WSI(新辅助治疗后) ER/PR/HER2 状态 + 肿瘤细胞密度标注 有区域级标注,但场景是治疗后残余癌,非 HER2 初筛
SLN-Breast 130(78 患者) 乳腺前哨淋巴结 H&E WSI 转移阳性/阴性 任务是转移检测,与 HER2 无直接关系

(对比数据来源:2024 年乳腺 H&E WSI 公开数据集 scoping review,见 §8.5。)

§1.4 版本时间轴

日期 事件
2019-10-01 训练集(360 例,144 阳/216 阴)通过 Grand Challenge 平台发布
2020-01-06 测试集(150 例,60 阳/90 阴)发布;提交截止时间随后延至 2020-01-28
2020 年 ECDP 2020 大会因 COVID-19 疫情取消,但挑战赛本身照常完成评审
2020-09 参赛方法论文 La Barbera et al. 发表于 J. Imaging 6(9):82(级联深度分类器 + MIL)
2021-11 挑战总结论文预印本上传 arXiv(arXiv:2111.04738)
2022-07-31 总结论文正式发表于 J. Imaging 8(8):213(DOI: 10.3390/jimaging8080213),公布 21 队完整排名
2022-07-24 冠军 Team Macaroon 开源其方法(GitHub: AndrewTal/HEROHE_Macaroon,fastai 2.7.5 + openslide-python)
2024 年 HEROHE 被多项后续研究实际使用(如 HER2-low 弱监督预测、乳腺 WSI 数据集 scoping review 收录)

§1.5 典型应用场景

  1. 免 IHC 的 HER2 初筛模型:训练 H&E → HER2 二分类模型,在低资源场景对 IHC 检测做优先级排序或复核提示。
  2. 弱监督/多实例学习(MIL)研究:509 张玻片级标签 WSI 是注意力 MIL、TransMIL、CLAM 等方法的理想规模基准。
  3. 染色鲁棒性研究:22/17 个实验室来源带来的染色异质性,适合验证 Macenko/Vahadane 等染色归一化与增广策略。
  4. 评估指标教学案例:F1 与 AUC 排名反转(Team Piaz 案例)可用于演示二分类阈值选择对排行榜的巨大影响。
  5. 计算病理学课程实战:数据开放直下、规模适中、有官方划分与完整排行榜,适合作为课程/竞赛的完整闭环。

五个场景共享同一份底层资产:一张玻片一个标签、一套金标准、一个排行榜。区别只在下游——做初筛产品重点看 §7.3 的失效风险,做方法研究重点看 §8.2 的改进方向,做教学重点看 §6 的坑点与自检清单。


§2 医学背景

§2.1 ICD-11 编码映射

标签/概念 ICD-11 编码 ICD-11 中文名称 说明
乳腺癌(数据集纳入病种) 2C60 乳房恶性肿瘤 数据集全部为浸润性乳腺癌病例
浸润性癌(组织学主体) 2C60(按形态学编码细分) 乳房恶性肿瘤,浸润性 WHO 分类中约 75% 为非特殊类型浸润性癌(NOS)
HER2 阳性乳腺癌 2C60 + XH 开放式形态学描述 乳房恶性肿瘤,HER2 过表达/扩增 HEROHE 的阳性标签对应人群

§2.1b SNOMED CT 及辅助编码映射

标签/概念 SNOMED CT / LOINC 码 术语名称 说明
乳腺癌 SNOMED CT 254837009 Malignant tumor of breast 数据集主病种
HER2 蛋白表达检测 LOINC 48676-1 HER2 Ag [Presence] in Tissue by Immune stain 金标准 IHC 检测的报告编码
HER2 基因(ERBB2)扩增 LOINC 21636-6 HER2 [Presence] in Tissue by FISH 2+ 灰区病例的 ISH 确认检测

§2.2 疾病简介与流行病学

乳腺癌是全球女性最常见的恶性肿瘤:每年新增病例超过 200 万,约占女性全部恶性肿瘤的 25%,每年导致超过 50 万人死亡。显微镜下,乳腺癌按 WHO 分类划分组织学类型,约 75% 为非特殊类型浸润性癌(invasive carcinoma, NOS),其余 25% 分布于超过 15 种特殊亚型。所有浸润性乳腺癌均按组织学分级系统(腺管分化程度、核异型性、核分裂率三项半定量评分)评估分级。

HER2(人表皮生长因子受体 2,ERBB2 基因编码)是具有酪氨酸激酶活性的跨膜蛋白受体,在约 15-20% 的乳腺癌中扩增和/或过表达。HER2 阳性乳腺癌临床表现更具侵袭性,但对 HER2 靶向治疗(如曲妥珠单抗)反应良好——多项临床试验证实靶向治疗可显著改善无病生存与总生存。因此,正确识别 HER2 状态直接决定患者能否从靶向治疗中获益,是乳腺癌常规诊疗的必检项目。

HER2 阳性乳腺癌在临床上以更具侵袭性的行为为特征:肿瘤分级偏高、增殖指数高、淋巴结转移更常见,但正如硬币的另一面,这类肿瘤对 HER2 靶向治疗(以曲妥珠单抗为代表,后续迭代包括帕妥珠单抗、T-DM1 等)反应良好。多项里程碑临床试验证实,靶向治疗能显著改善 HER2 阳性患者的无病生存与总生存——这正是"正确判定 HER2 状态"在临床上具有极高杠杆的原因:漏判一个阳性病例意味着患者错失最有效的治疗方案,误判一个阴性病例则引入不必要的治疗毒性。

HEROHE 覆盖的组织学背景值得注意:数据集纳入的均为浸润性乳腺癌(WHO 分类中约 75% 为非特殊类型浸润性癌 NOS,其余为小叶癌、黏液癌等特殊亚型);组织学分级由腺管分化程度、核异型性、核分裂率三项独立半定量评分合成。这些形态学维度——细胞密度、核级、分化模式——正是 H&E 图像中与 HER2 状态存在统计关联的候选信号,也是弱监督模型注意力热图最常见的落点。

流行病学上需要特别注意:真实世界中 HER2 阳性率约为 15-20%,而 HEROHE 出于挑战赛设计将训练/测试集都配平到约 40% 阳性——用该数据集评估的模型指标不能直接外推到真实就诊人群(详见 §7.1)。

§2.3 临床任务定义

HEROHE 对应的临床任务是乳腺癌 HER2 状态判定(诊断类任务,非筛查)。标准临床流程为:

  1. IHC 初筛:用特异性抗体染色 HER2 蛋白,病理医生按染色强度与膜染色模式评 4 级——0/1+(阴性)、2+(不确定/灰区)、3+(阳性)。
  2. ISH 确认:2+ 灰区病例加做原位杂交(DISH/FISH)直接检测 ERBB2 基因拷贝数,最终确定扩增状态。
  3. 判读标准:HEROHE 数据集的标签按 ASCO/CAP 2018 焦点更新版分类划定,由葡萄牙国家参考实验室 Ipatimup Diagnostics 完成检测。

HEROHE 任务的精确映射:模型输入对应第 0 步(H&E 切片本身),输出目标对应第 1-2 步的综合终结果——阳性 = IHC 3+,或 IHC 2+ 且 ISH 证实扩增;阴性 = IHC 0/1+,或 IHC 2+ 且 ISH 未扩增。因此模型学习的是"形态 → IHC/ISH 综合判定"的直接映射,跳过了中间报告环节;这也解释了为什么数据集不提供 IHC 分级中间标签(标签是流程终点的二值化结果)。

HEROHE 的 AI 任务是上述流程的单步替代/辅助:输入一张 H&E 全切片,输出玻片级 HER2 阳性概率。需要强调:数据集标签是"临床检测终结果"(IHC+ISH 综合判定),而非 IHC 单步结果;HER2 异质性病例已被组织方排除。

§2.4 患者人群

人群属性 训练集 测试集
来源 葡萄牙 22 个实验室(IPO Porto/Ipatimup 转诊网络) 葡萄牙 17 个实验室
病例数 360 例(论文最终报告 359 张 WSI) 150 例
性别 358 女 + 1 男 149 女 + 1 男
年龄 24-92 岁(中位 58 岁) 33-93 岁(中位 57 岁)
HER2 阳性/阴性 144/216(40% 阳性) 60/90(40% 阳性)
就医类型 浸润性乳腺癌诊疗(活检/手术标本) 同左
种族 未披露 未披露
排除标准 HER2 异质性病例 HER2 异质性病例

两划分在年龄、性别构成上高度同质(中位 58 vs 57 岁),人口统计学差异不太可能是官方划分成绩落差的主要来源;真正的分布差异藏在"哪个实验室贡献了哪些病例"里——而这正是逐例实验室信息缺失使得该问题无法在数据集内部解答的原因。

§2.5 临床价值

从 H&E 直接预测 HER2 的临床价值链条包括四个环节:初筛与优先级排序——在 IHC 检测前识别高置信阳性/阴性病例,加速报告周转;质控复核——对 AI 与 IHC 结论不一致的病例触发人工复片,降低误判;资源受限场景支持——在无法开展 IHC/ISH 的地区提供初步分子分层参考;形态学机制研究——模型注意力区域提示与 HER2 生物学相关的形态学线索(肿瘤细胞密度、核级、分化模式等),反哺病理学研究。

价值实现的前置条件是性能达标与临床验证:挑战最优 F1 0.68(AUC 最高 0.84)距离独立诊断仍有明显差距,截至挑战总结论文发表,最好的模型尚不足以独立承担诊断责任,AI 结论只能作为辅助证据。因此现阶段最现实的落地是"AI 预筛 + 病理医生复核"的人机协同模式,以及作为前瞻性临床研究的入场工具;任何临床接入都必须按 §7.3 的失效风险清单逐项验证,并按 §7.6 建立染色漂移监控。

§2.6 金标准

维度 内容
标签划分 玻片级二分类:HER2 阳性 / HER2 阴性
标注方式 临床常规检测流程(非研究性图像标注):IHC 初筛 + 2+ 灰区 ISH 确认
标注者/检测方 Ipatimup Diagnostics(葡萄牙国家 HER2 检测参考实验室),按 ASCO/CAP 2018 分类判读
标注性质 前瞻性临床金标准(回顾性汇集),附带独立质控证据
质控数据 IHC 质控子集 116 例:敏感性 0.98、特异性 1.00、PPV 1.00、NPV 0.98
标签载体 随数据集发布的 Excel 文件(按训练/测试分列)
已知局限 仅二分类(无 IHC 0/1+/2+/3+ 分级);异质性病例已排除;无肿瘤区域标注

§3 数据集规格

§3.0 版本与获取策略矩阵

HEROHE 自 2019 年首发后数据内容未更新(版本唯一),无需在多版本间抉择;决策点在于下载与处理策略:

你的需求 推荐策略 处理成本 理由
完整复现挑战排行榜 官方 Google Drive 全量下载,严格使用官方 train/test 划分 高(全量 MIRAX 转换) 测试集 150 例分布与挑战完全一致,成绩可与 21 队直接对比
快速验证方法原型 全量下载但只转换训练集的一个子集先跑通管线 中 MIRAX→TIFF 转换是最大时间成本,先小规模打通再全量
只需元数据/标签做设计 下载标签 Excel(体积极小) 低 标签分布、患者统计可先于图像下载完成统计设计
后续多任务研究(HER2-low 等) 全量下载 + 建立本地 TIFF pyramid 归档 高 一次转换、反复使用;参考 2024 研究"509→过滤 356"的背景过滤经验

§3.1 模态详情

  • 模态:H&E(苏木精-伊红)染色组织病理学全切片图像(Whole Slide Image, WSI)。数据集不包含 IHC 染色切片、ISH 图像或任何分子检测图像——这正是挑战的核心设计:只许看常规染色。
  • 放大倍率:20x 物镜扫描,空间分辨率 0.25 μm/px。patch 设计时注意:论文中 Team Macaroon 使用 256×256 patch(对应 64×64 μm 视野),Team MITEL 使用 512×512 tile 并做 1:2 下采样。
  • 每例切片数:1 例 = 1 张 WSI(一例一切片),训练与测试集患者零重叠。
  • 区域标注:无。肿瘤区域未标注,切片包含肿瘤及其周围组织、背景。
  • 染色信息:常规苏木精-伊红染色,无特殊染色对照切片;染色前处理(固定、脱水、染色试剂)随 22/17 个来源实验室而异(见 §3.8),是本数据集最主要的" nuisance 变量"。
  • 金字塔结构:MIRAX 内部按多层级分块存储;经 OpenSlide 读取后呈现标准金字塔层级(level 0 = 0.25 μm/px 全分辨率),level_dimensions 可直接枚举。
  • 无掩膜与标准化元数据包:官方不提供组织分割掩膜、OME 标准元数据或质控图层;组织过滤、patch 索引等一切下游结构需使用者按 §6.3 自建并记录。

§3.2 子集样本数

子集 病例数(官网口径) 论文口径 WSI 数 HER2 阳性 HER2 阴性 发布日期
训练集 360 359 144(40.0%) 216(60.0%) 2019-10-01
测试集 150 150 60(40.0%) 90(60.0%) 2020-01-06
合计 510 例(官网口径) 509 204 306 —

两个口径的差异(360 vs 359)来自官网宣传页与论文最终统计,属官方数据内部的口径差;写作与实验报告时建议注明所采用口径。除这 1 例之差外,两口径的阳性/阴性构成完全一致,不影响任何建模决策。

§3.3 数据格式

格式要素 说明
容器格式 MIRAX(3D Histech 专有格式)
主文件 每张切片 1 个 .mrxs 文件(元数据与索引入口)
数据文件夹 与主文件同名的文件夹,内含大量 .dat 文件(像素数据分块)、Slidedat.ini(切片元数据配置)、Index.dat(索引)
标签文件 Excel 文件(随数据集发布,含每例 HER2 状态)
读取方式 OpenSlide(仅 8-bit MIRAX)、QuPath(OpenSlide 或 Bio-Formats)、官方 CaseViewer(含 Converter,可导出 TIFF/JPEG)
推荐转换目标 通用的金字塔 TIFF(pyramidal TIFF)或 patch 存储(HDF5/分块 JPEG)

§3.4 存储大小

官方未公布数据集总容量(下载页未标注,论文亦未记录),此字段无可靠数字。工程预算建议:509 张 20x MIRAX 全切片属于"数十 GB 量级"的图像集合;由于 MIRAX → TIFF 转换通常使体积显著增大,实际规划时应为原始数据 + 转换产物 + patch 缓存预留合计数百 GB 的磁盘空间,并按 Google Drive 单文件/文件夹配额分批下载。

存储阶段 预估量级 说明
原始 MIRAX 数十 GB 量级(官方未公布精确值) Google Drive 分批下载;主文件小、数据文件夹大
pyramid TIFF 转换产物 视导出层级与压缩而定,通常显著增大 只保留 level 0-2 或改用无损 JPEG 压缩可控制体积
patch 缓存 + 冻结特征 h5 冻结特征远小于 patch 本体 §6.3 第 4 步的 (N, 512) 特征矩阵是性价比最高的缓存层

§3.5 标注方式

  • 类型:中心化临床检测标注(回溯汇集),非研究性图像人工标注。每例的 HER2 状态取自临床 IHC(初筛)+ ISH(灰区确认)双检测的最终判定。
  • 评分体系:ASCO/CAP 2018 焦点更新版分类。
  • 粒度:玻片级二分类(阳性/阴性),不提供 IHC 0/1+/2+/3+ 逐级评分,不提供肿瘤区域/细胞级标注。
  • 标签载体:随数据集发布的 Excel 文件。

§3.6 标注者资质与一致性

检测与判读由 Ipatimup Diagnostics 完成——该公司/实验室是葡萄牙国家 HER2 检测参考中心,长期执行 ASCO/CAP 标准下的临床 HER2 检测。质量证据为独立质控子集:116 例 IHC 检测对金标准(IHC+ISH 综合)的敏感性 0.98、特异性 1.00、PPV 1.00、NPV 0.98,说明标签的主要误差来源被压至极低水平(灰区病例由 ISH 兜底)。逐例标注者身份未公开,一致性 kappa 等指标不适用于本数据集(非图像标注任务)。

从 AI 建模视角解读这份质控数据:标签噪声对训练的影响可以近似忽略(116 例质控中 IHC 未引入假阳性、假阴性率 2% 且由 ISH 修正);真正的"标注上限"不在标签本身,而在于标签粒度——再干净的玻片级标签也无法告诉模型肿瘤在哪里、异质性区域如何分布。因此模型改进的着力点应放在表征与聚合结构上,而不是对标签做去噪处理。

§3.7 采集周期

病例为挑战发布前汇集的临床归档浸润性乳腺癌病例:训练集于 2019-10-01 发布、测试集于 2020-01-06 发布,提交截止延至 2020-01-28(ECDP 2020 大会原定 2020 年 6 月在西班牙举行,因疫情取消后挑战评审照常在线完成)。逐例的活检/手术日期、扫描日期未公开披露,数据集不提供时间戳维度。

§3.8 地域覆盖

数据来自葡萄牙波尔图的 IPO Porto / Ipatimup 网络:训练集病例汇集自 22 个实验室,测试集来自 17 个实验室(转诊网络覆盖本国多个机构)。单国家、单扫描中心(所有切片统一在 Ipatimup Diagnostics 用 Pannoramic 1000 扫描)的采集模式保证了设备一致性,但染色前处理(固定、脱水、染色试剂)仍随实验室来源而异。

§3.9 设备规格

设备项 规格
扫描仪 3D Histech Pannoramic 1000(数字切片扫描仪)
放大倍率 20x 物镜
空间分辨率 0.25 μm/px
输出格式 MIRAX(.mrxs + .dat 分块存储)
扫描地点 Ipatimup Diagnostics(波尔图)
官方查看/导出工具 3D Histech CaseViewer(含 Converter)、Panoramic Viewer;第三方 QuPath、Arivis 可直接打开

§3.10 深度溯源链

患者(浸润性乳腺癌,24-93 岁,葡萄牙境内 22/17 个实验室)→ 临床标本处理(活检/手术标本经固定、石蜡包埋)→ H&E 染色切片制作(各来源实验室)→ 集中数字化(Ipatimup Diagnostics,Pannoramic 1000,20x,0.25 μm/px,MIRAX 格式)→ 临床 HER2 检测(IHC + ISH,ASCO/CAP 2018,Ipatimup Diagnostics)→ 挑战数据集组装(排除 HER2 异质性病例,玻片级标签配平至 40% 阳性)→ Grand Challenge 平台发布(2019-10-01 训练集 / 2020-01-06 测试集)。


§4 数据结构

§4.0 目录树

数据解压后按官方发布组织(目录名以实际下载内容为准,slide_id 为每张切片的唯一文件名):

herohe/                               # 数据根目录(自定)
├── training_set/                     # 训练集(官网口径 360 例)
│   ├── <slide_id_1>.mrxs             # 切片 1 主文件(元数据/索引入口)
│   ├── <slide_id_1>/                 # 与主文件同名的数据文件夹
│   │   ├── Slidedat.ini              # 切片元数据配置(必需)
│   │   ├── Index.dat                 # 索引文件(必需)
│   │   ├── Data0000.dat              # 像素数据分块(通常数十至数百个)
│   │   ├── Data0001.dat
│   │   └── ...
│   ├── <slide_id_2>.mrxs
│   ├── <slide_id_2>/
│   │   └── ...
│   └── ...
├── test_set/                         # 测试集(150 例,挑战期间标签不公开,现已随数据集发布)
│   ├── <slide_id_k>.mrxs
│   ├── <slide_id_k>/
│   │   └── ...
│   └── ...
├── herohe_ground_truth_train.xlsx    # 训练集标签(Excel)
├── herohe_ground_truth_test.xlsx     # 测试集标签(Excel)
└── README / 许可文件                 # CC BY-NC-ND 3.0 说明(以实际下载为准)

注意:.mrxs 主文件与其同名数据文件夹必须位于同一父目录,文件夹内 Slidedat.ini 缺失或两者分离都会导致 OpenSlide/QuPath 读取失败(见坑点 1)。

§4.1 DAIMS 数据字段字典

HEROHE 的"表格部分"极简(标签 Excel),字段级元数据主要内嵌于 MIRAX 文件与论文。下表给出建模视角下的完整字段字典:

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
slide_id Text WSI 文件名(去扩展名),全集唯一主键 <slide_id>(以下载内容为准) 文件定位、预测对齐 无(文件名即真值) 不适用 下载文件夹实际文件名集合
split Text 官方划分归属 train 严格复现挑战成绩 无 不适用
label Integer HER2 状态,1=阳性、0=阴性 1 监督信号(玻片级) 金标准质控后残余误差极低(§2.6) 无缺失
label_text Text 标签可读名 positive 报表与可视化 无 无缺失
sex Text 患者性别 F 亚组分析 无 逐例未提供(仅聚合统计公开) 全集聚合:507 女/2 男
age Integer 患者年龄(岁) 58 亚组分析 无 逐例未提供(仅聚合统计公开) 训练 24-92;测试 33-93
lab_count Integer 患者所属划分的来源实验室数 22 偏倚评估(聚合层) 无 不适用 训练 22;测试 17
scanner Text 扫描仪型号 3D Histech Pannoramic 1000 复现采集条件 无 不适用 固定值
magnification Text 物镜放大倍率 20x patch 尺度换算 部分工具按不同口径报告 不适用 固定值
resolution_um_px Float 空间分辨率(μm/px) 0.25 像素-微米换算、patch 物理尺寸 无 不适用 固定值
format Text 文件格式 MIRAX 读取方案选择 OpenSlide 仅支持 8-bit 不适用 固定值
region_annotation — 肿瘤区域标注 不存在 —(需 MIL 弱监督) — 信息性缺失:官方有意不提供 —

§4.2 标签分布

划分 阳性(label=1) 阴性(label=0) 阳性占比
训练集 144 216 40.0%
测试集 60 90 40.0%
合计 204 306 40.0%

两个划分均为人工配平的 40/60 结构。二分类基线(全预测为多数类阴性)在测试集上准确率 60%,但 F1(对阳性类)为 0——评估时务必使用阳性类的 P/R/F1 而非总体准确率。

§4.3 关键统计

  • 总量:509 张 WSI(论文口径),一例一张、患者零重叠;官网口径训练 360 例。
  • 阳性率:训练 40.0%、测试 40.0%(人工配平,高于真实世界 15-20%)。
  • 性别:507 女 / 2 男(每划分各 1 名男性)——男性亚组无法单独分析。
  • 年龄:训练 24-92 岁(中位 58)、测试 33-93 岁(中位 57),覆盖成年全年龄段。
  • 实验室多样性:训练 22 个、测试 17 个来源实验室——染色前处理异质性的主要来源。
  • 设备单一性:全部切片同一型号扫描仪(Pannoramic 1000)、同一分辨率(0.25 μm/px)。
  • 可用性注记:2024 年的一项研究在背景 tile 过滤后实际使用 356/509 张(约 70%),提示相当比例切片含大面积背景/低信息量区域。
  • 与同类任务的规模对比:HEROHE 的 509 张在"单任务、单器官、单标签"数据集里属于中等规模——比 CAMELYON16(270 张淋巴结 WSI)大,比 TCGA-BRCA(3,111 张)小;规模适中意味着方法学的差异比数据的边际增量更容易在排行榜上体现。

§4.4 数据层级

患者(509 名,一人一张切片,无重叠)
└── 标本(活检/手术浸润性癌标本)
    └── 玻片(每例 1 张 H&E 切片)
        └── WSI(MIRAX 金字塔,20x,0.25 μm/px)
            └── patch(研究自切,无官方层级)

层级设计含义:患者级 = 玻片级(一人一张),因此不存在"同一患者多张切片跨划分泄漏"的经典病理数据陷阱;但重划分研究仍须按 slide/patient 单元划分而非 patch 单元(见 §5.3)。

对 MIL 建模的直接推论:每个"样本"就是一张完整 WSI 构成的 bag,bag 内 patch 数量因组织量差异可达一个数量级以上——采样策略(每 bag 取多少 patch、如何加权)因此成为比网络结构更敏感的超参数,§6.4 的 patches_per_slide 建议在 32-128 之间做一次小扫描。

§4.5 缺失值与信息性缺失

缺失项 性质 建模处理
逐例年龄/性别/种族 信息性缺失(仅公开聚合统计) 不做逐例协变量建模;亚组公平性分析受限于聚合数据
肿瘤区域标注 信息性缺失(官方有意不提供,构成任务设定) 采用 MIL/弱监督;不要假设 patch 标签=玻片标签
IHC 0/1+/2+/3+ 逐级评分 信息性缺失(标签已二值化) 多级预测需外部数据(如 2024 HER2-low 研究的做法)
标签本身 无缺失 509 例均有完整二分类标签
时间戳 信息性缺失(采集/扫描日期未披露) 不做时间漂移的逐例分析

处理原则:本数据集的"缺失"几乎全部属于设计性缺失(官方为构成任务而有意不提供),而非数据质量问题;建模时不要试图"填补"它们,而应把它们读作任务边界的定义——例如"无区域标注"直接决定了必须采用 MIL 范式,"无 IHC 分级"直接决定了输出端只能是二分类概率。


§5 数据划分与使用建议

§5.1 官方划分

划分 数量 阳性/阴性 用途 约束
训练集 359/360 144/216 模型训练与内部验证 挑战期间可自由使用
测试集 150 60/90 挑战最终排名 挑战期间标签保密、经平台提交评估;赛后随数据集公开

患者零重叠、两划分实验室来源不同(22 vs 17)——官方划分本身已构成一次跨实验室泛化测试。

§5.2 社区惯例划分

挑战结束后社区形成两种惯例:保守派——保持官方划分,训练集内做交叉验证,测试集只用于最终报告(可与 21 队排行榜直接对话);实用派——把 509 张视为一个整体池(如 2024 年 HER2-low 研究过滤后使用 356 张做多队列训练),此时成绩不可再与官方排行榜对比。论文复现类工作建议采用保守派口径。

两种惯例的选择判据:如果你的目标是"证明新方法比挑战时期的方法更好",必须用保守派口径,否则数字失去参照系;如果你的目标是"用尽一切数据训练一个实用模型",实用派口径更合理,但报告时应主动声明测试集已并入训练并给出内部交叉验证数字。

§5.3 泄漏风险清单

风险 说明 缓解
测试集公开后的"隐性调参" 测试标签已公开,若在其上反复调参/选模型,测试成绩虚高 测试集只在最终评估接触一次;模型选择用训练集内验证
patch 级重划分 把所有 patch 混合打乱后划分,同一玻片的 patch 同时出现在训练与验证中 任何自定义划分必须以 slide(=患者)为最小单元
预训练数据 CAMELYON16(淋巴结转移任务)预训练不构成泄漏(任务不同、数据不重叠);但用 ImageNet→HEROHE 测试集做自监督预训练则属泄漏 自监督预训练仅用训练集切片
双重身份 同一模型既报告官方测试成绩又报告全数据训练成绩且未注明 报告时显式区分两种协议

§5.4 交叉验证建议

训练集(359/360 例)内建议 5 折分层交叉验证(按 40/60 标签分层);若关注染色泛化,可按来源实验室做分组交叉验证(GroupKFold,以实验室为组)——这更接近官方 train/test 之间的真实分布差异。MIL 管线下每折需重新提取/缓存 patch 特征,建议先完成 §6.3 的特征缓存再进入 CV 循环。

# 划分自检:任何自定义划分在进入训练前先跑一次,证明无 slide 级泄漏
def assert_no_leak(train_ids, val_ids):
    overlap = set(train_ids) & set(val_ids)
    assert not overlap, f"slide 级泄漏:{len(overlap)} 张验证切片同时出现在训练集"

# 分层 + 分组二合一:先按标签分层,再在每层内按实验室分组切分
from sklearn.model_selection import StratifiedGroupKFold
# sgkf = StratifiedGroupKFold(n_splits=5, shuffle=True, random_state=42)
# for tr, va in sgkf.split(X=labels_df.slide_id, y=labels_df.label, groups=labels_df.lab_id):
#     assert_no_leak(labels_df.slide_id[tr], labels_df.slide_id[va])

注:逐例的来源实验室 id 未随数据集逐例公开(仅披露实验室数量),lab_id 需要使用者自行从切片元数据或申请渠道获取;无法获取时退回纯分层 5 折,并在报告中注明染色分组验证未做。

§5.5 外部验证建议

  • TCGA-BRCA:3,111 张乳腺 H&E WSI,可经 GDC 临床数据关联 HER2 状态(IHC/FISH),是规模最大的现成外部验证源(注意判读标准与人群差异)。
  • IMPRESS / Post-NAT-BRCA:带 HER2 信息的乳腺 WSI,但分别限定于新辅助化疗后场景,作为外部验证需注明场景差异。
  • 本地真实队列:接入真实病理流水线时,务必先在小规模本地集(含 2+ 灰区与异质性病例)上校准后再上线。

§6 AI 就绪指南

§6.0 云端快速启动

Google Colab(T4/A100)足以完成 patch 特征提取与小规模 MIL 训练;509 张全量特征提取建议本地/服务器执行(磁盘需求见 §3.4)。Colab 环境预装 OpenSlide 系统库缺失时先执行 !apt-get install -y openslide-tools。

§6.1 快速上手

以下代码验证数据完整性并读出第一张切片的元信息。目录结构预期:data_root 下有 training_set/ 与 test_set/ 两个子目录(与 §4.0 一致);data_root 与切片路径直接拼接;最小可用子集 = 任意 1 张 .mrxs + 同名数据文件夹 + 标签 Excel。

# 目录结构预期(data_root 直接与相对路径拼接):
#   data_root/
#   ├── training_set/<slide_id>.mrxs + <slide_id>/   # 主文件与同名文件夹必须同目录
#   ├── test_set/<slide_id>.mrxs + <slide_id>/
#   └── 标签 Excel
import openslide
from pathlib import Path

data_root = Path("data_root")                       # ← 改成你的数据根目录
mrxs_files = sorted((data_root / "training_set").glob("*.mrxs"))
print(f"训练集切片数(.mrxs 主文件): {len(mrxs_files)}")

slide = openslide.OpenSlide(str(mrxs_files[0]))     # data_root + training_set + 文件名 拼接
print("金字塔层数:", slide.level_count)
print("各层尺寸:", slide.level_dimensions)
print("基准分辨率(μm/px):", slide.properties.get("openslide.mpp-x"))
region = slide.read_region((0, 0), 0, (1024, 1024)).convert("RGB")  # 左上 1024×1024 预览
region.save("preview.png")

下载完成后立即做目录结构自检(对应坑点 1 的进阶方法,避免转换阶段中途失败):

# 校验每张切片的三要素:主文件 + 同名文件夹 + Slidedat.ini
for mrxs in data_root/training_set/*.mrxs data_root/test_set/*.mrxs; do
  base="${mrxs%.mrxs}"
  test -d "$base" || echo "缺数据文件夹: $base"
  test -f "$base/Slidedat.ini" || echo "缺 Slidedat.ini: $base"
done | tee mirax_structure_check.log
# 日志为空 = 结构完整;有输出 = 先修复再进入转换队列

§6.2 数据获取

项目 内容
渠道 官方 Google Drive 文件夹(唯一官方渠道,无镜像)
地址 https://drive.google.com/drive/folders/1WRddGoncdJo77Mvy7ics3OkDQ7rW-fht
前置要求 阅读官方 Rules 页;使用须遵守 CC BY-NC-ND 3.0 并引用论文
总量 官方未公布(按数百 GB 规划磁盘,分批下载)
下载内容 training_set / test_set(MIRAX)、标签 Excel
发表义务 基于数据或挑战结果的发表须通知组织方(见官方 Dataset 页)
下载校验 下载完成后立即执行 §6.1 的结构自检脚本,再进入转换队列
# 命令行批量下载(gdown 支持整文件夹;大文件夹建议分批并加 --remaining-ok)
pip install gdown
gdown --folder "https://drive.google.com/drive/folders/1WRddGoncdJo77Mvy7ics3OkDQ7rW-fht" --remaining-ok

§6.3 预处理全流程

第 1 步:MIRAX → 通用格式。两条路线:官方 CaseViewer(含 Converter)手工/批量导出 TIFF;或直接用 OpenSlide 在线读取 + 自行落盘 pyramid TIFF(仅 8-bit MIRAX 可用,见坑点 2)。批量转换脚本骨架:

# MIRAX → 金字塔 TIFF(依赖:openslide-python, pyvips 或 tifffile)
import openslide, tifffile
from pathlib import Path

def mirax_to_tiff(mrxs_path: Path, out_path: Path, level: int = 0):
    slide = openslide.OpenSlide(str(mrxs_path))
    w, h = slide.level_dimensions[level]
    # 大图分块写入;此处示意低倍层整层导出(level>=1 体积小,适合快速实验)
    region = slide.read_region((0, 0), level, (w, h)).convert("RGB")
    tifffile.imwrite(out_path, region.asarray() if hasattr(region, "asarray") else region,
                     tile=(256, 256))

for mrxs in sorted(Path("data_root/training_set").glob("*.mrxs")):
    mirax_to_tiff(mrxs, Path("tiff_out") / f"{mrxs.stem}.tiff", level=1)

第 2 步:patch 提取 + 组织过滤(瓦片级背景剔除,直接决定 MIL 上限,见坑点 5):

import numpy as np

def tissue_fraction(img, thresh=0.82):
    """非背景(组织)像素占比;灰度低于 255*thresh 视为组织"""
    gray = np.asarray(img.convert("L"))
    return float((gray < 255 * thresh).mean())

def extract_patches(slide_path, patch=256, stride=256, min_tissue=0.5):
    slide = openslide.OpenSlide(str(slide_path))
    w, h = slide.level_dimensions[0]
    coords = []
    for y in range(0, h - patch, stride):
        for x in range(0, w - patch, stride):
            img = slide.read_region((x, y), 0, (patch, patch)).convert("RGB")
            if tissue_fraction(img) >= min_tissue:
                coords.append((x, y))
    return coords   # 之后按坐标批量读取,或直接存 patch 文件/HDF5

第 3 步:染色归一化(22/17 个实验室的染色差异是最大混杂,见坑点 6)——Macenko 方法核心:

import numpy as np

def macenko_fit(img, beta=0.15, alpha=1):
    """从一张参考图拟合染色矩阵(OD 空间 SVD 主轴)"""
    od = -np.log10((np.asarray(img).reshape(-1, 3).astype(float) + 1) / 255.0)
    od = od[(od > beta).all(1)]
    _, _, v = np.linalg.svd(od, full_matrices=False)
    plane = od @ v[:2].T
    phi = np.arctan2(plane[:, 1], plane[:, 0])
    min_p, max_p = np.percentile(phi, alpha), np.percentile(phi, 100 - alpha)
    v1, v2 = v[:2].T @ [np.cos(min_p), np.sin(min_p)], v[:2].T @ [np.cos(max_p), np.sin(max_p)]
    stain = np.vstack([v1, v2])                             # 2×3 染色矩阵(H&E)
    return stain * np.sign(stain).max()

def stain_augment(img, stain_ref, scale=(0.9, 1.1)):
    """训练期随机扰动染色浓度(比色相抖动更符合染色物理)"""
    od = -np.log10((np.asarray(img).astype(float) + 1) / 255.0)
    conc = np.linalg.lstsq(stain_ref.T, od.reshape(-1, 3).T, rcond=None)[0]
    conc *= np.random.uniform(*scale, size=(2, 1))          # 随机缩放 H、E 浓度
    od_out = stain_ref.T @ conc
    return (np.exp(-od_out.T.reshape(*img.size, 3) * np.log(10)) * 255 - 1).clip(0, 255).astype(np.uint8)

第 4 步:冻结特征离线缓存(§6.10 MLOps 首条纪律的落地;509 张全量提取后,训练循环不再触碰 WSI 文件,提速一个数量级):

# 一次性把每张切片的组织 patch 过一遍冻结 CNN,缓存为 (N, 512) 特征矩阵
import torch, pandas as pd, numpy as np, h5py
from pathlib import Path
from torchvision import transforms

@torch.no_grad()
def cache_features(data_root, split, out_dir="cache/feats", patch=256, batch=64):
    device = "cuda" if torch.cuda.is_available() else "cpu"
    backbone = torch.hub.load("pytorch/vision", "resnet18", weights="IMAGENET1K_V1").to(device).eval()
    extractor = torch.nn.Sequential(*list(backbone.children())[:-1])   # 去掉分类头
    tf = transforms.ToTensor()
    Path(out_dir).mkdir(parents=True, exist_ok=True)
    for mrxs in sorted(Path(f"{data_root}/{split}").glob("*.mrxs")):
        coords = pd.read_csv(f"cache/patches/{mrxs.stem}.csv", header=None).values
        feats = np.zeros((len(coords), 512), dtype=np.float32)
        slide = openslide.OpenSlide(str(mrxs))
        for s in range(0, len(coords), batch):
            tiles = torch.stack([tf(slide.read_region((int(x), int(y)), 0,
                        (patch, patch)).convert("RGB"))
                        for x, y in coords[s:s + batch]]).to(device)
            feats[s:s + len(tiles)] = extractor(tiles).flatten(1).cpu().numpy()
        with h5py.File(f"{out_dir}/{mrxs.stem}.h5", "w") as f:
            f.create_dataset("features", data=feats)
            f.create_dataset("coords", data=coords)

缓存完成后,§6.4 的 Dataset 改为从 h5 读取特征、在 bag 内做随机下采样,训练时的随机性全部保留在"采样哪些 patch 进注意力"这一层。

§6.4 PyTorch DataLoader(玻片级 MIL)

说明:data_root 下先执行 §6.3 生成 patches/<slide_id>.csv(每行一个 patch 坐标)与标签 Excel 转出的 labels.csv(列:slide_id,label)。每个样本 = 1 张 WSI;__getitem__ 返回该切片采样出的 N 个 patch 与玻片级标签。代码块较长,点击展开:

<details>
<summary>展开完整 PyTorch MIL Dataset + 注意力聚合模型代码</summary>

import torch, torch.nn as nn
import pandas as pd, numpy as np, openslide
from PIL import Image
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms

class HeroheSlideDataset(Dataset):
    """玻片级 MIL 数据集:1 个样本 = 1 张 WSI(1 名患者)。
    目录预期:
      data_root/training_set/<slide_id>.mrxs        ← .mrxs 与同名文件夹必须同目录
      cache/patches/<slide_id>.csv                  ← §6.3 生成的组织 patch 坐标
      cache/labels.csv                              ← slide_id,label 两列
    """
    def __init__(self, data_root, label_csv, patch=256, patches_per_slide=64,
                 transform=None, split="training_set"):
        self.df = pd.read_csv(label_csv)
        self.root, self.split = data_root, split
        self.patch, self.k, self.tf = patch, patches_per_slide, transform or transforms.ToTensor()

    def __len__(self):
        return len(self.df)

    def __getitem__(self, idx):
        sid, label = self.df.iloc[idx]["slide_id"], int(self.df.iloc[idx]["label"])
        slide = openslide.OpenSlide(f"{self.root}/{self.split}/{sid}.mrxs")
        coords = pd.read_csv(f"cache/patches/{sid}.csv", header=None).values
        take = np.random.choice(len(coords), min(self.k, len(coords)), replace=False)
        patches = [self.tf(slide.read_region((int(x), int(y)), 0,
                    (self.patch, self.patch)).convert("RGB")) for x, y in coords[take]]
        return torch.stack(patches), torch.tensor(label, dtype=torch.long)   # (N,3,P,P), int

class AttentionMIL(nn.Module):
    """两阶段式:冻结/微调的 CNN patch 特征 + 门控注意力池化(ABMIL 简化版)"""
    def __init__(self, feat_dim=512, hidden=256):
        super().__init__()
        backbone = torch.hub.load("pytorch/vision", "resnet18", weights="IMAGENET1K_V1")
        self.feat = nn.Sequential(*list(backbone.children())[:-1])           # (N,512,1,1)
        for p in self.feat.parameters():
            p.requires_grad = False                                          # 第一阶段冻结特征
        self.att = nn.Sequential(nn.Linear(feat_dim, hidden), nn.Tanh(),
                                 nn.Linear(hidden, 1))                       # 注意力打分
        self.head = nn.Sequential(nn.Linear(feat_dim, 1))                    # 玻片级 logits

    def forward(self, x):                                                    # x: (B,N,3,P,P)
        B, N = x.shape[:2]
        feats = self.feat(x.flatten(0, 1)).flatten(1)                        # (B*N,512)
        a = torch.softmax(self.att(feats).view(B, N), dim=1)                 # (B,N) 注意力
        slide = (a.unsqueeze(-1) * feats.view(B, N, -1)).sum(1)              # (B,512) 加权聚合
        return self.head(slide).squeeze(-1)                                  # (B,) logits

ds = HeroheSlideDataset("data_root", "cache/labels.csv")
loader = DataLoader(ds, batch_size=1, shuffle=True, num_workers=4)           # 玻片级 batch=1
model = AttentionMIL()
loss_fn = nn.BCEWithLogitsLoss()                                             # 玻片级二分类
opt = torch.optim.AdamW(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-4)

for patches, label in loader:                                                # 单步示意
    logits = model(patches)
    loss = loss_fn(logits, label.float())
    opt.zero_grad(); loss.backward(); opt.step()

</details>

完整训练/验证循环(含梯度累积、按验证折 AUC 选模型;测试集只在最终评估接触一次,对应坑点 7):

<details>
<summary>展开完整训练循环代码</summary>

import numpy as np, torch
from sklearn.metrics import roc_auc_score

def run_epoch(model, loader, loss_fn, opt=None):
    training = opt is not None
    model.train() if training else model.eval()
    ys, ps, step = [], [], 0
    for patches, label in loader:
        with torch.set_grad_enabled(training):
            logit = model(patches)
            loss = loss_fn(logit, label.float()) / 4              # 梯度累积 4 个玻片
        if training:
            loss.backward()
            step += 1
            if step % 4 == 0:
                opt.step(); opt.zero_grad()
        ys += label.tolist()
        ps += torch.sigmoid(logit).detach().cpu().tolist()
    return np.array(ys), np.array(ps)

best_auc = 0.0
for epoch in range(30):
    run_epoch(model, loader, loss_fn, opt)                         # 官方训练集(内部 5 折见 §5.4)
    yv, pv = run_epoch(model, val_loader, loss_fn)                 # val_loader 来自验证折
    auc = roc_auc_score(yv, pv)
    print(f"epoch {epoch:02d}: val AUC={auc:.3f}")
    if auc > best_auc:                                             # 只用验证折选模型与阈值
        best_auc = auc
        torch.save(model.state_dict(), "best_mil.pt")              # test_set 留到最终报告一次

</details>

§6.5 坑点清单(8 个,全部来自官方文档与真实社区讨论)

速查索引(详细四段式展开见下方各条):

# 坑点 分类 一句话提示
1 MIRAX 目录结构不完整 工程陷阱 .mrxs 主文件与同名数据文件夹必须同目录
2 OpenSlide 仅支持 8-bit MIRAX 工程陷阱 高比特深切片先经 CaseViewer 转换
3 玻片级标签、无区域标注 标签理解 全图 CNN 不可行,走 MIL 弱监督
4 F1 阈值未调 评估误用 AUC 高不等于 F1 高,阈值来自验证折
5 背景 tile 污染聚合 预处理陷阱 先组织过滤,再进特征提取器
6 多实验室染色差异 偏倚陷阱 Macenko 归一化 + 染色增广
7 测试集公开后的协议泄漏 数据泄漏 全池训练的成绩不可对榜
8 异质性病例被排除 偏倚陷阱 真实灰区/异质性切片属分布外

⚠️ 坑点 1:MIRAX 目录结构不完整导致整库拒读(分类:工程陷阱)

问题:.mrxs 主文件必须与其同名数据文件夹(内含 Slidedat.ini、Index.dat、Data*.dat)位于同一父目录;Google Drive 分批下载、解压或搬运时很容易把两者拆散,或数据文件夹下载不全。
症状:openslide 报 Unsupported or missing image file;设置 OPENSLIDE_DEBUG=detection 后日志出现 mirax: cannot find Slidedat.ini;QuPath 打开显示空白或低分辨率缩略图。
解决:

  1. 简单方法:逐一核对每张切片"主文件 + 同名文件夹"同目录、文件夹内含 Slidedat.ini;缺失的主文件可新建同名空 .mrxs 文件放在数据文件夹旁(OpenSlide 官方邮件列表给出的补救法)。
  2. 进阶方法:写一个校验脚本遍历全部 509 张切片,断言三要素齐全再进入转换队列。
  3. SOTA 方法:下载完成后立即全量转 pyramid TIFF 并归档原始 MIRAX 为只读备份,之后所有实验只碰 TIFF。
    参考:image.sc 论坛 MRXS 讨论、OpenSlide 邮件列表

⚠️ 坑点 2:OpenSlide 只支持 8-bit MIRAX,高比特深直接打不开(分类:工程陷阱)

问题:OpenSlide 的 mirax 模块仅支持 8-bit 图像;16-bit 及以上的 MIRAX 文件无法读取,QuPath 经 OpenSlide 打开同样失败。官方推荐的工具链中 CaseViewer 才能处理高比特深并转换。
症状:QuPath 中图像经 Bio-Formats 打开但显示为低分辨率 JPEG 缩略图,或项目内图像返回 NULL;OpenSlide 直接抛出格式不支持。
解决:

  1. 简单方法:用官方 CaseViewer(下载带 Converter 的版本)导出为 TIFF/JPEG 后再进管线。
  2. 进阶方法:先用 CaseViewer 抽查比特深;确认 8-bit 的部分走 OpenSlide 直读,非 8-bit 的走 CaseViewer 批量转换。
  3. SOTA 方法:统一转换后校验全部切片的 openslide.mpp-x ≈ 0.25 与层级尺寸一致性,防止转换工具悄悄改变分辨率。
    参考:image.sc 论坛 MRXS 与 DAT 文件讨论

⚠️ 坑点 3:只有玻片级标签、没有区域标注,"全图 CNN"不可行(分类:标签理解)

问题:HEROHE 不提供肿瘤区域标注,一张 20x WSI 包含数万到数十万 256×256 patch;若把玻片级标签直接下放给每个 patch 当真值,背景与正常组织 patch 也会被赋予"阳性"标签。
症状:patch 级训练 Loss 居高不下或震荡;直接全图进网络显存 OOM;patch 级预测聚合后玻片级 AUC 远低于论文报告。
解决:

  1. 简单方法:组织 patch 过滤后取 patch 概率的最大值/前 k 均值作为玻片级预测(max-pooling MIL 的朴素版)。
  2. 进阶方法:注意力 MIL(ABMIL/CLAM):patch 冻结特征 → 门控注意力加权聚合 → 玻片级分类,端到端微调注意力头(§6.4 代码)。
  3. SOTA 方法:两阶段范式(Team Macaroon:CAMELYON16 预训练 ResNet34 提特征,256×256 patch,再聚合微调),或五阶段级联 MIL(Team MITEL:512×512 tile,1:2 下采样逐级精化)。
    参考:Conde-Sousa et al., 2022, J. Imaging 8(8):213

⚠️ 坑点 4:F1 阈值没调,AUC 高也会排名垫底(分类:评估误用)

问题:HEROHE 以 F1 为唯一排名指标,而 F1 依赖二分类阈值;固定 0.5 阈值会显著低估概率分布偏移的模型。挑战赛中 AUC 最高的队伍(Piaz,AUC 0.84)F1 只排第 3(0.64),而 AUC 0.71 的 Macaroon 以 0.68 夺冠——阈值与召回权衡直接改写排名。
症状:复现论文时 AUC 能对上、F1 对不上;自己模型的 F1 比预期低很多但排序指标正常。
解决:

  1. 简单方法:在训练集内验证折上扫描阈值(0.05-0.95 步长 0.05),取 F1 最大的阈值再用于测试集一次。
  2. 进阶方法:同时报告 AUC/precision/recall/F1 四指标(论文 Table 3 口径),并注明阈值来源与选择协议。
  3. SOTA 方法:报 PR 曲线并按临床代价选 operating point;排行榜对比时只与同协议数字并列。
    参考:挑战最终排名 Table 3

⚠️ 坑点 5:背景/空白 tile 混入聚合,玻片表征被"洗白"(分类:预处理陷阱)

问题:WSI 含大量纯背景像素;不做组织过滤就把全部 patch 送入特征提取器,背景特征会稀释甚至主导玻片级聚合向量。
症状:玻片特征 t-SNE 按背景占比聚类而不是按 HER2 状态聚类;训练收敛但验证 AUC 停留在 0.5-0.6;2024 年研究实测 509 张切片经背景 tile 过滤后仅剩 356 张可用(约 30% 被剔除)。
解决:

  1. 简单方法:灰度阈值法保留 tissue_fraction ≥ 0.5 的 patch(§6.3 第 2 步代码)。
  2. 进阶方法:HSV/Lab 双阈值 + 高斯平滑 + 形态学开运算,边缘伪影与电灼焦痂一并剔除。
  3. SOTA 方法:Otsu 自适应阈值 + 每张切片最少组织 patch 数门槛(如 ≥100 patch 才纳入训练),并统计每切片过滤日志以便复现。
    参考:Weakly-supervised deep learning models enable HER2-low prediction, Breast Cancer Research, 2024

⚠️ 坑点 6:22 个实验室的染色差异吃掉模型泛化(分类:偏倚陷阱)

问题:训练集来自 22 个、测试集来自 17 个实验室,固定、脱水、染色试剂与流程各不相同;模型很容易学到"哪个实验室的染色风格"而非 HER2 相关形态。官方 train/test 划分恰好是跨实验室分布,染色过拟合会在测试集上现形。
症状:训练集内部交叉验证 AUC 明显高于官方测试集成绩;注意力热图集中在组织边缘/大片区域而非细胞核。
解决:

  1. 简单方法:Macenko 染色归一化到固定参考切片(§6.3 第 3 步代码)。
  2. 进阶方法:训练期用随机染色浓度扰动(stain augmentation)替代/叠加确定性归一化。
  3. SOTA 方法:按实验室分组交叉验证量化染色泛化落差;或采用染色不变的自监督预训练表征。
    参考:Conde-Sousa et al., 2022(实验室数与划分)、Macenko et al., 2009, ISBI

⚠️ 坑点 7:测试集已公开,"全池训练"后不能再对榜(分类:数据泄漏)

问题:挑战结束后测试集标签随数据集一并公开;此后把 509 张全部并入训练(2024 年研究即如此使用)没有任何问题,但此时产出的成绩与官方 21 队排行榜不可比,混用会构成协议级泄漏。
症状:论文把全数据训练的 F1 与挑战排行榜并排引用;评审质问数字为何普遍高于 2020 年排行榜。
解决:

  1. 简单方法:明确标注协议——"官方划分成绩"或"全数据训练成绩"二选一口径。
  2. 进阶方法:自建基准时用训练集内 5 折分层交叉验证出数字,测试集只跑最终一次。
  3. SOTA 方法:双口径并报:官方划分(对榜)+ 全池交叉验证(对社区),并在表格中显式注明。
    参考:Conde-Sousa et al., 2022(协议与排名)

⚠️ 坑点 8:异质性病例被排除,真实世界会遇到"没见过"的切片(分类:偏倚陷阱)

问题:组织方明确排除了 HER2 异质性病例;而真实诊断队列中肿瘤内异质性与 IHC 2+ 灰区病例并不少见。在 HEROHE 上训练的模型面对这类分布外切片时缺乏校准依据。
症状:接入真实流水线后,灰区病例的预测概率大量落在 0.4-0.6 不确定带;阳性检出率与实验室内部预估明显不符。
解决:

  1. 简单方法:把模型定位为"预筛/复核提示"而非"诊断",输出不确定带并转人工。
  2. 进阶方法:在 TCGA-BRCA 等外部队列(可关联 HER2 临床状态)上做迁移评估。
  3. SOTA 方法:扩展为多级/HER2-low 预测头(2024 年 Breast Cancer Research 工作的思路),并报告校准曲线。
    参考:官方 Rules(排除标准)、HER2-low 弱监督研究, 2024

§6.6 数据增强:安全与危险

类别 操作 说明
✅ 安全 几何翻转/旋转、90° 旋转、随机裁剪 病理形态无方向先验,几何类增强全绿
✅ 安全 随机染色浓度扰动(H/E 通道独立缩放) 符合染色物理的 Lab 差异模拟,缓解坑点 6
✅ 安全 小幅亮度/对比度抖动、高斯模糊(模拟离焦) 扫描仪差异的近似模拟
❌ 危险 大幅色相旋转(Hue shift 全谱) 会把 H&E 染色特征改成"不可能出现"的颜色组合,破坏形态-分子关联
❌ 危险 强弹性形变 破坏核异型性、核分裂象等诊断特征,对分级相关形态是破坏性噪声
❌ 危险 patch 级随机打乱后当作独立样本计数 会造成同一玻片 patch 泄入验证折(坑点 7 的变体)

增强策略的取舍原则:几何类增强模拟"同一切片换视角",永远安全;染色类增强模拟"同一组织换染色批次",是本数据集最对症的增强(坑点 6),但幅度要克制——H/E 浓度缩放控制在 ±10% 左右即可,过强的颜色扰动会让模型连苏木紫与伊红粉的基本对比都学不稳。一切增强只在训练折上应用,验证/测试切片永远读原始像素。

§6.7 模型推荐

模型/范式 适用场景 关键要点
冻结 ImageNet ResNet18 + ABMIL 基线首选、单卡可跑 §6.4 代码即此路线;先冻结特征调注意力头
ResNet34 + CAMELYON16 预训练(两阶段) 对榜复现 Team Macaroon 冠军方案;256×256 patch;官方代码开源
五阶段级联 MIL 高召回场景 Team MITEL 方案;512×512 tile、1:2 下采样逐级精化
CLAM / TransMIL 方法研究 509 例规模恰好适配;注意按 slide 划分 CV
染色自监督预训练(内部训练集) 染色泛化研究 仅用训练集切片做自监督,防坑点 7 泄漏

选型排序建议:第一周用"冻结 ImageNet 特征 + ABMIL"建立完整闭环(含评估与阈值扫描),第二周再考虑换主干或聚合器——HEROHE 的排行榜数字表明 2020 年的前沿方法也不过是"好特征 + 稳聚合",先把协议跑对比堆模型更重要。

§6.8 硬件需求

阶段 最低配置 推荐配置 说明
MIRAX 转换 16 GB 内存 + 数百 GB 磁盘 64 GB 内存 + 2 TB SSD 转换为 CPU/IO 密集,并行按切片粒度展开
patch 提取 4 核 CPU 16 核 CPU + NVMe 509 张全量提取约需数十小时级 CPU 时间
MIL 训练(冻结特征) 单卡 8 GB(T4) 单卡 24 GB(3090/A10) 特征先离线缓存则训练极轻
MIL 微调 CNN 主干 单卡 16 GB 单卡 40 GB(A100) batch=1 玻片、梯度累积

§6.9 评估指标代码

# 与挑战协议对齐:F1 为主排名指标,同时报告 AUC/precision/recall;阈值在验证折上扫描
import numpy as np
from sklearn.metrics import f1_score, roc_auc_score, precision_score, recall_score

def evaluate(y_true, probs, thresholds=np.arange(0.05, 0.96, 0.05)):
    """y_true: 玻片级 0/1 数组;probs: 模型输出的阳性概率"""
    auc = roc_auc_score(y_true, probs)
    f1s = [f1_score(y_true, probs > t) for t in thresholds]
    best_t = float(thresholds[int(np.argmax(f1s))])          # 阈值必须来自验证折(坑点 4)
    pred = probs > best_t
    return {"AUC": round(auc, 2),
            "Precision": round(precision_score(y_true, pred), 2),
            "Recall": round(recall_score(y_true, pred), 2),
            "F1": round(max(f1s), 2),
            "threshold": best_t}

F1 是主排名指标,PR 曲线因此比 ROC 更贴近挑战的"排名叙事"(阴性多数且代价不对称时,PR 曲线对少数类更敏感):

# PR 曲线绘图:把 evaluate() 得到的 best_t 也画在曲线上,标注工作点
import matplotlib.pyplot as plt
from sklearn.metrics import precision_recall_curve

def plot_pr(y_true, probs, best_t, title="HEROHE test PR curve"):
    prec, rec, _ = precision_recall_curve(y_true, probs)
    plt.figure(figsize=(5, 4))
    plt.plot(rec, prec, lw=2)
    # 标注选定阈值的工作点
    pred = probs > best_t
    plt.scatter(recall_score(y_true, pred), precision_score(y_true, pred),
                c="red", zorder=3, label=f"threshold={best_t:.2f}")
    plt.xlabel("Recall"); plt.ylabel("Precision")
    plt.title(title); plt.legend(); plt.grid(alpha=0.3)
    plt.tight_layout(); plt.savefig("pr_curve.png", dpi=150)

§6.10 MLOps 笔记

  • 缓存优先:patch 坐标与冻结特征务必离线缓存(HDF5/parquet),否则每次 epoch 重读 MIRAX 会让训练慢一个数量级(落地脚本见 §6.3 第 4 步)。
  • 数据版本化:原始 MIRAX(只读)→ 转换 TIFF → 过滤后 patch 三层目录分别记录哈希/清单,对应"官方口径/转换口径/过滤口径"三套可复现状态。
  • 评估纪律:测试集只在最终评估接触一次;实验追踪(MLflow/W&B)中把"划分协议"作为独立字段记录,防止坑点 7 的口径混用。
  • 阈值入库存档:每次实验把 F1 最优阈值与验证折编号一起存档——换折复跑时阈值必须重扫,直接沿用旧阈值是常见的隐性评估错误。
  • 漂移监控:上线后的真实切片需按实验室/染色批次监控预测分布(PSI),染色风格漂移是最先出现的退化信号。
  • 许可合规自动化:在仓库 NOTICE 中固化 CC BY-NC-ND 3.0 引用条目与"禁止商用/禁止分发修改版"声明,随模型一同发布。

§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解措施
设计偏倚(标签配平) 两划分均人工配平为 40% 阳性,高于真实世界 15-20% 中 外部验证时按真实流行率重校准阈值与 PPV/NPV
转诊偏倚 22/17 个葡萄牙实验室转诊病例,覆盖面限于单一转诊网络 中 跨实验室分组 CV;外部队列验证
排除偏倚 HER2 异质性病例被组织方排除,灰区复杂病例不足 高 模型定位为预筛;外部含异质性队列验证(坑点 8)
性别偏倚 509 例中仅 2 例男性 低(对该任务) 不做性别亚组结论
种族信息缺失 种族分布未披露,公平性评估受限 中 引入多国队列后重新评估
设备单一 全部切片同一扫描仪/分辨率,扫描仪泛化未受考验 中 上线前用本机构扫描仪数据校准

§7.2 标注质量

金标准来自葡萄牙国家参考实验室(Ipatimup Diagnostics)的临床 IHC+ISH 双检测,执行 ASCO/CAP 2018 标准;116 例 IHC 质控子集显示敏感性 0.98、特异性 1.00、PPV 1.00、NPV 0.98——在临床标签体系内属极高可信度。局限:标签为玻片级二分类,不保留 IHC 分级信息;异质性病例被排除意味着标签对"困难病例"的代表性有限;逐例标注者信息未公开。

§7.3 泛化性评估

部署场景 失效风险 证据/机制
跨扫描仪(非 Pannoramic 1000) 高 全集单扫描仪,模型未见过其他扫描风格
跨染色流程(其他实验室) 中-高 官方 test 即跨实验室(17 个)设置,排行榜成绩已包含部分此类落差
真实就诊人群(15-20% 阳性率) 中 训练分布 40% 阳性,PPV/NPV 需按真实流行率重算
HER2 异质性/灰区病例 高 官方排除标准明确,属分布外(坑点 8)
活检小标本 vs 手术大标本 中-高 标本类型构成未逐例披露,组织量差异直接影响 patch 数量

§7.4 伦理

数据经 IPO Porto/Ipatimup 在发布前匿名化:WSI 文件、文件夹名与标签文件均不含患者标识;人口学信息仅以聚合统计公开。挑战组织方按机构伦理规范处理临床数据复用。数据集按 CC BY-NC-ND 3.0 仅限研究用途,基于数据的发表须通知组织方。

建模者侧的两条伦理提醒:其一,模型输出在缺乏前瞻性验证前不得以任何形式进入患者管理决策,即便在研究环境内也应明示"研究用途";其二,注意力热图等可解释性产物若用于学术展示,应避免暗示"AI 看到了病理医生未见的生物学事实"——在标签仅到玻片级的设定下,热图只能作为假设生成工具而非证据。

§7.5 公平性

  • 性别:507 女/2 男——女性主导(符合乳腺癌流行病学),男性亚组不可分析。
  • 年龄:24-93 岁全覆盖,中位 57-58 岁;无逐例年龄,无法做年龄分桶公平性量化。
  • 种族:未披露——跨人群部署前无法评估肤色/族裔相关偏倚,属已知盲区。
  • 地域:全部来自葡萄牙单国转诊网络,跨地域(尤其非欧洲人群与医疗体系)泛化完全未验证。

对建模操作的落地影响:2 名男性病例正常纳入训练即可(模型学习形态-分子映射,与性别无直接关系),但任何性别维度的消融与公平性结论都不可发表;种族盲区意味着跨大洲部署前必须做小规模本地队列校准,不能引用本数据集的任何内部一致性作为公平性证据。

§7.6 数据漂移

数据集为 2019-2020 年冻结快照(此后未更新)。真实病理实验室的主要漂移源:染色试剂批间差与供应商更换、扫描仪换代(扫描风格变化)、标本前处理流程调整、判读标准更新(ASCO/CAP 后续版本)。HEROHE 内部因设备统一而无法研究扫描仪漂移;22/17 实验室的染色多样性是其中唯一可内部模拟的漂移维度(按实验室分组的分布对比)。

监控实施的最小方案:为每个接入的真实实验室保留一份预测概率直方图,按周计算其与参考分布(训练集预测分布)的 PSI;连续两期 PSI > 0.2 的实验室触发复片抽样审计。这一方案不需要逐例真实标签即可运行,适合作为 HER2 模型上线后的第一道漂移防线。

§7.7 DAIMS 数据 AI 就绪度评估

# 检查项 状态 说明
1 宽格式 ✅ 标签 Excel 一行一例,结构扁平
2 唯一标识 ✅ slide_id(.mrxs 文件名)全集唯一,一例一张
3 特殊字符 ✅ 文件名与标签均为常规 ASCII,无编码风险
4 重复行 ✅ 一例一条,无重复(论文明确患者零重叠)
5 缺失编码 ✅ 标签无缺失,509 例全部有二分类结果
6 标签标识 ⚠️ 仅玻片级二分类;无 IHC 分级、无区域标注
7 罕见类分组 ⚠️ 男性仅 2 例,亚组无法分组分析
8 偏倚评估 ⚠️ 实验室/年龄聚合信息可评估,种族缺失
9 数据字典 ⚠️ 标签文件无官方 schema 文档,字段含义靠论文补充
10 信息性缺失解释 ✅ 无区域标注/无逐例协变量属官方明示设定(Rules 页)
11 设备记录 ✅ 扫描仪型号、倍率、分辨率全集统一且有文档
12 共线性 ✅ 图像任务无表格共线性问题;标签单变量
13 编码映射 ✅ 0/1 二分类直接可读,与临床 0/1+/2+/3+ 的映射由 ISH 兜底
14 时间戳处理 ⚠️ 采集/扫描日期未披露,无法做逐例时间分析
15 划分建议 ✅ 官方 train/test 划分明确且患者零重叠
16 泄漏讨论 ✅ 一人一张切片,结构上排除患者级泄漏;测试集公开后的协议问题可由本文 §5.3 规避
17 标签分布 ✅ 40/60 官方披露,两划分一致
18 测量偏倚 ⚠️ 22/17 实验室染色流程差异未逐例记录
19 外部验证建议 ⚠️ 无官方指南;社区已有 TCGA 联合训练实践可循
20 版本记录 ❌ 无版本号、无变更日志(仅时间轴事件可考)
21 预处理脚本 ❌ 官方无;社区有冠军开源代码(fastai/openslide)可作起点
22 合规要求 ✅ CC BY-NC-ND 3.0 明确,引用义务与发表通知条款清楚
23 多模态对齐 ✅ 单模态数据集,无跨模态对齐问题
24 去标识化 ✅ 发布前匿名化,文件/元数据/标签均无患者标识

DAIMS 评分:18.5 / 24

评分解读:✅ 15 项、⚠️ 7 项、❌ 2 项。扣分集中在两类:一是内容粒度(仅玻片级二分类、无区域标注、无 IHC 分级、无逐例协变量与时间戳)——这是挑战赛任务设计使然而非数据缺陷;二是工程配套(无官方数据字典、无版本管理、无预处理脚本)——典型的 2019 年代挑战赛产物,需要使用者自行补齐工程层。核心资产(金标准质量、患者级划分纪律、许可合规)全部满分。

对你意味着什么:可以直接把标签 Excel 与切片文件名对齐后立即开训(1/2/4/5/13/15/17 项全绿意味着"读进来就能用");必须在项目开始前自建三样东西——数据字典文档(把 §4.1 抄进你的仓库)、格式转换与背景过滤脚本(坑点 1/2/5)、划分协议声明(坑点 4/7);如果研究目标是分级预测或区域解释,这个数据集本身给不了,需要外接 TCGA 等补充标签(6/19 项)。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
TCGA-BRCA(535 张筛选后) TCGA 多中心(美国) HER2-low 弱监督预测 AUC 等(见原文) 与 HEROHE 联合训练 HEROHE 与 TCGA 联合可支撑 HER2-low 检测,验证形态-分子信号可跨队列迁移(Breast Cancer Research, 2024)
CAMELYON16(淋巴结转移) Radicó/UMC Utrecht 等 迁移预训练源 —(用作预训练) 任务不同、数据不重叠 作为 Macaroon 冠军方案的预训练源有效,说明病理通用特征可复用(JAMA, 2017 为其数据论文)

注:HEROHE 缺乏直接以"官方测试集 F1"为口径的跨数据集外部验证同行评审文献;上表仅收录有同行评审支撑的使用证据,空缺处不作推断。

使用建议:把上表理解为"迁移方向"而非"迁移承诺"——2024 年研究的联合训练证明了形态-分子信号可跨队列流动,但没有给出"HEROHE 单独训练 → TCGA 直接测试"的 AUC 数字;若你的研究需要这个数字,它本身就是一项可发表的空白。


§8 基准性能与生态

§8.1 排行榜(ECDP 2020 挑战最终排名,按 F1 降序)

以下为 21 支队伍在官方测试集(150 例)上的完整成绩,来源:Conde-Sousa et al., 2022, J. Imaging 8(8):213. DOI: 10.3390/jimaging8080213(Table 3)。⚠️ 各队方法与超参不同、多数未开源,数字用于横向理解挑战格局,不可作为可复现的"现成基线"直接引用到新论文中(协议见 §8.3)。

排名 队伍 AUC Precision Recall F1 备注
1 Macaroon 0.71 0.57 0.83 0.68 两阶段 ResNet34,CAMELYON16 预训练,256×256 patch;代码开源
2 MITEL 0.74 0.58 0.78 0.67 五阶段级联 MIL,512×512 tile,1:2 下采样
3 Piaz 0.84 0.77 0.55 0.64 AUC 全场最高但 F1 第 3(坑点 4 的经典案例)
4 Dratur 0.75 0.57 0.70 0.63
5 IRISAI 0.67 0.58 0.67 0.62
6 Arontier_HYY 0.72 0.52 0.73 0.61
7 KDE 0.62 0.51 0.75 0.61
8 joangibert14 0.66 0.48 0.78 0.60
9 VISILAB 0.63 0.51 0.73 0.60
10 MIRL 0.50 0.40 1.00 0.57 Recall 1.00(全预测阳性的极端权衡)
11 aetherAI 0.66 0.49 0.67 0.57
12 NCIC 0.63 0.52 0.62 0.56
13 biocenas 0.57 0.46 0.53 0.50
14 HEROH 0.59 0.46 0.53 0.49
15 Reza Mohebbian 0.61 0.51 0.43 0.47
16 mindmork 0.63 0.53 0.38 0.45
17 Institute of Pathology Graz 0.63 0.50 0.38 0.43
18 katherandco 0.44 0.44 0.40 0.42
19 QUILL 0.63 0.50 0.33 0.40
20 HEROHE_Challenge 0.48 0.37 0.27 0.31
21 UC-CSSE 0.47 0.31 0.27 0.29

§8.2 SOTA 总结与选型建议

  • 当前挑战冠军:Team Macaroon,F1 0.68 / AUC 0.71——两阶段范式(CAMELYON16 预训练 ResNet34 提 patch 特征 + 聚合分类),方法与代码已开源(fastai 2.7.5 + openslide-python),是复现与改进的第一起点。
  • AUC 口径最优:Team Piaz,AUC 0.84——说明"排序能力"与"工作点校准"是两件事;追求排序鲁棒选 Piaz 思路,追求实战 F1 选 Macaroon 思路。
  • 级联范式代表:Team MITEL(F1 0.67),五阶段由粗到精的 MIL 管线,适合作为多分辨率方法设计参考。
  • 选型建议:新方法研究先复现 Macaroon 作为基线;报告时同时给 F1(对榜)与 AUC(对排序能力);任何在 2020 年排行榜之上的新数字都应使用 §5.1 官方划分并声明协议(坑点 7)。
  • 改进方向一(表征):换用病理自监督预训练主干(仅用官方训练集切片自监督,防泄漏),观察 F1/AUC 相对 ImageNet 主干的增量。
  • 改进方向二(聚合):从 ABMIL 升级到 TransMIL/DSMIL 等关系建模聚合器——509 例的规模恰好不会让这些结构过拟合到不可用。
  • 改进方向三(染色鲁棒):以 §6.3 Macenko 管线为基线,对比"无归一化 / 确定归一化 / 染色增广"三档配置在官方测试集的落差,量化坑点 6 的影响。

§8.3 评测协议

  1. 官方固定划分:训练 359/360 例(含标签),测试 150 例(挑战期间标签保密,经 Grand Challenge 平台提交预测)。
  2. 主排名指标:阳性类 F1;同时记录 AUC、precision、recall(Table 3 口径)。
  3. F1 依赖阈值:队伍自行选择工作点——这既是协议规则,也是排名反转的根源(坑点 4)。
  4. 复现注意:赛后测试标签已公开;再对榜必须严格不改测试集、不调测试阈值。
  5. 提交形态:挑战期间各队经 Grand Challenge 平台提交玻片级预测;本地复现时按"每行 = slide_id + 阳性概率"组织预测文件即可与官方评估对齐。
  6. 多次提交规则:挑战期间的提交次数限制与最终模型选定规则以官方 Rules 页为准;本地实验建议自定"每日最多触碰测试集一次"的纪律以对齐该精神。
数据集 规模 与 HEROHE 的关系
TCGA-BRCA 3,111 WSI / 1,086 患者 最大公开乳腺 H&E 队列,可关联 HER2 临床状态做外部验证/联合训练
CAMELYON16 270 淋巴结 WSI 冠军方案的预训练源(任务为转移检测)
IMPRESS 126 WSI / 62 患者 同切片 H&E+IHC 配对 + HER2 评分,适合多模态对照
Post-NAT-BRCA 96 WSI / 54 患者 含 ER/PR/HER2 与区域标注,新辅助治疗后场景
SLN-Breast 130 WSI / 78 患者 前哨淋巴结转移基准,任务相邻但目标不同

相关数据集的选择顺序:做外部验证先看 TCGA-BRCA(规模与 HER2 标注可得性最优);做方法对照实验看 CAMELYON16(预训练与管线可复用);做"AI 能否看到 IHC 所见"的多模态研究看 IMPRESS;Post-NAT-BRCA 与 SLN-Breast 属于场景相邻的可选项。

§8.5 关键论文

  1. Conde-Sousa, E. et al., 2022, Journal of Imaging 8(8):213. DOI: 10.3390/jimaging8080213 — 挑战官方总结:数据集、21 队方法对照、指标选择讨论(本页第一引用)。
  2. La Barbera, D., Polónia, A., Roitero, K., Conde-Sousa, E., Della Mea, V., 2020, Journal of Imaging 6(9):82. DOI: 10.3390/jimaging6090082 — 参赛方法论文:级联深度学习分类器 + 多实例学习检测 HER2。
  3. Ehteshami Bejnordi, B. et al., 2017, JAMA 318(22):2199-2210. DOI: 10.1001/jama.2017.18452 — CAMELYON16 基准论文,冠军方法(Macaroon)的预训练数据来源。
  4. Macenko, M. et al., 2009, IEEE ISBI. DOI: 10.1109/ISBI.2009.5193250 — 染色归一化经典方法,应对多实验室染色差异的标准起点。
  5. “Weakly-supervised deep learning models enable HER2-low prediction from H&E stained slides”, 2024, Breast Cancer Research. DOI: 10.1186/s13058-024-01863-0 — HEROHE 的现代使用范例:与 TCGA 联合训练 HER2-low 预测,过滤后使用 356/509 张。
  6. “Publicly available datasets of breast histopathology H&E whole-slide images: A scoping review”, 2024, PMC10884505 — 乳腺 H&E WSI 公开数据集全景综述,将 HEROHE 纳入同类对比框架。

§8.6 社区活跃度

  • 官方 Grand Challenge 页面持续在线(主页/Dataset/Rules 三页完整),数据下载渠道(Google Drive)仍有效。
  • 冠军方法开源仓库(AndrewTal/HEROHE_Macaroon)2022-07 最后更新,含完整代码与框架图;依赖 fastai 2.7.5 与 openslide-python 1.2.0。
  • image.sc 论坛存在活跃的 MIRAX/MRXS 读取求助与解答串,是格式坑点的第一求助地。
  • 学术侧持续有后续工作把 HEROHE 用作训练/验证组件(2024 年 HER2-low 研究、scoping review 收录),基准地位稳定。
  • 官方许可条款明确要求基于数据的发表通知组织方,组织方维护公开论文列表——这也是追踪社区活跃度的官方渠道之一。

§8.7 生态快照

资源 类型 链接 推荐理由
挑战官方主页 官网 https://ecdp2020.grand-challenge.org/ 任务定义、时间线、新闻
Dataset 页 官方文档 https://ecdp2020.grand-challenge.org/Dataset 下载链接、格式说明、许可与引用要求
Rules 页 官方文档 https://ecdp2020.grand-challenge.org/Rules 参赛规则、排除标准、金标准流程
总结论文 论文 https://doi.org/10.3390/jimaging8080213 21 队完整排名与方法分析
Macaroon 开源代码 代码仓库 https://github.com/AndrewTal/HEROHE_Macaroon 冠军方法可运行实现(fastai + openslide)
image.sc MRXS 讨论 社区 https://forum.image.sc/t/mrxs-images-and-dat-files/67228/6 MIRAX 读取坑点的实战问答
OpenSlide 邮件列表 社区 https://lists.andrew.cmu.edu/pipermail/openslide-users/2011-April/000176.html .mrxs 缺失时的官方补救方法

§9 相关资源与引用

§9.1 官方资源清单

§9.2 社区与工具资源

§9.3 BibTeX 引用

@article{conde-sousa2022herohe,
  title   = {HEROHE Challenge: Predicting HER2 Status in Breast Cancer from Hematoxylin--Eosin Whole-Slide Imaging},
  author  = {Conde-Sousa, Eduardo and Vale, Jo{\~a}o and Feng, Ming and Xu, Kele and Wang, Yin and Della Mea, Vincenzo and La Barbera, David and Montahaei, Ehsan and Baghshah, Mahdieh Soleymani and Turzynski, Andreas and Gildenblat, Jacob and Klaiman, Eldad and Hong, Yiyu and Aresta, Guilherme and Ara{\'u}jo, Teresa and Aguiar, Paulo and Eloy, Catarina and Pol{\'o}nia, Antonio},
  journal = {Journal of Imaging},
  volume  = {8},
  number  = {8},
  pages   = {213},
  year    = {2022},
  doi     = {10.3390/jimaging8080213}
}

@article{labarbera2020detection,
  title   = {Detection of HER2 from Haematoxylin-Eosin Slides Through a Cascade of Deep Learning Classifiers via Multi-Instance Learning},
  author  = {La Barbera, David and Pol{\'o}nia, Antonio and Roitero, Krisztian and Conde-Sousa, Eduardo and Della Mea, Vincenzo},
  journal = {Journal of Imaging},
  volume  = {6},
  number  = {9},
  pages   = {82},
  year    = {2020},
  doi     = {10.3390/jimaging6090082}
}

@article{ehteshami2017diagnostic,
  title   = {Diagnostic Assessment of Deep Learning Algorithms for Detection of Lymph Node Metastases in Women With Breast Cancer},
  author  = {Ehteshami Bejnordi, Babak and Veta, Mitko and van Diest, Paul J. and others},
  journal = {JAMA},
  volume  = {318},
  number  = {22},
  pages   = {2199--2210},
  year    = {2017},
  doi     = {10.1001/jama.2017.18452}
}

@inproceedings{macenko2009method,
  title     = {A Method for Normalizing Histology Slides for Quantitative Analysis},
  author    = {Macenko, Marc and Niethammer, Marc and Marron, J. S. and Borland, David and Woosley, John T. and Guan, Xiaojun and Schmitt, Charles and Thomas, Nancy E.},
  booktitle = {IEEE International Symposium on Biomedical Imaging (ISBI)},
  pages     = {1107--1110},
  year      = {2009},
  doi       = {10.1109/ISBI.2009.5193250}
}

@misc{macaroon2022code,
  title        = {HEROHE\_Macaroon: Macaroon team's method for HEROHE challenge},
  author       = {{Macaroon team}},
  howpublished = {\url{https://github.com/AndrewTal/HEROHE_Macaroon}},
  year         = {2022},
  note         = {依赖 fastai 2.7.5 与 openslide-python 1.2.0;最后提交 2022-07-24}
}

§9.4 引用指南

  • 使用数据:必须引用 Conde-Sousa et al., 2022(DOI: 10.3390/jimaging8080213);如涉及参赛方法背景可另引 La Barbera et al., 2020——这是官方 Dataset 页明示的引用义务。
  • 使用挑战成绩:引用总结论文并注明指标口径(F1 主排名、阈值自选)与划分协议。
  • 发表义务:基于数据或挑战结果的(部分)发表须通知组织方,组织方维护公开论文列表。
  • 许可红线:CC BY-NC-ND——禁止商用;禁止分发修改后的材料(本地转换用于自用研究不受 ND 限制,但不得对外发布转换产物)。
  • 模型发布:模型权重不构成"修改后的材料",基于权重发布结果时仍应附本数据集的引用条目与许可声明。

§10 AI 使用声明卡

§10.1 AI 模型列表

模型 用途
fast-model(CodeBuddy Code 内置 LLM) 本页面的资料检索、事实整理、正文撰写与格式检查辅助

§10.2 AI 参与范围

本页面由 AI 写作 agent 在人类设定的写作规范(写作宪法 v1.0)约束下完成:检索(WebSearch/WebFetch)、事实清单(FACTS.md)、正文撰写、结构与格式自检。所有规模数字、日期、许可条款与基准成绩均来自 §10.3 所列公开来源;未在来源中查得的数字(数据总容量、逐例协变量、引用计数)按规则省略而非推测。

§10.3 输入来源列表

  1. Conde-Sousa, E. et al., 2022, Journal of Imaging 8(8):213. DOI: 10.3390/jimaging8080213
  2. HEROHE Grand Challenge 官方主页:https://ecdp2020.grand-challenge.org/
  3. HEROHE Dataset 页(下载、格式、许可):https://ecdp2020.grand-challenge.org/Dataset
  4. HEROHE Rules 页(金标准、排除标准):https://ecdp2020.grand-challenge.org/Rules
  5. 挑战最终排名 Table 3(Europe PMC 镜像):https://europepmc.org/article/view/PMC9410129/table/jimaging-08-00213-t003/version/1
  6. La Barbera, D. et al., 2020, Journal of Imaging 6(9):82. DOI: 10.3390/jimaging6090082
  7. Weakly-supervised deep learning models enable HER2-low prediction from H&E stained slides, 2024, Breast Cancer Research. DOI: 10.1186/s13058-024-01863-0
  8. Publicly available datasets of breast histopathology H&E whole-slide images: A scoping review, 2024, PMC10884505
  9. image.sc 论坛 MRXS/MIRAX 读取讨论:https://forum.image.sc/t/mrxs-images-and-dat-files/67228/6
  10. OpenSlide 用户邮件列表(.mrxs 缺失补救):https://lists.andrew.cmu.edu/pipermail/openslide-users/2011-April/000176.html
  11. Macaroon 团队开源仓库:https://github.com/AndrewTal/HEROHE_Macaroon
  12. Macenko, M. et al., 2009, IEEE ISBI. DOI: 10.1109/ISBI.2009.5193250

§10.4 人工校验记录

内容模块 审核者 审核方式 审核状态
§2 医学背景(HER2 生物学/金标准流程) 千方病案医学编辑部 逐条对照 ASCO/CAP 2018 与论文原文 ✅ 已通过
§3-§5 规格/结构/划分(全部硬数字) 千方病案医学编辑部 与 FACTS.md 来源逐项核对 ✅ 已通过
§6 AI 就绪指南与 8 个坑点 千方病案医学编辑部(数据工程) 代码逻辑走查 + 社区证据核对 ✅ 已通过
§7 DAIMS 评估与偏倚分析 千方病案医学编辑部 24 项逐项评估复核 ✅ 已通过
§8 排行榜与引用 千方病案医学编辑部 Table 3 全表 21 队数字逐格核对 ✅ 已通过
§9-§10 引用与声明 千方病案医学编辑部 BibTeX 字段与 DOI 逐条核验 ✅ 已通过

§10.5 AI 生成内容标注

正文 §1-§10 各章节初稿由 AI 生成;医学与技术描述经千方病案医学编辑部按 §10.4 记录的方式审核;三个免责声明段落为平台统一模板文本;JSON-LD(§C)由 AI 依据 frontmatter 序列化生成。

§10.6 最后人工审核日期

2026-09-05(与 §0 审核日期一致)

页面状态:published(全部内容已完成审核并发布)

本声明卡的三项关键承诺(模型用途、人工校验范围、审核日期)与 §0 E-E-A-T 声明及 §10.4 校验记录保持一致;如页面内容后续更新,以最近一次审核日期为准。


§C 结构化数据(JSON-LD)


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • CAMELYON16-17 — 共享标签:医学影像 / 病理图像 / 乳腺癌 / 肿瘤学
  • nucls — 共享标签:医学影像 / 病理图像 / 乳腺癌 / 肿瘤学
  • tupac16 — 共享标签:医学影像 / 病理图像 / 乳腺癌 / 肿瘤学
  • mitos-atypia-14 — 共享标签:医学影像 / 病理图像 / 乳腺癌 / 肿瘤学
  • BreakHis — 共享标签:医学影像 / 病理图像 / 乳腺癌 / 肿瘤学
  • BRACS — 共享标签:医学影像 / 病理图像 / 乳腺癌 / 肿瘤学
  • bcss — 共享标签:医学影像 / 病理图像 / 乳腺癌 / 肿瘤学
  • BCNB — 共享标签:医学影像 / 病理图像 / 乳腺癌
  • acrobat — 共享标签:医学影像 / 病理图像 / 乳腺癌
  • BACH — 共享标签:医学影像 / 病理图像 / 乳腺癌 / 肿瘤学

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集