骨肉瘤组织病理图像数据集(Osteosarcoma)— 化疗反应评估 AI-Ready Wikipedia | 千方病案医数集

1,144 张 H&E 病理 tile 三类标注,4 例儿童骨肉瘤化疗反应开放数据

来源 The Cancer Imaging Archive(UT Southwestern Medical Center / UT Dallas) url: https://www.cancerimagingarchive.net/collection/osteosarcoma-tumor-assessment/发布时间: 2026-09-08最后更新: 2026-09-08 阅读 5

信息速览

数据集名称骨肉瘤组织病理图像数据集(Osteosarcoma)— 化疗反应评估 AI-Ready Wikipedia | 千方病案医数集
数据类型1,144 张 1024×1024 H&E JPG,196.84 MB,3 类病理标注,CC BY 3.0 开放获取,4 名患者 40 张 WSI
规模4 名入选患者(源自 50 例档案,1995—2015)
接入方式The Cancer Imaging Archive(UT Southwestern Medical Center / UT Dallas) url: https://www.cancerimagingarchive.net/collection/osteosarcoma-tumor-assessment/
AI 就绪度

数据集封面

骨肉瘤组织病理图像数据集(Osteosarcoma)— 化疗反应评估 H&E 病理 AI-Ready Wikipedia


INFOBOX

字段 内容
数据集名称 骨肉瘤组织病理图像数据集(Osteosarcoma-Tumor-Assessment)
英文全称 Osteosarcoma data from UT Southwestern/UT Dallas for Viable and Necrotic Tumor Assessment
别名/简称 Osteosarcoma-Tumor-Assessment;UT-Osteosarcoma;TCIA Osteosarcoma
疾病分类 ICD-11:2B51 骨肉瘤,原发部位(Osteosarcoma, primary site)
SNOMED CT 414029004 Osteosarcoma(形态学异常);ICD-O-3 形态学编码 9180/3
数据模态 H&E 染色组织病理 tile(数字病理 patch)
AI 任务类型 tile 三分类(非肿瘤/坏死/活肿瘤)、坏死率评估、化疗反应分层
样本总数 1,144 个 1024×1024 tile(来自 4 名患者、40 张 WSI)
数据大小 196.84 MB(图像 JPG)+ 860.35 KB(特征 CSV)
数据格式 JPG(图像)+ CSV(标注与特征)
许可证 CC BY 3.0(Creative Commons Attribution 3.0 Unported)
访问级别 开放(TCIA 公开下载,须署名并遵守 TCIA 数据使用政策)
DUO 标签 NRES(无限制使用;署名要求以 CC BY 3.0 与 TCIA 政策为准)
语言 英文
首发日期 2019-03-22
最后更新 2019-03-22(版本 1,此后无更新)
发布机构 UT Southwestern Medical Center & The University of Texas at Dallas(Children’s Medical Center Dallas)
官方主页 TCIA collection 页面
下载地址 TCIA 详细描述页
DOI 10.7937/tcia.2019.bvhjhdas
引用次数 22+(TCIA collection 页面统计,截至 2026-09)
AI 就绪度评分 ⭐⭐⭐(3/5)— JPG 格式统一、CSV 标注与 65 维特征齐全、无需格式转换;扣分项:无官方 train/test 划分、tile 标签按优势组织类型(含混合组织)、单人标注且无一致性统计
页面状态 published

§0 E-E-A-T 信任声明与免责声明

医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11/SNOMED CT 映射、骨肉瘤流行病学与化疗反应金标准描述)、§7 偏倚分析。

数据工程审核者:千方病案医学编辑部交叉审核:医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。

审核日期:2026-09-05

审核方式:交叉审核

利益冲突声明:千方病案医数集与 UT Southwestern Medical Center、UT Dallas、TCIA 无任何商业利益关联。本页面不销售数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。

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

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

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。本数据集采用 CC BY 3.0 许可并通过 TCIA 发布,使用者必须以规范引用注明数据集 DOI(10.7937/tcia.2019.bvhjhdas)并遵守 TCIA 数据使用政策。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 📌 30 秒速览

这是什么? 这是全球首个公开的骨肉瘤化疗反应数字病理数据集,由 UT Southwestern Medical Center(达拉斯西南医学中心)与 UT Dallas 团队构建、托管于 The Cancer Imaging Archive(TCIA)。团队从 1995—2015 年在达拉斯儿童医疗中心治疗的 50 例骨肉瘤档案中,由两名病理学家挑选出 40 张最能代表肿瘤异质性的数字化全切片,切出 1,144 张 1024×1024 像素、10× 放大的 H&E 染色 tile,逐一标注为非肿瘤(NT)、坏死(Necrosis)或活肿瘤(VT)三类(TCIA collection 页面)。

为什么重要? 骨肉瘤是最常见的儿童与青少年骨恶性肿瘤,标准治疗是新辅助化疗后手术切除,病理医生需要人工在显微镜下估算切除标本的坏死比例——坏死率 ≥90% 的患者预后显著更好。这一半定量评估存在观察者内与观察者间变异。该数据集把这一临床任务转化为可复现的 AI 基准,是骨肿瘤数字病理方向被引用最多的公开资源之一(Arunachalam et al., 2019, PLOS ONE)。

我能用它做什么? 你可以训练和基准测试 tile 级三分类模型(非肿瘤/坏死/活肿瘤)、研究 H&E 染色归一化与类不平衡处理、基于 65 维机器学习特征复现经典 ML 基线,或将其作为弱监督坏死率估计方法的试点数据。但请记住:它只有 4 名患者、无官方划分、无全切片原图——它适合方法学实验与教学,不适合直接宣称临床级患者泛化能力。

§1.1 摘要

数据集构建始于达拉斯儿童医疗中心 1995—2015 年间 50 例骨肉瘤切除术的病理档案,共 942 张玻璃切片被数字化为全切片图像(WSI)。两名病理学家依据肿瘤异质性与化疗反应特征手工挑选 40 张 WSI,从每张 WSI 在 10× 放大下随机抽取 30 个 1024×1024 像素 tile(共 1,200 个),再剔除落入非组织区、墨迹标记区与模糊区域的 66 个 tile,最终保留 1,144 个。团队使用自研标注工具,由两名病理专家分工为每个 tile 标注优势组织类型:非肿瘤 536 张(47%)、坏死 263 张(23%)、活肿瘤 345 张(30%)。研究团队同时为每个 tile 提取了 65 个机器学习特征(专家引导特征 + CellProfiler 特征),连同文件名与类别存入 ML_Features_1144.csv。数据于 2019-03-22 以 CC BY 3.0 许可发布在 TCIA,配套方法学论文发表于 PLOS ONE(DOI 10.1371/journal.pone.0210706)。全篇数字来源见 TCIA collection 页面Arunachalam et al., 2019

§1.2 战略价值

维度一:稀有病种的任务级公开基准。 骨肉瘤年发病率仅约 0.3—0.4/10 万(PMC7310058),任何单一机构都难以积累大规模标注队列,因此"以 tile 为单位、以化疗反应为核心任务"的公开资源极为稀缺。该数据集把新辅助化疗后"活性肿瘤 vs 坏死"评估这一原本完全依赖病理医生经验的过程,转化为 1,144 个带专家标签的可计算样本,为稀有儿童肿瘤的数字病理研究提供了少有的任务级入口。配套的 65 维特征 CSV 还让无 GPU 环境的研究者能复现经典 ML 基线。

维度二:方法学试金石而非临床部署数据。 数据集的强聚簇结构(4 名患者 → 40 张 WSI → 1,144 个 tile)与单人标注协议,使它成为研究与教学层面讨论"tile 级 vs 患者级评估"“标注者效应”"混合标签"的理想案例——社区后续工作(如按患者 ID 划分的 RadiomicsOS、按四类体系重组标签的研究)正是在这个数据集上演示了这些方法学问题如何实质性地改变结论。对于数字病理课程的教材编写、评估协议设计与泄漏检测教学,它的价值甚至超过规模大得多的癌症数据集。

§1.3 同类数据集横向对比

数据集 规模 模态 标注 与本数据集的差异化
Osteosarcoma(本页) 1,144 tile / 4 患者 骨肉瘤 H&E 10× 3 类 tile 级专家标注 唯一聚焦化疗后坏死/活性评估的公开骨肿瘤病理集
NCT-CRC-HE-100K 100,000 patch 结直肠癌 H&E 20× 9 类组织学 规模大、放大倍数更高,但无化疗反应语义
BACH 约 400 张 WSI + 微观图像 乳腺癌 H&E 20× 4 类癌型 + 2018 竞赛标签 面向诊断分型,非治疗反应
BRACS 547 张 WSI 切出 patch 乳腺 H&E 7 类病变 肿块分型任务,患者数与标注层级不同
Kvasir-SEG 等消化道集 千级图像 内镜 息肉分割 模态与任务完全不同

§1.4 版本时间轴

时间 事件 来源
1995—2015 50 例骨肉瘤患者在达拉斯儿童医疗中心接受治疗,档案样本留存 TCIA collection 页面
2017-05 Mishra 等在 ISBRA 2017 发表配套 CNN 方法论文(DOI 10.1007/978-3-319-59575-7_2) CCDI 目录
2019-03-22 TCIA 以版本 1 发布 1,144 tile 与特征 CSV(CC BY 3.0) TCIA collection 页面
2019-04 Arunachalam 等的完整方法学论文发表于 PLOS ONE(DOI 10.1371/journal.pone.0210706) PubMed 30995247
2020-11 Anisuzzaman 等发布 VGG19 迁移学习基准(arXiv:2011.01177) arXiv
2022 Pan 等以自有 103 例队列实现全片级坏死率估计与生存分层(PMID 36563747),确立下游任务方向 Europe PMC
2025 多项研究继续以本数据集测试 EfficientNet、XAI 与四类标签体系 Scientific Reports

§1.5 典型应用场景

  1. tile 级三分类基准:以非肿瘤/坏死/活肿瘤三类训练 CNN 或 ViT,报告患者级留一交叉验证结果(见 §5.4)。
  2. 染色归一化方法评估:JPG 有损压缩 + 单中心批次染色使其成为验证 Macenko/Reinhard 等归一化方法鲁棒性的小型试验场(见坑点 5)。
  3. 经典 ML 特征基线复现ML_Features_1144.csv 的 65 维特征可直接复现 PLOS ONE 论文中的 SVM 基线,无需 GPU(见 §6.2)。
  4. 类不平衡教学案例:47%/23%/30% 的分布配合极小的坏死类,适合课堂演示类加权、过采样与宏平均指标的差异(见坑点 6)。
  5. 弱监督坏死率原型:将 tile 分类器输出的活肿瘤/坏死占比聚合,可原型化全片坏死率估计流程——但需注意官方未发布 WSI 原图(见坑点 7)。

§2 医学背景

§2.1 ICD-11 编码映射

标签 ICD-11 编码 ICD-11 中文名
骨肉瘤(数据集核心疾病) 2B51 骨肉瘤,原发部位(Osteosarcoma, primary site)
骨肉瘤亚型( limb / 部位细分) 2B51.0 / 2B51.2 / 2B51.Y 四肢骨 / 其他指定部位 / 未特指
骨与关节软骨恶性肿瘤(上位类) 2B5 组(恶性间叶系新生物) 淋巴、造血、中枢神经系统以外指定部位的原发恶性肿瘤

编码来源:ICD-11 MMS 浏览器KEGG DISEASE H00036

