信息速览

BreastPathQ — 乳腺癌细胞增殖定量挑战 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | BreastPathQ Cancer Cellularity Challenge 2019 |
| 英文全称 | BreastPathQ(Breast Pathology Quantitative Biomarkers)Cancer Cellularity Challenge |
| 别名/简称 | BreastPathQ、SPIE-AAPM-NCI BreastPathQ Challenge |
| 疾病分类 | 乳腺癌残余病变细胞增殖(ICD-11:2C60 浸润性乳腺癌,详见 §2.1) |
| SNOMED CT | 93880001 Invasive carcinoma of breast / 427238001 Residual disease / 412773006 Cellularity(详见 §2.1b) |
| 数据模态 | H&E 染色 20X 全玻片扫描(WSI)切取的 512×512 组织病理 patch |
| AI 任务类型 | 图像回归:估计 patch 级肿瘤细胞占比(tumor cellularity, TC,0-1 连续分) |
| 样本总数 | 3,698 patch(2,394 训练 / 185 验证 / 1,119 测试);出自 96 张 WSI、55 名患者 |
| 数据大小 | > 2 GB(ZIP 压缩包,不入 GitHub 仓库) |
| 数据格式 | .tif(patch 图像)+ .csv(标签)+ .xml(细胞核标注) |
| 许可证 | 学术研究用途(SPIE BreastPathQ 参与协议);主论文按 CC-BY 4.0 发表 |
| 访问级别 | 竞赛专用/申请下载(grand-challenge 注册后可获取发布包,完整 WSI 需另行申请) |
| DUO 标签 | HMB, NCU, PUB |
| 语言 | 英文 |
| 首发日期 | 2018-10-15(训练数据发布) |
| 最后更新 | 2019-01-04(挑战结果公布)/ 2021-05(主论文发表) |
| 发布机构 | SPIE + AAPM + NCI + 美国 FDA(2019 SPIE Medical Imaging 框架下 Grand Challenge) |
| 官方主页 | https://breastpathq.grand-challenge.org/ |
| 下载地址 | https://breastpathq.grand-challenge.org/ |
| DOI | 10.1117/1.JMI.8.3.034501(主论文) |
| 引用次数 | 44+(Google Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方提供 train/val/test 划分与 CSV 标签、任务定义清晰;扣分项:无官方一键预处理脚本、需自行实现 DataLoader、官方站点与论文 split 数字存在出入、原 SPIE 站点已下线 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(乳腺癌新辅助治疗后残余细胞增殖的 ICD-11 与 SNOMED CT 映射、Ki-67 与肿瘤细胞占比的临床定位)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(patch 级 slide/rid/y 结构)、§5 数据划分策略(患者级 vs patch 级划分)、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与 SPIE、AAPM、NCI、FDA、Sunnybrook Health Sciences Centre 及 BreastPathQ 组委会无任何商业利益关联。本页面不销售 BreastPathQ 数据集本身,仅提供 AI 就绪指南与学术信息服务。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。BreastPathQ 要求参与者在 grand-challenge 平台注册并同意"数据仅用于学术竞争与研究"的参与协议,测试阶段禁止人工介入评分。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? BreastPathQ 是 2019 年由 SPIE、AAPM、NCI 与美国 FDA 联合发起的病理图像挑战赛。它给你 3,698 张来自乳腺癌新辅助治疗(NAT)后手术标本的 H&E 染色小图(patch),每张要你输出一个 0 到 1 之间的分数,表示这张图里"残余肿瘤细胞占比"有多少。训练数据已标好答案,测试阶段由病理医师给出参考分数。
为什么重要? 乳腺癌患者在新辅助治疗后,病理医师需要评估手术后标本里还剩多少活的肿瘤细胞,这是判断疗效与后续治疗的关键。传统上靠肉眼看整张玻片估个大致百分比,主观且耗时。BreastPathQ 把这件事拆成一个可自动量化的回归问题,想验证 AI 能否把这种"估占比"做到接近专业病理医师的水平——而两位资深病理医师互相独立评也只做到 0.927 的一致性。
我能用它做什么? 你可以用它训练和评估一个"细胞增殖定量回归"模型:输入一张 512×512 的病理图,输出连续的肿瘤细胞占比。社区主流做法是拿 ResNet50 或 EfficientNet 做迁移学习回归头。评估标准不是绝对误差,而是排序一致性 Pk(prediction probability concordance)——你的模型对一批 patch 排出的风险次序是否和病理医师一致。这是理解"医学图像回归与分类评估差异"的好教材。
§1.1 摘要
BreastPathQ(Breast Pathology Quantitative Biomarkers)Cancer Cellularity Challenge 2019 是 SPIE-AAPM-NCI-FDA 联合发起的医学影像挑战赛,在 2019 SPIE Medical Imaging 大会框架下运行。任务是从乳腺癌 H&E 染色 WSI 中切取的 patch 估计肿瘤细胞占比(tumor cellularity, TC),输出 0-1 连续浮点分。数据采集自加拿大多伦多 Sunnybrook Health Sciences Centre,患者均为新辅助治疗(NAT)后手术标本上仍残留浸润性乳腺癌者,标本经 H&E 染色并以 20X(0.5 µm/pixel)全玻片扫描(来源 1、来源 2)。
权威划分(2021 年 Journal of Medical Imaging 主论文)为:训练 2,394 patch(出自 63 张 WSI / 33 名患者)、验证 185 patch(出自 6 张 WSI / 4 名患者)、测试 1,119 patch(出自 27 张 WSI / 18 名患者),合计 96 张 WSI、55 名患者(来源 3)。标注协议为:训练/验证集由一位病理医师(path1)标注,测试集由两位病理医师(path1 与 path2)独立标注组成参考金标准;两位医师均具 10 年以上经验,测试集平均互评 Pk = 0.927(来源 4)。
主排名指标为平均预测概率一致性 Pk(prediction probability concordance),比较算法与参考的排序而非绝对分数(来源 2)。测试阶段共 100 个有效提交算法,Pk 范围 0.497-0.941,最优 Pk≈0.94 接近二病理医师互评的 0.927(来源 3)。
§1.2 战略价值
维度一:病理定量回归的稀缺基准。 绝大多数公开病理数据集做的是分类(有无癌)或分割(划癌区域)。BreastPathQ 是少见的像素级连续回归任务——预测的不是"有没有"而是"占多少比例"。这一差异让它能暴露"模型看着对但排序错"的失败模式,对想研究医学图像连续定量(如细胞增殖指数、肿瘤负荷)的团队极有价值。它同时证明了深度学习在"估计细胞占比"上可逼近资深病理医师(0.94 对 0.927),为后续自动定量研究提供了参照锚点。
维度二:新辅助疗效评估的临床连接。 残余肿瘤细胞占比是新辅助治疗疗效评估(残余癌负荷评估)的关键一环,直接关联后续治疗决策。BreastPathQ 把这一临床上通常靠目测估读的任务形式化为可复现的基准,让算法团队在一个真实临床问题上比拼,缩小了"算法论文"与"临床关切"的差距。不过要提醒:其单中心、NAT 后、H&E 单染色的设定决定了结果不能直接外推到未治疗乳腺癌或不同扫描仪。
维度三:评估方法学的示范样本。 BreastPathQ 主指标 Pk 是"排序一致性"而非"绝对误差",它展示了一个重要事实:医学图像 AI 的"好"可以有多个定义。当算法 Pk≈0.94 略超医师互评 0.927 时,若只用 Pk 会得出"AI 已超过人"的结论;但补看 MSE/R²/ICC 后,可能发现绝对占比仍有偏差。因此它是学习"医学任务该如何定义与评估指标"的极佳案例——尤其对想发表"AI 超越医师"型论文却常因指标单一被审稿质疑的团队,BreastPathQ 提供了现成的多维评估示范。
维度四:难例与人类分工的参照。 官方与社区分析都指出,高难 patch(难与正常区分的细胞)是算法失败点,而 AI 的获益区恰在这些难例上。这让 BreastPathQ 成为研究"AI 与病理医师如何分工、人在回环在何处仍有价值"的小而精素材库,而非仅仅一个刷分 benchmark。
§1.3 同类数据集横向对比
| 数据集 | 模态 | 规模 | 标注类型 | 任务 | 差异化 |
|---|---|---|---|---|---|
| BreastPathQ | H&E WSI patch | 3,698 patch / 96 WSI / 55 患者 | 0-1 连续 TC(1-2 位病理医师) | 细胞增殖回归 | 连续占比、NAT 后、Pk 排序指标 |
| BACH(ICIAR 2018) | H&E patch | 400 patch / 40 WSI | 四分类标签 | 病理组织学分类 | 类别而非连续值 |
| PatchCamelyon (PCam) | H&E patch | 327,680 patch | 二分类(有无转移癌) | 图像分类 | 大规模但二分类 |
| CAMELYON16/17 | H&E WSI | 400 / 1,000 WSI | WSI 级转移诊断+区域标注 | 检测与分类 | WSI 级、淋巴结转移 |
| TUPAC(TCGA) | H&E WSI | 500+ WSI | 增殖评分/分子亚型 | 预测分子指标 | 与分子谱关联 |
注:BreastPathQ 的独特性在于输出为连续占比并用排序一致性 Pk 评估,与上表分类/检测任务不可直接比较。
§1.4 版本时间轴
| 时间 | 事件 |
|---|---|
| 2017 | 前作 Peikari et al.(Cytometry Part A)提出自动细胞占比方法;Akbar et al.(SPIE MI Proc.)提出 ResNet 细胞增殖回归 |
| 2018-10-15 | 训练数据发布 |
| 2018-11-28 | 验证数据发布 |
| 2018-12-01 | 测试数据发布 |
| 2018-12-28 | 提交截止 |
| 2019-01-04 | 挑战结果公布 |
| 2019-02-16 | BreastPathQ 研讨会于 2019 SPIE Medical Imaging 举行 |
| 2021-05 | 主论文发表于 Journal of Medical Imaging 8(3):034501 |
版本说明:公开下载的 train/val 发布包共 2,579 patch(2,394+185),出自 69 张 WSI(官方)。grand-challenge 站点曾列出 train/val 2,579 patch from 69 WSI、test 1,121 patch from 25 WSI,与论文 final split(test 1,119 / 27 WSI)存在出入,为真实数字矛盾点,使用前需注意核对。
§1.5 典型应用场景
- 新辅助治疗残余肿瘤细胞占比自动定量:预测 NAT 后 patch 的残余肿瘤占比,辅助疗效评估。
- 病理图像回归算法研究:验证 ResNet/EfficientNet 回归头在连续占比任务上的表现,对比 MSE、Pearson、ICC 等误差口径。
- AI 与病理医师一致性研究:衡量算法(0.94)与资深病理医师互评(0.927)的差距。
- 难例分析:研究"难与正常区分的细胞"为何是算法失败点、以及 AI 在难例上的获益边界(来源 5)。
- 细胞核检测预处理测试床:验证 color deconvolution + watershed + SVM 或深度学习的淋巴细胞/良性/恶性核分类管线(来源 6)。
§2 医学背景
§2.1 ICD-11 编码映射
| 类别 | ICD-11 编码 | 中文名称 |
|---|---|---|
| 浸润性乳腺癌 | 2C60 | 浸润性乳腺癌(NAT 后残余病变) |
| 乳腺原位癌(鉴别) | 2C65 | 乳腺原位癌(非本数据集主要对象) |
| 临床任务 | 评估残余肿瘤负荷 | 术后肿瘤细胞占比量化 |
| 治疗背景 | 新辅助治疗 | 术前全身治疗(化疗/内分泌/靶向) |
注:BreastPathQ 的病灶为新辅助治疗后手术标本上残留的浸润性乳腺癌。ICD-11 编码用于文献检索与知识图谱映射;具体细胞占比并非一个 ICD-11 编码所能表达,而是作为连续定量生物标志物存在于病理报告语境。
§2.1b SNOMED CT 映射
| 标签 | ICD-11 | SNOMED CT 码 | 术语 |
|---|---|---|---|
| 浸润性乳腺癌 | 2C60 | 93880001 | Invasive carcinoma of breast |
| 残余病变 | — | 427238001 | Residual disease / Residual tumor |
| 肿瘤细胞占比 | — | 412773006 | Cellularity(衡量组织样本中细胞密度/占比) |
| H&E 病理 | — | 115244008 | Hematoxylin and eosin stain |
| 全玻片成像 | — | 43390009 | Whole slide imaging (procedure) |
| 乳腺切除术标本 | — | 122510009 | Excision of breast tissue (procedure) |
注:BreastPathQ 任务所估的"tumor cellularity"在 SNOMED CT 中无精确一一对应概念,最贴近的表达是 “Cellularity”(412773006)结合乳腺癌残余病灶语境。此处为语义映射,非官方编码表。
§2.2 疾病简介与流行病学
乳腺癌是全球女性最常见的恶性肿瘤之一。对新辅助治疗(NAT,即术前化疗/内分泌/靶向治疗)的反应判断,关键在于评估术后标本中残余浸润性肿瘤细胞的量。残余癌负荷越低,往往预示更好的长期预后;反之,大量残余病变提示肿瘤耐药、需考虑后续强化治疗。BreastPathQ 聚焦的正是 NAT 后仍残留浸润性乳腺癌的患者——这类患者是"疗效不理想"的代表人群,对其残余细胞占比的可靠量化,直接服务于残余癌负荷评估与治疗决策。
需强调:BreastPathQ 本身不提供生存或复发结局标注,它的标签是残余肿瘤细胞占比这一中间量度,而非直接预后。它服务于"自动定量"研究,流行病学背景用于解释为何"评估残余病变"重要。
§2.3 临床任务定义
| 层面 | 说明 |
|---|---|
| 筛查 | 非筛查任务 |
| 诊断 | 不直接做良恶性分类(样本已确认为残余浸润性乳腺癌) |
| 分级/定量 | ✅ 核心任务:估计 patch 内残余肿瘤细胞占比(TC, 0-1) |
| 预后 | 间接支持:TC 是残余癌负荷/疗效评估的组成输入,本身非预后结局 |
任务形式化:给定一张 512×512 的 H&E patch,输出连续浮点
y ∈ [0,1]表示肿瘤细胞占比。训练/验证 patch 的y由一位病理医师标注;测试 patch 的参考y由两位病理医师独立标注取均值(见 §2.6)。
§2.4 患者人群
| 属性 | 说明 |
|---|---|
| 来源 | 加拿大 Sunnybrook Health Sciences Centre(Toronto) |
| 就医类型 | 接受新辅助治疗后行手术切除的乳腺癌患者 |
| 入选条件 | NAT 后手术标本上仍残留浸润性乳腺癌 |
| 样本数 | 55 名患者(训练 33 / 验证 4 / 测试 18) |
| 性别 | 临床以女性为主(公开信息未逐例给出) |
| 染色/扫描 | H&E,20X(0.5 µm/pixel)全玻片扫描 |
| 匿名化 | Sunnybrook IRB 批准匿名共享(不含可识别 PHI) |
注:公开发布包不逐 patch 提供年龄、种族、分子亚型等字段;上表仅含可确证的项目,缺失属性不臆造。
§2.5 临床价值
肿瘤细胞占比自动定量若可靠,可(1)缩短病理医师目测估读时间、(2)提供可复现的量化证据辅助残余癌负荷评估、(3)作为算法一致性的参照。BreastPathQ 的关键发现是最优算法 Pk≈0.94 已接近两位资深病理医师互评的 0.927,表明算法在"排序一致"层面可达到人类水平(来源 3)。但应警惕:接近不代表完全等价,绝对占比误差仍需以 MSE/R²/ICC 补充检验(见坑点)。
把"临床价值"拆成"可兑现的收益"与"暂时兑现不了的部分"会更务实:
| 层面 | 现状与证据 | 是否可直接落地 |
|---|---|---|
| 辅助估读、节省目测时间 | 算法排序接近医师(0.94 vs 0.927),理论上可做第二意见 | 研究级,未经临床验证不可直接用于报告 |
| 残余癌负荷评估的输入 | TC 只是残余负荷组成之一 | 可作为研究输入,非终点结论 |
| 跨中心自动定量 | 无外部验证,单中心 | 不可直接外推 |
| 算法一致性基准 | 是社区公认的连续占比 benchmark | 可作研究比较基准 |
结论:BreastPathQ 的"临床价值"现阶段主要体现为研究价值——验证"连续病理定量是否可行、如何评估"。任何将其输出用于实际临床决策的做法,都必须经过独立临床验证与监管审批(见医疗免责声明)。
§2.6 金标准表
| 划分 | 标注方式 | 标注者 | 性质 |
|---|---|---|---|
| 训练 | 每位 patch 由一位病理医师标注 TC | path1(>10 年经验) | 单标注,作为监督标签 |
| 验证 | 每位 patch 由一位病理医师标注 TC | path1 | 单标注,用于调参与中间检验 |
| 测试 | 每位 patch 由两位病理医师独立标注,组成参考真值 | path1 + path2(均 >10 年经验,独立互不知情) | 多标注参考;平均互评 Pk = 0.927 |
辅助标注:数据集另含 153 个 ROI 的淋巴细胞/恶性上皮/正常上皮细胞核标注,x-y 坐标存于 .xml 文件(官方)。完整 WSI 与坐标可申请获取(password-protected Amazon 云平台)。
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 大小 | 理由 |
|---|---|---|---|
| 复现论文官方划分 | 主论文 split(2,394/185/1,119 patch,96 WSI) | > 2 GB | 与 JMI 论文一致,可对照最优 Pk≈0.94 |
| 想用与 challenge 一致的数据 | 官方 grand-challenge 发布包 train/val(2,579 patch,69 WSI) | > 2 GB | 与挑战实际发布一致,但注意与论文 split 有出入 |
| 轻量试点/仅跑通 pipeline | train_labels.csv 中的一小批 patch | 视选择量 | 512×512 单 patch 可独立加载,适合最小可用子集 |
⚠️ 版本矛盾提示:官方 grand-challenge 站点曾列出 test 为 1,121 patch / 25 WSI,而论文 final split 为 1,119 patch / 27 WSI。两处数字对不上,选择前务必锁定你到底引用哪个口径(见坑点)。
§3.1 模态详情
| 属性 | 值 |
|---|---|
| 模态 | 组织病理(H&E 染色) |
| 成像 | 全玻片扫描(WSI),20X 放大,分辨率 0.5 µm/pixel |
| patch 尺寸 | 512 × 512 像素 |
| 图像格式 | .tif(原始发布包);完整 WSI 另提供 |
| 组织类型 | 乳腺癌 NAT 后残余浸润性癌 |
§3.2 按子集样本数
| 子集 | patch 数 | WSI 数 | 患者数 | 来源 |
|---|---|---|---|---|
| 训练 | 2,394 | 63 | 33 | 论文 final split |
| 验证 | 185 | 6 | 4 | 论文 final split |
| 测试 | 1,119 | 27 | 18 | 论文 final split |
| 合计 | 3,698 | 96 | 55 | 各 split 求和 |
| 公开 train/val 发布包 | 2,579 | 69 | — | grand-challenge 官方发布口径 |
复核:多份复现代码与中文综述复核均确认 2,394 / 185 / 1,119 这一 final split(来源 7、来源 8)。
§3.3 格式表
| 文件类型 | 格式 | 内容 |
|---|---|---|
| Patch 图像 | .tif | 512×512 H&E patch,按 slide/rid 命名 |
| 标签 | .csv | train_labels.csv / val_labels.csv:slide、rid、y |
| 患者映射 | .csv | test_patient_ids.csv |
| 细胞核标注 | .xml | 153 个 ROI 的淋巴细胞/良性/恶性上皮细胞核坐标 |
| 完整 WSI | 自有格式 | password-protected Amazon 云平台申请获取 |
§3.4 存储大小
发布包整体 > 2 GB(含全部 patch 图像),因此官方说明数据不适合直接放入 GitHub 仓库,须从 grand-challenge 站点下载(来源 9)。建议下载后预留至少 5-10 GB 磁盘(含解压)。具体精确字节数官方未逐项公布,此处不给臆造数值。
§3.5 标注方式
- 人工标注为主:训练/验证 TC 由一位资深病理医师(path1)逐 patch 给出;测试由两位病理医师(path1 + path2)独立标注。
- 连续值:patch 分配 0-1 连续分;无肿瘤细胞的 patch 记为 0%。
- 辅助弱标签:细胞核类型标注(淋巴细胞/恶性/良性上皮)以 ROI 级人工圈选 + 坐标形式提供。
- 无自动/合成标签:主任务标签全部来自病理医师人工评估。
§3.6 标注者资质与一致性
| 项目 | 值 |
|---|---|
| 标注医师数 | 2(path1、path2) |
| 经验 | 各 > 10 年病理经验 |
| 独立程度 | 独立标注、互不知情 |
| 一致性 | 测试集二医师平均互评 Pk = 0.927 |
| 参考真值 | 测试 patch 由二医师标注组成(非单一人) |
0.927 的医师互评即"人类上限参照":BreastPathQ 期望算法 Pk 接近但不一定超过 0.927;论文报告最优约 0.94 略高于互评,但属同一量级。
§3.7 采集周期
数据来自 2018 年组织的挑战;训练数据于 2018-10-15 发布,验证于 2018-11-28 发布,测试于 2018-12-01 发布,挑战结果 2019-01-04 公布。标本采集时段官方未逐例给精确区间,本页不臆造起止年月。
§3.8 地域覆盖
| 层面 | 值 |
|---|---|
| 采集中心 | 加拿大 Sunnybrook Health Sciences Centre(多伦多) |
| 国家 | 加拿大 |
| 单一中心 | 是(无多中心队列) |
| 泛化影响 | 单中心 → 跨中心/跨扫描仪泛化未获验证(见 §7) |
§3.9 设备规格
- 染色:H&E。
- 扫描:20X 全玻片扫描,像素分辨率 0.5 µm/pixel。
- patch 切取:组委会从 WSI 切取 512×512 像素 patch,文件为 .tif。
- 具体扫描仪厂商/型号官方未逐项披露,本页不臆造。
§3.10 深度溯源链
- 临床标本:Sunnybrook NAT 后手术切除的乳腺癌组织(IRB 批准匿名共享)。
- 制片:H&E 染色。
- 数字化:20X 全玻片扫描(0.5 µm/pixel)。
- patch 化:切取 512×512 patch 及细胞核 ROI。
- 标注:path1(train/val)、path1+path2(test)估读 TC。
- 发布:2018-10-15 起经 grand-challenge 分阶段公开 train/val/test。
- 论文:2021-05 主论文(Petrick et al., JMI)给出 final split 与结果。
采集与整理资金来自 Canadian Cancer Society(来源 2)。
溯源提醒:这一链条中"patch 化"是用户拿到的最小观测单元,向上(slide/patient)与向下(细胞 ROI)的信息官方均提供了可用入口——patch 级标签驱动回归,slide/patient 级支撑划分,cell ROI 支撑可解释性分析。三层视角应对应不同的统计单元,别把 patch 数直接当"独立患者样本数"来报显著性。
§4 数据结构
§4.0 目录树
解压 SPIE_BreastPathQ2019_Training_Validation.zip 与 SPIE_BreastPathQ2019_Testing.zip 后,社区复现代码(如 jhonatan247/BreastPathQ)约定的结构如下:
SPIE_BreastPathQ2019_Training_Validation/
└── breastpathq/
├── datasets/
│ ├── train/ # 训练 patch (.tif),按 slide/rid 命名
│ │ ├── t_1000001_1_100_100.tif
│ │ └── ...
│ ├── validation/ # 验证 patch (.tif)
│ │ └── ...
│ └── cells/ # 细胞核 ROI 辅助标注 (.xml)
│ └── ...
└── train_labels.csv # 训练/验证标签:slide, rid, y
SPIE_BreastPathQ2019_Testing/
└── breastpathq-test/
├── test_patches/ # 测试 patch (.tif)
│ └── ...
├── val_labels.csv # 测试参考标签:slide, rid, y
└── test_patient_ids.csv # patch -> patient 映射
⚠️ 不同复现代码解压后的顶层目录命名(
breastpathq/datasetsvsbreastpathq-test)略有差异,务必按你采用的仓库约定调整data_root(见 §6.1)。
§4.1 DAIMS 字段字典
核心标签表字段(train_labels.csv / val_labels.csv):
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| slide | Text | patch 所属 WSI/切片标识 | t_1000001 |
分组/患者级划分依据 | 无 | 无(非空) | 字符串 |
| rid | Integer/Text | patch 唯一标识(文件名关联键) | 1 或图像 basename |
定位对应 .tif 图像的主键 | 无 | 无 | 每 patch 唯一 |
| y | Float | 病理医师标注的肿瘤细胞占比 | 0.55 |
回归监督标签 | 标注主观性(二医师互评 Pk=0.927) | 见 §4.5 | [0, 1] 连续 |
辅助文件:
| 文件 | 关键字段 | 说明 |
|---|---|---|
| cells/*.xml | ROI 内细胞核 x-y 坐标 + 类型 | 淋巴细胞/恶性上皮/正常上皮 |
| test_patient_ids.csv | patch → patient | 测试患者级聚合 |
参考金标准在测试中由 path1+path2 独立标注组成,
y为二者平均参考值;train/val 的y仅来自 path1。
§4.2 标签分布
官方未公布逐 patch 的 TC 直方图,本页不臆造分布图。定性信息:patch 分配 0-1 连续分;无肿瘤细胞 patch 记为 0%(来源 4)。据此可知标签在 0 处存在堆积(大量非肿瘤/背景 patch 取 0),这是后续训练需处理的类别不平衡特征。
对"0 占主导"的处理思路分层:
- 若你只关心排序(Pk 口径):0 样本是天然的"低风险锚",参与排序即可,不必删除。
- 若你关心绝对占比(MSE/MAE 口径):0 堆积会让模型倾向输出接近 0 的小数,从而对"低但非零"的残余 patch 估低。可尝试把任务解耦为"是否含残余癌(0 与非 0 二分类)+ 对非 0 patch 的连续回归"。
- 可视化前:先画 log1p(y) 或按 0/低/中/高 分箱看分布,确认你的采样是否覆盖了高占比端;官方未给直方图,若你的训练偶发缺高占比 patch,回归头会系统性低估高占比端。
提示:请勿把"无官方直方图"当作"分布均匀"。NAT 后残余病变 patch 中,高占比与纯背景 patch 并存,分布通常右偏;跑通数据后第一时间打印自己数据集的 y 分布。
§4.3 关键统计
| 指标 | 值 | 说明 |
|---|---|---|
| 总 patch | 3,698 | 2,394+185+1,119 |
| 总 WSI | 96 | 63+6+27 |
| 总患者 | 55 | 33+4+18 |
| 图像分辨率 | 0.5 µm/pixel | 20X 扫描 |
| patch 尺寸 | 512×512 | .tif |
| 医师互评 Pk | 0.927 | 测试二医师 |
| 最优算法 Pk | ≈0.94 | 100 个提交中最优 |
§4.4 数据层级
患者 (patient, n=55)
└─ 切片/WSI (slide, n=96)
└─ patch (512×512, n=3,698)
├─ 图像 .tif
└─ 标签 y(train/val: path1;test: path1+path2)
└─ (可选) cell ROI 核标注 (153 ROI)
划分在 slide/WSI 层进行(同一切片的所有 patch 归入同一 split),是防泄漏的关键前提(见 §5.3)。
§4.5 缺失值与信息性缺失
| 情况 | 处理 | 说明 |
|---|---|---|
| 无肿瘤细胞的 patch | 标签记为 0% | 属于真实占比 0,不是"缺失",而是信息性极值 |
| 测试真值 | 挑战期间不公开 | 论文发表(2021)后公开,是信息性延迟而非缺失 |
| 患者级属性 | 发布包不提供 | 未采集/不公布,使用方按不可得处理 |
特别提示:把 0% 当"缺标签"删掉是错误做法——它们承载"该 patch 无残余癌"的负样本信息;但若模型训练把它们与"正样本但占比低"混淆,会拉偏排序,见坑点。
§4.6 patch 级文件关联速查
加载阶段最容易出错的是"CSV 里的 rid 到底对应哪个文件"。给一个按文件名反查的通用速查:
| CSV 列 | 通常映射到的文件名 | 说明 |
|---|---|---|
slide |
图像文件名前缀(如 t_1000001) |
常作为 basename 主体 |
rid |
图像文件序号/完整 basename | 多数仓库用 {slide}_{rid}.tif 或 {slide}_{...}.tif 命名 |
| 找不到时 | — | glob datasets/train/*.tif 反查 basename 集合与 CSV 求差 |
import glob, os, pandas as pd
df = pd.read_csv("breastpathq/train_labels.csv")
have = {os.path.basename(p)[:-4] for p in glob.glob("breastpathq/datasets/train/*.tif")}
# 先看 rid 是否直接命中 basename;不行再用 slide 拼接试
direct_hit = sum(str(r) in have for r in df["rid"])
print("rid 直接命中 basename 的比例:", direct_hit / len(df))
# 若命中率低,多半命名是 slide 派生,打印样例手工确认
print(df.head(3).to_string())
这条反查在换用不同社区仓库时尤其关键——各仓库对文件的归一/重命名不一致,直接套用会导致漏样本(见坑点 5)。
§5 数据划分与使用
§5.1 官方划分
论文 final split:训练 2,394 / 验证 185 / 测试 1,119 patch(分别出自 63/6/27 WSI、33/4/18 患者)。挑战实际分阶段:训练数据 2018-10-15 发布、验证 2018-11-28、测试 2018-12-01、截止 2018-12-28、结果 2019-01-04。划分按 WSI(slide)而非 patch 打散,避免同源 patch 跨 split 泄漏。
§5.2 社区惯例划分
多数复现代码直接沿用官方 train/validation/ 目录作为训练集、用测试集做最终评估;train_labels.csv 同时覆盖 train 与 validation 两目录的标签。有团队发现官方 train/val 存在分布漂移,主动重新切分 train/val 以保住 test 上性能(来源 10)——这是值得注意的社区实践(见坑点)。
§5.3 泄漏风险分析
- 正确前提:官方按 WSI 划分,同一切片不跨 split,规避了"同源 patch 泄漏"。
- 残余风险一(用户自作):若自行混洗 patch 切 train/val,同一 WSI 的相邻 patch 会同时出现在训练与验证,导致验证分数虚高。
- 残余风险二(患者级泛化):train/val/test 的患者身份是分开的(33/4/18),从设计上禁止了跨患者泄漏,但训练与测试患者来自同一中心,属"中心内同分布",跨中心外推仍需 §7 所述验证。
- 残余风险三(目录困惑):
train_labels.csv同时覆盖 train 与 validation,若误把 validation 也当训练用,验证集就"被动泄漏"进训练(见坑点)。
§5.4 交叉验证建议
测试集应只在最终评估时触碰。建议在官方 2,394 train patch 上做 patient/slide-level K 折交叉验证(折内保持整 WSI 不跨折)来选超参与早停;若担心 train/val 分布漂移,可在训练集内再留一个分布对齐的 holdout,而不要污染官方 test。
一个按 slide 分折(而非按 patch 混洗)的示范——这是防同源泄漏的关键:
import pandas as pd
from sklearn.model_selection import KFold
df = pd.read_csv("breastpathq/train_labels.csv")
# slide 为最高分组单元:先对 slide 去重,再对 slide 折,避免 patch 级打散
slides = df["slide"].drop_duplicates().reset_index(drop=True)
kf = KFold(n_splits=5, shuffle=True, random_state=42)
for fold, (tr_s, va_s) in enumerate(kf.split(slides)):
tr_slides = slides.iloc[tr_s].values
va_slides = slides.iloc[va_s].values
tr_df = df[df["slide"].isin(tr_slides)]
va_df = df[df["slide"].isin(va_slides)]
# 断言:train/val 的 slide 无交集,杜绝同源 patch 泄漏
assert not set(tr_slides) & set(va_slides)
print(f"fold {fold}: train {len(tr_df)} patch/{len(tr_slides)} slide, "
f"val {len(va_df)} patch/{len(va_slides)} slide")
若在 slide 之上还有 patient 维度可聚合(train 33 患者),当心同患者不同 slide 仍可能高度相关;安全起见可按 patient 而非仅 slide 做外层折。
§5.5 外部验证建议
在模型跨中心应用前,应在其他 H&E 乳腺癌数据集或自行采样的同任务 patch 上做外部验证,报告 Pk 之外的 MSE/R²/ICC/MAE。BreastPathQ 单中心设定决定了内部高分不能保证跨扫描仪/染色批次的鲁棒性(见 §7.3)。
外部验证的最小检查项:
| 检查项 | 说明 |
|---|---|
| 染色/扫描是否匹配 | 20X、0.5 µm/pixel、H&E 是否一致;否则先归一 |
| 任务是否同构 | 是否同为"残余癌占比 0-1 回归" |
| 指标口径 | 用与内部一致的 Pk+MSE/R²/ICC/MAE 组合,勿只报 Pk |
| 中心内外部报告 | 分开报告内部与外部,避免混算掩盖掉点 |
一个常用经验值:跨中心时若未经染色归一与迁移学习微调,Pk 通常显著低于内部(本数据集无官方外部数据,此经验来自同类病理迁移文献,非 BreastPathQ 实测,谨慎引用)。
§5.6 患者级聚合使用提示
虽然官方主任务是 patch 级回归,临床残余癌负荷评估天然发生在 patient/WSI 级。若你的目标是"每患者一个残余占比估计",需要显式的 patch→patient 聚合策略(取均值、按组织面积加权、或取 max 响应),并在 test_patient_ids.csv 上做聚合验证。官方主论文与排行榜均以 patch 级 Pk 排名,任何 patient 级结论都属于你自定义的二次任务,须在论文/报告中与官方口径区分标注。
§6 AI 就绪指南
§6.1 快速上手
本节代码基于社区多份复现代码的约定目录结构编写。假设你已按 §4.0 解压两个发布包并重排成如下 data_root(data_root 拼接关系为:data_root 是含 breastpathq/datasets 与 breastpathq-test 的顶层目录):
# 目录结构预期:
# data_root/
# breastpathq/
# datasets/
# train/ validation/ cells/
# train_labels.csv # slide, rid, y(覆盖 train + validation)
# breastpathq-test/
# test_patches/
# val_labels.csv # 测试参考标签
# test_patient_ids.csv
#
# 最小可用子集:仅需 data_root/breastpathq/train_labels.csv + 一部分 train/*.tif 即可跑通回归 pipeline
import os
DATA_ROOT = "/path/to/SPIE_BreastPathQ2019"
TRAIN_CSV = os.path.join(DATA_ROOT, "breastpathq", "train_labels.csv")
TRAIN_DIR = os.path.join(DATA_ROOT, "breastpathq", "datasets", "train")
print("data_root 拼接示例:", os.path.join(DATA_ROOT, "breastpathq", "datasets", "train"))
若采用官方下载包原封目录(顶层含
SPIE_BreastPathQ2019_Training_Validation),请先写一个小脚本把两包合并到统一结构(见 §6.3)。
§6.2 数据获取
| 途径 | 说明 |
|---|---|
| 官方下载 | 注册 grand-challenge 平台,同意参与协议后下载 Train/Val 与 Testing 两个 ZIP |
| 数据大小 | > 2 GB(不入 GitHub,来源 9) |
| 完整 WSI | 另行向组委会申请(password-protected Amazon 云平台) |
| 测试真值 | 挑战期间不公开,论文发表(2021)后公开 |
下载无需代码即可完成;若在服务器上,可用 curl/wget 从 grand-challenge 授权链接拉取(链接含 token,需登录后生成,本页不放置过期下载直链)。
§6.3 预处理全流程
核心预处理步骤:① 合并两发布包目录;② 用 train_labels.csv 的 rid 关联 patch 文件;③ 读取 .tif 并转 RGB float 张量;④ 划分 train/val(或沿用官方目录);⑤ 标准化。以下脚本演示最小可运行流程:
import os, pandas as pd, cv2
import numpy as np
DATA_ROOT = "/path/to/SPIE_BreastPathQ2019"
BR = os.path.join(DATA_ROOT, "breastpathq")
CSV = os.path.join(BR, "train_labels.csv")
# 1) 读取标签
df = pd.read_csv(CSV)
print("标签列:", list(df.columns), "行数:", len(df)) # 期望: ['slide','rid','y']
# 2) rid -> patch 文件 关联:不同仓库命名规则可能把 rid 映射成 t_xxxx.tif
def patch_path(rid):
# 视发布包实际命名而定;这里给可调前缀
fname = f"t_{rid}.tif" if str(rid).isdigit() else f"{rid}.tif"
return os.path.join(BR, "datasets", "train", fname)
# 3) 加载单 patch -> 512x512x3 float
def load_patch(rp):
img = cv2.imread(rp) # BGR
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img = img.astype(np.float32) / 255.0
return img
sample = df.iloc[0]
img = load_patch(patch_path(sample["rid"]))
print("patch 形状:", img.shape, "标签 y:", sample["y"]) # (512,512,3), [0,1]
不同仓库的
t_前缀与 basename 命名存在差异,加载前先列目录核对一个文件名,勿假设固定前缀。
官方分两个 ZIP 发布,先把 train/val 合并到统一结构并做染色归一(H&E 批次差异的关键缓解,见坑点 7):
import os, shutil
SRC_TRAIN = "/path/to/SPIE_BreastPathQ2019_Training_Validation"
SRC_TEST = "/path/to/SPIE_BreastPathQ2019_Testing"
OUT = "/path/to/merged_BreastPathQ"
# 1) 合并:把两包内同层数据拷到统一 data_root
# 官方 Train/Val 包内 -> OUT/breastpathq/datasets/{train,validation,cells}
# Testing 包内 -> OUT/breastpathq-test/{test_patches,val_labels.csv,...}
# 拷贝规则随解压层级而异,务必先 tree 核对(§4.0),此处省略逐文件复制
print("合并前请先核对两包解压层级,再写 shutil.copy2 / os.rename 映射")
# 2) 染色归一示例:Macenko 分离 H&E 通道并对齐参考染色向量
# 常用 stain-norm 库: staintools.STainNormalizer(method='macenko')
# from staintools import StainNormalizer, read_image, LuminosityStandardizer
# n = StainNormalizer(method='macenko'); n.fit(target) # target=参考 patch
# norm = n.transform(source) # 输出归一后图像
合并层级与染色归一目标 patch 的选择会直接影响跨切片一致性;建议把参考色板固定到训练集某个"中位染色"的 WSI,而非每 fold 重选(避免泄漏式过拟合)。
§6.4 PyTorch DataLoader
完整可运行的 Dataset 类 + transform + DataLoader:
import os, glob
import pandas as pd
import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
from PIL import Image
import numpy as np
class BreastPathQDataset(Dataset):
"""按官方划分加载 BreastPathQ 回归 patch。"""
def __init__(self, csv_path, img_dir, transform=None):
self.df = pd.read_csv(csv_path)
self.img_dir = img_dir
self.transform = transform
# 用文件名关联(rid 可能直接等于图像 basename 去扩展名)
self.rows = self.df.to_dict("records")
def __len__(self):
return len(self.rows)
def _find_path(self, rid):
# 先试直接 basename,再试常见 t_ 前缀
cands = [
os.path.join(self.img_dir, f"{rid}.tif"),
os.path.join(self.img_dir, f"t_{rid}.tif"),
]
for c in cands:
if os.path.exists(c):
return c
raise FileNotFoundError(f"找不到 patch: {rid} @ {self.img_dir}")
def __getitem__(self, idx):
r = self.rows[idx]
path = self._find_path(r["rid"])
img = Image.open(path).convert("RGB") # H&E -> RGB
y = torch.tensor(float(r["y"]), dtype=torch.float32)
if self.transform:
img = self.transform(img)
return img, y
transform = transforms.Compose([
transforms.Resize((224, 224)), # 适配 ImageNet 预训练回归头
transforms.ToTensor(),
transforms.Normalize(mean=[0.485,0.456,0.406],
std=[0.229,0.224,0.225]),
])
ds = BreastPathQDataset("train_labels.csv", "breastpathq/datasets/train", transform)
loader = DataLoader(ds, batch_size=32, shuffle=True, num_workers=4)
imgs, ys = next(iter(loader))
print("batch:", imgs.shape, ys.shape, "y 范围:", ys.min().item(), ys.max().item())
该 Dataset 假定
rid与图像文件名可关联;实际命名(是否含t_、数字补零)随发布包与仓库而异,_find_path中的候选规则请先核对真实目录再裁剪。
一个基于迁移 ResNet50 + 回归头 + MSE 的最小训练循环(社区主流做法):
import torch, torch.nn as nn
from torchvision import models
class RegHead(nn.Module):
"""ImageNet 骨干 + 全局池化 + 单神经元回归头,输出经 sigmoid 压到 [0,1]。"""
def __init__(self, backbone="resnet50"):
super().__init__()
self.base = getattr(models, backbone)(weights="IMAGENET1K_V1")
n = self.base.fc.in_features
self.base.fc = nn.Identity() # 去掉原分类头
self.fc = nn.Sequential(nn.Linear(n, 256), nn.ReLU(),
nn.Linear(256, 1), nn.Sigmoid())
def forward(self, x):
feat = self.base(x)
return self.fc(feat).squeeze(1) # (B,) in [0,1]
model = RegHead("resnet50")
opt = torch.optim.Adam(model.parameters(), lr=1e-4)
loss_fn = nn.MSELoss() # 与社区 MSE 做法一致
epochs = 15
for ep in range(epochs):
model.train(); tot, nb = 0.0, 0
for x, y in loader:
opt.zero_grad()
yp = model(x)
loss = loss_fn(yp, y) # y 已在 [0,1]
loss.backward(); opt.step()
tot += loss.item()*x.size(0); nb += x.size(0)
print(f"epoch {ep}: MSE={tot/max(nb,1):.4f}")
输出头
Sigmoid保证预测落在 [0,1],规避坑点 8 的越界占比问题;损失层面 MSE 直接对齐 0-1 标签。规模小(2,394 train patch),15 epoch 单卡即收敛。
§6.5 坑点(8 个)
⚠️ 坑点 1:官方站点与论文的 split 数字不一致——先锁定引用口径(分类:数据泄漏 / 标签理解)
问题:grand-challenge 官网曾列出 train/val 2,579 patch from 69 WSI、test 1,121 patch from 25 WSI;而 2021 JMI 主论文 final split 为 test 1,119 patch from 27 WSI。同一数据两处对不上,会让你的复现规模"莫衷一是"。
症状:按官网口径写的测试迭代数为 1,121,运行时报
IndexError或读取到 1,119 个文件;复现论文 benchmark 时测试集样本数与论文附表对不上。解决:
- 简单方法:锁定并声明你用的是哪一口径——复现论文结果用 2,394/185/1,119(96 WSI / 55 患者),以 JMI 论文为准;写技术报告时明示版本。
- 进阶方法:
wc -l val_labels.csv与ls test_patches | wc -l核对实际文件数,以你下载的发布包实际为准,不盲信任一站点文本。- SOTA 方法:在 pipeline 开头写 assert,
len(df) == 1119(若采用论文口径),把不一致在加载时立即暴露而非静默错位。参考:https://breastpathq.grand-challenge.org/ ;Petrick et al., JMI 8(3):034501, 2021, DOI 10.1117/1.JMI.8.3.034501。
⚠️ 坑点 2:
train_labels.csv同时覆盖 train 与 validation——勿把验证集当纯训练集误用(分类:数据泄漏)问题:官方
train_labels.csv包含 train 与 validation 两个目录内全部 patch 的标签。若你的 Dataset 只用这一个 CSV 且img_dir指到 train/,validation patch 会被误当训练数据;反之若把整 CSV 喂进去可能把同批 patch 同时用于 train 与 val,造成评估集"被动泄漏"。症状:val 上表现异常高、近乎过拟合完美;或拆分后 train/val 图像出现重叠导致 val 无意义。
解决:
- 简单方法:训练用
datasets/train/*.tif对应该 CSV 中落在 train 目录的 rid;验证显式指到datasets/validation/。先ls datasets/train | head观察目录,再写过滤。- 进阶方法:按 slide 前缀/路径把 CSV 拆成 train.csv 与 val.csv 两个独立文件,避免单一 CSV 引发误用。
- SOTA 方法:借鉴社区做法——鉴于部分团队发现 train/val 分布漂移,在训练集内再做 patient/slide 级 K 折并保留对齐 holdout,评估仅在最终 test 上进行。
参考:https://github.com/jhonatan247/BreastPathQ ;https://github.com/JJ-Zhang-DS/Breast-Cancer-Cellularity-Assessment
⚠️ 坑点 3:Pk 只衡量排序、不衡量绝对误差——单看 Pk 会掩盖系统性偏差(分类:评估误用)
问题:BreastPathQ 主指标 Pk(prediction probability concordance)比较算法与参考的排序,而不是绝对分数。一个把所有 patch 都低估 0.3 但排序正确的模型,Pk 仍可很高——它完全无法暴露"系统性低估/高估残余癌占比"这种对临床更危险的错误。
症状:Pk 亮眼(>0.9)但输出的占比绝对值整体偏低/偏高,MSE 与 R² 很差;下游若把绝对占比当输入做残余癌负荷计算,会系统性算错。
解决:
- 简单方法:报告时 Pk 之外必附 MSE、R²、MAE、Pearson、ICC,尤其 ICC 衡量"定量一致性"而不仅是排序。
- 进阶方法:绘制预测 vs 真值散点 + Bland-Altman 图,看偏差与比例偏倚。
- SOTA 方法:用 ICC(2,1) 或 ICC(3,1) 对比算法与参考——挑战传统法验证集 ICC 0.76 就是一例用 ICC 看定量一致性的做法。
参考:http://pathiip.org/?q=node/46 ;https://giters.com/hbk16/nuclei_detection
⚠️ 坑点 4:0% 标签既是极值又是"类别信号"——误当缺失或统一压回归会拉偏(分类:标签理解)
问题:标注协议规定无肿瘤细胞的 patch 记为 0%。这批 0 是真实占比为 0 的负样本,不是缺标签。若清洗时把 0 当缺失删掉,或对全标签直接套 Sigmoid/MSE 而不区分"贴 0 的背景 patch",模型会在 0 附近堆聚,难与低占比 patch 区分,拖累排序。
症状:预测值在 0-0.1 出现塌缩,真正"低但非零"的残余 patch 被判为 0;测试 Pk 提升停滞或 MAE 在低端偏高。
解决:
- 简单方法:保留 0 样本,但可视分布决定是否做保底裁剪(clip 到 [0,1])与加权。
- 进阶方法:把任务做成"占比分类到连续区间 + 区间内回归"或"0/正 二分类 门 + 正样本回归",先识别有癌 patch 再估占比。
- SOTA 方法:借鉴难例聚焦——AI 获益恰在高难 patch(难与正常区分的细胞),用难例挖掘或 Focal-style 回归损失(如加权 Huber)提升对边界例的敏感度。
参考:http://academic.naver.com/openUrl.naver?doc_id=926873563&linkType=outlink ;https://medicalxpress.com/news/2021-05-harnesses-ai-breast-cancer.pdf
⚠️ 坑点 5:patch 文件命名前缀不统一(
t_等)——文件名关联失败会静默漏样本(分类:工程陷阱)问题:
train_labels.csv的rid与磁盘上 .tif 文件名之间没有统一、文档化的关联规则;不同复现代码分别假定{rid}.tif、t_{rid}.tif或带数字补零的 basename。若你的_find_path猜错规则,会FileNotFoundError或静默跳过大量 patch。症状:DataLoader 报找不到文件;或为绕过错误改用 glob 后出现"能跑的样本数远小于 2,394"而不自知。
解决:
- 简单方法:首次加载前
ls datasets/train | head -20打印真实文件名,与 CSV 首行 rid 对照,硬编码正确模板。- 进阶方法:把 rid→文件建一个显式映射字典(glob 目录 → basename 去扩展名 → 对应 rid),再反查缺失的 rid 并告警。
- SOTA 方法:写数据完整性检查,断言 “已关联 patch 数 == CSV 行数”,任何缺失即中断,杜绝静默漏样本。
参考:https://github.com/jhonatan247/BreastPathQ ;https://github.com/nestors11/breastpathQ-Solution
⚠️ 坑点 6:train/val 存在分布漂移——直接拿小验证集调参会过拟合噪声(分类:偏倚陷阱)
问题:有团队报告官方 train/val 存在分布漂移,185 张验证 patch 过少且与训练分布不完全对齐。直接反复用这 185 张调超参/早停,容易把模型拟合到验证集噪声上,导致最终 test 表现下降。
症状:验证 loss 持续走低但 test Pk 上不去;在 185 张上"挑出"的 best epoch 换一个种子即崩塌。
解决:
- 简单方法:验证集仅用于粗略监控,不做细粒度早停/超参搜索。
- 进阶方法:在训练集内按 slide/patient 做 K 折,得到更稳的内部评估再选超参;185 张留作轻度 sanity check。
- SOTA 方法:社区做法是主动重新切分 train/val(保持分布对齐且不污染 test),在重新对齐的验证上做调参,最后仅用 test 一次评估。
参考:https://github.com/JJ-Zhang-DS/Breast-Cancer-Cellularity-Assessment
⚠️ 坑点 7:单中心 + 单染色/扫描批次——跨中心跨扫描仪外推未验证,迁移会掉点(分类:偏倚陷阱)
问题:数据全部来自 Sunnybrook 单一中心、H&E 单染色、20X 单扫描规格。颜色归一化与染色批次差异未在数据内覆盖;把模型直接迁移到其他医院或不同扫描仪,H&E 色调/分辨率变化会显著影响回归性能,而训练中无此类多样性可抵御。
症状:在本数据集 test 上 Pk≈0.9,换到外部乳腺癌 patch 后 Pk 掉到 0.7 以下;对低对比/不同染色 batch 的 patch 尤其失败。
解决:
- 简单方法:外部应用前先做 stain normalization(如 Macenko),并做最小外部 patch 集验证。
- 进阶方法:在预处理加入染色抖动/颜色增强(HED 空间扰动),增强对染色变化的鲁棒性(须谨慎,见 §6.6)。
- SOTA 方法:做多中心前瞻性验证并报告跨中心 Pk/MSE,明确本模型只在"采集画像匹配"范围内可用。
参考:http://pathiip.org/?q=node/46 ;https://www.shaziaakbar.co.uk/?page_id=178/
⚠️ 坑点 8:回归标签需 clip/缩放——直接用 MSE 到未裁剪输出会造成无意义占比(分类:预处理陷阱 / 评估误用)
问题:TC 被约束在 [0,1],但多数回归头输出为无约束实数。若不 clip 或不对输出做 Sigmoid/
*100的语义化处理,模型可能输出负值或 >1 的占比;而评估与可视化若直接用该值,会产生"占比 -0.2 或 1.4"这类无意义读数,污染 ICC/散点图解释。症状:预测分布超出 [0,1],Bland-Altman 图边界值离谱;ICC/MAE 因越界异常值被拉高;下游把越界占比当真实输入。
解决:
- 简单方法:输出层加
torch.sigmoid或预测后np.clip(y_pred, 0, 1)。- 进阶方法:用
y_pred = 100 * sigmoid(z)建模"0-100 百分比",语义更贴近病理报告,再除 100 折算到 [0,1]。- SOTA 方法:将目标做有序回归或区间加权——既保证输出落在 [0,1],又显式惩罚"跨区间错序",与 Pk 的排序语义对齐。
参考:https://github.com/jhonatan247/BreastPathQ ;https://github.com/hbk16/nuclei_detection
§6.6 数据增强
安全 ✅:随机翻转/旋转(H&E 方向无临床语义偏置)、随机裁剪或缩放(512→224 已够)、轻度对比度/亮度抖动。这些不变性对病理 patch 合理。
危险 ❌:强烈颜色通道互换或 HED 大扰动可能改变"胞核染色密度→占比"的视觉线索;放缩过大(把 512 缩到 <96)会丢失细胞级纹理,降低对低占比 patch 的分辨力;对 0% 背景 patch 施加会"伪造出细胞"的拼接/马赛克增强应谨慎。
一个安全的 train-time 增强示例(几何 + 轻度光度):
import random, torchvision.transforms as T
def build_train_transform():
"""几何不变 + 轻度光度抖动。避免扭曲胞核密度语义。"""
return T.Compose([
T.RandomResizedCrop(224, scale=(0.8, 1.0)), # 保留足够上下文
T.RandomHorizontalFlip(p=0.5),
T.RandomVerticalFlip(p=0.5),
T.RandomRotation(degrees=90), # H&E 无方向偏好
T.ColorJitter(brightness=0.05, contrast=0.05),# 轻微,勿动色相/饱和度
T.ToTensor(),
T.Normalize(mean=[0.485,0.456,0.406], std=[0.229,0.224,0.225]),
])
# 不建议的"染色伪造"增强(高安全风险):
# T.RandomApply([T.ColorJitter(hue=0.3, saturation=0.5)], p=0.5) # 会改胞核/基质区分
若确需染色增强,建议在 HED 而非 RGB 空间对 H、E 通道做小幅扰动(配合 stain normalization),并先在低占比 patch 上人工核验增强后仍能目视辨出细胞,再上线。
§6.7 模型推荐
| 模型 | 任务适配 | 说明 |
|---|---|---|
| ResNet50(迁移) | 回归主干 | 社区主流,ImageNet 预训练 + 回归头 + MSE(来源 8) |
| EfficientNet | 回归主干 | 参数效率高,社区亦有采用 |
| ResNet cellularity | 细胞增殖回归 | Akbar 等前作方案(来源 11) |
| 传统特征+SVM/核分割 | 传统基线 | Peikari 125 参数特征 + 核分割 SVM,验证 Pk 0.79 / ICC 0.76(来源 6) |
§6.8 硬件需求
| 方案 | 显存 | 说明 |
|---|---|---|
| ResNet50 迁移训练 512 输入 | ≥ 8-12 GB | 可 batch=16-32(视 Resize 到 224) |
| EfficientNet-B0/1 | ≥ 6-8 GB | 更省显存 |
| 推理/基线 | 任意 CPU 亦可 | 单 patch 前向轻量 |
3,698 patch 规模小,单卡即可完成完整训练+评估;重点在染色归一与评估口径而非算力。
§6.9 评估指标代码
主指标 Pk(prediction probability concordance)+ 辅助指标:
import numpy as np
from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error
def concordance(yp, yr):
"""平均预测概率一致性 Pk:两序列相对排序一致的比例(取 1-pair 不一致加权)。"""
yp, yr = np.asarray(yp, float), np.asarray(yr, float)
# 遍历 patch 对,统计 yp 与 yr 相对顺序一致的占比
n = len(yp); s = 0; cnt = 0
for i in range(n):
for j in range(i+1, n):
if yr[i] == yr[j]:
continue
cnt += 1
s += int((yp[i]-yp[j])*(yr[i]-yr[j]) > 0)
return s / max(cnt, 1)
def icc_agreement(y1, y2):
"""两评注者定量一致性 ICC(2,1 一致型)。生产请直接调用成熟库。"""
# 推荐: from pingouin import icc; icc(data=df, targets='id', raters='rater',
# ratings='score', icc_type='icc2') 由成熟实现给出准确 ICC。
pass
yp = np.array([0.5,0.8,0.2,0.9]); yr = np.array([0.4,0.7,0.3,0.95])
print("Pk≈", round(concordance(yp, yr), 3))
print("MSE=", round(mean_squared_error(yr, yp),4),
"R2=", round(r2_score(yr, yp),3),
"MAE=", round(mean_absolute_error(yr, yp),4),
"Pearson=", round(float(np.corrcoef(yr, yp)[0,1]),3))
⚠️ 上方
icc_agreement仅示形意,完整 ICC 请用pingouin.icc或 Rirr包实现,避免手写算错。
对 1,119 张测试 patch,上面 O(n²) 的 Pk 双层循环约需 ~626k 次比较,尚可接受;若做大样本,请用向量化与 Kendall’s tau-b 等价实现:
import numpy as np
from scipy.stats import kendalltau
def concordance_fast(yp, yr):
"""Kendall tau-b(带结处理),是 Pk 排序一致性的稳健向量化版本。"""
tau, p = kendalltau(yr, yp)
return tau
def icc_real(score_df):
"""对 long-form 表(id, rater, score)算 ICC(2,1) 一致型。"""
from pingouin import icc
res = icc(data=score_df, targets="id", raters="rater",
ratings="score", icc_type="icc2")
return res.loc["ICC2", "ICC"]
# 实测向量化一致性:
yp2 = np.random.default_rng(0).uniform(0, 1, 300)
yr2 = np.clip(yp2 + np.random.default_rng(1).normal(0, 0.1, 300), 0, 1)
print("fast Pk (tau-b)≈", round(concordance_fast(yp2, yr2), 3))
用 Kendall’s tau-b 作为 Pk 的向量化代理是社区常用近似,二者在无大量结时数值接近;若要与官方 Pk 精确对齐,仍建议按论文定义实现原始计数公式并声明实现差异。
§6.10 MLOps 笔记
小数据集 + 竞赛口径的 MLOps 要点,做成开工前 checklist:
| 类别 | 动作 | 为什么 |
|---|---|---|
| 版本 | 记录用的是官网还是论文 split | 二者 test 数不同(1,121 vs 1,119/27 WSI),影响复现 |
| 标签 | 用 2,394 训练、185 验证,勿混用单一 CSV | train_labels.csv 覆盖两者,防被动泄漏(坑点 2) |
| 划分 | K 折按 slide/patient 打,不按 patch | 防同源 patch 泄漏(§5.3/5.4) |
| 评估 | test 只碰一次;补 MSE/R²/ICC/MAE | Pk 只看排序(坑点 3) |
| 增强 | 几何+轻度光度;染色增强谨慎 | 勿伪造细胞密度线索(§6.6) |
| 输出 | Sigmoid 或 clip 到 [0,1] | 防越界占比(坑点 8) |
| 可复现 | 固定 seed、染色归一参数、裁剪尺寸 | 多 seed 取均值更稳 |
| 合规 | 仅供学术研究,勿外泄受保护坐标 | 遵守参与协议 |
由于样本仅 3,698 patch、且划分跨患者,单次 run 的方差不可忽略。正式报告建议至少 3 个 seed 取均值±std,并在方法学注明你采用的 split 口径,才能在论文里与他人数字横向对齐。
§7 质量评估与局限性
§7.1 已知偏倚
| 类型 | 描述 | 严重程度 | 缓解 |
|---|---|---|---|
| 单中心偏倚 | 全部来自 Sunnybrook 单一中心 | 中 | 外部多中心验证 |
| NAT 后人群偏倚 | 仅 NAT 后残余癌患者,非未治疗乳腺癌 | 中 | 明确适用范围 |
| 染色/扫描批次 | 单一 H&E 批次与 20X 规格 | 中 | 染色归一 + 增强 |
| 标注主观性 | 二医师互评 Pk 0.927 < 1 | 低-中 | 多标注平均、报告 ICC |
| 0% 标签堆积 | 大量背景 patch 记 0 | 低 | 门控/区间加权 |
§7.2 标注质量
训练/验证由一位资深病理医师(>10 年)标注;测试由两位独立标注组成参考,平均互评 Pk = 0.927(来源 3)。0.927 的互评说明人类标注自身存在 ~7% 的排序不一致,这是算法在"绝对真值不可得"条件下的合理参考上限——评估时应把算法与"参考真值"对齐,而非追求超过医师互评太远的虚高。
§7.3 泛化性
| 场景 | 失效风险 | 证据 |
|---|---|---|
| 同中心新切片 | 低-中 | 内部 test Pk≈0.94 |
| 跨中心(不同医院) | 中-高 | 无外部验证;单中心采集 |
| 跨扫描仪/染色批次 | 中-高 | H&E 颜色差异大,未覆盖 |
| 未接受 NAT 的患者 | 中-高 | 人群限定 NAT 后残余癌 |
§7.4 伦理
数据由 Sunnybrook IRB 批准匿名共享;采集资金来自 Canadian Cancer Society(来源 2)。完整 WSI 与坐标受密码保护需申请,发布包仅含 patch 与数值标签。参与者默认同意数据仅用于学术竞争与研究。测试真值在论文发表后公开,属标准竞赛规范,非隐瞒。
使用方的伦理注意点:
| 注意点 | 说明 |
|---|---|
| 数据用途限制 | 官方协议限定学术竞争/研究;商用前须与组委会确认授权条款 |
| 再发布 | 不得把受密码保护的 WSI/坐标原样转发;论文复现引用经 CC-BY 主论文许可 |
| 结果解释 | 残余占比是中间量度,非直接诊断/预后声明,避免过度宣称 |
| 测试真值 | 论文发表(2021)后已公开,引用应注明版本口径 |
BreastPathQ 作为竞赛型数据集,其匿名化与知情框架由 Sunnybrook 与组委会在 2018 年设定;2021 年后医学 AI 伦理共识(如 FAIR 数据原则与可复现声明)建议使用者自行补充数据卡片式声明,本页 DAIMS 即为此服务。
§7.5 公平性
公开发布包未逐 patch 提供种族、年龄、社会经济学分层字段,无法在此做亚组公平性审计。作为单中心研究,跨人群公平性无证据支撑,应用时按"采集画像内"处理。此局限如实记录,不以臆造数据掩盖。
需特别强调两点:
- 缺乏元数据 ≠ 没有偏倚:无种族字段不代表样本多元,恰恰相反,单中心加拿大队列意味着人群组成很可能高度同质。若目标人群差异大,请勿假设本数据集能代表。
- NAT 后人群特殊性:患者均为 NAT 后残余病变者,与未经治疗、早期筛查或复发转移人群在细胞形态与占比分布上可能系统不同,跨人群迁移时需显式检验。
§7.6 数据漂移
挑战分四阶段发布(2018-10-15/11-28/12-01),train/val/test 采集间隔短,未见时间漂移报告。但 train/val 存在分布漂移(社区观察),原因是验证子集规模小、来源切片与训练不完全同分布(见坑点)。发布后数据冻结,无后续版本;使用方关注的是"跨中心"而非"跨时间"漂移。
漂移应对的实操提醒:
| 场景 | 建议 |
|---|---|
| train/val 漂移 | 用训练内 K 折替代直接信任 185 张 val(坑点 6) |
| 跨中心/扫描漂移 | 先 stain normalization + 外部小样验证(坑点 7) |
| 时间漂移 | 该数据已冻结,无持续更新时间轴问题 |
§7.7 DAIMS 24 项评估表
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | train_labels.csv 为宽格式,一行一 patch |
| 2 | 唯一标识 | ✅ | rid 为 patch 唯一键,关联图像文件 |
| 3 | 特殊字符 | ✅ | 文件与字段命名规范,未见特殊字符问题 |
| 4 | 重复行 | ✅ | 未见重复 patch 报告(官方按 WSI 划分) |
| 5 | 缺失编码 | ⚠️ | 无统一 NA 编码;0% 是真实极值非缺失(见坑点 4) |
| 6 | 标签标识 | ✅ | y 语义明确为 0-1 连续 TC |
| 7 | 罕见类分组 | ⚠️ | 未公开直方图;0 与低占比边界需自行分组处理 |
| 8 | 偏倚评估 | ✅ | 本 §7.1 已列单中心/NAT/染色等偏倚 |
| 9 | 数据字典 | ✅ | §4.1 提供字段级字典 |
| 10 | 信息性缺失解释 | ✅ | §4.5 说明 0 极值与测试真值延迟 |
| 11 | 设备记录 | ⚠️ | 20X/0.5µm 已知,但扫描仪型号未披露 |
| 12 | 共线性 | ✅ | 单回归标签,字段间低共线性 |
| 13 | 编码映射 | ✅ | ICD-11/SNOMED CT 已给(§2.1/2.1b) |
| 14 | 时间戳处理 | ⚠️ | 分阶段发布时间已知,patch 级采集时间未给 |
| 15 | 划分建议 | ✅ | §5 提供 WSI/patient 级划分建议 |
| 16 | 泄漏讨论 | ✅ | §5.3 讨论同源 patch/患者级泄漏 |
| 17 | 标签分布 | ⚠️ | 官方未公布直方图,本页未臆造 |
| 18 | 测量偏倚 | ✅ | 二医师互评 Pk 0.927,标注主观性已量化 |
| 19 | 外部验证建议 | ✅ | §5.5/§7.3 要求跨中心验证 |
| 20 | 版本记录 | ✅ | §1.4/§3.0 时间轴 + 版本矛盾说明 |
| 21 | 预处理脚本 | ❌ | 官方无一键预处理脚本,需社区/自建(§6.3) |
| 22 | 合规要求 | ✅ | 参与协议、IRB 匿名共享、测试真值延迟 |
| 23 | 多模态对齐 | ✅ | 图像/标签/细胞核 ROI 对齐清晰 |
| 24 | 去标识化 | ✅ | IRB 批准匿名,公开包无 PHI |
DAIMS 评分:19.5 / 24
评分解读:BreastPathQ 在结构清晰、任务定义与偏倚量化上表现优秀——划分按 WSI、测试有多标注参考、医师互评已量化(+0.5 归因于"测量偏倚"与"版本矛盾"两项虽存在但被如实记录并有缓解路径)。扣分集中在工程交付与文档完备度:官方站点与论文 split 数字不一致、无官方预处理脚本、无公开标签直方图、设备/采集时间未逐项披露、0% 标签与缺失语义未做统一编码说明。作为竞赛型数据集,它的"科学性"强但"工程即取性"偏弱。
对你意味着什么:选用前先自建或复用社区预处理与数据完整性断言(坑点 1/5),把官方未明确的部分(标签分布、0 与缺失语义、扫描仪型号)在方法学里如实声明;模型评估务必 Pk + MSE/R²/ICC/MAE 并用(坑点 3),并做染色归一与外部验证(坑点 7)后,才可讨论跨中心落地。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 前作手动 vs 自动 TC 定量研究 | Akbar et al.(Sci. Reports 2019) | 自动 vs 手动细胞占比定量 | DL 与病理医师一致性 0.82 vs 医师间 0.89 | 单中心同一研究 | DL 定量一致性接近但略低于医师互评(来源 12) |
注:BreastPathQ 挑战本身未见公开的多中心外部评测论文;上表为同一团队前作的定量一致性旁证,非本数据集独立外部 test 结果。凡未经同行评审支撑的跨中心数据,本矩阵一律不收录。
§8 基准性能与生态
§8.1 排行榜
BreastPathQ 官方以平均预测概率一致性 Pk 排名。测试阶段共 100 个有效提交算法,Pk 范围 0.497-0.941,最优 Pk≈0.94(接近二病理医师互评 0.927)。官方未在单一可抓取页面完整列出逐名次的 39 支团队全部模型细节与代码链接;下表为本页可确证的代表性结果与社区复现,非官方完整 rank table:
| 排名 | 模型 | 性能(Pk) | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 最优 | (挑战最优算法) | ≈0.94 | 2019 | 见主论文 | Petrick et al., 2021, JMI. DOI 10.1117/1.JMI.8.3.034501 | 见官方站点 |
| 二医师互评(参考上限) | path1 vs path2 | 0.927 | 2019 | 人工 | Petrick et al., 2021, JMI | — |
| 传统基线(社区复现) | 特征+SVM | 验证 Pk 0.79 / ICC 0.76 | — | 125 特征+核分割 SVM | Peikari et al., Cytometry Part A, 2017 | 链接 |
⚠️ 数值不可直接比较的原因:不同来源分别报 test Pk、验证 Pk、ICC、医师互评,口径(子集、指标、标注真值版本)不同。排他性结论仅在同口径内成立。
如何读这张表。 Pk 范围 0.497-0.941 跨度很大:0.497 说明有算法几乎不优于随机排序,0.94 则与二医师互评 0.927 持平。参考这一区间的解读要点:
| Pk 区间 | 含义 |
|---|---|
| < 0.6 | 排序弱于/约等于随机,模型基本没学到有效信号 |
| 0.6-0.8 | 学到一定信号,但排序错误仍多 |
| 0.8-0.927 | 接近医师互评下限,实用潜力初显 |
| ≈0.94 | 追平/略超医师互评,达到人类参考水平(需补 MSE/R²/ICC 看绝对误差) |
注意 Pk≈0.94 只是"最优提交"的量级参考,非所有方法都能达到;本表代表的是该挑战的真实分布形态,而非可复现的最低门槛。
§8.2 SOTA 总结与选型建议
当前代表性水平:深度学习回归(迁移 ResNet50/EfficientNet)在 test 上 Pk≈0.94,基本追平并略超医师互评 0.927;传统特征法验证 Pk≈0.79。选型建议:追求指标上限且算力充足用 ResNet50/EfficientNet 迁移回归;作为无深度算力的强基线用特征+SVM/核分割(验证 Pk 0.79)。无论选哪种,都必须用 Pk+MSE/R²/ICC 多口径评估,避免被单一排序指标误导。
§8.3 评测协议
- 输入:每 patch 输出一个 0-1 浮点分数。
- 提交:每 patch 一行的 CSV,同脚本用于训练/验证/测试各阶段(来源 4)。
- 主排名:平均预测概率一致性 Pk,比较算法与参考的排序(来源 2)。
- 限制:每队最多 3 次有效测试提交;测试阶段禁止人工介入(官方)。
- 参与规模:317 名注册者;训练阶段 74、验证 551、测试 100 个有效提交;39 支团队提交有效测试项(来源 4、来源 3)。
复现评测协议时的落地要点:
1. 加载 1,119 张测试 patch 与其参考标签(val_labels.csv)。
2. 为每张 patch 输出一个 0-1 浮点分数(模型推理)。
3. 计算 test Pk;同时补算 MSE / R² / MAE / Pearson / ICC。
4. 与论文 0.94 量级对比时,务必确认自己用的是同一 final split(1119/27 WSI)。
5. 若测试真值不可得,先只在 train 内 K 折自评,勿伪造外部分数。
"训练阶段 74、验证 551、测试 100"来自不同阶段的有效提交计数口径;验证阶段提交多于训练,与"验证开放期更便于反复调参"一致。另有 39/37/36 支团队等不同计数的来源口径,引用时请注明具体阶段。
§8.4 相关数据集
| 数据集 | 规模 | 差异点 |
|---|---|---|
| PatchCamelyon (PCam) | 327,680 patch | 二分类,非连续回归 |
| CAMELYON16/17 | 400/1,000 WSI | WSI 级淋巴结转移,检测/诊断 |
| BACH/ICIAR2018 | 400 patch/40 WSI | H&E 分类 |
| TUPAC | 500+ WSI | 预测增殖评分/分子亚型 |
| NACT 疗效数据集 | — | 若含连续残余癌占比可作为外部验证来源 |
对比要点:PCam/CAMELYON 解决"癌是否存在(分类/检测)“,BreastPathQ 解决"残余癌占多少(连续回归)”。若你的终极任务是"测残余负荷",PCam 式的二分类模型无法直接给出占比;反之 BreastPathQ 回归模型通常也不直接做转移检测。二者互补而非替代。
§8.5 关键论文 Top 5-10
- Petrick, N., Akbar, S., Cha, K.H., Nofech-Mozes, S., et al. BreastPathQ: An Image Analysis Software and Machine Learning Contest for Breast Cancer Histopathology Images. Journal of Medical Imaging, 8(3):034501, 2021. DOI 10.1117/1.JMI.8.3.034501 — 主论文,给出 final split、协议与结果(PMC)。
- Peikari, M., et al. 自动细胞占比定量. Cytometry Part A, 91(11):1078-1087, 2017 — 传统自动占比方法,125 特征+核分割 SVM 前作。
- Akbar, S., et al. ResNet 细胞增殖回归. SPIE Medical Imaging Proc., 105810U, 2018 — 深度学习细胞增殖前作。
- Akbar, S., et al. 自动 vs 手动肿瘤细胞占比定量. Scientific Reports, 2019, s41598-019-50568-4 — 手动 vs 自动定量一致性(DL-医师 0.82 vs 医师间 0.89)。
- BreastPathQ 社区复现 jhonatan247/BreastPathQ — ResNet/EfficientNet 回归头 + MSE,多指标复现(GitHub)。
- MedicalXpress 报道 Harnesses AI 于乳腺癌定量(2021-05)— 通俗解释 AI 在难例上的获益边界与挑战意义(来源 5)。
前作链(Peikari → Akbar)说明 BreastPathQ 是把"从传统图像特征到深度学习"的演进固化为统一评测基准:读懂这三篇可理解 challenge 指标为何用排序一致性、以及深度学习为何在此任务能逼近医师。
§8.6 社区活跃度
BreastPathQ 拥有若干 GitHub 复现(jhonatan247/BreastPathQ、nestors11/breastpathQ-Solution、JJ-Zhang-DS/Breast-Cancer-Cellularity-Assessment 等),但整体规模小于 MIMIC/PCam。挑战 2019 年收官,主论文 2021 年发表后进入稳定引用期,引用量约 44(Google Scholar,截至 2026-09)。作为"病理连续回归"细分任务的代表性 benchmark,其价值在于任务形态独特而非社区规模大。
活跃度画像:延续期——挑战活动在 2019-2021 最热(发布→研讨会→论文),之后热度转向"复现+二次应用"。多数社区仓库以"跑通官方数据 + 报告多指标"为主,鲜有新增榜单竞争。若你追求大规模生态与持续 leaderboard,它不如 PCam/CAMELYON;若你要一个小而规范、适合快速验证连续占比假设的数据集,它比大而杂的数据更省心。
§8.7 生态快照
| 资源 | 类型 | 链接 | Star(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| grand-challenge 官方站 | 官方主页/下载 | https://breastpathq.grand-challenge.org/ | — | 权威发布与说明 |
| jhonatan247/BreastPathQ | 复现代码 | https://github.com/jhonatan247/BreastPathQ | 见平台 | ResNet/EfficientNet 回归复现 |
| nestors11/breastpathQ-Solution | 参赛解 | https://github.com/nestors11/breastpathQ-Solution | 见平台 | 官方参赛仓库之一 |
| JJ-Zhang-DS/Breast-Cancer-Cellularity-Assessment | 复现+重切分 | https://github.com/JJ-Zhang-DS/Breast-Cancer-Cellularity-Assessment | 见平台 | 讨论 train/val 漂移 |
| hbk16/nuclei_detection | 核检测管线 | https://github.com/hbk16/nuclei_detection | 见平台 | color deconvolution+watershed+SVM |
Star 数以各仓库页面实时为准,本页不抓取精确数值以免失真。
§9 资源与引用
§9.1 官方资源
- 官方主页 / Overview:https://breastpathq.grand-challenge.org/
- 主论文 PDF(PMC):https://pmc.ncbi.nlm.nih.gov/articles/PMC8107263/
- DOI:https://doi.org/10.1117/1.JMI.8.3.034501
- SPIE JMI 论文页:https://www.spiedigitallibrary.org/journal/10.1117/1.JMI.8.3.034501
- 挑战背景(PathI2P / SPIE):http://pathiip.org/?q=node/46
- 前作信息:https://opticalengineering.spiedigitallibrary.org/profile/Shazia.Akbar-4087354
§9.2 BibTeX 引用
@article{Petrick2021,
author = {Petrick, N. and Akbar, S. and Cha, K.H. and Nofech-Mozes, S. and Sahiner, B. and others},
title = {BreastPathQ: An Image Analysis Software and Machine Learning Contest for Breast Cancer Histopathology Images},
journal = {Journal of Medical Imaging},
volume = {8},
number = {3},
pages = {034501},
year = {2021},
doi = {10.1117/1.JMI.8.3.034501}
}
@article{Peikari2017,
author = {Peikari, M. and others},
title = {Automatic cellularity assessment in breast cancer using {H\&E} images},
journal = {Cytometry Part A},
volume = {91},
number = {11},
pages = {1078--1087},
year = {2017}
}
@article{Akbar2019,
author = {Akbar, S. and others},
title = {Automated and manual quantification of tumour cellularity},
journal = {Scientific Reports},
year = {2019},
doi = {10.1038/s41598-019-50568-4}
}
§9.3 引用指南
- 引用主论文时使用
@article{Petrick2021}(JMI, DOI 10.1117/1.JMI.8.3.034501)。 - 说明任务背景可补引 Peikari 2017 与 Akbar 系列前作。
- 主论文按 CC-BY 4.0 发表,可自由引用与再分发(注明出处)。
- 数据集参与协议限定学术用途;引用时同时注明"数据经 SPIE BreastPathQ 官方授权使用"。
§10 AI 使用声明卡
§10.1 AI 模型列表
本文由 Claude-class 大型语言模型在千方医数集写作 Agent 工作流中辅助生成;检索研究由 WebSearch Agent 完成;无图像生成模型用于正文内容。
§10.2 AI 参与范围
AI 负责草拟正文、整合 FACTS.md 事实、撰写代码示例与坑点。所有事实数字均回查至公开来源并经人工复核;代码示例为可运行的最小示意。
§10.3 输入来源列表
- BreastPathQ 官方主页 — https://breastpathq.grand-challenge.org/
- SPIE/PathI2P 挑战背景 — http://pathiip.org/?q=node/46
- 主论文元数据(MTMT 34438862)— https://m2.mtmt.hu/api/publication/34438862
- 标注/协议来源(学术检索)— http://academic.naver.com/openUrl.naver?doc_id=926873563&linkType=outlink
- MedicalXpress 报道(AI 难例获益)— https://medicalxpress.com/news/2021-05-harnesses-ai-breast-cancer.pdf
- 中文综述复核(2394/185/1119)— http://www.hqwc.cn/a/1732195.html
- 社区复现 jhonatan247 — https://github.com/jhonatan247/BreastPathQ
- 社区复现 nestors11 — https://github.com/nestors11/breastpathQ-Solution
- 社区复现 JJ-Zhang-DS — https://github.com/JJ-Zhang-DS/Breast-Cancer-Cellularity-Assessment
- 核检测管线 hbk16 — https://giters.com/hbk16/nuclei_detection
- 前作 Akbar(SPIE/ResNet)— https://opticalengineering.spiedigitallibrary.org/profile/Shazia.Akbar-4087354
- 前作 Akbar(Sci. Reports)— https://www.shaziaakbar.co.uk/?page_id=178/
- 主论文 PMC — https://pmc.ncbi.nlm.nih.gov/articles/PMC8107263/
- 引用量来源(Google Scholar)— 截至 2026-09
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §1 概览与规模数字 | 千方病案医学编辑部 | 对照 FACTS.md 与主论文复核 3,698/96/55 | ✅ 已通过 |
| §2 医学背景编码映射 | 千方病案医学编辑部 | 复核 ICD-11/SNOMED CT 语义 | ✅ 已通过 |
| §3/§4 规格与目录 | 医疗 AI 数据工程师 | 对照社区仓库目录验证 | ✅ 已通过 |
| §6 AI 指南与坑点 | 医疗 AI 数据工程师 | 代码可运行性抽查 | ✅ 已通过 |
| §7 质量与 DAIMS | 交叉审核 | 24 项逐项复核 | ✅ 已通过 |
| §8 基准数字 | 千方病案医学编辑部 | 对照主论文 Pk/0.927/0.94 | ✅ 已通过 |
| §10 输入来源 | 交叉审核 | 引用列表与正文链接一致性 | ✅ 已通过 |
§10.5 AI 生成章节标注
全文(§0-§10 与 §C)均经 AI 草拟 + 人工交叉审核。敏感部分——医学背景(§2)、偏倚与公平性(§7)、AI 使用声明(§10)——在 §10.4 中由专人逐项复核通过。
§10.6 最后人工审核日期
2026-09-05
页面状态:published(全部内容已完成审核并发布)
