信息速览

BACH — 乳腺癌组织学图像挑战赛数据集 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | BACH(Grand Challenge on BreAst Cancer Histology images, ICIAR 2018) |
| 英文全称 | BACH: Grand Challenge on Breast Cancer Histology Images |
| 别名/简称 | BACH、ICIAR 2018 BACH、ICIAR2018、BACH Challenge |
| 疾病分类 | ICD-11:2C61 乳腺浸润癌 / 2E65 乳腺原位癌 / 2C6Z 乳腺恶性肿瘤未特指;另覆盖乳腺良性病变(纤维腺瘤等,ICD-10 D24 对应)与正常乳腺组织 |
| SNOMED CT | 254837009 乳腺恶性肿瘤 / 82711006 Infiltrating duct carcinoma / 109889007 Ductal carcinoma in situ of breast / 77284006 LCIS / 1156873009 Fibroadenoma(详见 §2.2) |
| 数据模态 | 影像(H&E 染色组织学显微图像 + 全切片 WSI) |
| AI 任务类型 | 图像分类(Part A,4 类)、语义分割(Part B,像素级 4 类)、弱监督/半监督学习(20 张未标注 WSI) |
| 样本总数 | 500 张显微图像(400 训练 + 100 测试,四类各 100/25)+ 40 张 WSI(30 训练含 10 张像素级标注 + 10 测试) |
| 数据大小 | 13.4 GB(Zenodo 两个 zip:10.4 GB 训练包 + 3.0 GB 测试包) |
| 数据格式 | TIFF(显微图像 2048×1536 RGB)/ SVS(Aperio 金字塔 WSI)/ XML(像素级标注)/ CSV(图像级标签) |
| 许可证 | CC BY-NC-ND 4.0(署名-非商业-禁止演绎;发表论文须通知组织者) |
| 访问级别 | 开放(Zenodo 直接下载;grand-challenge 官网表单申请亦可) |
| DUO 标签 | HMB, NPUNCU |
| 语言 | 英文(文档与标签) |
| 首发日期 | 2017-11-01(训练集发布)/ 2019-08(Medical Image Analysis 期刊论文) |
| 最后更新 | 2020-01-31(Zenodo record 3632035 公开归档,此后无版本更新) |
| 发布机构 | INESC TEC & i3S(IPATIMUP/INEB)& 葡萄牙波尔图大学 |
| 官方主页 | https://iciar2018-challenge.grand-challenge.org/ |
| 下载地址 | https://zenodo.org/record/3632035 |
| DOI | 10.1016/j.media.2019.05.010(期刊论文)/ arXiv:1808.04277 |
| 引用次数 | 670+(Google Scholar,截至 2026-09;Semantic Scholar 595) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方患者隔离 train/test 划分 + Zenodo 直下 + 完全均衡标签 + 官方读取脚本;扣分项:样本量小、患者元数据仅部分可得、WSI 工程负担重、CC BY-NC-ND 限制演绎与商用 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、乳腺癌四类组织学定义、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(显微图像与 WSI/XML 结构)、§5 数据划分策略(患者级防泄漏)、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与 INESC TEC、i3S(IPATIMUP/INEB)、波尔图大学及 ICIAR 会议组委会无任何商业利益关联。本页面不销售 BACH 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。BACH 采用 CC BY-NC-ND 4.0 协议——禁止商业用途、禁止演绎再分发,引用须指向 Aresta et al. 2019(DOI: 10.1016/j.media.2019.05.010),且基于该数据发表的论文须通知挑战赛组织者。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
BACH 是葡萄牙 INESC TEC 与 i3S 研究所(IPATIMUP/INEB)为 ICIAR 2018 大会组织的乳腺癌组织学图像挑战赛数据集,包含 500 张 H&E 染色显微图像(400 训练 + 100 测试)和 40 张全切片 WSI,全部标注为 Normal(正常)、Benign(良性)、In situ(原位癌)、Invasive(浸润癌)四个临床类别,数据来自葡萄牙三家医院、由两名病理学家标注。
它的地位在于:这是计算病理学领域第一个大规模公开的四分类乳腺癌组织学基准——在它之前,乳腺癌 AI 研究几乎只有"癌 vs 非癌"二分类。挑战赛吸引全球 677 人注册、64 个有效提交,把四分类准确率从 77.8%(2017 年前身工作)推进到 87%,期刊论文被引 670 余次(截至 2026-09),至今仍是病理 AI 入门教学与小样本方法学研究的标配数据集。
你可以用它来:学习病理图像分类与 WSI 处理的基本功、在官方患者隔离协议下公平比较新模型(警惕:随机划分刷到 99% 的论文存在数据泄漏)、或者作为基础模型(UNI、CONCH 等)下游评测的标准小数据集。
§1.1 摘要
BACH 分为两个相互独立又可联合使用的部分。Part A(显微图像):400 张训练 + 100 张测试 RGB TIFF 图像,2048×1536 像素、0.42 µm/px(约 200 倍放大),由 Leica DM 2000 LED 显微镜 + ICC50 HD 相机拍摄,四类完全均衡;标签为图像级,取每张图像中的主导病变类型;测试集来自与训练集完全不重叠的患者。Part B(全切片):30 张训练 WSI(10 张带像素级 XML 标注,圈出 Benign / In situ / Invasive 区域,其余组织视为 Normal;20 张未标注,构成半监督设置)+ 10 张测试 WSI,由 Leica SCN400 扫描仪以 0.467 µm/px 数字化。所有病例来自 Ipatimup Diagnostics(波尔图与布朗库堡地区三家医院),标注由两名病理学家完成,Normal vs Benign 不一致的图像被剔除,其余存疑病例经免疫组化确认。数据集以 CC BY-NC-ND 4.0 协议经 Zenodo 公开(13.4 GB),显微图像训练集是 Araújo et al. 2017(PLoS ONE)所用 Bioimaging 2015 数据集的扩展。
§1.2 战略价值分析
任务设计维度:BACH 把乳腺癌 AI 从"检出癌症"推进到"临床分级"——Normal / Benign / In situ / Invasive 四类恰好对应临床处置强度递增的四个阶梯(随访 → 局部切除 → 广泛切除 ± 放疗 → 系统治疗)。这一设计迫使模型同时学习细胞级特征(区分癌与非癌)与组织结构级特征(区分原位与浸润——癌细胞是否突破基底膜),复刻了病理学家真实的诊断逻辑链。Aresta et al. 2019 的事后分析证实:表现最好的方法无一例外交给了"大感受野 + 上下文建模",这直接影响了此后计算病理学"patch 分类器 + 全局聚合"的主流架构范式。
生态推动维度:BACH 恰逢深度学习病理研究的爆发前夜(2017-2018),与 Camelyon16/17 共同构成乳腺病理 AI 的"双子基准"——Camelyon 考淋巴结转移检出,BACH 考原发灶组织学分型。此后八年,BACH 出现在数百篇论文的实验表中,从早期 CNN 微调(Brancati et al.)、两阶段 patch 框架(Kwok)、CNN+RNN 注意力(Yao et al. 2019),到 2024 年后的病理基础模型评测(kaiko-ai 的 eva 框架将 BACH 纳入患者级安全划分的标准评测集)。它几乎是每个病理 AI 研究者跑通的"第一个数据集"。
方法学警示维度:BACH 同时是"小样本基准被滥用"的教科书案例。由于官方测试集标签早已公开、患者级归属信息仅部分可得,大量后续论文采用随机图像级划分报告 95%-99.4% 的"惊人"准确率——同一名患者的多张图像同时出现在训练与测试侧,模型记住了患者而非学会了病理。官方协议下的可信上限至今仍在 0.87-0.92 区间。读懂 BACH 的正确打开方式,是理解整个医学影像 AI 评估方法学的最短路径。
§1.3 横向对比
| 数据集 | 规模 | 模态 | 标注粒度 | 任务 | 核心差异化 |
|---|---|---|---|---|---|
| BACH(本数据集) | 500 显微图像 + 40 WSI | H&E 显微 + WSI | 图像级 + 像素级(10 WSI) | 4 类分类 / 分割 | 四分类临床分级基准;官方患者隔离测试集;小样本方法学试金石 |
| Bioimaging 2015(前身) | 249 训练 + 36 测试 | H&E 显微 | 图像级 | 4 类分类 | BACH 的种子数据集,规模小一半 |
| BreakHis | 7,909 张(82 患者) | H&E 显微(40-400×) | 图像级 | 2/8 类分类 | 多放大倍率;仅良恶二分类主线 |
| BRACS | 4,539 个 ROI(547 WSI) | H&E WSI | ROI 级 | 7 类亚型分型 | 乳腺病变亚型更细,含非典型增生 |
| Camelyon16/17 | 400/1,000 WSI | H&E WSI(淋巴结) | 像素级 | 转移灶检出 | 乳腺前哨淋巴结转移,弱监督 MIL 主战场 |
| TCGA-BRCA | 1,000+ WSI | H&E WSI | 诊断级 | 多任务 | 多中心大队列,伴随基因组数据,无像素标注 |
BACH 的不可替代性在于三点:四类临床分级标签(BreakHis 主线只做良恶)、官方患者隔离的公开测试集(绝大多数小数据集没有)、以及显微图像 + WSI 的双粒度组合(可直接复现"patch 分类器 → WSI 聚合"的完整链路)。代价是规模小、单中心单设备。
§1.4 版本演进时间轴
| 时间 | 事件 |
|---|---|
| 2014-10 至 2015-03 | Bioimaging 2015 数据采集(Porto 与 Covilhã 患者) |
| 2015 | Bioimaging 2015 乳腺组织学分类挑战赛(BACH 前身) |
| 2017-06-01 | Araújo et al. 前身论文发表(PLoS ONE 12(6):e0177544;249 训练 + 20 测试 + 16 扩展测试) |
| 2017-11-01 | BACH 挑战赛网站上线,训练集发布(400 显微图像 + 30 WSI) |
| 2018-02-05 | 测试集发布(100 显微图像 + 10 WSI,患者完全不重叠) |
| 2018-03-12 | 挑战赛结果公布:677 注册、64 有效提交;Part A 冠军 0.87(并列)、Part B 冠军 0.6929 |
| 2018-06 | ICIAR 2018 会议论文集(LNCS 10882/10883),含 Kwok 冠军方案 |
| 2018-08-13 | 挑战赛论文 arXiv:1808.04277 预印本发布 |
| 2019-08 | Aresta et al. 期刊版发表(Medical Image Analysis 56:122-139) |
| 2020-01-31 | 数据集归档至 Zenodo(record 3632035,13.4 GB,CC BY-NC-ND) |
| 2020 起 | 赛后 Part A 提交通道重开(Part B 关闭);Yao et al. 报 0.91-0.92 |
| 2024-2026 | kaiko-ai/eva 等基础模型评测框架将 BACH 纳入患者级安全划分标准评测集 |
§1.5 典型 AI 应用场景
- 病理 AI 教学与快速原型:500 张 2048×1536 RGB 图像 + 完全均衡四类标签 + 单文件下载,是"从零训练第一个病理分类器"的最短路径,单卡 GPU 半天即可复现 85%+ 基线。
- 官方协议下的方法学比较:400 训练 / 100 测试(患者隔离)是社区公认的公平口径,适合验证新架构(ViT、Mamba、GNN)在小样本病理数据上的真实增益。
- WSI patch 分类器 + 聚合链路开发:利用 10 张像素级标注 WSI 训练/验证 patch 分类器,20 张未标注 WSI 做半监督,复现 Kwok 冠军方案的完整工程链路。
- 染色归一化与域偏移研究:单设备(Leica)来源使其成为干净的"源域",可与 BRACS、BreakHis、TCGA-BRCA 组成跨域泛化实验对。
- 基础模型下游评测:作为 eva(kaiko-ai)等框架的标准小样本分类基准,患者级安全划分(268/132)下评测 UNI、CONCH、Virchow 等病理基础模型的线性探测能力。
§2 医学背景
§2.1 ICD-11 疾病分类锚定
BACH 四类标签对应乳腺组织从正常到浸润性恶性变的完整病理谱系:
| BACH 标签 | 中文 | ICD-11 对应 | 说明 |
|---|---|---|---|
| Normal | 正常乳腺组织 | 无(正常解剖) | 腺体、间质结构正常,无增生性病变 |
| Benign | 良性病变 | ICD-10 D24 对应(乳腺良性肿瘤;ICD-11 乳腺良性病变章节) | 腺病、纤维腺瘤、叶状肿瘤、管状腺瘤等 |
| In situ carcinoma | 原位癌 | 2E65 乳腺原位癌(2E65.2 导管原位癌 DCIS / 2E65.0 小叶原位癌 LCIS) | 恶性上皮增生局限于基底膜内,无间质浸润 |
| Invasive carcinoma | 浸润癌 | 2C61 乳腺浸润癌(2C61.0 浸润性导管癌为最常见亚型) | 癌细胞突破基底膜进入间质,可发生转移 |
为什么"原位 vs 浸润"是整张数据集的分水岭:临床上,DCIS 与浸润性导管癌的治疗路径截然不同——前者以局部切除 ± 放疗为主、几乎不转移,后者需要分期评估、前哨淋巴结活检与系统治疗。病理学家区分两者的金标准是"癌细胞是否突破基底膜",这一判断依赖组织结构上下文而非单个细胞形态——这正是 BACH 任务设计逼模型学习大感受野特征的临床原因。四类按恶性潜能递增构成天然的**有序分类(ordinal classification)**结构,Benign 与 In situ 之间的边界(如非典型导管增生 ADH 与低级别 DCIS)即便在专家间也存在争议。
§2.2 SNOMED CT 映射
| BACH 标签 | ICD-11 | SNOMED CT | SNOMED CT 术语 |
|---|---|---|---|
| Invasive(以浸润性导管癌为代表) | 2C61.0 | 254837009 | Malignant neoplasm of breast (disorder);形态学 82711006 Infiltrating duct carcinoma (morphologic abnormality) |
| In situ(以 DCIS 为代表) | 2E65.2 | 109889007 | Ductal carcinoma in situ of breast (disorder);形态学 1162814007 |
| In situ(LCIS 亚型) | 2E65.0 | 77284006 | Lobular carcinoma in situ (morphologic abnormality) |
| Benign(以纤维腺瘤为代表) | —(ICD-10 D24) | 1156873009 | Fibroadenoma, no ICDO subtype (morphologic abnormality) |
| 检查操作背景 | — | 396226005 | 相关操作体系(乳腺活检病理检查族,供海外合规对照) |
§2.3 疾病简介
乳腺癌是全球女性最常见的浸润性癌症,影响超过 10% 的女性(Aresta et al. 2019 引述),也是癌症相关死亡的主要原因之一;早诊早治可显著提高治疗成功率。组织活检的显微镜分析是乳腺癌确诊的金标准:病理学家先在全切片尺度评估整体组织结构,再在高倍视野下评估细胞形态。这一过程耗时、昂贵,且专家间一致性并不理想——尤其在 Benign 与 In situ 边界(非典型增生 vs 低级别 DCIS)上。BACH 正是为推动这一判读过程的自动化而设:四类标签把"是否需要治疗干预、干预强度多大"的临床决策阶梯直接编码进了数据集。
§2.4 临床任务定义
| AI 任务 | 临床对应 | 操作化定义 | 关键难点 |
|---|---|---|---|
| Part A:显微图像四分类 | 高倍视野主导病变诊断 | 每张 2048×1536 图像取主导病变类型为图像级标签 | Benign vs In situ(官方混淆矩阵最大错误对);需兼顾细胞形态与组织结构 |
| Part B:WSI 像素级四分类 | 全切片病灶定位与分区 | 预测每个像素类别;XML 仅标注 Benign/In situ/Invasive 区域,其余视为 Normal 且不评估 | 切片达数万像素边长;仅 10 张标注 WSI;Normal 区域无显式标注 |
| 癌 vs 非癌二分类(派生) | 筛查分流 | Normal+Benign vs In situ+Invasive | 官方论文与多篇后续工作报告该口径,数值显著高于四分类 |
| 半监督 WSI 学习(派生) | 利用未标注切片 | 20 张"潜在病理"未标注 WSI 可作无标签数据 | 无 GT,无法直接评估 |
§2.5 患者人群特征
| 维度 | 特征 |
|---|---|
| 数据来源 | 病例来自 Ipatimup Diagnostics(葡萄牙),覆盖三家医院:Hospital CUF Porto、Centro Hospitalar do Tâmega e Sousa、Centro Hospitalar Cova da Beira |
| 地域 | 葡萄牙波尔图(Porto)与布朗库堡(Castelo Branco)地区 |
| 采集时间 | 2014、2015、2017 年三个批次 |
| 患者数 | 官方未公布精确患者数;显微图像患者级归属文件仅部分可得(匿名化限制),官方说明"未识别图像可安全假设来自与已识别图像不同的患者" |
| 性别/年龄 | 未公开(乳腺癌组织学队列,以女性为主) |
| 样本选择 | 图像经筛选使"病理分类可从图像内容客观确定"——即疑难/模糊病例被有意排除 |
| 测试集构成 | 100 张显微图像来自与训练集完全不重叠的患者 |
§2.6 金标准/参考标准
| 数据部分 | 标注方式 | 标注者 | 金标准性质 |
|---|---|---|---|
| 显微图像(400 训练 + 100 测试) | 图像级四分类,取主导病变类型 | 两名医学专家(IPATIMUP/i3S 病理学家) | 专家共识:Normal vs Benign 不一致的图像被丢弃;其余存疑病例经**免疫组化(IHC)**确认——病理学最高确认手段 |
| WSI 像素标注(10 张) | 像素级区域轮廓(XML 坐标),标注 Benign / In situ / Invasive 区域 | 一名病理学家标注 + 第二名专家复核 | 专家标注 + 复核;Normal 区域无显式标注 |
| WSI 未标注(20 张) | 无 | — | "潜在病理"切片,无 GT,供半监督使用 |
标注流程的隐含影响:不一致图像被剔除意味着数据集类别边界比真实临床分布"干净"——模型在 BACH 上学到的决策边界,不能直接外推到含非典型增生等灰色地带的临床流。这一点在 §7.1 偏倚表与 §7.3 泛化性讨论中展开。
§3 数据集规格
§3.0 版本抉择矩阵
BACH 没有版本迭代,但有两个任务子集和多个获取渠道、"一个前身数据集"的选型问题。30 秒选型:
| 你的需求 | 推荐选择 | 大小 | 理由 |
|---|---|---|---|
| 图像分类基准 / 教学 / 快速原型 | Part A 显微图像集(Zenodo 完整包) | 10.4 GB(含 WSI);若只要图像可单独解出 Photos 目录 | 400+100 官方患者隔离划分,社区可比口径最多 |
| WSI 分割 / patch+聚合链路 / 半监督 | Part B WSI 集(同一 Zenodo 包内 WSI 目录) | 训练 WSI 随 10.4 GB 包;测试 WSI 在 3.0 GB 包 | 10 张像素级标注 + 20 张未标注 + 10 张测试,自带 XML 标注与官方读取脚本 |
| 复现 2017 年前身工作 / 极小样本实验 | Bioimaging 2015 数据集(rdm.inesctec.pt/dataset/nis-2017-003) | 2.53 GB | 249 训练 + 20 测试 + 16 高歧义测试;注意其图像为 2040×1536,与 BACH 的 2048×1536 不同 |
| 基础模型线性探测 / 患者级安全划分 | eva 框架内置 BACH(kaiko-ai) | 复用 Zenodo 包 | 自带 268/132 患者级防泄漏划分索引,与 UNI/CONCH 等模型结果可比 |
| 只想在 Kaggle 上随手实验 | Kaggle 镜像 | 同 Zenodo | 免配置在线跑;⚠️ 页面将许可误标为 CC0,实际仍为 CC BY-NC-ND,商用/演绎仍被禁止 |
一句话结论:正式实验一律用 Zenodo 官方包并核对 md5;教学/原型可用 Kaggle 镜像;做基础模型评测直接用 eva 的患者级划分。
获取渠道对照:
| 渠道 | 地址 | 说明 |
|---|---|---|
| Zenodo(推荐) | https://zenodo.org/record/3632035 | 训练包 10.4 GB(md5:8ae1801334aa943c44627c1eef3631b2)+ 测试包 3.0 GB(md5:193704e3411f75bdd98d5cb93a2e56c8)+ LICENSE.txt + README.txt |
| grand-challenge 官网 | https://iciar2018-challenge.grand-challenge.org/Dataset/ | 填表后自动邮件发送下载凭证;同时可访问排行榜与患者归属文件 |
| Kaggle 镜像 | truthisneverlinear/bach-breast-cancer-histology-images | 第三方再分发(注意许可误标问题,见 §6.5 坑点 8) |
| eva(kaiko-ai) | https://kaiko-ai.github.io/eva/main/datasets/bach | 框架内自动下载 + 患者级安全划分索引 |
§3.1 模态详细说明
BACH 包含同一临床来源的两种影像粒度:
- 显微图像(microscopy images):高倍视野(约 200×)的 RGB TIFF 图像,2048×1536 像素,像素尺寸 0.42 µm × 0.42 µm,单张约 10-20 MB。每张图像取视野内主导病变类型作为图像级标签。细胞核半径约 3-11 像素(1.26-4.62 µm,Araújo et al. 2017 实测)——这决定了 patch 分类器的最小有效感受野(128×128 px 起步)。
- 全切片图像(WSI):Leica SCN400 扫描的 .svs 金字塔文件,像素尺寸 0.467 µm/px,尺寸可变(示例 42113×62625 px),单张 .svs 约 200-250 MB(展开为 numpy 数组约 8 GB)。每张 WSI 可同时包含 Normal / Benign / In situ / Invasive 多种区域,标注仅圈出后三类病变轮廓。
两种粒度的关系:显微图像相当于 WSI 的"局部细节特写"(细节取景,并非逐像素配准关系),Part B 冠军方案(Kwok)正是用显微图像 + WSI patch 联合训练 patch 分类器、再滑窗聚合到整片——这是此后 WSI 分类"两阶段法"的雏形。
§3.2 样本量拆分
| 子集 | 内容 | 数量 | 标签 |
|---|---|---|---|
| 显微图像 · 训练 | Normal / Benign / In situ / Invasive | 各 100,共 400 | 图像级(CSV + 目录结构) |
| 显微图像 · 测试 | 同上四类 | 各 25,共 100 | 图像级(患者与训练集完全不重叠) |
| WSI · 训练(标注) | 含三类病变区域轮廓 | 10 | 像素级(XML 坐标) |
| WSI · 训练(未标注) | "潜在病理"切片 | 20 | 无(半监督设置) |
| WSI · 测试 | 算法测试切片 | 10 | 提交制评估(赛后 Part B 通道已关闭) |
合计:500 张显微图像 + 40 张 WSI。
§3.3 数据格式详情
| 文件类型 | 格式 | 规格 | 说明 |
|---|---|---|---|
| 显微图像 | .tif(RGB,未压缩) | 2048×1536,0.42 µm/px | 文件命名含类别前缀:n###.tif / b###.tif / is###.tif / iv###.tif |
| 全切片 | .svs(Aperio) | 可变尺寸,0.467 µm/px,金字塔层级 | Leica SCN400 扫描;需 OpenSlide 读取 |
| WSI 标注 | .xml | 每个 ROI:轮廓坐标 (X,Y)(=列,行,原点左上)、区域标签、周长(µm)、面积(µm²)、像素尺寸 | 官方提供 Python 解析脚本 |
| 图像级标签 | .csv | 文件名 → 四类标签 | 训练集随包提供 |
| 患者归属 | 文本/CSV(Dropbox 链接) | 显微图像与 WSI 各一份 | 仅部分可得(匿名化限制) |
| 读取脚本 | .py | OpenSlide + opencv ≥ 3.2 | 官方随包提供 .svs 与 .xml 读取示例 |
§3.4 存储大小
| 形态 | 大小 | 备注 |
|---|---|---|
| Zenodo 训练包(ICIAR2018_BACH_Challenge.zip) | 10.4 GB | 含 400 显微图像 + 30 WSI + 脚本 + 患者文件 |
| Zenodo 测试包(ICIAR2018_BACH_Challenge_TestDataset.zip) | 3.0 GB | 含 100 显微图像 + 10 WSI |
| 显微图像部分(解出) | 约 6-8 GB | 400+100 张 × 10-20 MB |
| 单张 WSI(.svs) | 200-250 MB | numpy 展开约 8 GB(见 §6.5 坑点 6) |
§3.5 标注方式
- 显微图像:两名医学专家(IPATIMUP / i3S 病理学家)独立给出图像级四分类;Normal 与 Benign 之间不一致的图像被直接丢弃;其余存疑病例经免疫组化(IHC)确认。标签反映图像内主导病变类型。
- WSI(10 张):一名病理学家勾画病变区域轮廓,第二名专家复核;XML 记录每个 ROI 的轮廓坐标、标签、周长与面积。未被圈出的组织一律视为 Normal,且不参与评估。
- WSI(20 张):有意不提供标注,作为半监督/弱监督资源。
§3.6 标注者资质
| 维度 | 信息 |
|---|---|
| 标注者 | IPATIMUP / i3S 执业病理学家(含 Catarina Eloy MD PhD、António Polónia MD 等团队成员) |
| 人数 | 显微图像:2 名独立标注;WSI:1 名标注 + 1 名复核 |
| 一致性处理 | 不一致图像丢弃(非投票/仲裁);存疑病例 IHC 确认 |
| 一致性统计 | 官方未公布 kappa 值;论文仅报告不一致样本被剔除的规则 |
§3.7 数据采集时间范围
显微图像采集于 2014、2015、2017 年三个批次;前身 Bioimaging 2015 子集采集于 2014-10 至 2015-03。WSI 数字化使用 Leica SCN400 扫描仪,具体时间未单独披露。
§3.8 地理覆盖
单一国家(葡萄牙)、单一诊断实验室(Ipatimup Diagnostics)、三家医院。单一实验室 + 单一设备链是 BACH 最核心的泛化性限制(详见 §7.3)。
§3.9 采集设备规格
| 环节 | 设备 | 关键参数 |
|---|---|---|
| 显微图像拍摄 | Leica DM 2000 LED 显微镜 + Leica ICC50 HD 相机 | 约 200× 放大;0.42 µm × 0.42 µm;2048×1536 RGB |
| WSI 数字化 | Leica SCN400 扫描仪 | 0.467 µm/px;.svs 金字塔 |
| 染色 | 标准 H&E(苏木精-伊红) | 单一实验室染色流程 |
| 疑难确认 | 免疫组化(IHC) | 用于存疑病例的最终判定 |
§3.10 深度溯源链
| 环节 | 系统/方法 | 关键转换 |
|---|---|---|
| 1. 临床来源 | 三家医院乳腺活检/手术标本 → Ipatimup Diagnostics 诊断流程 | 常规 H&E 制片;病例选择使图像可客观判读 |
| 2. 图像采集 | Leica DM 2000 LED + ICC50 HD(显微视野);Leica SCN400(全切片) | 2014/2015/2017 三批次;统一 0.42 与 0.467 µm/px |
| 3. 标注 | 双病理学家图像级标注(不一致剔除 + IHC 确认);WSI 单标注 + 复核 | 生成四类图像标签与 XML 区域轮廓 |
| 4. 匿名化 | 患者关联信息部分移除 | 患者级文件仅部分可得;官方声明未识别图像来自不同患者 |
| 5. 挑战赛发布 | grand-challenge 平台(2017-11-01 训练 / 2018-02-05 测试) | 测试集患者完全不重叠;677 注册 / 64 提交 |
| 6. 长期归档 | Zenodo record 3632035(2020-01-31) | 13.4 GB 两包 + LICENSE/README;CC BY-NC-ND |
§4 数据结构详解
§4.0 目录结构预览
ICIAR2018_BACH_Challenge/ # Zenodo 训练包(10.4 GB)
├── Photos/ # 400 张训练显微图像
│ ├── Normal/ n001.tif ... n100.tif
│ ├── Benign/ b001.tif ... b100.tif
│ ├── InSitu/ is001.tif ... is100.tif
│ └── Invasive/ iv001.tif ... iv100.tif
├── WSI/ # 30 张训练 WSI
│ ├── A01.svs ... A10.svs # 10 张有像素级标注
│ ├── A01.xml ... A10.xml # 对应 XML 区域标注
│ └── (另 20 张未标注 .svs)
├── code/ # 官方读取脚本(OpenSlide + opencv)
├── patient_microscopy / patient_wsi # 患者级归属文件(部分可得)
└── LICENSE.txt / README.txt
ICIAR2018_BACH_Challenge_TestDataset/ # Zenodo 测试包(3.0 GB)
├── Photos/ # 100 张测试显微图像(四类各 25,同名前缀)
└── WSI/ # 10 张测试 WSI
注意:Kaggle 等第三方镜像的目录层级(如 train/test 并列、Photos 命名)与 Zenodo 原包略有差异;显微图像张数在个别镜像中与官方 400 张口径不一致(见 §6.5 坑点 3)。一切口径以 Zenodo 包 + md5 校验为准。
§4.1 DAIMS 标准化字段描述表
表一:显微图像(image-wise,每行一张图像)
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| image_id | string | 文件名(类别前缀 + 序号) | “is042.tif” | 主键;前缀即弱标签来源 | 无 | 不允许缺失 | n/b/is/iv + 001-100(测试集同模式) |
| image | RGB uint8 矩阵 | 2048×1536×3 像素阵列 | — | 模型输入 | 染色/对焦差异 | 不允许缺失 | 0-255 |
| label | categorical | 主导病变类型(图像级) | “InSitu” | 分类靶标 | 专家不一致样本已被剔除(清洗偏差) | 不允许缺失 | Normal / Benign / InSitu / Invasive |
| split | categorical | 官方划分 | “train” | 评估协议 | 无 | 不允许缺失 | train(400)/ test(100) |
| patient_id | string | 患者归属(部分可得) | “p012” | 防泄漏分组 | 匿名化致部分不可恢复 | 未识别者视为互不相同(官方假设) | 部分缺失 |
表二:WSI 像素级标注(每个 ROI 一条记录,源自 XML)
| 字段名 | 数据类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| wsi_id | string | 所属切片文件名 | “A03.svs” | 关联键 | 无 | 不允许缺失 | 10 张标注 WSI |
| vertices | (X,Y) 坐标列表 | ROI 轮廓顶点;X,Y = 列,行,原点左上 | “[(12034, 8871), …]” | 生成像素级 mask | 轮廓为人工勾画,边界平滑 | 不允许缺失 | 像素坐标(最高分辨率层级) |
| region_label | categorical | 区域类别 | “Invasive” | 分割靶标 | 专家勾画 + 复核 | 不允许缺失 | Benign / InSitu / Invasive |
| perimeter | float | 区域周长(µm) | 4532.7 | 区域规模特征 | 由坐标换算 | 不允许缺失 | >0 |
| area | float | 区域面积(µm²) | 812345.0 | 区域规模特征 | 由坐标换算 | 不允许缺失 | >0 |
| (未圈出组织) | — | 视为 Normal 且不评估 | — | 背景 | 无显式标注——最易误读点 | 隐式缺失(MNAR:未标注 ≠ 确认正常) | — |
§4.2 标签分布统计
| 口径 | Normal | Benign | In situ | Invasive | 说明 |
|---|---|---|---|---|---|
| 显微图像 · 训练 | 100(25%) | 100(25%) | 100(25%) | 100(25%) | 完全均衡(人为设计,不反映真实患病率) |
| 显微图像 · 测试 | 25(25%) | 25(25%) | 25(25%) | 25(25%) | 同上 |
| WSI 像素(10 张标注) | 占绝大面积 | 少量区域 | 少量区域 | 少量区域 | 像素级极度不均衡:三类病变区面积远小于背景/正常区 |
均衡标签的双刃剑:四分类任务中 accuracy 是合法主指标(挑战赛官方指标即 accuracy);但这也使模型学不到类别先验——部署到真实流(Normal/Benign 远多于癌)时必须重新校准阈值与先验。
§4.3 关键字段描述性统计
- 显微图像:400 训练 + 100 测试;单张 2048×1536×3 ≈ 9.4 Mpx;文件 10-20 MB。
- 细胞核半径约 3-11 px(1.26-4.62 µm)——128×128 px patch 即可覆盖诊断相关组织结构(Araújo et al. 2017)。
- WSI:示例尺寸 42113×62625 px;单张 .svs 200-250 MB;10 张标注 WSI 的 ROI 数量从个位数到数十个不等。
- 挑战赛官方混淆矩阵(Aresta et al. 2019 §4 分析):最大混淆对为 Benign ↔ In situ;Invasive 识别相对容易(结构破坏明显)。
§4.4 数据层级关系
患者(patient_id,部分可得)
├─ 显微图像 ×N(image_id;同一患者可贡献多张,通常同类)
│ └─ 图像级标签(主导病变)+ train/test 归属
└─ WSI ×1(wsi_id)
├─ ROI ×N(vertices, region_label, area, perimeter)—— 仅 10 张
└─ 未圈出组织 → 视为 Normal(不评估)
- 显微图像与 WSI 不是逐像素配准关系——前者是独立取景的高倍视野,不可直接映射回某张 WSI 的坐标系。
- 患者级文件是防泄漏划分的唯一官方依据,但仅部分可得(见 §6.5 坑点 1)。
§4.5 缺失值情况与信息性缺失编码
| 缺失类型 | 位置 | 缺失原因 | 信息性缺失编码 | 对 AI 的影响 |
|---|---|---|---|---|
| 部分患者 ID 不可恢复 | patient_microscopy 文件 | 匿名化流程 | 官方假设:未识别图像来自与已识别图像不同的患者 | 无法构建完全无泄漏的患者级划分——只能"部分约束 + 假设" |
| WSI Normal 区域无标注 | 10 张标注 WSI | 标注协议只圈病变 | 未标注 ≈ Normal,但未经病理学家逐像素确认 | 把"未标注"当确认 Normal 训练会引入标签噪声(见坑点 5) |
| 20 张训练 WSI 无 GT | WSI 训练集 | 挑战赛半监督设计 | 完全缺失 | 仅可用于无标签预训练/半监督 |
| 测试 WSI 无公开 GT | WSI 测试集 | 提交制评估 | 完全缺失;赛后 Part B 通道已关闭 | 新研究实际无法在官方协议下评估 Part B——多数论文转向自划协议 |
§5 数据划分与使用建议
§5.1 官方数据划分
官方协议(强烈推荐的唯一可比口径):
- 显微图像:400 训练(各类 100)/ 100 测试(各类 25),测试集患者与训练集完全不重叠(Aresta et al. 2019 §2.2.1 明确)。
- WSI:30 训练(10 标注 + 20 未标注)/ 10 测试;Part B 评估原为提交制,赛后该通道已关闭,新论文无法在官方 Part B 协议下评分。
- 赛后 Part A 提交通道在 grand-challenge 平台重开,仍可获得官方测试集 accuracy(如 Yao et al. 0.91-0.92)。
§5.2 推荐划分策略
- 首选:官方 400/100 协议——与挑战赛 64 个提交及赛后结果直接可比。
- 需要验证集时:从 400 张训练集中按患者级再切(如 300/100),患者归属依据官方 patient_microscopy 文件 + "未识别即不同患者"假设;或直接采用 eva 框架发布的患者级安全划分索引(268 训练 / 132 验证)。
- 交叉验证:若必须 k-fold,用
GroupKFold(groups=patient_id);已知患者缺失的图像按"一图一组"处理,避免任何同患者图像跨折。 - 禁止:把 500 张显微图像合并后随机图像级划分——这是文献中 95%-99% 虚高数字的主要来源(见 §6.5 坑点 1、2)。
from sklearn.model_selection import GroupShuffleSplit
# df: image_id, label, patient_id(未知患者填 "unknown_<image_id>",即一图一组)
gss = GroupShuffleSplit(n_splits=1, test_size=0.25, random_state=42)
tr_idx, va_idx = next(gss.split(df, groups=df["patient_id"]))
assert set(df.iloc[tr_idx].patient_id) & set(df.iloc[va_idx].patient_id) == set()
§5.3 数据泄漏风险防御
| # | 泄漏模式 | 严重程度 | 防御措施 |
|---|---|---|---|
| 1 | 随机图像级划分:同患者多张图像分到两侧 | 高(文献主流错误) | GroupShuffleSplit / eva 患者级索引 |
| 2 | patch 级泄漏:同一张 2048×1536 图像切出的 patch 分到两侧 | 高 | 切 patch 前先按图像/患者划分,patch 继承母图像归属 |
| 3 | 用已公开的 100 张测试集做模型选择/早停 | 高(自适应过拟合) | 测试集只在最终评估用一次;调参走独立验证集 |
| 4 | 把 Bioimaging 2015 的 249 张当外部测试集 | 中 | 注意 BACH 训练集是该数据集的扩展——两者图像重叠,绝非外部验证 |
| 5 | 数据增强先于划分(整图旋转/翻转副本跨侧) | 中 | 所有增强只在划分后的训练侧进行 |
§5.4 交叉验证建议
- 样本量小(400 训练):报告 5 折患者级分组交叉验证的均值 ± 标准差,比单次划分更稳健。
- 与文献比较时务必注明口径:
official test/patient-level k-fold/image-level k-fold三种数字不可混排。
§5.5 外部验证
BACH 单中心单设备,外部验证应成为常规步骤:BRACS(意大利 CNR,7 类乳腺亚型 ROI)、BreakHis(巴西,多倍率显微图像)、TCGA-BRCA(多中心 WSI)。注意标签体系需先映射(BACH 四类 → 目标集类别)。已有研究将 BACH 训练模型直接测试 Bioimaging2015(75% 四分类,Egriboz & Bilgin 2020)与 BRACS/AIDPATH(J Imaging 2024 的 ViT 泛化研究)——性能下降明显,详见 §7.8。
§6 AI 就绪指南
§6.0 云端快速启动
零门槛路径:BACH 无需任何认证——Zenodo 直链下载即可在 Colab 免费 GPU 上跑通。推荐组合:Zenodo 训练包中解出
Photos/(约 6-8 GB)→ 挂载 Google Drive → 以 ResNet-50 迁移学习在 400 张训练图上微调(patch-free 整图缩放到 512×512 亦可起步),约 30-60 分钟可得 80%+ 验证准确率的基线。更省事:Kaggle 镜像(truthisneverlinear/bach-breast-cancer-histology-images)已内置在 Kaggle Notebook 环境中,免下载直接引用;注意其许可标注有误(实为 CC BY-NC-ND)。
基础模型评测:kaiko-ai/eva 框架一条命令下载 BACH 并套用患者级安全划分(train 268 / val 132),与 UNI、CONCH 等模型的公开结果直接可比。
§6.1 快速上手(PyTorch 版)
# ========================================
# BACH 快速上手 — PyTorch 版(Part A 四分类)
# 环境要求: torch>=2.0, torchvision, pandas, Pillow
#
# ⚠️ 目录结构预期:
# 请将 Zenodo 训练包解压至 ./data/,确保以下结构:
# ./data/
# ├── Photos/
# │ ├── Normal/ n001.tif ... n100.tif
# │ ├── Benign/ b001.tif ... b100.tif
# │ ├── InSitu/ is001.tif ... is100.tif
# │ └── Invasive/ iv001.tif ... iv100.tif
# └── TestDataset/Photos/ # 官方 100 张测试集(四类子目录同名)
#
# data_root 约定为 "./data/Photos";图像路径 = data_root/类别/文件名
# ========================================
import os
from PIL import Image
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms, models
import torch.nn as nn
CLASSES = ["Normal", "Benign", "InSitu", "Invasive"]
class BACH(Dataset):
def __init__(self, root, tfm):
self.samples = [(os.path.join(dp, f), CLASSES.index(os.path.basename(dp)))
for dp, _, fs in os.walk(root) for f in fs if f.endswith(".tif")]
self.tfm = tfm
def __len__(self):
return len(self.samples)
def __getitem__(self, i):
path, y = self.samples[i]
return self.tfm(Image.open(path).convert("RGB")), y
tfm = transforms.Compose([
transforms.Resize((512, 512)), # 2048x1536 -> 512 起步;进阶用 224 patch 滑窗
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
])
train_ds = BACH("./data/Photos", tfm)
train_loader = DataLoader(train_ds, batch_size=8, shuffle=True, num_workers=4)
model = models.resnet50(weights="IMAGENET1K_V2")
model.fc = nn.Linear(model.fc.in_features, 4) # 400 张训练图,单卡数分钟/epoch
§6.2 数据获取流程
| 获取方式 | 链接/位置 | 大小 | 流程 |
|---|---|---|---|
| Zenodo(推荐) | https://zenodo.org/record/3632035 | 10.4 GB + 3.0 GB | 直接下载,无需注册;下载后核对 md5:8ae1801334aa943c44627c1eef3631b2(训练)/ 193704e3411f75bdd98d5cb93a2e56c8(测试) |
| grand-challenge 官网 | https://iciar2018-challenge.grand-challenge.org/Dataset/ | 同左 | 填表 → 自动邮件发送专属凭证与下载链接;可同时获取患者归属文件与排行榜入口 |
| Kaggle 镜像 | truthisneverlinear/bach-breast-cancer-histology-images | 同左 | kaggle datasets download 或 Notebook 内直接引用;⚠️ 许可标注误为 CC0 |
| eva 框架 | eva Python 包 download=True |
复用 Zenodo | 自动下载 + 患者级安全划分索引 |
合规义务(CC BY-NC-ND 4.0):署名引用 Aresta et al. 2019;不得商业使用;不得演绎再分发修改后的数据;基于数据的发表论文须通知挑战赛组织者(官网 Dataset 页明示)。
§6.3 预处理 Pipeline
<details>
<summary><b>点击展开完整预处理代码(染色归一化 + patch 提取 + 患者级划分)</b></summary>
# 步骤 1:染色归一化(Macenko;小数据集同设备来源可选,跨域实验建议开启)
# pip install staintools
import staintools
normalizer = staintools.StainNormalizer(method="macenko")
target = staintools.read_image("./data/Photos/Normal/n001.tif")
normalizer.fit(target)
def norm(img):
return normalizer.transform(staintools.LuminosityStandardizer.standardize(img))
# 步骤 2:患者级划分(在切 patch 之前完成!)
import pandas as pd
from sklearn.model_selection import GroupShuffleSplit
df = pd.read_csv("patient_microscopy.csv") # 官方患者归属文件(部分图像缺失患者 ID)
df["patient_id"] = df["patient_id"].fillna(
pd.Series(["unknown_" + s for s in df["image_id"]], index=df.index)) # 一图一组
gss = GroupShuffleSplit(n_splits=1, test_size=0.25, random_state=42)
tr, va = next(gss.split(df, groups=df["patient_id"]))
train_df, val_df = df.iloc[tr], df.iloc[va]
# 步骤 3:patch 提取(224x224,步长 112;继承母图像标签与患者归属)
from PIL import Image
import numpy as np
def extract_patches(row, out_dir, size=224, stride=112, tissue_thr=0.75):
img = np.array(Image.open(row["path"]).convert("RGB"))
H, W = img.shape[:2]
for y in range(0, H - size + 1, stride):
for x in range(0, W - size + 1, stride):
patch = img[y:y+size, x:x+size]
# 组织含量过滤:H&E 背景近白色,灰度均值>220 的像素视为背景
if (patch.mean(axis=2) > 220).mean() > 1 - tissue_thr:
continue
name = f"{row['image_id']}_{y}_{x}.png"
Image.fromarray(patch).save(f"{out_dir}/{row['label']}/{name}")
# 步骤 4:训练侧增强(几何 + 轻微色彩抖动;禁止跨划分增强)
from torchvision import transforms
train_tfm = transforms.Compose([
transforms.RandomHorizontalFlip(), transforms.RandomVerticalFlip(),
transforms.RandomRotation(90),
transforms.ColorJitter(brightness=0.1, contrast=0.1, saturation=0.1, hue=0.02),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
])
</details>
WSI 处理(Part B):使用 OpenSlide 读取 .svs 金字塔(建议先在低倍层级定位组织区,再回最高层级取 patch);官方 XML 解析脚本返回每个 ROI 的轮廓坐标、标签、周长、面积与像素尺寸,可用 shapely + rasterio(或 cv2.fillPoly)栅格化为像素级 mask。Kwok 冠军方案的做法值得复用:显微图像 + WSI patch 混合训练 patch 分类器(Inception-ResNet-v2),再对整片滑窗 + 概率图聚合。
§6.4 框架加载
# PyTorch Lightning / torchvision 之外的两个高频选项:
# 1) HuggingFace datasets + eva 患者级划分(基础模型线性探测标准流程)
# pip install eva
# eva 内置 BACH dataset class:download=True 自动拉取 Zenodo 包,
# 划分索引已按患者约束生成(train 268 / val 132)。
# 2) TensorFlow
import tensorflow as tf
ds = tf.keras.utils.image_dataset_from_directory(
"./data/Photos", image_size=(512, 512), batch_size=8,
validation_split=0.25, subset="both", seed=42) # ⚠️ 注意:该划分是图像级随机,
# 仅适合快速冒烟,正式实验必须用患者级划分
§6.5 常见坑点
⚠️ 坑点 1:随机图像级划分——99% 准确率神话的来源(分类:数据泄漏)
问题:同一患者可贡献多张显微图像(通常同类),随机图像级划分会把同一患者的图像分到训练与测试两侧,模型记住患者染色/纹理指纹而非病理特征。文献中大量 95%-99.4% 的 BACH"高分"由此产生。
症状:验证/测试准确率异常高(>95%),但按官方 400/100 协议复现时骤降至 85%-92%;训练损失趋零而泛化极差。
解决:使用官方 patient_microscopy 归属文件做
GroupShuffleSplit(groups=patient_id);未知患者按"一图一组"处理;或直接采用 eva 发布的患者级安全划分(268/132);与文献比较时只认official test与patient-level口径。参考:kaiko-ai/eva BACH 文档(患者泄漏与划分设计说明);Aresta et al. 2019 §2.2.1(测试集患者不重叠)。
⚠️ 坑点 2:官方 400+100 协议被忽视——三种口径的数字不能混排(分类:评估误用)
问题:官方协议为 400 训练 / 100 测试(患者隔离),挑战赛冠军 0.87、赛后最佳约 0.92;但许多论文把 500 张合并后随机划分甚至把公开的测试集用于调参,导致数值体系彻底混乱。
症状:同一模型在不同论文表格中"排名"忽高忽低;复现别人论文时准确率差 5-15 个点。
解决:论文方法部分强制注明口径三选一——
official test (400/100)/patient-level k-fold/image-level k-fold (不推荐);调参与早停用独立验证集,官方测试集只用一次;优先向 grand-challenge 赛后通道提交获取官方评分。参考:grand-challenge Legacy-results 页(官方排行榜);J Imaging 2024(MDPI)§2.1.1(赛后提交与口径说明)。
⚠️ 坑点 3:再分发版本张数不一致(400 vs 408)(分类:工程陷阱)
问题:官方挑战赛口径为 400 张训练显微图像(每类 100);但 eva 文档记录 Zenodo 版 Photos 目录实为 408 张(每类 102),Kaggle 等镜像的文件清单又与 Zenodo 原包存在差异——不同来源"BACH 训练集"张数可能不同。
症状:与别人论文中的样本数对不上;划分索引应用到本地下载的数据时越界或错位。
解决:下载后先核对 md5 与逐类文件计数(
ls Photos/*/ | wc -l);在论文/日志中记录所用来源(Zenodo/Kaggle/eva)与张数;以官方挑战赛 400+100 为报告口径,多余文件单列说明或剔除。参考:Zenodo record 3632035(md5 与文件清单);eva BACH 文档(408 张记录)。
⚠️ 坑点 4:类别边界自带"清洗偏差",Benign ↔ In situ 是最大混淆对(分类:标签理解)
问题:官方标注流程中 Normal vs Benign 不一致的图像被直接丢弃,存疑病例经 IHC 确认——数据集类别边界比真实临床分布干净;同时官方混淆分析显示 Benign ↔ In situ 是最大错误对(对应临床非典型增生 vs 低级别 DCIS 的著名难题)。
症状:模型在 BACH 上 benign/in situ 类间混淆低得"不真实",部署到真实病理流后该类错误显著放大。
解决:报告逐类 precision/recall 与混淆矩阵而非仅 accuracy;将 Benign+Normal、In situ+Invasive 分别合并计算"癌 vs 非癌"辅助指标(临床更稳健的口径);结论中声明清洗偏差,勿外推为"临床级性能"。
参考:Aresta et al. 2019 §2.2.1(剔除规则)与 §4(混淆矩阵分析);Araújo et al. 2017(癌 vs 非癌口径 83.3% vs 四类 77.8%)。
⚠️ 坑点 5:WSI 的"未标注 ≠ 确认 Normal"(分类:标签理解)
问题:10 张标注 WSI 的 XML 仅圈出 Benign / In situ / Invasive 三类病变区域;官方规定其余组织"视为 Normal 且不参与评估"——但这些区域并未经病理学家逐像素确认。把整张未圈出区域当作确凿 Normal 标签训练分割网络,会引入系统性标签噪声。
症状:分割模型在正常腺体区频繁假阳性;像素级 Dice/IoU 与官方排行榜得分对不上(官方只评估标注区域内像素)。
解决:训练分割时以"标注 ROI 为正类、ROI 外区域降权或忽略"(ignore index);评估严格限定在标注区域内,与官方 Part B 评分口径对齐;需要真 Normal 监督时改用显微图像集的 Normal 类 patch。
参考:grand-challenge Dataset 页(“the remaining tissue is considered normal and thus is not relevant for performance evaluation”)。
⚠️ 坑点 6:WSI 工程三连坑——内存爆炸、OpenSlide 安装、坐标系误读(分类:工程陷阱)
问题:单张 .svs 展开为 numpy 约 8 GB;OpenSlide 在 Windows 需手动下载二进制并加 PATH,Linux 需
python-openslide系统包;XML 坐标为(X, Y) = (columns, rows)、原点左上——与 numpy 的(row, col)索引习惯相反。症状:
MemoryError或 8 GB+ 内存峰值;ImportError: openslide/ DLL 加载失败;按 XML 坐标取出的 patch 位置整体转置错位。解决:始终在金字塔层级上工作(
slide.level_dimensions),先低倍定位再高倍取块;安装:pip install openslide-python+ 系统openslide(Windows 下载 binaries 并将 bin 加入 PATH);坐标转换牢记patch = np_slide[y0:y1, x0:x1],XML 的 (X,Y) 对应 (x, 列) 与 (y, 行)。参考:grand-challenge Dataset 页 “Reading the dataset” 一节(官方安装与坐标说明);OpenSlide 官方文档。
⚠️ 坑点 7:染色归一化协议不统一,跨论文数值不可比(分类:预处理陷阱)
问题:BACH 文献中预处理从"无归一化"、“Reinhard”、"Macenko"到"Vahadane"不一而足,而 H&E 染色差异对小数据集影响显著——同一架构换一套归一化,准确率可差 2-5 个点。
症状:严格复现某论文代码却达不到其报告值;换台机器/换个归一化库版本结果漂移。
解决:固定并记录归一化方法与参考图像(Araújo et al. 2017 用 OD+SVD 法;社区常用 Macenko);把归一化纳入消融实验;跨数据集(BRACS/BreakHis/TCGA)实验必须开启归一化。
参考:Araújo et al. 2017(PLoS ONE)预处理节;staintools / torchstain 库文档。
⚠️ 坑点 8:单中心单设备 + CC BY-NC-ND 许可——泛化与合规双重边界(分类:偏倚陷阱)
问题:全部图像来自葡萄牙同一诊断实验室、同一 Leica 设备链,染色与扫描分布单一,BACH 上的高分不能保证迁移到其他中心/扫描仪;同时 CC BY-NC-ND 禁止商业用途与演绎再分发,Kaggle 页面将其误标为 CC0,贸然商用或二次打包发布均有合规风险。
症状:BACH 训练的模型在 BRACS/TCGA 上准确率大幅下降(文献报告 10-20 个点);团队把模型或增强后数据打包进产品后被指出违反 ND 条款。
解决:外部验证常态化(§7.8 矩阵);商用/衍生需求直接联系组织者(iciar2018.histochallenge@gmail.com)洽谈授权;引用与再分发严格按 Zenodo LICENSE.txt 执行;发表前按官网要求通知组织者。
参考:Zenodo LICENSE.txt(CC BY-NC-ND);J Imaging 2024(BACH→BRACS/AIDPATH 泛化实验);Kaggle 页面(许可误标现场)。
版本提示:BACH 无 v1/v2 迭代,唯一"版本差异"来自获取渠道(Zenodo 原包 vs 第三方镜像)。引用时注明 “BACH, ICIAR 2018, Zenodo record 3632035” 即足够精确。
§6.6 数据增强
| ✅ 安全增强 | ❌ 危险增强(禁止) |
|---|---|
| 水平/垂直翻转、90° 旋转(组织学无方向先验) | 划分前增强(增强副本跨训练/测试侧 = 泄漏) |
| 轻微色彩抖动(brightness/contrast ±0.1,hue ±0.02) | 大幅 hue 偏移(H&E 的紫-粉配色本身是诊断特征) |
| 弹性形变(小幅度,模拟切片形变) | MixUp/CutMix 跨类别混合(类间形态差异微妙,混合语义不明) |
| 染色归一化 + 目标域染色扰动(跨域稳健性) | 对测试集做任何自适应统计(如用测试集均值归一化) |
| 随机裁剪多尺度 patch(128-512 px) | 把同图不同 patch 分到不同划分侧 |
§6.7 模型推荐
| 任务 | 推荐 backbone | 特征/训练方案 | 预期性能(官方测试集口径) |
|---|---|---|---|
| 快速基线 | ResNet-50(ImageNet 预训练) | 整图 512×512 微调 | accuracy 0.80-0.85 |
| 标准复现 | Inception-ResNet-v2 两阶段 | 224×224 patch 分类器 + 图像级多数投票(Kwok 方案) | accuracy 约 0.87 |
| 进阶 | DenseNet-161 集成 / CNN+RNN 注意力 | patch 序列聚合(Yao et al. 2019 思路) | accuracy 0.90-0.92 |
| 基础模型 | UNI / CONCH / Virchow 线性探测 | 冻结骨干 + 线性头(患者级划分) | 视骨干而定,0.88-0.93(val 口径) |
| WSI 分割 | U-Net / DeepLabv3+(patch 训练 + 滑窗) | 10 张标注 WSI + 显微图像混合训练 | Part B 官方得分上限约 0.69(2018) |
§6.8 计算资源需求
| 硬件 | 最小配置 | 推荐配置 |
|---|---|---|
| 磁盘 | 20 GB(完整两包 + 解压) | 40 GB(含 patch 缓存) |
| 内存 | 8 GB(仅显微图像) | 32 GB(WSI 分块处理峰值) |
| GPU | 1 × 8 GB 显存(ResNet-50 整图微调) | 1 × 16 GB 显存(patch 级训练 / WSI 滑窗) |
| 训练时间 | 400 张微调约 30-60 分钟 | WSI 全流程(切块 + 训练 + 推理)数小时 |
| 云端替代 | Colab 免费 GPU 足够 Part A | eva 框架 + 单卡即可复现基础模型评测 |
§6.9 评估指标
from sklearn.metrics import (accuracy_score, balanced_accuracy_score,
cohen_kappa_score, confusion_matrix,
classification_report)
def evaluate_bach(y_true, y_pred, classes=("Normal","Benign","InSitu","Invasive")):
print(f"Accuracy (官方主指标): {accuracy_score(y_true, y_pred):.4f}")
print(f"Balanced Acc: {balanced_accuracy_score(y_true, y_pred):.4f}")
print(f"Cohen's kappa: {cohen_kappa_score(y_true, y_pred):.4f}")
print(confusion_matrix(y_true, y_pred, labels=list(classes)))
print(classification_report(y_true, y_pred, target_names=list(classes)))
# 有序性辅助指标:恶性程度相邻类的"一步之遥"错误应区别于跨两级错误
import numpy as np
order = {c: i for i, c in enumerate(classes)}
mae = np.mean([abs(order[t] - order[p]) for t, p in zip(y_true, y_pred)])
print(f"Ordinal MAE (类间距离): {mae:.3f}")
# 癌 vs 非癌辅助口径(临床更稳健)
binarize = lambda y: [1 if order[v] >= 2 else 0 for v in y]
print(f"Carcinoma vs non-carcinoma Acc: "
f"{accuracy_score(binarize(y_true), binarize(y_pred)):.4f}")
社区共识:四分类报 accuracy(挑战赛官方指标,类别完全均衡下合法);务必同时给混淆矩阵(看清 Benign↔In situ);二分类辅助口径报 accuracy + sensitivity(Araújo 2017 癌症敏感度 95.6% 即此口径);有序 MAE 适合区分"良性误判原位"与"正常误判浸润"的临床代价差异。Part B 按官方评分(标注区域内像素级一致性得分)。
§6.10 MLOps 笔记
- 引用规范:论文引用 Aresta et al. 2019(DOI: 10.1016/j.media.2019.05.010);数据版本注明 “Zenodo record 3632035 + md5”;按官网要求,基于 BACH 的发表论文须通知组织者。
- 口径即元数据:实验日志必须记录划分口径(official / patient-level / image-level)、数据来源(Zenodo/Kaggle/eva)与张数(400/408)、归一化方法——三者缺一,结果不可复现。
- 测试集纪律:官方 100 张测试集标签已公开多年,把它当"验证集"反复调参等于自适应过拟合;正式实验将其隔离到流程末端。
- 许可监控:CC BY-NC-ND 下,训练出的模型权重是否构成"演绎作品"存在法律解释空间——商用部署前务必取得组织者书面授权。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 选择偏倚(清洗偏差) | 图像经筛选使"病理分类可客观确定";专家不一致图像被丢弃——疑难/灰色地带病例被系统性排除 | 高 | 结论限定为"清晰病例"性能;外部验证纳入含非典型增生的数据集(BRACS) |
| 类别先验偏倚 | 四类人为完全均衡(各 25%),与真实流中 Normal/Benign 远多于癌的分布相反 | 中高 | 部署前按目标人群先验重加权/校准;报告每类 recall 而非仅 accuracy |
| 单中心/单设备偏倚 | 单一诊断实验室 + 单一 Leica 设备链 + 葡萄牙人群 | 高 | 跨数据集外部验证(§7.8);染色归一化;域适应 |
| 患者元数据偏倚 | 患者级归属仅部分可得,"未识别即不同患者"是假设而非事实 | 中 | 保守处理(一图一组);采用 eva 公开索引 |
| 评估口径偏倚(文献层面) | 大量后续论文用泄漏性随机划分,制造了虚假的"已解决"印象 | 高(领域级) | 只比较同口径结果;优先官方测试集与患者级划分 |
| 时代偏倚 | 2014-2017 采集,扫描仪与染色流程代表当时水平 | 低-中 | 与近年数据集(BRACS 等)联合评估 |
§7.2 标注质量评估
| 标注类型 | 可靠性 | 一致性 | 局限性 |
|---|---|---|---|
| 显微图像图像级标签 | 高:双病理学家 + IHC 确认存疑病例 | 不一致样本已被剔除(未公布 kappa) | 只取主导病变,同图次要病变不标注;清洗偏差 |
| WSI 像素级轮廓 | 中高:单标注 + 复核 | 无一致性统计 | 仅 10 张;Normal 区域未确认;轮廓粒度因人而异 |
| 二分类派生标签 | 高 | — | 合并 Normal+Benign 抹平了临床上并不平凡的良恶边界 |
§7.3 泛化性讨论
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 跨实验室/扫描仪(Leica → 其他) | 高 | BACH 训练模型在 BRACS、AIDPATH 上性能明显下降(J Imaging 2024 ViT 泛化研究) |
| 跨任务粒度(显微视野 → 真实 WSI 流) | 中高 | 显微图像为筛选取景,WSI 含大量中间态组织;Part B 官方上限仅 0.69 |
| 跨类别边界(清晰病例 → 非典型增生) | 高 | 清洗偏差使模型未见过 ADH 等灰色病例 |
| 跨人群(葡萄牙 → 其他地区) | 中 | 无直接证据;组织学形态人群差异有限,但制片/染色流程差异显著 |
| 时间维度(2014-2017 → 当代扫描仪) | 中 | 染色与成像器件演进;建议按域偏移处理 |
§7.4 伦理考量
- 数据来自真实乳腺癌患者的活检/手术标本;组织学图像不含直接身份标识,且经匿名化处理,但仍应以研究伦理的态度使用。
- CC BY-NC-ND 的限制具有伦理含义:禁止演绎再分发意味着不能把"增强版/重标注版 BACH"打包发布——社区常见的"重新划分 + 再上传"做法在严格意义上越界。
- 四类标签的"清洗偏差"意味着基于 BACH 的模型不应被宣传为临床级诊断工具;灰色地带病例恰是误诊代价最高之处。
- 患者级归属信息部分可得——不得尝试通过染色指纹或图像相似性重识别患者关联。
§7.5 公平性评估
BACH 不公开年龄、性别、种族等人口学变量,无法做常规子群公平性分析。可操作的替代是按医院/批次与类别的稳健性检查:
# 按采集批次(2014/2015/2017,来自患者归属文件)分层评估
from fairlearn.metrics import MetricFrame
from sklearn.metrics import accuracy_score
frame = MetricFrame(
metrics={"acc": accuracy_score},
y_true=y_test, y_pred=y_pred,
sensitive_features=test_df["batch"] # 或 hospital / 患者级聚类簇
)
print(frame.by_group)
已知差异提示:不同采集批次的染色深浅存在肉眼可见差异;若模型在某一批次上 recall 显著偏低,多半学到了染色捷径——用染色归一化或按批次分层抽样缓解。
§7.6 数据漂移提示
- 训练分布停留在 2014-2017 年的单一 Leica 设备链:当代扫描仪(Hamamatsu、3DHistech 等)分辨率与色彩响应不同,部署前须做域偏移检测(如染色向量分布 KS 检验)。
- 监控信号:H&E 染色向量分布漂移、patch 组织占比分布漂移、模型在 Normal 类上的置信度分布漂移(对制片差异最敏感)。
- 文献层面的"评估漂移":随测试集标签公开年限增长,官方测试集被自适应利用的风险递增——2020 年后的高分需打折看待。
§7.7 DAIMS 24 项数据就绪度评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 数据为宽格式(每行一个样本/事件) | ✅ | 每行一张显微图像 / 一条 ROI 记录 |
| 2 | 有唯一标识符列 | ✅ | 文件名即唯一 ID(类别前缀 + 序号) |
| 3 | 无 Unicode 或特殊字符 | ✅ | 文件名与标签均为 ASCII |
| 4 | 无重复行 | ⚠️ | 官方未做重复声明;再分发版张数与官方口径不一致(400 vs 408),需自行核对 |
| 5 | 缺失值已识别并编码 | ⚠️ | 患者 ID 部分缺失,官方以"未识别即不同患者"假设替代正式编码 |
| 6 | 标签列被明确标识 | ✅ | 图像级四类标签 + XML 区域标签定义清晰 |
| 7 | 已对罕见类别(<3%)进行分组 | ✅ | 四类完全均衡,无罕见类问题 |
| 8 | 偏倚评估已完成 | ⚠️ | 论文讨论了类别混淆与任务难度,但无正式偏倚评估文档 |
| 9 | 有完整的数据字典 | ⚠️ | 官网 Dataset 页有规格说明;无独立数据字典文档(本百科 §4.1 补齐) |
| 10 | 对"信息性缺失"有明确编码解释 | ❌ | 患者 ID 缺失、WSI 未标注区域均无正式缺失机制文档(本百科 §4.5 补齐) |
| 11 | 数据采集设备和设置已记录 | ✅ | Leica DM 2000 LED + ICC50 HD / Leica SCN400,倍率与像素尺寸完整 |
| 12 | 已移除完全共线性变量 | ⚠️ | 图像数据不直接适用;未做说明 |
| 13 | 对编码的映射标准已说明 | ⚠️ | 四类为形态学类别,官方未映射 ICD-O/SNOMED(本百科 §2.1/§2.2 补齐) |
| 14 | 对时间戳的处理已明确说明 | ⚠️ | 采集年份(2014/2015/2017)已披露,无逐张日期(匿名化所致,可接受) |
| 15 | 训练/验证/测试划分建议已给出 | ✅ | 官方 400/100 患者隔离划分 + 赛后提交通道 |
| 16 | 数据泄漏风险已被讨论 | ⚠️ | 官方保证了测试集患者隔离并提供患者文件,但未强制约束训练侧;社区泄漏泛滥 |
| 17 | 标签分布已被分析 | ✅ | 完全均衡设计 + 官方混淆矩阵分析 |
| 18 | 选择性测量偏倚已被讨论 | ⚠️ | 不一致图像剔除规则已披露,但其对性能估计的影响未量化 |
| 19 | 外部验证建议已给出 | ⚠️ | 论文给出未来方向讨论,无正式外部验证协议 |
| 20 | 数据更新和版本信息已记录 | ⚠️ | 单一发布,Zenodo 归档含 md5;无正式版本号与变更日志 |
| 21 | 最小必要预处理脚本已提供 | ⚠️ | 官方提供 .svs/.xml 读取脚本;无标准化预处理 pipeline |
| 22 | 合规使用要求已明确 | ✅ | CC BY-NC-ND + 引用与通知义务在官网/Zenodo 明示 |
| 23 | 多模态对齐方法已说明 | ⚠️ | 显微图像与 WSI 为"细节-整体"概念关系,未提供配准映射 |
| 24 | 去标识化方法已被记录 | ✅ | 匿名化流程与"未识别即不同患者"假设均有官方说明;病理图像本身低 PHI 风险 |
DAIMS 评分:16.5 / 24
评分解读:中等偏上——标注质量与官方划分是亮点,文档化基础设施(数据字典、偏倚评估、缺失机制、版本管理)是短板。
对你意味着什么:BACH 的 9 个 ✅ 集中在"挑战赛骨架"上——均衡标签、官方患者隔离测试集、完整设备记录、明确许可——这使它作为基准开箱即用。但 14 个 ⚠️/❌ 几乎全部指向同一个事实:它是一个为 4 个月赛期设计的挑战赛数据集,而非为长期可复现研究设计的档案数据集。患者 ID 部分缺失、无正式数据字典、无版本号、无外部验证协议。建议在使用前执行以下操作:(1) 用本百科 §5 的患者级划分代码替代随机划分;(2) 用 §4.1/§4.5 的数据字典与缺失编码表补齐实验文档;(3) 把外部验证(BRACS/BreakHis)写进实验计划,而不是留到审稿人要求时再做。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部测试集变化 | 关键发现 |
|---|---|---|---|---|---|
| Bioimaging 2015 测试集(⚠️ 非严格外部,与 BACH 训练集同根) | INESC TEC(葡萄牙) | BACH 训练 → Bioimaging2015 测试 | 75%(4 类)/ 80%(癌 vs 非癌) | 下降约 10-15 个点(相对官方 0.87 口径) | Egriboz & Bilgin 2020:同机构数据也存在分布差;且两集图像重叠,只能作下限参考 |
| BRACS(7 类乳腺亚型 ROI) | CNR ICAR(意大利) | BACH 预训练 ViT → BRACS 迁移 | 明显下降(定性,论文报告泛化差距显著) | 下降 10-20 个点(量级) | J Imaging 2024:单中心染色/设备分布是主要瓶颈;预训练与归一化可部分缓解 |
| AIDPATH 乳腺癌切片 | 多机构(EU AIDPATH 项目) | 同上泛化实验 | 明显下降(定性) | 同上 | 同上:跨实验室泛化需专门设计(域适应/染色归一化) |
矩阵解读:BACH 的外部验证文献出奇地少——绝大多数论文满足于内部(且常为泄漏性)指标。上表三行已是同行评审文献中仅有的系统证据,结论一致:BACH 上的高性能不能直接外推。任何面向真实场景的研究都应把跨数据集评估作为默认步骤。
§8 基准性能与生态
§8.1 排行榜
官方挑战赛排行榜(同一协议、数值可直接比较;grand-challenge Legacy-results 页):
Part A(显微图像四分类,官方测试集 accuracy,51 个提交取前列):
| 排名 | 团队/第一作者 | accuracy | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1(并列) | Team 216 / Chennamsetty, Safwan, Alex(印度) | 0.87 | 2018 | CNN 集成 + 迁移学习 + 强增强 | Aresta G et al. Medical Image Analysis 56:122-139 (2019). DOI: 10.1016/j.media.2019.05.010(挑战赛汇总论文,§3 方法综述) | — |
| 1(并列) | Team 248 / Scotty Kwok(中国香港) | 0.87 | 2018 | Inception-ResNet-v2 两阶段:显微图像 + WSI patch 联合训练 patch 分类器,图像级聚合 | Kwok S. “Multiclass Classification of Breast Cancer in Whole-Slide Images.” ICIAR 2018, LNCS 10882:931-940. DOI: 10.1007/978-3-319-93000-8_106 | — |
| 3 | Brancati / Riccio(意大利 CNR ICAR) | 0.86 | 2018 | 微调策略(fine-tuning)+ 多模型 | Brancati N, Frucci M, Riccio D. “Multi-classification of breast cancer histology images by using a fine-tuning strategy.” ICIAR 2018. DOI: 10.1007/978-3-319-93000-8_87 | — |
| 4 | Marami / Zeineh(美国 Mount Sinai) | 0.84 | 2018 | CNN 集成 + 上下文建模 | Aresta et al. 2019(同上,§3 方法综述) | — |
| 5(并列) | Zheng / Kohl / Wang 等三队 | 0.83 | 2018 | 迁移学习 + 集成 | 同上 | — |
Part B(WSI 像素级标注,官方评分,13 个提交取前三):
| 排名 | 团队 | score | 关键技术 | 完整引用 |
|---|---|---|---|---|
| 1 | Scotty Kwok | 0.6929 | 与 Part A 同一两阶段框架滑窗聚合 | Kwok S. ICIAR 2018, LNCS 10882:931-940. DOI: 10.1007/978-3-319-93000-8_106 |
| 2 | Marami / Zeineh | 0.5527 | 级联 CNN(patch 分类 + 区域修正) | Aresta et al. 2019(§3 方法综述) |
| 3 | Jia / Zeng | 0.5230 | FCN 类分割网络 | 同上 |
赛后与社区结果(口径各异,数值不可与上表直接比较):
| 模型 | 性能指标 | 年份 | 口径 | 完整引用 | 代码 |
|---|---|---|---|---|---|
| Yao et al.(CNN+RNN 并行注意力) | accuracy 约 0.91-0.92 | 2019 | 官方测试集(赛后提交通道) | Yao H, Zhang X, Zhou X, Liu S. “Parallel Structure Deep Neural Network Using CNN and RNN with an Attention Mechanism for Breast Cancer Histology Image Classification.” Cancers 11(12):1901 (2019) | — |
| Balasubramanian et al.(VGG16+ResNet50 集成) | patch 级 accuracy 95.31% | 2024 | 图像级 5 折 CV(⚠️ 非患者级) | Balasubramanian AA et al. Cancers 16(12):2222 (2024). DOI: 10.3390/cancers16122222 | — |
| Meva et al.(定制集成注意力) | accuracy 91.3% ± 0.8 | 2026 | 图像级 5 折 CV(⚠️ 非患者级) | Meva DT et al. Scientific Reports (2026). DOI: 10.1038/s41598-026-50563-6 | — |
| 各"99%"论文 | 95%-99.4% | 2020-2026 | 随机图像级划分(⚠️ 泄漏口径,不可采用) | 综述汇总见 §10.3 输入来源 11 | — |
排行榜阅读纪律:第一、二张表之间唯一的桥梁是"官方测试集"四个字。凡未注明该口径的 BACH 高分,默认按泄漏口径处理——这不是苛刻,是这个数据集八年文献史换来的教训(见 §6.5 坑点 1、2)。
§8.2 SOTA 总结与选型建议
| 如果你… | 推荐方案 | 为什么 |
|---|---|---|
| 复现挑战赛/与历史比较 | 官方 400/100 协议 + Inception-ResNet-v2 两阶段(Kwok 方案) | 0.87 的可信锚点;方法被期刊论文完整记录 |
| 追求官方口径最佳 | Yao et al. 思路:CNN 提 patch 特征 + RNN/注意力聚合 | 官方测试集约 0.91-0.92,公开文献中该口径最高 |
| 验证新架构 | 官方协议 + 患者级 5 折 CV 双报告;报混淆矩阵与 ordinal MAE | 避免与前人泄漏口径混淆 |
| 基础模型评测 | eva 框架 BACH(268/132 患者级划分)+ 线性探测 | 与 UNI/CONCH 等公开结果同口径可比 |
| 教学 | ResNet-50 整图微调(§6.1 代码) | 30-60 分钟出 80%+,课堂可完成 |
§8.3 官方评测协议
Part A:官方测试集(100 张,患者隔离)四分类 accuracy;挑战赛期间为提交制(每周限次),赛后 Part A 通道在 grand-challenge 平台重开。Part B:官方评分脚本对 10 张测试 WSI 逐片计算标注区域内像素级多类一致性得分(0-1 区间),赛后该通道已关闭——新研究只能自划协议评估 WSI 分割。
§8.4 相关数据集
| 数据集 | 关系 | 说明 |
|---|---|---|
| Bioimaging 2015 Breast Histology | 前身 | 249 训练 + 20 测试 + 16 高歧义测试;BACH 训练集是其扩展(⚠️ 不可作外部验证) |
| BreakHis | 同类 | 7,909 张乳腺显微图像(40-400×),良恶二分类主线,患者级协议成熟 |
| BRACS | 互补/外部验证 | 4,539 个 ROI、7 类乳腺亚型,含非典型增生,弥补 BACH 的清洗偏差 |
| Camelyon16/17 | 同类 | 乳腺前哨淋巴结转移 WSI,弱监督 MIL 主战场 |
| TCGA-BRCA | 扩展 | 1,000+ 乳腺 WSI + 多组学,多中心外部验证池 |
| TUPAC16 | 同类 | 同一 ICIAR 生态的乳腺癌 WSI 数据集 |
§8.5 关键论文 Top 8
- Aresta G, Araújo T, Kwok S, et al. (2019), Medical Image Analysis 56:122-139. “BACH: Grand challenge on breast cancer histology images.” — 数据集与挑战赛本体,权威引用入口。DOI: 10.1016/j.media.2019.05.010
- Araújo T, Aresta G, Castro E, et al. (2017), PLoS ONE 12(6):e0177544. “Classification of breast cancer histology images using Convolutional Neural Networks.” — 前身数据集与首个四类 CNN 基线(77.8%),多尺度架构思想源头。DOI: 10.1371/journal.pone.0177544
- Kwok S. (2018), ICIAR 2018 LNCS 10882:931-940. “Multiclass Classification of Breast Cancer in Whole-Slide Images.” — Part A/B 双冠方案,两阶段 patch 分类器范式。DOI: 10.1007/978-3-319-93000-8_106
- Yao H, Zhang X, Zhou X, Liu S. (2019), Cancers 11(12):1901. “Parallel Structure Deep Neural Network Using CNN and RNN with an Attention Mechanism…” — 官方测试集 0.91-0.92,赛后最佳之一。
- Brancati N, Frucci M, Riccio D. (2018), ICIAR 2018. “Multi-classification of breast cancer histology images by using a fine-tuning strategy.” — 挑战赛季军,微调范式代表。DOI: 10.1007/978-3-319-93000-8_87
- Golatkar A, Anand D, Sethi A. (2018), ICIAR 2018. “Classification of Breast Cancer Histology using Deep Learning.” — 染色归一化 + DenseNet 的代表性早期工作。
- Balasubramanian AA et al. (2024), Cancers 16(12):2222. “Ensemble Deep Learning-Based Image Classification for Breast Cancer Subtype and Invasiveness Diagnosis…” — 集成学习近期代表(注意其图像级 CV 口径)。
- kaiko-ai/eva 文档与 UNI/CONCH 基础模型论文(2024) — 将 BACH 标准化为患者级安全划分的基础模型评测集,代表了数据集使用的当代规范。
§8.6 社区活跃度
| 维度 | 数据 |
|---|---|
| 期刊论文引用(Aresta 2019) | Semantic Scholar 595 / Connected Papers 713 / Scopus 570(i3s.up.pt 快照)/ Google Scholar 约 670(ablesci 快照)(截至 2026-09) |
| 前身论文引用(Araújo 2017 PLoS ONE) | Scopus 860(i3s.up.pt 快照,截至 2026-09) |
| 挑战赛规模 | 677 注册 / 64 有效提交(Part A 51 + Part B 13)——医学影像挑战赛中第一梯队参与度 |
| Kwok 冠军方案引用 | 77+(SpringerLink 快照) |
| Zenodo 归档 | record 3632035,2020-01-31 公开,持续为官方下载渠道 |
| 生态收录 | kaiko-ai/eva 标准评测集;HuggingFace/Kaggle 多个镜像;openmedlab Awesome-Medical-Dataset 收录 |
§8.7 生态快照
| 资源 | 类型 | 链接 | Star/Fork(截至 2026-09,约) | 为什么值得关注 |
|---|---|---|---|---|
| 官方挑战赛站 | 官网 | https://iciar2018-challenge.grand-challenge.org/ | — | Dataset 页规格、Legacy-results 排行榜、患者归属文件、赛后提交入口的唯一权威来源 |
| Zenodo 归档 | 数据托管 | https://zenodo.org/record/3632035 | — | 官方长期归档,md5 可校验,CC BY-NC-ND 文本随包 |
| kaiko-ai/eva | 工具库 | https://kaiko-ai.github.io/eva/main/datasets/bach | 活跃 | 患者级安全划分索引 + 基础模型评测标准流程,当代规范的代表 |
| Kaggle 镜像 | 数据镜像 | https://www.kaggle.com/datasets/truthisneverlinear/bach-breast-cancer-histology-images | — | 在线 Notebook 免下载实验(注意许可误标) |
| staintools / torchstain | 工具库 | https://github.com/Peter554/StainTools | 700+ | BACH 必备的染色归一化实现(Macenko/Reinhard/Vahadane) |
| OpenSlide | 工具库 | https://openslide.org/ | — | 读取 .svs 的必备依赖,官方读取脚本的基础 |
| openmedlab Awesome-Medical-Dataset | 索引 | https://github.com/openmedlab/Awesome-Medical-Dataset | 活跃 | 中文社区维护的 BACH 结构化信息卡 |
§9 相关资源与引用
官方资源
- 挑战赛主页:https://iciar2018-challenge.grand-challenge.org/
- Dataset 规格页:https://iciar2018-challenge.grand-challenge.org/Dataset/
- 官方排行榜:https://iciar2018-challenge.grand-challenge.org/Legacy-results
- Zenodo 下载:https://zenodo.org/record/3632035
- 前身数据集(Bioimaging 2015):https://rdm.inesctec.pt/dataset/nis-2017-003
- 组织者联系:iciar2018.histochallenge@gmail.com
- 许可证:CC BY-NC-ND 4.0(随包 LICENSE.txt)
BibTeX 引用
% 1) 数据集与挑战赛论文(引用 BACH 必须引此文——许可要求)
@article{aresta2019bach,
title={BACH: Grand challenge on breast cancer histology images},
author={Aresta, Guilherme and Ara{\'u}jo, Teresa and Kwok, Scotty and
Chennamsetty, Sai Saketh and Safwan, Mohammed and Alex, Varghese and
Marami, Bahram and Prastawa, Marcel and Chan, Monica and Donovan, Michael and
Fernandez, Gerardo and Zeineh, Jack and Kohl, Matthias and Walz, Christoph and
Ludwig, Florian and Braunewell, Stefan and Baust, Maximilian and
Vu, Quoc Dang and To, Minh Nguyen Nhat and Kim, Eal and Kwak, Jin Tae and
Galal, Sameh and Sanchez-Freire, Veronica and Brancati, Nadia and
Frucci, Maria and Riccio, Daniel and Wang, Yaqi and Sun, Lingling and
Ma, Kaiqiang and Fang, Jiannan and Kone, Ismael and Boulmane, Lahsen and
Campilho, Aur{\'e}lio and Eloy, Catarina and Pol{\'o}nia, Ant{\'o}nio and Aguiar, Paulo},
journal={Medical Image Analysis},
volume={56},
pages={122--139},
year={2019},
publisher={Elsevier},
doi={10.1016/j.media.2019.05.010}
}
% 2) 前身数据集论文(使用 Bioimaging 2015 子集或追溯方法学脉络时引用)
@article{araujo2017classification,
title={Classification of breast cancer histology images using convolutional neural networks},
author={Ara{\'u}jo, Teresa and Aresta, Guilherme and Castro, Eduardo and
Rouco, Jos{\'e} and Aguiar, Paulo and Eloy, Catarina and
Pol{\'o}nia, Ant{\'o}nio and Campilho, Aur{\'e}lio},
journal={PLoS ONE},
volume={12}, number={6}, pages={e0177544},
year={2017},
doi={10.1371/journal.pone.0177544}
}
% 3) 冠军方案(复现两阶段 patch 分类器时引用)
@inproceedings{kwok2018multiclass,
title={Multiclass Classification of Breast Cancer in Whole-Slide Images},
author={Kwok, Scotty},
booktitle={Image Analysis and Recognition (ICIAR 2018), LNCS 10882},
pages={931--940},
year={2018},
publisher={Springer},
doi={10.1007/978-3-319-93000-8_106}
}
教程与学习资源
- eva 框架 BACH 教程(患者级划分 + 基础模型评测):https://kaiko-ai.github.io/eva/main/datasets/bach
- 官方 .svs/.xml 读取脚本说明(grand-challenge Dataset 页 “Reading the dataset” 一节)
- OpenSlide Python 文档:https://openslide.org/api/python/
- Araújo et al. 2017 开放获取全文(预处理与多尺度架构细节的最佳教材):https://pmc.ncbi.nlm.nih.gov/articles/PMC5453426/
- arXiv 期刊版全文(挑战赛方法综述 §3 是 2018 年病理 CNN 方法的最佳快照):https://arxiv.org/abs/1808.04277
原始论文
- Aresta G et al. (2019). “BACH: Grand challenge on breast cancer histology images.” Medical Image Analysis 56:122-139. DOI: 10.1016/j.media.2019.05.010. PMID: 31226662.
- Araújo T et al. (2017). “Classification of breast cancer histology images using Convolutional Neural Networks.” PLoS ONE 12(6):e0177544. DOI: 10.1371/journal.pone.0177544. PMID: 28570557. PMCID: PMC5453426.
- Kwok S. (2018). “Multiclass Classification of Breast Cancer in Whole-Slide Images.” ICIAR 2018, LNCS 10882:931-940. DOI: 10.1007/978-3-319-93000-8_106.
§10 AI 使用声明卡
§10.1 AI 模型使用
| AI 模型 | 版本 | 用途 |
|---|---|---|
| deep-model(WorkBuddy) | 2026-09 | 初稿生成:INFOBOX 数据汇编、§1-§9 结构化写作、§6 代码示例生成、JSON-LD 构建 |
| WebSearch(多源检索) | 2026-09-05 | 9 组检索:官方页面与 Dataset 规格、期刊论文与引用量快照、官方排行榜、前身数据集、ICD-11/SNOMED CT 编码核实、泄漏与泛化讨论 |
§10.2 AI 参与范围
AI 参与范围:初稿生成 + 资料整理 + 代码生成 + 格式化排版。
AI 在本页面的工作中负责:(1) 从 grand-challenge 官方页面、Aresta et al. 2019 期刊论文、Zenodo 归档页与社区资源中整理结构化信息;(2) 生成 §6 的 Python 代码示例;(3) 系统化组织 §6.5 的 8 个坑点与 §7.1 偏倚表;(4) 执行 G1/G2/G3 排版规范检查与中英文格式标准化;(5) 构建 §C 统一 JSON-LD @graph;(6) 通过 WHO ICD-11 层级与 RCPath SNOMED 附录核实 §2 医学编码。
§10.3 输入来源
- Aresta G et al. (2019), Medical Image Analysis 56:122-139 — BACH 挑战赛论文(DOI: 10.1016/j.media.2019.05.010;arXiv:1808.04277v2 全文)
- grand-challenge 官方 Dataset 页(规格、许可、读取说明)与 Home 页(组织、时间线)
- grand-challenge Legacy-results 页(Part A/B 官方排行榜完整名次)
- Zenodo record 3632035(文件清单、md5、LICENSE.txt)
- Araújo T et al. (2017), PLoS ONE 12(6):e0177544(PMC5453426 全文:前身数据集、预处理、基线)
- INESC TEC 数据仓库 rdm.inesctec.pt/dataset/nis-2017-003(Bioimaging 2015 元数据:249+20+16、2040×1536、采集时间)
- kaiko-ai/eva BACH 文档(408 张记录、患者级安全划分 268/132、泄漏说明)
- Kaggle 镜像页(truthisneverlinear/bach-breast-cancer-histology-images;许可误标现场)
- Kwok S. (2018), ICIAR 2018 LNCS 10882:931-940(双冠方案细节与引用量)
- Balasubramanian AA et al. (2024), Cancers 16(12):2222(集成基线与文献综述表)
- “Advancements in Breast Cancer Detection” 综述(2023-2024 各 95-99% 结果汇总与口径记录)
- J Imaging 2024(MDPI 2313-433X/10/5/108,ViT 预训练/归一化与 BACH→BRACS/AIDPATH 泛化实验;赛后提交通道说明)
- Meva DT et al. (2026), Scientific Reports(DOI: 10.1038/s41598-026-50563-6;91.3% 与协议对比讨论)
- Egriboz E, Bilgin G. (2020), SIU 2020(BACH→Bioimaging2015 跨集评估 75%/80%)
- WHO ICD-11 编码体系(KEGG br08411 层级快照:2C61/2E65 族)与 BMICC 中文本体(2E65 乳腺原位癌)
- RCPath Appendix E(乳腺 SNOMED CT 形态学编码)与 identifiers.org MedGen C0007124(DCIS 编码 109889007/1162814007)
- Semantic Scholar / Connected Papers / i3s.up.pt / ablesci 引用量快照(截至 2026-09)
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11/SNOMED 映射、四类定义、金标准) | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §3 数据集规格(规模、设备、溯源链) | 千方病案医学编辑部 | 与官网 Dataset 页及期刊论文交叉比对 | ✅ 已验证 |
| §4 数据结构(目录树、DAIMS 字段字典) | 千方病案医学编辑部 | 与 Zenodo 文件清单及官方说明交叉比对 | ✅ 已验证 |
| §5 数据划分策略(患者级防泄漏) | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §6 代码示例与坑点 | 千方病案医学编辑部 | 逻辑审查 + 与官方文档及社区讨论比对 | ✅ 已通过 |
| §7 质量评估与 DAIMS 评分 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过 |
| §8 排行榜与引用数表述 | 千方病案医学编辑部 | 与官方排行榜页及多源引用快照交叉比对 | ✅ 已验证 |
| §C JSON-LD @graph | 千方病案医学编辑部 | Schema v3.9 字段逐项校验 | ✅ 已通过 |
§10.5 AI 生成章节标注
以下章节由 AI 生成初稿并经人工审核:§1.0 30 秒速览、§3.0 版本抉择矩阵、§6.0-§6.4 代码示例、§6.5 八个坑点、§6.9 评估指标代码、§7.5 公平性评估代码、§7.7 DAIMS 评估表与评分、§7.8 外部验证矩阵、§8.7 生态快照、§C JSON-LD。
§10.6 最后审核
最后一次人工审核日期:2026-09-05
页面状态:published(全部内容已完成审核并发布)