§2.1b SNOMED CT 与其他术语集映射

标签/概念 ICD-11 SNOMED CT 术语名称
骨肉瘤(疾病/形态学) 2B51 414029004 Osteosarcoma (morphologic abnormality)
骨原发性恶性肿瘤(上位类) 2B5 组 归属于骨恶性新生物层级 Malignant neoplasm of bone
活肿瘤评估目标(化疗后坏死分级语义) 2B51 + 病理形态学 9180/3(ICD-O-3 形态学) Osteosarcoma,NOS
骨肉瘤(ICD-10 对照) C40/C41 Malignant neoplasm of bone and articular cartilage

§2.2 疾病简介与流行病学

骨肉瘤(osteosarcoma)是原发于成骨间叶细胞的恶性肿瘤,组织学特征为恶性细胞直接产生骨样基质(osteoid),最常见于长骨干骺端——股骨远端、胫骨近端与肱骨近端三大好发部位(KEGG H00036)。它是 10—14 岁儿童与青少年最常见的骨恶性肿瘤(TCIA collection 页面),发病呈双峰分布:青春期高峰与 50 岁后继发高峰。流行病学方面,年发病率约 0.3—0.4/10 万(PMC7310058),美国每年约 900 例新发骨肉瘤(KEGG);美国 2018 年原发骨癌新发约 3,450 例(含全部骨癌组织学类型)(Heliyon 2024)。约 70% 的患者可通过综合治疗治愈,但转移性或复发性患者的总生存率仅约 20%(PMC7310058)。分子层面,TP53、RB1 失活与 MDM2 扩增等改变常见(KEGG)。本数据集的患者群即为达拉斯儿童医疗中心的儿童与青少年骨肉瘤切除病例,属罕见病种的单中心回顾队列。

§2.3 临床任务定义

骨肉瘤的标准治疗为新辅助化疗 + 手术切除(± 术后化疗),常用药物包括大剂量甲氨蝶呤、多柔比星、顺铂与异环磷酰胺(KEGG)。术后病理科医生需对切除标本多点取材,在显微镜下估算化疗后坏死率(necrotic tumor / overall tumor 比例):经典的 Huvos 分级体系中,坏死率 ≥90% 定义为"反应良好"(good responder),与更好的无事件生存相关;反应差者需调整术后方案(Huvos et al., 1977 参考文献;Pan et al., 2022)。这一人工评估是半定量、多切片抽样式的,存在观察者内与观察者间变异。本数据集对应的 AI 任务即为此过程的计算化基础层:在 tile 级别区分活肿瘤(VT,核致密深染的活性癌细胞)、**坏死(Necrosis/NVT,化疗致死的退化组织,颜色较浅、核崩解)非肿瘤(NT,骨、血管、软骨等正常组织)**三类组织(PMC12045028)。在此之上可构建全片乃至病例级的坏死率估计与反应分层(见 §8.2)。

§2.3b Huvos 坏死分级与反应评估流程

新辅助化疗后反应评估的金标准语义来自 Huvos 分级(Huvos et al., 1977),对切除标本多点取材后在显微镜下估算肿瘤坏死比例:

Huvos 分级 肿瘤坏死率 反应判定
Grade I 0—49% 反应差
Grade II 50—89% 反应差
Grade III 90—99% 反应好
Grade IV 100%(完全坏死) 反应好

Grade III—IV(坏死率 ≥90%)被广泛用作"好反应"阈值,与更好的无事件生存相关。本数据集的三类 tile 标签(NT/NEC/VT)正是这一临床量表的原子级监督信号:把切片分解为可计数的组织成分后,病例级坏死率可由 VT 与 NEC 区域的占比聚合得到——Pan 等 2022 正是以此思路在 103 例队列上实现了与病理报告高度相关的连续坏死率估计(PMID 36563747)。理解这层对应关系,是给该数据集设计 AI 任务时的临床锚点:tile 分类不是终点,坏死率的可重复量化才是。

§2.3c 组织学形态基础

三类标签的判别依据来自骨肉瘤的基础组织学形态(PMC12045028Arunachalam et al., 2019):

  • 活肿瘤(VT):恶性成骨细胞样细胞呈高度增殖状态,H&E 下表现为细胞核密集聚集、深染(蓝紫色浓染区域),是骨样基质产生的活性病灶。
  • 坏死(NVT/NEC):化疗或自发性死亡导致的退化组织,细胞结构崩解、核碎裂或消失,染色较活肿瘤明显变浅,呈粉红色均质碎片状外观;部分坏死区域仍夹杂残存的活肿瘤灶(53/263,见坑点 3)。
  • 非肿瘤(NT):肿瘤周围受累但无癌变的组织,包括正常骨小梁、血管结构与软骨成分,着色浅、组织结构松散有序。

病理学家确认 10× 放大倍数下上述三类特征的可分性最佳——更低倍数丢失空间信息,更高倍数引入与任务无关的亚细胞噪声(Arunachalam et al., 2019)。这解释了数据集为何统一采用 10× 而非数字病理常见的 20×/40×。

§2.4 患者人群

属性 描述
来源机构 Children’s Medical Center, Dallas(与 UT Southwestern Medical Center 关联)
档案时间跨度 1995—2015 年
档案总例数 50 例骨肉瘤切除患者(942 张玻璃切片数字化,均值 19 张/例,范围 4—51 张/例)
入选患者数 4 例——由病理学家依据术后标本的肿瘤异质性从 50 例中选出
年龄 官方未公布(对应骨肉瘤好发年龄段 10—14 岁前后;TCIA 页面以青少年骨肉瘤为背景描述)
性别/种族 官方未公布
就医类型 儿童专科医院切除标本的回顾性档案
标注样本量 40 张 WSI × 30 tile = 1,200 → 剔除 66 → 1,144 个已标注 tile

数字来源:TCIA collection 页面Arunachalam et al., 2019, PLOS ONENCI CCDI 目录

§2.5 临床价值

若自动化坏死评估达到可靠精度,临床路径可从"多切片抽样 + 半定量目测"升级为"全片扫描 + 定量估计",有望降低观察者变异、把 Huvos ≥90% 阈值判定变为连续量化指标,并支持反应不良患者的早期术后决策。Pan 等 2022 年在 103 例、3,134 张 WSI 的自有队列上证明:分割网络估计的病例级坏死率与病理报告高度相关,并成功将患者按总生存(P = 2.4×10⁻⁶)与无进展生存(P = 0.016)分层(Pan et al., 2022, PMID 36563747)。本数据集正是这一方向的公开起点——它提供了 tile 级的监督信号,但请勿直接把 4 名患者上的结果外推为临床证据(见 §7.3)。

§2.6 金标准描述

维度 描述
金标准划分 tile 优势组织类型三分类:非肿瘤(NT)/ 坏死(Necrosis)/ 活肿瘤(VT)
标注方式 自研标注工具做区域级颜色标注(mask),汇总为 tile 级单一标签(按优势类型)
标注者 两名病理专家分工标注:每张 tile 仅由其中一人标注,无第二独立标注
一致性评估 官方未报告 inter-rater 一致性统计(协议上无双标注,故无 kappa 类数据)
标注性质 专家级回顾性标注,服务于化疗反应评估研究,非临床报告数据
放大倍数依据 10× 由病理学家确认,为区分三类的最佳判别层级(PMC6469748

§3 数据集规格

§3.0 版本抉择矩阵

数据集自 2019-03-22 发布以来只有 TCIA 版本 1,无迭代版本;但存在两个发布渠道,按需求选择:

你的需求 推荐渠道 大小 理由
正式研究、忠实复现论文、规范引用 TCIA 官方 collection 196.84 MB + 860.35 KB CSV 原始渠道,DOI 引用合规,附 Aspera/API 下载与完整元数据
快速实验、HuggingFace 工作流 HF 镜像 CAIR-M3LLM/OsteosarcomaTumorAssessment 202 MB(tar.zst) 免插件、datasets 生态友好,需自校验完整性并仍引用 TCIA DOI
无 GPU 的 ML 基线实验 TCIA 中的 ML_Features_1144.csv 860.35 KB 1,144 行 × 69 列,含 65 维现成特征,CPU 即可复现 SVM 基线

§3.1 模态详情

数据集为单一模态:H&E 染色数字病理 tile。原始 942 张玻璃切片经全切片扫描数字化后,两名病理学家从中精选 40 张最能代表骨肉瘤组织异质性与化疗反应特征的 WSI;在 10× 放大倍数下从每张 WSI 随机抽取 30 个 1024×1024 像素 tile。10× 的选择经病理学家确认——更低倍数会丢失空间判别信息,更高倍数会引入与任务无关的亚细胞细节(Arunachalam et al., 2019)。所有 tile 以 JPG 格式发布(有损压缩),尺寸统一为 1024×1024;在 PLOS ONE 论文的深度学习管线中,团队曾从每个 tile 进一步切出 128×128 重叠 patch(共 56,929 个),该 patch 层未随 TCIA 发布(见坑点 7)。

§3.2 按子集样本数

子集 组织方式 样本数 内容
Training_Set_1 11 个 set 文件夹(set1—set11) 547 每夹 48—50 张 tile + 1 个标注 CSV
Training_Set_2 12 个 set 文件夹(set1—set12) 597 每夹 48—50 张 tile + 1 个标注 CSV
合计 23 个 set 文件夹 1,144 547 + 597 = 1,144
ML_Features_1144.csv 单文件 1,144 行 69 列:文件名 + 分类 + 65 个 ML 特征

⚠️ 两个 Training_Set 的"Training"之名不构成 train/test 划分——它们对应两名病理学家的标注批次组织,切勿直接当划分使用(见 §5.1 与坑点 1)。

§3.2b set 文件夹逐个明细

两个 Training_Set 内的 23 个 set 文件夹规模官方逐一列出(TCIA 详细描述页),每个 set 均含 1 个标注 CSV:

set 编号 Training_Set_1 tile 数 Training_Set_2 tile 数
set1 49 49
set2 50 50
set3 50 50
set4 50 50
set5 50 50
set6 50 50
set7 50 50
set8 50 50
set9 50 50
set10 50 50
set11 48 50
set12 48
合计 547 597

该明细表的工程用途:下载后可逐 set 核对文件数,任何与上表不符的 set 都提示下载不完整或解压异常(配合 Osteosarcoma-UT.sums 校验文件使用)。

§3.3 数据格式

内容 格式 说明
病理 tile JPG(有损压缩) 1,144 张,1024×1024,RGB 三通道
set 级标注 CSV 每个 set 文件夹内 1 个,含 tile 文件名与类别
全局特征表 CSV(860.35 KB) ML_Features_1144.csv:1,144 行 × 69 列
元数据 TCIA 网页 + Manifest collection 页面详述目录结构;下载附 XML 元数据

§3.4 存储大小

图像部分 196.84 MB,特征 CSV 860.35 KB,合计约 197.7 MB;HuggingFace 镜像打包为 202 MB 的 tar.zst 单文件。解压后含目录结构约 250 MB 以内,普通笔记本即可承载全量数据与训练(TCIA collection 页面HF 镜像)。

§3.5 标注方式

标注工作流可分解为五步(Arunachalam et al., 2019):

步骤 操作 产物
1 团队从 40 张 WSI 按 10× 随机抽取 30 tile/WSI,赋 Tile Identification Number(TIN) 1,200 个候选 tile
2 剔除非组织、墨迹标记与模糊 tile 1,144 个待标注 tile
3 病理学家在自研标注工具中浏览 tile,绘制区域级颜色标注(mask) 带颜色标注的图像
4 标注结果导出为 CSV(TIN + 分类),图像另存 set 级标注 CSV
5 按 tile 优势组织类型定最终三类标签,汇总进 ML_Features_1144.csv 全局标签 + 65 维特征

这套流程的一个关键设计是随机化 tile 生成——官方明确说明其目的是消除特征生成与后续机器/深度学习步骤中的选择偏差(PMC6469748)。但随机化发生在 WSI 内部而非患者之间,因此它缓解的是 tile 级选择偏差,而非患者级代表性问题(见坑点 2)。

§3.6 标注者资质与一致性

标注由两名病理学专家(含儿科病理方向的 Dinesh Rakheja 等研究团队成员)完成。协议为分工制而非双标制:全部 1,144 张 tile 在两人间分配,每张 tile 仅由一人标注(TCIA collection 页面)。这一设计的直接后果是:数据集不存在 inter-rater 一致性统计,且两名标注者的判断差异会系统性进入标签(见坑点 4)。使用者在解读 SOTA 结果时应把标注噪声视为下界成分。

§3.7 采集周期

临床样本采集跨越 1995—2015 年(20 年档案回顾);数字化、tile 抽取与标注发生在 2015—2019 年的研究期;数据集于 2019-03-22 发布在 TCIA(TCIA collection 页面)。

§3.8 地域覆盖

单一中心:美国德克萨斯州达拉斯市的 Children’s Medical Center Dallas(与 UT Southwestern Medical Center 关联的儿童专科医院)。无多中心、多地域覆盖(NCI CCDI 目录)。

§3.9 设备与扫描规格

项目 规格
切片处理 切除骨标本切块、脱钙、H&E 染色、制成玻璃切片(Cancers 2023
数字化 942 张玻璃切片扫描为 WSI(扫描仪型号官方未公布)
放大倍数 10×(病理学家确认的判别层级)
tile 尺寸 1024×1024 像素,每 WSI 随机抽 30 个
图像格式 JPG 发布

§3.10 深度溯源链

层级 数量 漏斗损耗 说明
档案患者 50 例(1995—2015) 达拉斯儿童医疗中心骨肉瘤切除档案
数字化玻璃切片 942 张 均值 19 张/例(4—51 张/例) 全部数字化为 WSI
入选 WSI 40 张 两名病理学家按肿瘤异质性与反应特征手工挑选 构成 TCIA Subjects = 4 名患者的数据基础
候选 tile 1,200 个 40 WSI × 30 tile/WSI 10× 下随机抽取
发布 tile 1,144 个 剔除 66 个:非组织区、墨迹标记、模糊 最终标注与发布集合
论文内部 patch 56,929 个 128×128 重叠切分 仅用于 PLOS ONE 深度学习管线,未随 TCIA 发布

(来源:Arunachalam et al., 2019, PLOS ONETCIA collection 页面


§4 数据结构

§4.0 目录树

Data_Osteo_Files/
├── ML_Features_1144.csv          # 1,144 行 × 69 列:文件名 + 分类 + 65 个 ML 特征
├── Training_Set_1/               # 11 个 set 文件夹,共 547 张(标注批次 1)
│   ├── set1/
│   │   ├── *.jpg                 # 49 张 1024×1024 tile
│   │   └── *.csv                 # 该 set 的标注文件(文件名 + 类别)
│   ├── set2/ ... set11/          # 各 48—50 张 + 标注 CSV
└── Training_Set_2/               # 12 个 set 文件夹,共 597 张(标注批次 2)
    ├── set1/
    │   ├── *.jpg                 # 49 张
    │   └── *.csv
    └── set2/ ... set12/          # 各 48—50 张 + 标注 CSV

HuggingFace 镜像把同一结构打包为 OsteosarcomaTumorAssessment.tar.zst(附 Osteosarcoma-UT.sums 校验文件),目录名改为 Training-Set-1 / Training-Set-2HF 镜像页)。

§4.1 DAIMS 字段字典

字段 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
filename Text tile 文件名(跨 CSV 关联主键) set3_005.jpg 图像路径拼接 JPG 有损压缩伪影 无缺失 1,144 个唯一文件名
classification Text/Categorical 优势组织类型标签 VT 监督目标 优势类型语义含混合组织(53/263 坏死 tile 含 VT 成分) 无缺失 NT / NEC(NVT)/ VT
subset Text 顶层集合目录 Training_Set_1 复现标注批次对照 非划分语义 无缺失 Training_Set_1 / Training_Set_2
set_number Integer set 文件夹编号(1—12) 3 定位标注 CSV 无缺失 1—12
TIN Text Tile Identification Number(论文内编号) TIN_00341 对齐论文表格 论文内部编号,文件中部分字段命名不规则 无缺失 论文定义
65 特征列 Float 专家引导(LAB 色彩域、Otsu 前景)+ CellProfiler 形状/密度特征 0.4231 经典 ML 基线输入 提取管线参数未随数据文档化 无缺失 连续值
mask 标注 派生 区域级颜色标注(导出于标注 CSV/图像) 区域多边形 弱监督分割先验 区域由单人绘制 无缺失 RGB 标注域

§4.2 标签分布

类别 英文 tile 数 占比 视觉特征
非肿瘤 Non-Tumor(NT) 536 47% 正常骨组织、血管与软骨,色浅、结构松散
坏死 Non-Viable/Necrotic Tumor(NVT/NEC) 263 23% 化疗致死的退化组织,颜色较浅、核崩解;其中 53 张含活肿瘤成分
活肿瘤 Viable Tumor(VT) 345 30% 活性癌细胞,核致密深染、颜色浓

合计 1,144 张(TCIA collection 页面Cancers 2023)。后续有研究将同一数据重划为四类:NT 536、NVT 263、VT 292、NVR 53(PMC12045028),使用时务必核对类别体系。

跨渠道标签口径核对清单(任一不符即停止实验、先排查数据完整性):

核对项 期望值 核对方式
tile 总数 1,144 rglob("*.jpg") 计数
类别三元分布 536 / 263 / 345 全局 CSV 分类列 value_counts()
类别标签词表 NT、NEC(或 NVT)、VT(含大小写变体) 对分类列做归一化后查唯一值
set 文件夹数 11 + 12 逐目录统计
逐 set 文件数 §3.2b 明细表 下载完整性验证
特征表行数 × 列数 1,144 × 69 pandas.read_csv().shape

⚠️ 三类与四类体系在不同论文间流动:全局 CSV 的分类列若出现 4 个唯一值(含 NVR 类),说明你拿到的是重标注版本而非 TCIA 原始口径,直接与 TCIA 生态的基线比较会产生系统性错位。

§4.3 关键统计

  • 每 WSI 平均约 28.6 个发布 tile(1,144 / 40,抽取 30 个/WSI 后经剔除)。
  • 4 名患者、40 张 WSI、23 个 set 文件夹。
  • 患者平均 19 张玻璃切片(范围 4—51),共 942 张数字化(Arunachalam et al., 2019)。
  • 图像 196.84 MB、CSV 860.35 KB(TCIA collection 页面)。
  • 最小/中位/最大 tile 尺寸均为 1024×1024(Awesome-Medical-Dataset 条目)。

§4.4 数据层级

患者(4 名,ID 未随 tile 公布)
└── 全切片 WSI(40 张;切片→WSI 映射未官方公布,可经 set 文件夹部分推断)
    └── tile(1,144 张,1024×1024 JPG,@ 10×)
        └── 128×128 patch(56,929 个,仅存在于论文管线,未发布)

层级间的最强约束是聚簇性:同一 WSI 的 tile 相邻采样、同一患者的 tile 同源——任何 tile 级随机划分都会让"同患者样本"同时进入训练与测试集(见坑点 2)。

§4.5 缺失值与信息性缺失

特征 CSV 与标注 CSV 内无缺失行、无占位编码;真正的"缺失"在结构层而非单元格层:

缺失项 性质 处理建议
患者 ID 字段 结构性缺失:tile → 患者/WSI 映射未官方发布 患者级划分需自建映射(set 文件夹聚类近似),并在论文中声明
扫描仪型号/扫描批次 未记录 染色归一化时按 set 批次近似处理
临床/生存数据 完全未提供 生存预测类任务需转向自有队列(如 Pan 2022 的 103 例设计)

§5 划分与使用建议

§5.1 官方划分说明

官方没有 train/test 划分。 Training_Set_1(547 张)与 Training_Set_2(597 张)是两名病理学家标注批次的组织形式,而非训练/测试协议(TCIA collection 页面)。社区普遍自行划分:Anisuzzaman 等 2020 用 70%/10%/20%(train/val/test);Scientific Reports 2025 的 ODLF-BCD 用 70%/20%/10% 分层划分;RadiomicsOS 按 TRAIN/VAL/TEST 患者 ID 常量划分(arXiv:2011.01177Scientific Reports 2025RadiomicsOS)。这直接导致各论文的准确率不可直接比较(见 §8.1)。

§5.2 社区惯例划分

研究 划分方式 报告准确率 备注
Anisuzzaman et al., 2020 随机 70/10/20(tile 级) VGG19 0.939 tile 级随机划分,存在患者级泄漏
Scientific Reports 2025(ODLF-BCD) 分层 70/20/10(tile 级) EfficientNet-B4 优化后报告 同上
RadiomicsOS 按患者 ID 固定划分 TRAIN/VAL/TEST InceptionV3 + 影像组学 明确的 patient split
Borji 等(四类体系) 自定划分,NT/NVT/VT/NVR 四类 多模型对比 类别体系不同,勿与三类比

§5.3 泄漏风险

  1. 患者级泄漏(最高风险):1,144 个 tile 仅来自 4 名患者,随机 tile 划分使测试 tile 与训练 tile 同源同染色,性能被系统性高估。缓解:按患者留一交叉验证(4 折 LOO)或按 WSI 分组划分(见坑点 2)。
  2. WSI 级泄漏:同一 WSI 的约 28—30 个 tile 相邻采样、共享墨迹与扫描批次伪影;按 tile 划分时模型可记住 WSI 特征。缓解:GroupKFold,group = WSI 编号。
  3. 标注批次泄漏:直接用 Training_Set_1/2 做划分会把标注者效应并入训练目标。缓解:两个 set 混合后按患者/WSI 分组。
  4. 特征表泄漏:若把 65 维特征的分类列遗漏在外的同时使用了与标签强相关的派生特征做半监督对照,需在论文中明示特征来源。

以方法学稳健性优先的推荐顺序:

  1. 患者级 4 折留一交叉验证(首选):每折留出 1 名患者的全部 tile 做测试,其余 3 名做训练(内部再分验证)。报告 4 折宏平均与标准差。缺点:仅 4 折、方差大;优点:唯一无患者泄漏的方案。
  2. WSI 级 GroupKFold(次选):患者映射不可得时,以 WSI/文件夹为 group 做 5—10 折分组交叉验证,声明残余患者级同源风险。
  3. tile 级分层随机划分(仅基线对照):复现社区数字时可用 70/10/20,但必须在论文中标注"存在患者级泄漏,数字偏乐观"。

§5.5 交叉验证与外部验证建议

  • 类不平衡下使用 StratifiedGroupKFold(同时按组与类别分层),评估用宏平均 F1 与 per-class recall(见坑点 6)。
  • 外部验证:截至 2026-09 尚无以本数据集为训练集、在独立机构队列上验证的同行评审研究;需外部泛化证据时,应参考 Pan 等 2022 在自有 103 例队列上"tile 分割 → 病例级坏死率 → 生存分层"的设计并采集本机构数据复现(Pan et al., 2022)。
  • 若做跨数据集实验,注意其他病理数据集的放大倍数(20× 居多)与染色协议差异,先做归一化对齐(见 §6.3)。

§5.6 常见错误划分对照

把社区已出现过的划分方式与其结论效力并列,供评审时快速对照:

划分做法 是否可用 风险/结论效力
Training_Set_1 训练 + Training_Set_2 测试 ❌ 不可用 测试集被单一标注者绑定,评估的是标注者差异
全体 1,144 tile 随机 70/10/20 ⚠️ 仅基线对照 患者级泄漏,数字系统性偏乐观(社区最高 99%+ 即此类)
set 文件夹级 GroupKFold ✅ 可用(次选) 近似 WSI 级隔离;残余患者级同源风险需声明
tile→患者映射 + 患者级 4 折 LOO ✅ 首选 唯一无患者泄漏方案;报告折间均值 ± 标准差
直接采用 ML_Features_1144.csv 的分类列做标签 ✅ 可用 set 级 CSV 仅作交叉校验(表头不一致,见坑点 8)

§6 AI 就绪指南

§6.0 云端快速启动

数据集仅约 197 MB,任何环境都可全量加载。若在 Colab/Kaggle 上启动,建议直接从 HuggingFace 镜像拉取(免 TCIA 的 Aspera 插件),下载后校验 set 文件夹数量(11 + 12)与 tile 总数(1,144):

# Colab/Kaggle 快速校验:解压镜像后统计 tile 数量
import pathlib, subprocess

subprocess.run(["tar", "--use-compress-program=unzstd", "-xf",
                "OsteosarcomaTumorAssessment.tar.zst"], check=True)
root = pathlib.Path("OsteosarcomaTumorAssessment")
tiles = sorted(root.rglob("*.jpg"))
sets1 = sorted((root / "Training-Set-1").iterdir())
sets2 = sorted((root / "Training-Set-2").iterdir())
print(f"tiles = {len(tiles)}")   # 期望 1,144
print(f"sets   = {len(sets1)} + {len(sets2)}")  # 期望 11 + 12

§6.1 快速上手

以下代码假设数据已解压到 data_root,目录结构为 §4.0 所示树形(data_root/Training_Set_1/set*/data_root/Training_Set_2/set*/);标注信息聚合自每个 set 文件夹内的 CSV 与全局 ML_Features_1144.csv。最小可用子集:任选 2 个 set 文件夹(约 100 张 tile)即可跑通整条训练管线。

# 目录结构预期:
#   data_root/
#     ML_Features_1144.csv            # data_root 直接拼接文件名
#     Training_Set_1/set1..set11/     # set 文件夹内 jpg + 标注 csv
#     Training_Set_2/set1..set12/
# data_root = Path("...") 即可,无需再建子目录
import csv
from pathlib import Path

import pandas as pd

data_root = Path("Data_Osteo_Files")

# 1) 全局特征表:1,144 行 × 69 列(filename + classification + 65 特征)
feat = pd.read_csv(data_root / "ML_Features_1144.csv")
print(feat.shape)                       # (1144, 69)
print(feat.iloc[:, 1].value_counts())   # 类别列分布(NT/NEC(NVT)/VT)

# 2) 从 set 文件夹聚合 图像路径 → 标签
records = []
for subset in ("Training_Set_1", "Training_Set_2"):
    for set_dir in sorted((data_root / subset).iterdir()):
        for csv_file in set_dir.glob("*.csv"):
            with open(csv_file, newline="", encoding="utf-8-sig") as fh:
                for row in csv.DictReader(fh):
                    # 每个 set 的 CSV 列名可能略有差异,按实际表头取文件名/类别列
                    records.append({"subset": subset, "set": set_dir.name, **row})
anno = pd.DataFrame(records)
print(len(anno))  # 应接近 1,144;若有出入先核对 CSV 表头与文件名大小写

⚠️ set 级 CSV 的表头在不同 set 间并非严格一致(见坑点 8);最稳的标签来源是 ML_Features_1144.csv 的分类列,set 级 CSV 用于交叉校验。

§6.2 数据获取

渠道 链接 大小 流程
TCIA 官方 collection 页面 196.84 MB + 860.35 KB 网页 Direct Download(需 IBM Aspera Connect 插件)或 TCIA RESTful API
HuggingFace 镜像 CAIR-M3LLM/OsteosarcomaTumorAssessment 202 MB huggingface-cli download 后 zstd 解压

TCIA RESTful API 拉取示例:

# TCIA NBIA 检索:按 collection 名抓取图像系列描述与下载清单
import requests

COLLECTION = "Osteosarcoma-Tumor-Assessment"
base = "https://services.cancerimagingarchive.net/nbia-api/services/v1"
series = requests.get(f"{base}/getSeries", params={"Collection": COLLECTION},
                      timeout=30).json()
print(f"{len(series)} series found")  # 应返回 4 名患者的系列
# 下载工具推荐 nbia-data-retriever 或 TCIA RESTful API /getImage 端点逐 series 下载

HuggingFace 镜像获取示例(无插件依赖,适合 CI/容器环境):

# pip install -U "huggingface_hub[cli]" zstandard
import pathlib
import subprocess
from huggingface_hub import hf_hub_download

repo = "CAIR-M3LLM/OsteosarcomaTumorAssessment"
archive = hf_hub_download(repo_id=repo,
                          filename="OsteosarcomaTumorAssessment.tar.zst",
                          repo_type="dataset")
subprocess.run(["tar", "--use-compress-program=unzstd", "-xf", archive], check=True)
print("解压完成,先跑 §6.0 的数量校验再进入训练")

无访问限制、无需注册;但发布使用时必须引用数据集 DOI 10.7937/tcia.2019.bvhjhdas 并遵守 TCIA 数据使用政策。两条渠道拿到的是同一份 v1 数据,正确性核对方式:tile 总数 1,144、set 数 11 + 12、逐 set 文件数对齐 §3.2b 明细表。

§6.3 预处理全流程

流程:格式校验 → 染色归一化 → 尺寸调整 → 类不平衡处理 → 增强。JPG 有损压缩与 1995—2015 年跨 20 年的染色批次差异,使染色归一化成为该数据集上最有价值的预处理步骤(Macenko 方法为社区默认选择):

# 染色归一化 + 标准化流水线(输入 1024×1024 JPG,输出模型张量)
# 依赖:pip install torch torchvision pillow numpy
import numpy as np
import torch
from PIL import Image
from torchvision import transforms

IMAGENET_MEAN = (0.485, 0.456, 0.406)
IMAGENET_STD  = (0.229, 0.224, 0.225)

def to_haematoxylin_eosin(img_rgb: np.ndarray) -> tuple[np.ndarray, np.ndarray]:
    """OD 空间 SVD 估计 H/E 两个染色向量(Macenko 简化实现)。"""
    od = -np.log((img_rgb.reshape(-1, 3).astype(np.float32) + 1) / 256)
    cov = np.cov(od, rowvar=False)
    _, vecs = np.linalg.eigh(cov)
    stain_vecs = vecs[:, [1, 2]]                       # 前 2 个主成分平面
    return stain_vecs[:, 0], stain_vecs[:, 1]          # H 向量、E 向量

def stain_normalize(img: np.ndarray, target: np.ndarray) -> np.ndarray:
    """按 Macenko 思路把源图浓度分布拉伸对齐目标参考图。"""
    src_h, src_e = to_haematoxylin_eosin(img)
    tgt_h, tgt_e = to_haematoxylin_eosin(target)
    # 对通道做线性浓度匹配(实现取简化版,完整版见参考仓库)
    gain_h = tgt_h.std() / (src_h.std() + 1e-8)
    gain_e = tgt_e.std() / (src_e.std() + 1e-8)
    out = img.astype(np.float32)
    out[..., 0] *= gain_h; out[..., 1] *= gain_e       # H/E 主导通道匹配
    return np.clip(out, 0, 255).astype(np.uint8)

def get_transform(reference_img: np.ndarray | None = None, train: bool = True):
    ops = [transforms.Lambda(lambda p: stain_normalize(np.array(p), reference_img))
           if reference_img is not None else transforms.Lambda(lambda p: np.array(p)),
           transforms.ToPILImage(),
           transforms.Resize((224, 224))]
    if train:
        ops += [transforms.RandomHorizontalFlip(), transforms.RandomVerticalFlip(),
                transforms.RandomRotation(90)]
    ops += [transforms.ToTensor(),
            transforms.Normalize(IMAGENET_MEAN, IMAGENET_STD)]
    return transforms.Compose(ops)

要点:① 归一化的参考图应固定为训练集内一张代表性 tile,并把参考图随 checkpoint 一并保存,推理时复用;② 官方 tile 为 1024×1024,多数骨干网用 224 输入;Anisuzzaman 等 2020 因显存限制曾用 375×375 输入并取得 0.939(arXiv:2011.01177),输入尺寸要写进实验记录;③ 类不平衡(47/23/30)在训练目标层处理:CrossEntropyLoss(weight=class_weights) 或加权采样,勿在验证/测试集上重采样(见坑点 6)。

若需要更严格的浓度级归一化,使用以下标准 Macenko 实现(浓度矩阵直接匹配参考图统计):

# 完整 Macenko 染色归一化:OD 空间 SVD → 角度筛选 H/E 向量 → 浓度分布匹配
import numpy as np

def macenko_fit(img_rgb: np.ndarray, beta: float = 0.15, alpha: float = 1.0):
    """从单张参考 tile 估计 H/E 染色向量与浓度均值/标准差。"""
    od = -np.log((img_rgb.reshape(-1, 3).astype(np.float64) + 1) / 256)
    od_hat = od[(od > beta).all(axis=1)]                      # 去除透明/背景像素
    _, eigvecs = np.linalg.eigh(np.cov(od_hat, rowvar=False))
    plane = eigvecs[:, [2, 1]]                                # 前两大主成分
    angles = np.arctan2(od_hat @ plane[:, 1], od_hat @ plane[:, 0])
    order = np.argsort(angles)
    v1 = plane @ np.array([np.cos(angles[order[0]]), np.sin(angles[order[0]])])
    v2 = plane @ np.array([np.cos(angles[order[-1]]), np.sin(angles[order[-1]])])
    stains = np.stack([v1 if v1[0] > v2[0] else v2,           # H 向量在前
                       v2 if v1[0] > v2[0] else v1]).T
    conc = np.linalg.lstsq(stains, od_hat.T, rcond=None)[0]   # 2×N 浓度矩阵
    return stains, conc.mean(axis=1), conc.std(axis=1)

def macenko_transform(img_rgb: np.ndarray, ref) -> np.ndarray:
    """把源图浓度分布拉伸至参考统计量,再变换回 RGB。"""
    stains, _, _ = macenko_fit(img_rgb)
    conc = np.linalg.lstsq(stains, -np.log(
        (img_rgb.reshape(-1, 3).astype(np.float64) + 1) / 256).T, rcond=None)[0]
    ref_stains, ref_mean, ref_std = ref
    z = (conc - conc.mean(axis=1, keepdims=True)) / (conc.std(axis=1, keepdims=True) + 1e-8)
    conc_n = z * ref_std[:, None] + ref_mean[:, None]
    od_ref = ref_stains @ conc_n
    return np.clip(np.exp(-od_ref.T.reshape(img_rgb.shape) - np.log(255)), 0, 255).astype(np.uint8)

与 §6.3 第一段简化版相比,完整版按像素浓度重映射,能保留组织结构细节,适合作为最终提交的预处理实现;简化版适合快速实验。无论选哪个,参考 tile 一经选定即全局固定,并在论文/模型卡中给出其文件名。

§6.4 PyTorch DataLoader 完整代码

# 前置条件:Data_Osteo_Files/ 下有 ML_Features_1144.csv 与两个 Training_Set 目录;
# 本脚本先建立 (路径, 标签) 清单,再给出可运行的 Dataset + DataLoader。
# 最小可用子集:把 META 构造限制到任意 2 个 set 即可。
import csv
import hashlib
from pathlib import Path

import pandas as pd
import torch
from PIL import Image
from torch.utils.data import DataLoader, Dataset

LABEL_MAP = {"NT": 0, "NVT": 1, "NEC": 1, "VT": 2}  # 文本标签 → 索引;NEC/NVT 同义

class OsteosarcomaTiles(Dataset):
    """tile 三分类数据集:从全局特征表取标签,按文件名在两个 Training_Set 下定位图像。"""

    def __init__(self, data_root: str, transform=None, label_col: str | None = None):
        self.root = Path(data_root)
        feat = pd.read_csv(self.root / "ML_Features_1144.csv")
        name_col = feat.columns[0]                       # 第 0 列为文件名列
        label_col = label_col or feat.columns[1]         # 第 1 列为分类列
        feat[name_col] = feat[name_col].astype(str).str.strip()
        # 建立 文件名 → 绝对路径 索引(大小写不敏感,规避跨 CSV 命名差异)
        index: dict[str, Path] = {}
        for jpg in self.root.rglob("*.jpg"):
            index.setdefault(jpg.name.casefold(), jpg)
        self.items, missing = [], []
        for _, row in feat.iterrows():
            path = index.get(str(row[name_col]).casefold())
            if path is None:
                missing.append(row[name_col])
                continue
            label = LABEL_MAP[str(row[label_col]).strip().upper()]
            self.items.append((path, label))
        if missing:
            print(f"warn: {len(missing)} rows unmatched, e.g. {missing[:3]}")
        self.transform = transform

    def __len__(self) -> int:
        return len(self.items)

    def __getitem__(self, idx: int):
        path, label = self.items[idx]
        img = Image.open(path).convert("RGB")
        if self.transform is not None:
            img = self.transform(img)
        return img, torch.tensor(label, dtype=torch.long)

# —— 实例化 ——
train_tf = get_transform(train=True)          # §6.3 的 transform(可先不传参考图)
ds = OsteosarcomaTiles("Data_Osteo_Files", transform=train_tf)
counts = pd.Series([lbl for _, lbl in ds.items]).value_counts().to_dict()
print(f"tiles={len(ds)}, class counts={counts}")
# 类频率加权,抵消 47/23/30 不平衡
total, n_cls = len(ds), 3
weights = [total / (n_cls * counts.get(i, 1)) for i in range(n_cls)]
loader = DataLoader(ds, batch_size=32, shuffle=True,
                    num_workers=4, pin_memory=True)
criterion = torch.nn.CrossEntropyLoss(weight=torch.tensor(weights, dtype=torch.float32))
for imgs, labels in loader:
    ...  # 训练循环
    break

该实现刻意不读取 set 级 CSV 做标签(仅交叉校验用),以规避表头不一致问题;hashlib 可用于去重前先校验同文件名重复 tile。

在 DataLoader 之上补充 §5.4 首选协议(患者级近似分组)的可运行划分代码:

# set 文件夹级 StratifiedGroupKFold:以 set(≈一张 WSI 的 tile 群)为组
# 若已自建 tile→患者映射,把 group 换成患者 ID 即升级为患者级 4 折
import numpy as np
from sklearn.model_selection import StratifiedGroupKFold

paths = [p for p, _ in ds.items]
labels = np.array([lbl for _, lbl in ds.items])
groups = np.array([f"{p.parent.parent.name}/{p.parent.name}" for p in paths])

def make_folds(n_splits: int = 5, seed: int = 42):
    sgkf = StratifiedGroupKFold(n_splits=n_splits, shuffle=True, random_state=seed)
    for fold, (tr, te) in enumerate(sgkf.split(np.zeros(len(labels)), labels, groups)):
        # 训练折内部再切 10% 做验证(同样按组切,避免组渗透)
        tr_groups = groups[tr]
        tr_unique = np.unique(tr_groups)
        rng = np.random.default_rng(seed + fold)
        val_groups = set(rng.choice(tr_unique, size=max(1, len(tr_unique) // 10),
                                    replace=False))
        val = np.array([i in tr and groups[i] in val_groups for i in range(len(labels))])
        yield fold, np.where(~val & np.isin(np.arange(len(labels)), tr))[0], \
                 np.where(val)[0], te

for fold, tr_idx, va_idx, te_idx in make_folds():
    print(f"fold {fold}: train={len(tr_idx)} val={len(va_idx)} "
          f"test={len(te_idx)} 组泄漏检查: "
          f"{len(set(groups[tr_idx]) & set(groups[te_idx])) == 0}")

每次实验把 (tr_idx, va_idx, te_idx) 存为 CSV 入版本控制——本数据集结果不可比的头号原因就是划分协议未公开(§5.6)。

§6.5 八个坑点

⚠️ 坑点 1:Training_Set_1/2 不是 train/test 划分——"Training"之名是最大误导(分类:数据泄漏)

问题:官方目录以 Training_Set_1(547 张)与 Training_Set_2(597 张)组织,但它们对应两名病理学家的标注批次,数据集从未发布官方 train/test 划分。把 Set_1 当训练、Set_2 当测试,会把"标注者"与"测试集"完全绑定,评估的是标注者差异而非模型泛化。
症状:测试指标异常偏低且换骨干网不敏感;或论文间数字无法对齐(各研究划分五花八门:70/10/20、70/20/10、四类自定划分)。
解决

  1. 简单方法:两个 set 合并后按 §5.4 的患者级/WSI 级策略自行划分,并在论文明确写出划分协议。
  2. 进阶方法:用 StratifiedGroupKFold,group 取 set 文件夹(近似 WSI),同时按类别分层:
from sklearn.model_selection import StratifiedGroupKFold
import numpy as np
y = np.array([lbl for _, lbl in ds.items])
g = np.array([p.parent.name for p, _ in ds.items])   # set 文件夹作为组
for tr, te in StratifiedGroupKFold(n_splits=5, shuffle=True,
                                   random_state=42).split(np.zeros(len(y)), y, g):
    ...  # 保证测试折不含训练折的 set
  1. SOTA 方法:自建 tile → 患者映射后做 4 折患者留一交叉验证,报告折间均值 ± 标准差。
    参考TCIA collection 页面arXiv:2011.01177

⚠️ 坑点 2:4 名患者 × 随机 tile 划分 = 系统性性能高估(分类:数据泄漏)

问题:1,144 个 tile 仅来自 4 名患者 40 张 WSI,同一患者的 tile 共享基因背景、染色批次与扫描伪影。tile 级随机划分下,测试集与训练集"几乎同源",报告的 90%+ 准确率不能代表对新鲜患者的泛化。
症状:交叉验证折间标准差极大;模型在自家新扫描切片上骤降;Grad-CAM 高亮区域落在墨迹/空腔等伪影上(记住的是 WSI 指纹而非组织学)。
解决

  1. 简单方法:按 set 文件夹分组做 GroupKFold(每组 ≈ 一张 WSI 的 tile 群)。
  2. 进阶方法:患者级 4 折留一交叉验证(LOO),每折测试集为 1 名患者全部 tile:
patient_of = {"Training_Set_1/set1": "P1", ...}      # 自建 tile→患者映射
# 以患者 ID 生成 4 折,每折内部再切 10% 做验证
  1. SOTA 方法:患者级划分 + 报告 per-patient 指标分布;RadiomicsOS 已示范以 TRAIN_PATIENTS/VAL_PATIENTS/TEST_PATIENT 常量固定患者划分训练 InceptionV3 + 影像组学模型。
    参考RadiomicsOSEmergent Mind 综述:tile-level vs patient-level 方法论张力

⚠️ 坑点 3:标签是"优势组织类型"——263 张坏死 tile 中 53 张混有活肿瘤(分类:标签理解)

问题:每张 tile 只有一个类别标签,取自其优势组织;官方确认 263 张坏死 tile 中 53 张(20%)同时含活肿瘤成分。模型被迫在"存在 VT 区域"的 NEC 样本上输出 NEC,这些样本天然是噪声标签。
症状:NEC 与 VT 互混是混淆矩阵的最大离对角块;对 NEC 类的 recall 上不去;阈值微调时两类指标此消彼长。
解决

  1. 简单方法:训练时对含混合成分的样本降权或直接剔除 53 张争议 tile 做敏感性分析,报告两版结果。
  2. 进阶方法:改用软标签——NEC 类样本以 0.8/0.2 概率分配给坏死/活肿瘤,用 KL 或 label smoothing 训练。
  3. SOTA 方法:利用 set 级 CSV 中的区域标注做弱监督多实例学习(MIL),让模型输出区域比例而非单一标签;全片层面的成熟范式见 Pan 等 2022 的多倍率分割网络(坏死率连续估计替代离散分类)。
    参考Cancers 2023Pan et al., 2022, PMID 36563747

⚠️ 坑点 4:单人标注 + 两人分工,标注者效应直接写进标签(分类:偏倚陷阱)

问题:全部 tile 分给两名病理学家,每张仅一人标注,无 inter-rater 一致性统计。训练集与测试集若沿用批次组织,模型的"错误"可能只是另一位标注者的判断偏好。
症状:按 set 划分时测试指标显著低于混合划分;把两个 set 互换角色后指标漂移明显;错误样本集中在另一位标注者的 set。
解决

  1. 简单方法:划分前先合并两个 set 并打乱(在组内分层约束下),使两名标注者的样本均匀进入各折。
  2. 进阶方法:以 set/标注者作为协变量,检查模型 per-set 指标差;若差值大,训练时引入域对抗(DANN)或按标注者分层采样。
  3. SOTA 方法:对测试集做小规模二次标注(请病理医生重标 5%—10% tile),报告模型与两位原标注者的一致性上下界,把标注噪声显式量化。
    参考TCIA collection 页面(协议原文:each image was annotated by only one pathologist)

⚠️ 坑点 5:JPG 有损压缩 + 跨 20 年染色批次,不做染色归一化会翻车(分类:预处理陷阱)

问题:样本横跨 1995—2015 年,切片处理、扫描与 JPG 压缩引入系统性颜色偏移;直接以 ImageNet 统计量 + 原图训练的模型容易学到"批次颜色"而非"组织学形态"。
症状:训练/验证曲线正常但跨 set 推理色偏敏感;对亮度/对比度微扰的鲁棒性极差;换参考图复训后指标波动。
解决

  1. 简单方法:训练/推理全链路固定同一张参考 tile 做 Macenko 或 Reinhard 归一化(§6.3 代码),参考图随 checkpoint 保存。
  2. 进阶方法:以 HED 颜色解卷积做染色通道级增强(随机缩放浓度系数 0.85—1.15),模拟染色强度变化:
from torchvision.transforms import ColorJitter
# 更贴近病理的方案:stain augmentation(对 OD 空间的 H/E 浓度做随机线性缩放)
  1. SOTA 方法:自监督染色不变表征(如 stain-augmented SimCLR 预训练)后再微调,或在归一化后仍保留 10% 原始颜色扰动以增强鲁棒性。
    参考Arunachalam et al., 2019(LAB 色彩域特征设计佐证颜色通道的关键性)

⚠️ 坑点 6:accuracy 在 47/23/30 不平衡下撒谎——宏平均与分层 AUC 才是本数据集的通用货币(分类:评估误用)

问题:非肿瘤类占 47%,一个把全部预测为 NT 的模型就有约 47% 准确率;四类体系下 NVR 类仅 53 张,随机波动就能制造 ±10% 的类内指标震荡。只报 accuracy 的论文结果无法横向比较。
症状:小类 F1 剧烈波动;不同论文的"准确率"从 86% 到 99% 却都自称 SOTA;混淆矩阵显示模型几乎总是偏向 NT。
解决

  1. 简单方法:报告 macro-F1、per-class precision/recall 与混淆矩阵,类加权损失配合加权采样。
  2. 进阶方法:沿用 PLOS ONE 原文的分层两步判别协议——先二分类(肿瘤 vs 非肿瘤),再在肿瘤子集内区分坏死 vs 活肿瘤,分别报告 AUC:
from sklearn.metrics import classification_report, roc_auc_score
# 第二步 AUC:仅在真实标签 ∈ {NEC, VT} 的样本上计算
mask = np.isin(y_true, [1, 2])
auc = roc_auc_score((y_true[mask] == 2).astype(int), p_vt[mask])
  1. SOTA 方法:患者级聚合指标(每名患者的 tile 多数投票/概率平均)+ 5×5 重复分组交叉验证给出置信区间。
    参考Arunachalam et al., 2019, PLOS ONEEmergent Mind(社区报告 86%—99%+ 区间与不可比性)

⚠️ 坑点 7:论文里的 56,929 个 128×128 patch 与 942 张 WSI 都不在发布包内(分类:工程陷阱)

问题:PLOS ONE 论文的深度学习管线基于 128×128 重叠 patch(56,929 个)与 WSI 级预测图,但这些产物均未随 TCIA 发布——发布物只有 1,144 张 1024×1024 tile。照论文超参直接找数据会扑空,也无法在公开数据上复现全片预测图。
症状:在 TCIA 包里反复找 patch 目录一无所获;复现的 patch 数对不上论文量级;试图做全片坏死率图时发现没有 WSI 可用。
解决

  1. 简单方法:接受"tile 级"定位,把任务重定义为 1,144 tile 分类(社区绝大多数论文即如此),论文表述改为"在 tile 级复现"。
  2. 进阶方法:从发布 tile 自行切 128×128 patch(重叠 50%),构建自己的 patch 层实验,并在论文中标注"patch 由发布 tile 二次切分"。
  3. SOTA 方法:需要 WSI 级任务时转向可获得全片数据的骨肉瘤队列(如 Pan 等 2022 的 103 例设计或机构内数据),将本数据集仅用作 tile 级预训练/预验证。
    参考Arunachalam et al., 2019, PLOS ONE(Data preparation 一节明确 56,929 patch 的产生方式)

⚠️ 坑点 8:下载链路与文件名对齐——Aspera 插件、tar.zst、set 级 CSV 表头三道坎(分类:工程陷阱)

问题:TCIA 网页直链下载依赖 IBM Aspera Connect 插件(浏览器环境常不可用);HF 镜像是 zstd 压缩的 tar.zst 单文件;set 级标注 CSV 在不同 set 间表头不完全一致,文件名大小写/后缀差异会让"按文件名 join 标签"静默丢行。
症状:浏览器点击下载无响应或超时;tar -xf 报 zstd 错误;聚合后样本数 < 1,144 且不报错(默认 inner join 丢弃未匹配行)。
解决

  1. 简单方法:优先用 TCIA RESTful API / NBIA 工具(§6.2 代码)或 HF 镜像 tar --use-compress-program=unzstd -xf 解包。
  2. 进阶方法:标签一律以 ML_Features_1144.csv 为准,与 set 级 CSV 仅做校验;join 前对文件名做 strip + casefold + 去后缀归一,并用 outer join 检查未匹配行(§6.4 的 missing 提示)。
  3. SOTA 方法:建立一次性 ingestion 脚本,输出样本数/类别分布/未匹配清单三张校验表,进入版本控制;用 Osteosarcoma-UT.sums 校验镜像完整性。
    参考TCIA collection 页面(Download requires IBM-Aspera-Connect plugin);HF 镜像页

§6.6 数据增强

增强操作 安全性 说明
水平/垂直翻转、90° 旋转 ✅ 安全 病理无方向先验,社区默认(Anisuzzaman 2020 亦使用翻转)
小角度随机旋转(±15°) ✅ 安全 模拟切片摆放差异
染色浓度缩放(H/E 通道 0.85—1.15) ✅ 安全(推荐) 直接对应染色批次变异(见坑点 5)
亮度/对比度微扰 ⚠️ 谨慎 幅度需小;过大改变核浆对比即改变诊断语义
弹性形变、重采样伪影 ⚠️ 谨慎 可能引入不存在的组织形态
颜色空间整体反转、灰度反转 ❌ 危险 H/E 染色语义被破坏,模型将学到伪特征
在验证/测试集上做增强 ❌ 危险 评估协议污染,指标不可信

§6.7 模型推荐

模型 输入 适用场景 参考依据
VGG19(ImageNet 预训练) 224×224(论文用 375×375) 复现 Anisuzzaman 2020 基线(0.939) arXiv:2011.01177
ResNet50 / DenseNet201 224×224 稳健迁移学习对照 Cancers 2023
EfficientNet-B4 + 贝叶斯优化 224×224 SOTA 风格微调 + XAI(Grad-CAM/SHAP/LIME) Scientific Reports 2025
InceptionV3 + 影像组学双头 224×224 + 特征向量 患者级划分下的多模态原型 RadiomicsOS
SVM / 随机森林(65 维特征) 无需图像 无 GPU 的经典基线(PLOS ONE 中 SVM 最佳) Arunachalam et al., 2019

§6.8 硬件需求

配置 要求 可完成任务
CPU 笔记本 8 GB RAM 无 GPU CSV 特征 ML 基线、数据探索、E5 增强(3 类)
单卡 6—8 GB 显存(如 RTX 3060) batch 32 @ 224×224 全量 1,144 tile 微调 ResNet/EfficientNet
单卡 16 GB+ 显存 batch 64 @ 375×375 或 1024×1024 分辨率实验 高输入分辨率对比、自监督预训练

数据集全量不足 200 MB,训练一个基线模型在单卡上数分钟即可收敛到可报告水平;瓶颈不在算力而在评估协议设计。

§6.9 评估指标代码

# 类不平衡 + 分组划分下的标准评估组合:宏平均报告 + 混淆矩阵 + 分层 AUC
import numpy as np
from sklearn.metrics import (confusion_matrix, classification_report,
                             roc_auc_score)

CLASS_NAMES = ["NT", "NEC", "VT"]

def full_report(y_true, y_pred, y_prob, mask_tumor=None):
    print(classification_report(y_true, y_pred, target_names=CLASS_NAMES,
                                digits=4, zero_division=0))
    print("confusion matrix (rows=true, cols=pred):")
    print(confusion_matrix(y_true, y_pred))
    # 第二步 AUC:仅在真实肿瘤样本上区分 NEC vs VT(对齐 PLOS ONE 协议)
    if mask_tumor is None:
        mask_tumor = np.isin(y_true, [1, 2])
    auc = roc_auc_score((y_true[mask_tumor] == 2).astype(int),
                        y_prob[mask_tumor, 2])
    print(f"conditional NEC-vs-VT AUC = {auc:.4f}")
    return auc

报告规范建议:主指标 macro-F1(三分类)+ conditional AUC(肿瘤内二分类)+ per-class recall;所有指标附分组交叉验证的均值 ± 标准差。

§6.10 MLOps 笔记

  • 数据版本:数据集为静态 v1(2019-03-22 后无更新),用 DVC 或 git-lfs 固定数据哈希 + 记录 TCIA DOI 引用。
  • 可复现性:随机种子、划分文件(tile → fold 映射 CSV)、参考染色图三者入库;缺一不可复现(见 §5.4)。
  • 实验追踪:按"划分协议 + 输入尺寸 + 类别体系"三元组建命名空间(如 patientLOO_224px_3cls),避免社区常见的数字不可比问题。
  • 监控:部署原型阶段监控输入 tile 的染色统计量漂移(H/E 通道均值),异常时回退到固定参考图归一化。
  • 合规:产物论文/模型卡须引用 DOI 10.7937/tcia.2019.bvhjhdas 与 PLOS ONE 论文,遵守 CC BY 3.0 署名。

面向本数据集的模型卡最小要点清单:

模型卡条目 建议内容
训练数据 Osteosarcoma-Tumor-Assessment v1(1,144 tile,4 患者),DOI 与下载日期
划分协议 患者级 LOO / GroupKFold(附划分文件哈希)
预处理 归一化算法 + 参考 tile 文件名 + 输入尺寸
指标 macro-F1、conditional AUC、per-class recall(均值 ± 标准差)
已知局限 4 患者规模、优势类型标签、单人标注、单中心 1995—2015
适用范围声明 tile 级研究用途;不构成临床坏死分级依据
引用义务 数据集 DOI + PLOS ONE 论文 + CC BY 3.0 署名

§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解措施
患者规模偏倚 仅 4 名入选患者(50 例档案中选出),患者级多样性极低 🔴 高 患者级留一交叉验证;结果只做 tile 级解读
类不平衡 NT 47% / NEC 23% / VT 30%;四类体系下 NVR 仅 53 张 🟠 中 类加权损失 + 宏平均指标(见坑点 6)
标注者效应 两人分工标注、每 tile 单人标注、无一致性统计 🟠 中 合并打乱划分;per-set 指标监控(见坑点 4)
混合标签 tile 标签为优势类型,53/263 坏死 tile 含 VT 成分 🟠 中 软标签 / 剔除敏感性分析(见坑点 3)
时代偏倚 样本 1995—2015 年采集,染色与扫描协议跨 20 年 🟡 低—中 染色归一化(见坑点 5)
单中心偏倚 全部样本来自达拉斯单一儿童医院 🔴 高 勿宣称跨机构泛化;外部数据验证
选择偏倚 40 张 WSI 由病理学家按"异质性与反应特征"人工挑选 🟠 中 tile 随机抽取缓解 tile 级偏差,但 WSI 层选择无法逆转

§7.2 标注质量

标注由两名病理专家完成,属专家级金标准而非众包标签;区域级 mask 标注保证了 tile 标签的可解释性。结构性限制有三:① 每张 tile 仅一人标注,无法估计 inter-rater kappa;② 标签为优势类型语义,含 53 张明确的混合成分 tile(Cancers 2023);③ 标注工具与导出格式为研究团队自研,set 级 CSV 表头不完全一致(见坑点 8)。综合判断:标签整体可信但含可预期的类边界噪声,在做"类边界附近"的应用(如精确坏死比例)时需保守解读。

从积极面看,该协议仍有两点值得肯定:其一,标注粒度是区域级 mask而非整图打分——这意味着 tile 内组织构成信息原则上可从标注 CSV 恢复,为弱监督与半监督方法保留了上升空间;其二,两名标注者均为骨/儿科病理方向的临床专家,且 10× 判别层级经病理学家确认,标签的"专家锚定"程度高于多数众包病理数据集。质量问题的根源不是标注能力,而是协议设计(单人单标注 + 优势类型压缩),这决定了它可以通过重标注或多实例学习改进,而非根本不可救药。

§7.3 泛化性评估

目标场景 失效风险 证据/理由
同数据集 tile 级重分类 社区报告 86%—99%+ 准确率(划分不一,见 Emergent Mind
同机构新患者 tile 分类 无留出患者;4 名患者不可能覆盖形态学谱系
跨机构/跨扫描仪泛化 极高 单中心、跨 20 年染色批次、JPG 压缩
全片坏死率估计 无法在本数据上训练 942 张 WSI 未发布(见坑点 7)
生存/预后建模 不可行 无临床随访数据
染色归一化方法研究 归一化可显著稳定训练,但参考图选择本身引入超参

§7.4 伦理与合规

数据为回顾性档案标本的数字化 tile,经机构审查并由 TCIA 公开发布;发布物不含患者标识、年龄、性别或随访信息,图像为组织区域视图,不含面部或可识别解剖特征。使用合规要点:CC BY 3.0 署名 + 引用数据集 DOI 10.7937/tcia.2019.bvhjhdas + 遵守 TCIA 数据使用政策;模型与衍生数据集再发布时须保留许可与署名链。

§7.5 公平性

官方未公布患者的年龄、性别、种族分布,无法做人群亚组公平性分析——这本身是一个公平性局限:任何基于该数据训练的模型,其跨人群行为不可审计。骨肉瘤好发于青春期快速生长期的儿童与青少年(TCIA collection 页面),使用者应意识到数据集的人群覆盖面窄(单一儿童医院、单一地区、20 年跨度),并在模型卡中声明"人群代表性未知"。

公平性审计的可行替代路径:既然患者级人口学属性缺失,至少应在 tile 级审计"可见伪影与组织构成"的分布均衡性——例如统计各 set(标注者批次)与各类别的图像亮度/染色饱和度分布,若某一标注者的某个类别系统性偏色,说明模型可能利用批次线索而非组织学线索预测类别。这种审计不能替代人群公平性分析,但能在发布模型前捕获最明显的批注捷径学习。

§7.6 数据漂移

三类漂移源需要监控:① 染色漂移——20 年间染色试剂与流程变化的批次效应(坑点 5);② 扫描漂移——扫描仪参数与更新(型号未记录,无法精确建模);③ 人群漂移——若把模型迁移到其他机构的患者群,人群构成与治疗方案的年代差异会同时作用。缓解的工程手段见 §6.10(输入染色统计量监控 + 固定参考图归一化)。

§7.7 DAIMS 24 项评估

# 检查项 状态 说明
1 宽格式 ML_Features_1144.csv 一行一 tile,69 列规整
2 唯一标识 ⚠️ 文件名/TIN 可唯一标识 tile,但患者 ID 与 WSI 映射未随数据发布
3 特殊字符 ⚠️ 文件名跨 CSV 存在大小写与命名差异,join 前需归一(坑点 8)
4 重复行 1,144 行与图像一一对应,无重复记录报告
5 缺失编码 无缺失单元格,无占位编码
6 标签标识 ⚠️ 优势类型语义;53/263 坏死 tile 含 VT 成分;NEC/NVT 同义异名
7 罕见类分组 ⚠️ 坏死类 263 张;四类体系 NVR 仅 53 张,需分组敏感性分析
8 偏倚评估 选择标准、漏斗(50→942→40→1,200→1,144)在论文中完整披露
9 数据字典 ⚠️ 65 个特征列名无官方字典文档,语义需回溯 CellProfiler 定义
10 信息性缺失解释 结构性缺失(患者 ID/WSI/临床数据)性质明确,见 §4.5
11 设备记录 扫描仪型号与扫描参数官方未公布
12 共线性 图像模态不适用;特征 CSV 使用时需自行检查特征共线性
13 编码映射 三类标签语义清晰,TCIA/CCDI/论文口径一致(536/263/345)
14 时间戳处理 无患者级时间戳与随访数据,temporalCoverage 仅到档案年份区间
15 划分建议 ⚠️ 官方无划分;本页 §5.4 提供患者级/WSI 级方案但需自建映射
16 泄漏讨论 患者级/WSI 级/标注批次泄漏路径已系统分析(§5.3、坑点 1—2)
17 标签分布 536/263/345(47%/23%/30%)官方公布
18 测量偏倚 ⚠️ 单人标注 + 两人分工引入标注者效应,无法量化
19 外部验证建议 §7.8 给出矩阵与设计建议(含 Pan 2022 队列设计参照)
20 版本记录 TCIA v1 单版本,2019-03-22 发布日期明确,状态 Complete
21 预处理脚本 ⚠️ 原始研究管线未随数据发布;本页 §6.3—§6.4 提供可运行替代
22 合规要求 CC BY 3.0 + TCIA 数据使用政策清晰,署名要求明确
23 多模态对齐 无配套基因组/临床/生存数据,无法做多模态对齐
24 去标识化 发布 tile 为组织区域视图,无 PHI;TCIA 公开发布流程把关

DAIMS 评分:17.0 / 24

评分解读中等偏上——数据本身小而规整(宽格式、无缺失、口径一致),发布方在溯源漏斗与标签分布上的披露完整;失分集中在结构性短缺:无官方划分、无患者映射、无设备记录、无临床多模态数据,且单人标注协议使测量偏倚不可量化。

对你意味着什么:13 个 ✅ 意味着你可以零成本完成数据加载、标签聚合与基线训练——这是一个"开箱即训"的小数据集。但 3 个 ❌(设备、时间戳、多模态)划清了它的能力边界:不要用它做任何临床时间线相关或病例级多模态建模。8 个 ⚠️ 是行动清单——先建 tile→患者映射(哪怕近似)、再按 §5.4 患者级划分、标签一律以全局 CSV 为准、报告一律用宏平均。把它当作方法学试验台与教学基准而非临床证据来源,是这个数据集的正确打开方式。

§7.8 外部验证矩阵

截至 2026-09,尚无"以本数据集训练、在独立机构队列上测试"的正式外部验证同行评审研究。下表收录的是同行评审文献在该数据集上的内部评估与相关设计参照:

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
Osteosarcoma-Tumor-Assessment(随机 70/10/20) UT Dallas 社区研究 tile 三分类 VGG19 accuracy 0.939 迁移学习基线天花板约 0.94(tile 级随机划分)
Osteosarcoma-Tumor-Assessment(分层 70/20/10) Scientific Reports 2025 tile 分类 + XAI EfficientNet-B4 优化后多指标报告 贝叶斯优化 + Grad-CAM/SHAP 提升可解释性
自有 103 例骨肉瘤队列(3,134 WSI) Pan et al., 2022 全片坏死率 + 生存分层 OS P = 2.4×10⁻⁶;PFS P = 0.016 非本数据集,设计参照 tile 分割 → 病例级坏死率的可扩展范式

注:表中前两行为同一数据集上的内部划分结果,划分协议不同导致数值不可直接比较;第三行为方法学参照而非本数据集的外部验证。


§8 基准性能与生态

§8.1 排行榜

⚠️ 本数据集无统一评测服务器;下表汇总同行评审/公开文献结果。数值不可直接比较:划分协议(随机 70/10/20 vs 70/20/10 vs 患者级)、输入尺寸(224/375/1024)、类别体系(三类 vs 四类)均不一致,且 tile 级随机划分结果含患者级泄漏、系统性偏乐观。

排名 模型 性能 年份 关键技术 完整引用 代码
1 EfficientNet-B4(ODLF-BCD) 多指标 SOTA 风格报告(accuracy/precision/recall/F1/ROC-AUC) 2025 贝叶斯超参优化 + Grad-CAM/SHAP/LIME —, 2025, Scientific Reports. DOI 10.1038/s41598-025-26051-8 未公开
2 VGG19(迁移学习) accuracy 0.939 2020 ImageNet 迁移 + Keras 增强,375×375 输入 Anisuzzaman et al., 2020, arXiv:2011.01177
3 混合 CNN/多架构对比 多模型系统对比(accuracy 0.78—0.94 区间) 2023 ResNet/VGG/Inception 同协议横评 —, 2023, Cancers. DOI 10.3390/…(MDPI cancers15082290)
4 InceptionV3 + 影像组学 患者级划分原型(accuracy 区间 86%—99%+ 之一) 2025 双头层次损失 + torchradiomics RadiomicsOS, 2025, GitHub 开源原型 开源
5 SVM(65 维特征)+ CNN ensemble 总体 93.3%(NT 91.9/VT 95.3/NEC 92.7,转引) 2019 专家引导特征 + CellProfiler + 自建 CNN Arunachalam et al., 2019, PLOS ONE. DOI 10.1371/journal.pone.0210706

§8.2 SOTA 总结与选型建议

社区报告准确率横跨 86%—99%+(Emergent Mind),差异主要由划分协议而非模型能力驱动。选型建议:做方法学研究时,优先复现两条可对齐的路线——① Anisuzzaman 式 VGG19 随机划分基线(快速、可比、但含泄漏),② RadiomicsOS 式患者级划分(慢、方差大、诚实);做应用原型时,EfficientNet-B4 + 染色归一化是当前性价比最高的起点;无 GPU 时直接用 65 维特征 + SVM。真正的 SOTA 方向不是 tile 分类精度,而是 Pan 等 2022 展示的"分割 → 病例级坏死率 → 生存分层"任务升级。

选型时的三条经验法则:

  1. 先问划分再问模型:看到任何 9 字头准确率,第一步核对其划分——tile 级随机划分下的 99% 与患者级划分下的 86% 可能代表同一真实水平。
  2. 输入尺寸写进对照实验:224×224 与 375×375 在该数据集上表现差异可观(Anisuzzaman 2020 的显存折衷),换尺寸等于换实验。
  3. 类别体系先对齐:三类(NT/NEC/VT)与四类(NT/NVT/VT/NVR)研究(PMC12045028)不可直接比较;跨文献引用数字前先统一口径。

§8.3 评测协议

推荐协议:患者级 4 折留一交叉验证(无法建映射时用 set 文件夹 GroupKFold 并声明);指标 = macro-F1 + conditional NEC-vs-VT AUC + per-class recall;输入 224×224(敏感性分析加 375×375);固定 Macenko 参考图;类别加权损失;报告均值 ± 标准差并公开划分文件。

数据集 模态 规模 任务差异
NCT-CRC-HE-100K / NCT-CRC-HE-7K 结直肠 H&E 20× 100,000 / 7,500 patch 9 类组织学,规模大、无治疗反应语义
BACH 乳腺 H&E 约 400 WSI + 微观图 4 类癌型诊断 + ICIAR 2018 竞赛
BRACS 乳腺 H&E 547 WSI 派生 patch 7 类病变分型
BreakHis 乳腺 H&E 多倍率 7,909 张 良恶性二分类,多放大倍数
Pan 2022 队列(未公开) 骨肉瘤 WSI 103 例 / 3,134 WSI 全片坏死率 + 生存,任务形态最接近

§8.5 关键论文 Top 8

  1. Leavey P, Sengupta A, Rakheja D, Daescu O, Arunachalam HB, Mishra R (2019). Osteosarcoma data from UT Southwestern/UT Dallas for Viable and Necrotic Tumor Assessment. The Cancer Imaging Archive. DOI 10.7937/tcia.2019.bvhjhdas — 数据集官方引用。
  2. Arunachalam HB, Mishra R, Daescu O, Cederberg K, Rakheja D, Sengupta A, Leonard D, Hallac R, Leavey P (2019). Viable and necrotic tumor assessment from whole slide images of osteosarcoma using machine-learning and deep-learning models. PLOS ONE. DOI 10.1371/journal.pone.0210706 — 首个全自动骨肉瘤活性/坏死评估管线(13 ML 模型 + CNN + 预测图)。
  3. Mishra R, Daescu O, Leavey P, Rakheja D, Sengupta A (2017). Histopathological diagnosis for viable and non-viable tumor prediction for osteosarcoma using convolutional neural network. ISBRA 2017, Springer, pp 12—23. DOI 10.1007/978-3-319-59575-7_2 — 数据集最早的配套 CNN 方法论文。
  4. Anisuzzaman DM, et al. (2020). A Deep Learning Study on Osteosarcoma Detection from Histological Images. arXiv:2011.01177 — 多骨干横评,VGG19 0.939 成为社区常用基线。
  5. Pan C, et al. (2022). Deep Learning-Based Objective and Reproducible Osteosarcoma Chemotherapy Response Assessment and Outcome Prediction. PMID 36563747 — 103 例 3,134 WSI 上实现坏死率估计与生存分层,定义了该方向的终极任务形态。
  6. Borji A, et al. (2024). Advanced hybrid deep learning model for enhanced evaluation of osteosarcoma histopathology images(四类 NT/NVT/VT/NVR 重标注研究). PMC12045028 — 提出四类标签体系与 NVR 类。
  7. — (2025). Enhancing bone cancer detection through optimized pre trained deep learning models and explainable AI using the osteosarcoma tumor assessment dataset. Scientific Reports. DOI 10.1038/s41598-025-26051-8 — EfficientNet-B4 + 贝叶斯优化 + 三重 XAI。
  8. Huvos AG, Rosen G, Marcove RC (1977). Primary osteogenic sarcoma: pathologic aspects in 20 patients after treatment with chemotherapy en bloc resection, and prosthetic bone replacement. Arch Pathol Lab Med 101:14—18 — 化疗后坏死分级(Huvos 分级)的奠基文献,≥90% 坏死 = 反应良好。

§8.6 社区活跃度

TCIA collection 页面累计约 6.1k 浏览与 22 次数据引用(截至 2026-09,TCIA);HuggingFace 存在第三方镜像(CAIR-M3LLM);开源研究原型散见于 GitHub(如 RadiomicsOS);Emergent Mind 等综述页将其列为骨肿瘤数字病理的参考数据集。无官方排行榜、无活跃 issue 跟踪,社区互动以论文引用为主要形式。

活跃度的三个观察:① 引用惯性稳定——作为"骨肉瘤 + 深度学习"检索下少有的公开数据集,它持续出现在 2020—2025 年的方法学论文中(从 VGG19 迁移学习到 XAI 框架验证),是罕见病种数字病理的默认基准;② 无中心化评测——与 BACH(ICIAR 竞赛)或 CAMELYON(Grand Challenge)不同,本数据集没有官方 leaderboard,这意味着每个新数字都需先审查其划分协议;③ 镜像分散——TCIA 之外存在 HuggingFace 镜像与 Awesome 列表收录,跨渠道的文件命名差异(Training_Set_1 vs Training-Set-1)是复现时的高频小坑(见坑点 8)。

§8.7 生态快照

资源 类型 链接 推荐理由
TCIA collection 页面 官方托管 链接 首选下载与引用入口
TCIA 详细描述页 官方文档 链接 目录结构、引用格式、版本信息
NCI CCDI 目录页 官方目录 链接 儿童肿瘤数据生态内的标准化元数据
HF 镜像 社区镜像 链接 免插件快速获取(tar.zst,202 MB)
PLOS ONE 论文 方法学论文 PubMed 30995247 标注协议、特征工程与基线的权威描述
RadiomicsOS 开源原型 链接 患者级划分 + 多模态训练的可运行参考
Awesome-Medical-Dataset 条目 社区索引 链接 快速概览与统计核对

§9 相关资源与引用

§9.1 官方资源

§9.2 BibTeX 完整引用

@data{leavey2019osteosarcoma,
  title     = {Osteosarcoma data from UT Southwestern/UT Dallas for Viable and
               Necrotic Tumor Assessment (Osteosarcoma-Tumor-Assessment)},
  author    = {Leavey, Patrick and Sengupta, Anita and Rakheja, Dinesh and
               Daescu, Ovidiu and Arunachalam, Harish Babu and Mishra, Rashika},
  year      = {2019},
  publisher = {The Cancer Imaging Archive},
  doi       = {10.7937/tcia.2019.bvhjhdas},
  url       = {https://doi.org/10.7937/tcia.2019.bvhjhdas}
}

@article{arunachalam2019viable,
  title   = {Viable and necrotic tumor assessment from whole slide images of
             osteosarcoma using machine-learning and deep-learning models},
  author  = {Arunachalam, Harish Babu and Mishra, Rashika and Daescu, Ovidiu and
             Cederberg, Kevin and Rakheja, Dinesh and Sengupta, Anita and
             Leonard, David and Hallac, Rami and Leavey, Patrick},
  journal = {PLOS ONE},
  year    = {2019},
  doi     = {10.1371/journal.pone.0210706}
}

@inproceedings{mishra2017histopathological,
  title     = {Histopathological Diagnosis for Viable and Non-Viable Tumor
               Prediction for Osteosarcoma Using Convolutional Neural Network},
  author    = {Mishra, Rashika and Daescu, Ovidiu and Leavey, Patrick and
               Rakheja, Dinesh and Sengupta, Anita},
  booktitle = {Bioinformatics Research and Applications (ISBRA 2017)},
  pages     = {12--23},
  year      = {2017},
  publisher = {Springer},
  doi       = {10.1007/978-3-319-59575-7_2}
}

@article{anisuzzaman2020deep,
  title   = {A Deep Learning Study on Osteosarcoma Detection from Histological
             Images},
  author  = {Anisuzzaman, DM and others},
  journal = {arXiv preprint arXiv:2011.01177},
  year    = {2020}
}

@article{pan2022deep,
  title   = {Deep Learning-Based Objective and Reproducible Osteosarcoma
             Chemotherapy Response Assessment and Outcome Prediction},
  author  = {Pan, Chang and others},
  journal = {JCO Clinical Cancer Informatics},
  year    = {2022},
  note    = {PMID: 36563747}
}

@article{huvos1977primary,
  title   = {Primary osteogenic sarcoma: pathologic aspects in 20 patients after
             treatment with chemotherapy en bloc resection, and prosthetic bone
             replacement},
  author  = {Huvos, Angela G and Rosen, Gerald and Marcove, Ralph C},
  journal = {Archives of Pathology and Laboratory Medicine},
  volume  = {101},
  pages   = {14--18},
  year    = {1977}
}

§9.3 引用指南

使用本数据集时:① 数据引用必须包含 TCIA 数据集 DOI(10.7937/tcia.2019.bvhjhdas,见 §9.2 第一条);② 建议同时引用 PLOS ONE 方法学论文(标注协议与特征工程描述);③ 若讨论 Huvos 坏死分级阈值,引用 Huvos 1977 原文;④ 再分发的衍生数据集须保留 CC BY 3.0 许可声明。


§10 AI 使用声明卡

§10.1 本页面使用的 AI 模型列表

模型 用途
大语言模型(千方病案医学编辑部配置) 文献综合、章节草稿、代码示例生成

§10.2 AI 参与范围

AI 参与:WebSearch 检索结果的信息抽取与交叉核对、全文结构化写作、代码示例生成、表格汇总。AI 不参与:最终医学判断与审核签发、与原文数字的最终一致性裁定(由编辑部交叉审核完成)。

§10.3 输入来源列表

  1. Leavey P, et al. (2019). Osteosarcoma data from UT Southwestern/UT Dallas. The Cancer Imaging Archive. DOI 10.7937/tcia.2019.bvhjhdas
  2. TCIA collection 页面. https://www.cancerimagingarchive.net/collection/osteosarcoma-tumor-assessment/
  3. TCIA 详细描述页. https://wiki.cancerimagingarchive.net/pages/viewpage.action?pageId=52756935
  4. NCI CCDI 目录. https://datacatalog.ccdi.cancer.gov/dataset/TCIA-Osteosarcoma
  5. Arunachalam HB, et al. (2019). PLOS ONE. DOI 10.1371/journal.pone.0210706(PMC6469748)
  6. Mishra R, et al. (2017). ISBRA 2017. DOI 10.1007/978-3-319-59575-7_2
  7. Anisuzzaman DM, et al. (2020). arXiv:2011.01177
  8. Pan C, et al. (2022). PMID 36563747
  9. Borji A, et al. (2024). PMC12045028
  10. Scientific Reports (2025). DOI 10.1038/s41598-025-26051-8
  11. Cancers (2023). MDPI cancers15082290
  12. KEGG DISEASE H00036(Osteosarcoma). https://www.kegg.jp/entry/H00036+-ja
  13. ICD-11 MMS 分类(BlockL3-2B5). byomei.org ICD11 Browser
  14. PMC7310058(骨肉瘤能量代谢与流行病学). https://pmc.ncbi.nlm.nih.gov/articles/PMC7310058/
  15. Emergent Mind:UT-Osteosarcoma Histopathology Dataset 综述页. https://www.emergentmind.com/topics/ut-osteosarcoma
  16. HuggingFace 镜像页. https://huggingface.co/datasets/CAIR-M3LLM/OsteosarcomaTumorAssessment
  17. RadiomicsOS 开源原型. https://github.cc/YaxiiC/RadiomicsOS
  18. Awesome-Medical-Dataset Osteosarcoma 条目. github.com/openmedlab

§10.4 人工校验记录

内容模块 审核者 审核方式 审核状态
§2 医学背景(ICD-11/SNOMED 映射、流行病学) 千方病案医学编辑部 与 ICD-11 浏览器、KEGG、TCIA 原文交叉比对 ✅ 已通过
§3 数据集规格(规模、划分、溯源链) 千方病案医学编辑部 与 TCIA collection 页面逐数字比对 ✅ 已通过
§4 DAIMS 数据字典 千方病案医学编辑部 与 ML_Features_1144.csv 结构核对 ✅ 已通过
§5 数据划分策略 千方病案医学编辑部 交叉审核 ✅ 已通过
§6 代码示例与坑点 千方病案医学编辑部 逻辑审查 + 与论文方法节比对 ✅ 已通过
§7 质量评估与 DAIMS 评分 千方病案医学编辑部 交叉审核 ✅ 已通过
§8 排行榜与引用数表述 千方病案医学编辑部 与原文及 TCIA 统计快照交叉比对 ✅ 已验证
§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.7 DAIMS 评估表与评分、§8.7 生态快照、§C JSON-LD。

§10.6 最后人工审核

最后人工审核日期:2026-09-05(与 §0 审核日期一致)

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

返回 AI-Ready 数据集