信息速览

DDI(Diverse Dermatology Images,多样皮肤图像)— 跨肤色公平性基准 AI-Ready Wikipedia
命名辨析:本条目 DDI 指 Diverse Dermatology Images(多样皮肤图像)——斯坦福大学发布的皮肤科临床照片数据集,与药理学文献中常见的 Drug-Drug Interaction(药物-药物相互作用,同样缩写为 DDI)完全无关。全文中出现的 DDI 均指前者。
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | DDI(多样皮肤图像) |
| 英文全称 | Diverse Dermatology Images |
| 别名/简称 | DDI;DDI-Dataset;Stanford DDI(注意:与药物相互作用 Drug-Drug Interaction 无关) |
| 疾病分类(ICD-11) | 2C30 皮肤黑色素瘤;2C31 皮肤鳞状细胞癌;2C32 基底细胞癌;EA88 特应性皮炎;EA90 银屑病(78 种诊断横跨恶性与炎症性皮肤病大类) |
| SNOMED CT | 372244006 Malignant melanoma;402864004 Squamous cell carcinoma of skin;127569003 Basal cell carcinoma;24079001 Atopic dermatitis;9014002 Psoriasis |
| 数据模态 | 皮肤科临床照片(可见光彩色照片,非皮肤镜;含 Fitzpatrick 肤色标注) |
| AI 任务类型 | 良恶性二分类、多类皮肤病分类、跨肤色公平性评测、少样本微调 |
| 样本总数 | 656 张图像(570 名患者、78 种诊断) |
| 数据大小 | 官方未标注压缩包体积;656 张 PNG 临床照片 + 1 个 CSV 元数据文件 |
| 数据格式 | PNG 图像 + CSV 元数据(ddi_metadata.csv) |
| 许可证 | Stanford School of Medicine DDI Research Use Agreement(个人非商业研究专用) |
| 访问级别 | 注册后开放(注册斯坦福 AIMI 门户并同意研究使用协议后免费下载) |
| DUO 标签 | NPUNCU(非商业、非营利研究使用;以官方协议为准) |
| 语言 | 英语(文档与元数据) |
| 首发日期 | 2022-08-12(随 Science Advances 论文同步公开) |
| 最后更新 | 2024-10(AIMI 门户重新登记并分配数据集 DOI 10.71718/kqee-3z39) |
| 发布机构 | 斯坦福大学医学院(Stanford Center for Artificial Intelligence in Medicine & Imaging,AIMI) |
| 官方主页 | https://ddi-dataset.github.io/ |
| 下载地址 | https://aimi.stanford.edu/datasets/ddi-diverse-dermatology-images |
| DOI | 10.71718/kqee-3z39(数据集);10.1126/sciadv.abq6147(论文) |
| 引用次数 | 324+(Dimensions 引文统计,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方提供 PyTorch Dataset 类、评测脚本与预训练模型,评测可复现;扣分项:无官方 train/test 划分、解压后需手动重组目录、CSV 列名含特殊字符需清洗 |
| 页面状态 | published |
§0 E-E-A-T 审核与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11/SNOMED CT 映射、皮肤恶性肿瘤与炎症性皮肤病临床任务定义、金标准描述)、§7 质量评估与偏倚分析。
数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。DDI 要求用户注册斯坦福 AIMI 门户、同意 Stanford School of Medicine Research Use Agreement(仅限个人非商业研究、禁止再分发与共享下载链接)。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? DDI(Diverse Dermatology Images,多样皮肤图像)是斯坦福大学医学院在 2022 年发布的一份皮肤病临床照片数据集:656 张照片对应 570 名真实患者和 78 种诊断,全部经过活检病理确认。它最独特的地方在于刻意让浅肤色(Fitzpatrick I-II)与深肤色(Fitzpatrick V-VI)照片数量近乎均衡,且肤色标签来自医生当面评估——这在公开皮肤病数据集中是第一个。
为什么重要? 皮肤科 AI 模型长期在以浅肤色、皮肤镜图像为主的数据上训练和测试。DDI 团队用这套数据证明:三个 SOTA 皮肤 AI 模型迁移到 DDI 上 ROC-AUC 相对下降 27-36%,在深肤色上灵敏度最低只有 0.06-0.23;连皮肤科医师的视觉判断在深肤色上也会变差。随后在 DDI 上微调即可基本消除浅-深肤色性能差距。它因此成为皮肤 AI 公平性评测的事实基准。
我能用它做什么? 如果你在做皮肤良恶性分类、皮肤病多分类或医疗 AI 公平性审计,可以把 DDI 当作外部测试集来检验模型在深肤色、罕见病和真实临床照片(非皮肤镜)上的表现;也可以用它做少样本微调研究,量化"多样化数据"对公平性的贡献。注意它不能用于训练生产级诊断系统,也不允许商业使用与再分发。
§1.1 技术摘要
DDI 由斯坦福大学 Daneshjou、Chiou、Zou、Novoa 等人构建,于 2022 年 8 月发表于 Science Advances(Daneshjou et al., 2022, Sci Adv, DOI 10.1126/sciadv.abq6147)。团队回溯性复查 2010-2020 年斯坦福诊所的皮肤病理报告,为每份报告匹配对应临床照片,经质量过滤后保留 656 张图像、570 名患者;每个诊断标签由执业皮肤科医师与皮肤病理医师依据活检报告共同确认,每个肤色标签由两名执业皮肤科医师基于现场评估与人口学照片交叉核对。数据集在整体上覆盖 Fitzpatrick I-VI 全部六型,并按诊断类别、年龄(差 ≤10 岁)、性别、拍摄时间(差 ≤3 年)对 FST I-II 与 FST V-VI 两组进行匹配,使跨肤色对照实验成为可能。官方同时发布了 PyTorch Dataset 类、五个模型权重(Zenodo)与评测脚本。配套发现:SOTA 模型(ModelDerm、DeepDerm、HAM10000)在 DDI 上 ROC-AUC 相对下降 27-36%,深肤色灵敏度低至 0.06-0.23;在 DDI 上微调后浅深肤色差距消除(论文摘要)。
§1.2 战略价值
公平性评测维度:在 DDI 出现之前,公开可得的活检确认皮肤恶性病变图像几乎全部来自浅肤色人群,深肤色皮肤癌的 AI 评测在方法学上不可行。DDI 用 207 张 FST V-VI 照片(其中 48 张恶性)首次填补了这一空缺,并给出了"模型差距 + 医师差距 + 微调修复"的完整证据链。任何宣称"跨人群可靠"的皮肤分诊算法,都应把 DDI 作为标准外部考卷——它已经被后续公平性研究(如 DDI-CoCo 颜色对比度分析、DermaBench 视觉问答基准)选为底层载体。
数据质量维度:皮肤 AI 领域公开数据集的通病是标签噪声大——DDI 官方引用的审计显示,在线图集 Fitzpatrick17k 抽检 504 张中仅 69% 图像可诊断出所标注疾病。DDI 反其道而行:以病理报告为锚、双人医师复核、刻意收录"非教科书式"真实临床照片,使它更适合作为评测而非预训练语料。这一"小而净"的定位(656 张 vs HAM10000 的 10,015 张)决定了它在生态中的独特卡位:不是用来刷榜的大数据集,而是用来找缺陷的测谎仪。
方法学资产维度:DDI 发布的不只是图像,还有一套完整的方法学资产——官方 PyTorch Dataset 类、五个可下载的基线模型权重(Zenodo)、评测 CLI、以及"全量 vs 常见诊断子集"双口径报告规范。这使它成为医学影像领域少见的"开箱即可公平性审计"的基准:研究者可以在一个下午内完成三个基线模型的跨肤色复测,并把结果与自己模型的数字对齐到同一协议之下。对于需要快速建立公平性评测能力的中小团队,这套资产的杠杆价值高于数据集本身的规模。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态 | 标注 | 与 DDI 的差异化 |
|---|---|---|---|---|
| DDI(本条目) | 656 张 / 570 患者 / 78 种诊断 | 临床照片 | 活检病理确认 + 双医师肤色复核 | Fitzpatrick I-VI 全覆盖、深肤色活检确认恶性病灶、匹配设计 |
| HAM10000 | 10,015 张皮肤镜图像 | 皮肤镜 | 部分组织病理确认 | 规模大但肤色多样性未标注、以浅肤色人群为主 |
| ISIC 2019/2024 | 25,331 张(2019) | 皮肤镜为主 | 病理/专家共识混合 | 训练标准语料;缺炎症性疾病与深肤色样本 |
| Fitzpatrick17k | 约 16,000 张 | 临床照片 | 在线图集标签 | 标签噪声大(抽检仅 69% 可诊断),无病理确认 |
| MED-NODE | 170 张 | 临床照片 | 专家标注 | 小规模、仅黑色素瘤 vs 痣二分类、荷兰单中心 |
| PH2 | 200 张 | 皮肤镜 | 专家标注 | 仅黑色素细胞病灶三分类 |
| Derm7pt | 2,022 张 | 皮肤镜 + 临床 | 专家标注(七点检查表) | 含结构化皮肤镜属性,但 16 类诊断、无肤色均衡设计 |
| PAD-UFES-20 | 2,298 张 | 临床照片 | 病理/专家混合(CC BY 4.0) | 含流行病学元数据,仅 6 类诊断、巴西单中心 |
| DDI-2(后续版) | 665 张 / 550 患者 / 169 种诊断 | 临床照片 | 病理确认 | 面向自我认同亚裔患者(2012-2022),与 DDI 互补 |
§1.4 版本时间轴
| 时间 | 版本/事件 | 说明 |
|---|---|---|
| 2022-08-12 | DDI v1 随论文发布 | Science Advances 8(32):eabq6147;656 张图像在 Stanford AIMI 门户公开 |
| 2022-06 | 官方模型权重上线 Zenodo | DeepDerm、HAM10000、GroupDRO、CORAL、CDANN 五个模型(Zenodo record 6784279) |
| 2023-2024 | 社区质量审计与衍生研究 | SelfClean 团队专家复审(arXiv:2309.06961);DDI-CoCo 颜色对比度衍生集 |
| 2024-10 | AIMI 门户重新登记 | 分配数据集 DOI 10.71718/kqee-3z39(AIMI 页面) |
| 2024-2025 | DDI-2 发布 | 665 张照片、550 名自我认同亚裔患者、169 种诊断(J Invest Dermatol, DOI 10.1016/j.jid.2024.09.018) |
| 2026 | DermaBench 发布 | 在 DDI 图像上叠加分层视觉问答标注(arXiv:2601.14084) |
时间轴的两点解读:其一,DDI 自 2022 年发布后图像本体未再更新(无 v2 内容变更),历次事件都是登记、审计与衍生,因此引用时无需区分数据内容版本,只需注明获取时间;其二,官方把后续投入放在了人群扩展(DDI-2)与标注扩展(DermaBench 的 VQA 层)上,而不是扩大 DDI 本身的规模——这再次印证其"固定评测基准"的定位。
§1.5 典型应用场景
- 皮肤 AI 分诊模型的外部公平性审计:在自有测试集之外,用 DDI 全量 656 张按 FST 分组报告 ROC-AUC 与灵敏度差距,检验模型是否对深肤色系统性失效。
- 少样本微调与公平性干预研究:复现论文"微调消除肤色差距"的结论,对比直接微调与 GroupDRO/CORAL/CDANN 等公平性方法的收益。
- 跨模态泛化测试:把皮肤镜训练的模型(HAM10000/ISIC 系)放到真实临床照片上,量化模态迁移损失(论文实测 HAM10000 模型在 DDI 深肤色灵敏度仅 0.06)。
- 肤色标注方法学教学与研究:研究 Fitzpatrick 分型在数据集构建中的使用、局限(它对肤色的粗粒度近似)与替代方案(如 Monk skin tone)。
- 多类皮肤病长尾分类:以 78 种诊断做长尾识别基准,特别研究稀有诊断在深肤色子组中的表现坍塌。
- 数据集构建方法学教学:DDI 是"小而精评测集"的教科书案例——病理锚定采样、双人肤色标注、匹配设计、双口径报告,每个环节都可单独抽出来做方法学讨论。
§2 医学背景
§2.1 ICD-11 疾病分类锚定
DDI 的 78 种诊断覆盖皮肤肿瘤、炎症性皮肤病等大类。下表锚定论文中明确代表的主流类别(数据集本身发布的是文本诊断标签,未附带 ICD-11 编码,映射由本页编辑部依据 ICD-11 MMS 补全):
| 数据集类别 | ICD-11 编码 | ICD-11 名称 | 备注 |
|---|---|---|---|
| 恶性黑色素瘤(恶性子集代表类) | 2C30 | 皮肤黑色素瘤(Melanoma of skin) | 恶性组 171 张中的代表实体之一 |
| 皮肤鳞状细胞癌 | 2C31 | 皮肤鳞状细胞癌(Squamous cell carcinoma of skin) | 非黑色素瘤皮肤癌代表 |
| 基底细胞癌 | 2C32 | 基底细胞癌(Basal cell carcinoma of skin) | 非黑色素瘤皮肤癌代表 |
| 特应性皮炎(良性/炎症性代表类) | EA88 | 特应性皮炎(Atopic dermatitis) | 官网点名的炎症性皮肤病 |
| 银屑病(良性/炎症性代表类) | EA90 | 银屑病(Psoriasis) | 官网点名的炎症性皮肤病 |
| 黑色素细胞痣(良性肿瘤代表类) | 2F20 | 黑色素细胞痣(Melanocytic naevi) | 良性组代表实体,全站编码口径与 PH2/MED-NODE 一致 |
| 其余约 70 种诊断 | 按具体疾病映射 | 覆盖 2C 皮肤肿瘤、EA 炎症性皮肤病等章节 | 清单以论文补充材料为准 |
§2.1b SNOMED CT 映射
| 数据集标签 | ICD-11 | SNOMED CT | SNOMED CT 术语 |
|---|---|---|---|
| 恶性黑色素瘤(代表类) | 2C30 | 372244006 | Malignant melanoma (disorder) |
| 皮肤鳞状细胞癌 | 2C31 | 402864004 | Squamous cell carcinoma of skin (disorder) |
| 基底细胞癌 | 2C32 | 127569003 | Basal cell carcinoma (disorder) |
| 特应性皮炎 | EA88 | 24079001 | Atopic dermatitis (disorder) |
| 银屑病 | EA90 | 9014002 | Psoriasis (disorder) |
| 黑色素细胞痣 | 2F20 | 400096004 | Melanocytic nevus (disorder) |
补充说明:DDI 的 malignancy(malig=1) 列是二值汇总标签(0=良性,1=恶性),不区分黑色素瘤与非黑色素瘤皮肤癌;构建合规文档或注册材料时,需要回到文本诊断标签逐类映射后再对照上表。
§2.2 疾病简介与流行病学
DDI 的临床场景是皮肤病分诊(triage):在皮肤科医师供给严重不足的背景下,AI 辅助判断皮损的良恶性并决定转诊优先级。论文开篇给出宏观背景——全球约 30 亿人无法获得充分的皮肤病医疗服务,美国皮肤科医师分布不均导致就诊等待时间长(论文)。就恶性子集而言,皮肤黑色素瘤只占皮肤癌的约 1% 却贡献了皮肤癌死亡的大部分,早期与晚期的预后差异极大,这正是"分诊灵敏度和特异度"这一技术指标背后的生命权重;非黑色素瘤皮肤癌(基底细胞癌、鳞状细胞癌)则是人类最常见的恶性肿瘤类别,发生率随紫外线暴露累积而上升。
在炎症性/良性谱系上,特应性皮炎影响全球约 10% 的成人与高达 20% 的儿童,银屑病全球患病率约 2-3%,二者是皮肤科门诊量最大的慢病类别之一,也是肤色差异表现最直观的病种——红斑在深肤色上可呈现紫灰色或色素加深而非红色,这正是 DDI 强调"深肤色照片代表性"的医学理由。传统教科书图像以浅肤色为默认底色,导致深肤色患者的皮肤疾病识别门槛被系统性抬高,临床医师与 AI 模型双双受累。
这一背景解释了 DDI 的三项设计选择:以恶性二分类为主任务(分诊场景对漏诊最敏感)、以炎症性常见病填充良性谱系(覆盖门诊真实分布)、以肤色匹配设计替代自然流行率(否则深肤色样本会被历史转诊模式进一步压低)。三者共同把"公平性"从一个抽象关切转译为可测量的实验变量。
§2.3 临床任务定义
| AI 任务 | 临床对应 | 在 DDI 中的操作化 | 任务边界 |
|---|---|---|---|
| 良恶性二分类 | 分诊:该病灶是否需要优先转诊/活检 | 对 656 张照片输出恶性概率;malignancy(malig=1) 为金标准 |
不替代组织病理学诊断;恶性先验被人为抬高(26.1%) |
| 跨肤色公平性评测 | 检验算法是否对不同肤色人群同等可靠 | 按 skin_tone(12/34/56)分组报告 ROC-AUC、灵敏度、特异度 |
深肤色恶性常见病子集仅 16 张,子组指标需报告置信区间 |
| 多类皮肤病分类 | 辅助诊断:判断具体疾病类别 | 以 78 种诊断做多分类(文本诊断标签) | 每类样本量极小,仅适合长尾分析而非训练 |
| 微调增益评估 | 量化多样化数据的价值 | 在 DDI 子集微调前后对比浅/深肤色 AUC 差距 | 微调用例需自建划分并做患者级隔离 |
| 分诊阈值压力测试 | 模拟真实转诊门槛下的表现 | 固定阈值下分组报告漏诊率 | 依赖自选阈值,须注明来源 |
§2.4 患者人群
| 维度 | 描述 |
|---|---|
| 来源 | 斯坦福诊所(Stanford Clinics)皮肤科就诊并行皮损活检的患者 |
| 采集时间 | 2010-2020(回溯性方便抽样) |
| 规模 | 570 名独特患者,656 张图像(平均约 1.15 张/患者) |
| 肤色构成 | Fitzpatrick I-II 208 张、III-IV 241 张、V-VI 207 张(按图像计) |
| 年龄/性别 | 未逐例公开;匹配设计要求 FST I-II 与 V-VI 组内年龄差 ≤10 岁、性别一致 |
| 就医类型 | 皮肤科门诊活检病例(含恶性与良性病变) |
| 地域 | 美国加利福尼亚州,单中心 |
人群构成上最重要的结构性事实是:三组样本量被设计得近乎均衡(208/241/207),这与任何自然临床分布都不同——真实皮肤科门诊中浅肤色患者的照片数量通常高出一个数量级。因此,DDI 上的"整体指标"代表的是均衡权重下的算法能力,不能与自然分布加权的指标混用;若要模拟真实部署先验,应按目标人群构成重新加权后计算。
§2.5 临床价值
对临床体系而言,DDI 的价值链条是"分诊 → 转诊公平 → 预后改善":皮肤 AI 分诊若在深肤色人群上灵敏度不足,意味着深肤色患者的恶性病变会被系统性排到更低优先级,把历史数据缺口转译为健康差距。DDI 用数据证明了这条链条的两个断点——模型断点(深肤色灵敏度 0.06-0.23)与标注断点(医师视觉在深肤色上同样变差)——并给出了已被验证的修复路径(多样化数据微调)。对数据集建设者而言,它示范了一套可复用的方法学模板:以病理报告为入口采样、肤色标签双人复核、跨肤色组匹配设计、同时发布评测代码与模型权重,这套模板已被 DDI-2 原样继承。
对 AI 从业者而言,DDI 是少数能把"公平性"从口号变成可计算指标(跨 FST 组 AUC gap、分组灵敏度)的公开基准,也是检验"皮肤镜模型能否用于普通照片"这一真实部署问题的试金石。
§2.6 金标准与参考标准
| 划分 | 标注方式 | 标注者 | 性质 |
|---|---|---|---|
| 恶性/良性二分类标签 | 活检病理报告 + 图像联合审核 | 执业皮肤科医师 + 皮肤病理医师 | 参考标准(病理金标准) |
| 78 种文本诊断标签 | 活检病理报告对应诊断 + 图像审核 | 执业皮肤科医师 + 皮肤病理医师 | 参考标准 |
| Fitzpatrick 肤色类型(1-6) | 现场评估 + 人口学照片交叉核对 | 两名执业皮肤科医师复核 | 专家标注(非金标准量具,见 §7.5) |
| 照片质量评分 | 质量过滤环节打分 | 论文方法学团队 | 内部质控(FST I-II vs V-VI 无显著差异,p=0.33) |
为什么病理确认是关键卖点:DDI 论文明确指出,医师视觉共识标注并非金标准——论文中的读者研究显示,皮肤科医师集成在深肤色图像上的视觉判断与病理真值存在显著差距(FST V-VI 上 ROC-AUC 0.62,低于浅肤色的 0.75)。这意味着以"医师视觉标签"训练的模型会把这种差距固化下来,而 DDI 以病理为锚切断了这一噪声来源。
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 大小/规模 | 理由 |
|---|---|---|---|
| 公平性评测/外部测试 | DDI v1(656 张,2022 首发) | 656 张图像 + ddi_metadata.csv | 三肤色组均衡、含恶性标签,官方评测脚本直接可用 |
| 亚裔人群泛化补充 | DDI-2(2024) | 665 张 / 550 患者 / 169 种诊断 | 自我认同亚裔、FST 细分到亚组,与 DDI 互补 |
| 复现论文基线对比 | DDI v1 + Zenodo 模型权重 | 5 个模型(DeepDerm 等) | 官方 eval_ddi.py 一键评估,无需自行训练 |
| 训练生产级诊断模型 | 不推荐任何版本 | — | 单中心 656 张不足以支撑训练;且协议禁止商业使用 |
§3.1 模态详情
DDI 收录的是皮肤科标准临床照片:患者在门诊就诊时由临床摄影拍摄的可见光彩色照片,覆盖皮损局部与周边皮肤,不含皮肤镜的浸润液体与放大光学。这与 HAM10000/ISIC 系皮肤镜数据形成本质区别——临床照片更接近手机分诊 App 与远程医疗的真实输入分布。官方明确说明两点:其一,图像"不是教科书式的示例",刻意保留了真实临床照片的光照、构图与质量异质性;其二,在发布前的去标识化流程中,部分图像被进一步裁剪以保护患者隐私,但主要病灶被保留(官网)。因此不能假设病灶总是居中或占据主要画幅。
临床照片与皮肤镜两种模态的关键差异,决定了 DDI 在生态中的位置:
| 属性 | DDI(临床照片) | HAM10000/ISIC(皮肤镜) |
|---|---|---|
| 光学 | 可见光、无浸润液体 | 皮内显微镜、浸润液、偏振光 |
| 视野 | 皮损局部 + 周边皮肤 | 紧贴皮损、边界规整 |
| 真实输入分布 | 贴近手机分诊 App / 远程医疗 | 贴近专科诊室 |
| 肤色信号 | 病灶-背景对比承载肤色信息 | 肤色信号被放大光学弱化 |
| 典型图像质量 | 异质(十年门诊摄影) | 相对标准化 |
§3.2 按子集样本数
| 子集 | 良性 | 恶性 | 合计 | 其中常见诊断(common) |
|---|---|---|---|---|
| FST I-II(浅肤色) | 159 | 49 | 208 | 190 |
| FST III-IV(中等肤色) | 167 | 74 | 241 | 218 |
| FST V-VI(深肤色) | 159 | 48 | 207 | 156 |
| 全量 | 485 | 171 | 656 | 564 |
来源:AIMI 数据集页与论文补充表 2。注意深肤色组中恶性且属常见诊断的图像仅 16 张——这是跨肤色子组评估时置信区间最宽的角落。
三组图像数与恶性率的完整交叉表(含常见诊断口径)在论文补充表 2 中逐格披露,本表为主列摘要;构建自己的报告时建议直接对齐该表的行列定义,避免口径漂移。
§3.3 数据格式
| 内容 | 格式 | 说明 |
|---|---|---|
| 图像 | PNG(编号命名,如 000001.png) | 656 张,文件名为 DDI_file 字段的关联键 |
| 元数据 | ddi_metadata.csv | 一行一图,含 DDI_file、malignancy(malig=1)、skin_tone 三列 |
| 分发 | ZIP 压缩包(ddidiversedermatologyimages.zip) | 解压后 PNG 与 CSV 同级,需按官方代码约定重组目录 |
| 代码 | Python(PyTorch) | DDI-Code 仓库:Dataset 类 + 评测脚本 |
| 模型 | PyTorch 权重 | Zenodo record 6784279:五个基线模型 |
| 论文补充材料 | Science Advances 在线附录 | 78 类诊断清单、分组统计表(补充表 1-3) |
§3.4 存储大小
官方页面与下载门户均未公开标注压缩包精确体积。按 656 张中等分辨率 PNG 临床照片估算,整体在数百 MB 量级;请以下载页实际显示为准。相对数据集"体积",更值得关注的反而是它的"密度"——每张图都附带经过双人医师复核的肤色标签与病理确认的恶性行为标签。
§3.5 标注方式
| 标签 | 方式 | 流程 |
|---|---|---|
| 恶性/良性 | 人工(病理金标准锚定) | 复查活检病理报告 → 报告与图像联合审核 → 皮肤科医师 + 皮肤病理医师双确认 |
| 78 种文本诊断 | 人工(病理金标准锚定) | 同上,粒度到具体疾病 |
| Fitzpatrick 肤色(1-6) | 人工(临床评估) | 就诊现场评估 → 与人口学照片交叉核对 → 两名执业皮肤科医师复核图像 |
| 照片质量 | 人工评分过滤 | 质量不合格图像在入库前剔除 |
标注流程中最值得借鉴的是肤色标签的三重交叉设计:现场评估(动态光照下的真实肤色)、人口学照片(跨时间一致性)、图像复核(与模型实际见到的输入对齐)。这三层各能引入不同方向的误差,交叉后显著降低了单源偏差——后续构建肤色标注数据集的团队几乎都引用了这一设计。
§3.6 标注者资质与一致性
诊断标签由执业皮肤科医师(board-certified dermatologist)与皮肤病理医师(dermatopathologist)共同审核确认;肤色标签由两名执业皮肤科医师基于现场评估、人口学照片交叉核对与图像复核确定。论文未公布逐条标注者间一致性系数(如 kappa),但给出了两条间接质量证据:FST I-II 与 V-VI 照片质量评分无显著差异(Mann-Whitney U 检验,p=0.33),保证跨肤色对照不受图像质量混淆;独立审计(arXiv:2309.06961)的专家复审仅在 DDI 中发现 6 个标签错误(0.9%),显著优于同类公开数据集。
§3.7 采集周期
2010-2020 年,覆盖十年窗口。长周期意味着图像的摄影设备、构图协议与临床摄影惯例可能随时间漂移(详见 §7.6),这是把 DDI 用作跨时间泛化参考时的天然特性而非缺陷。同时,十年窗口保证了收集到足够数量经活检确认的深肤色恶性病例——这正是短周期、自然分布采样几乎不可能凑齐的稀缺资源,是"长周期回溯采样"这一设计换来的核心收益。
§3.8 地域覆盖
美国加利福尼亚州斯坦福诊所,单中心。患者人群以美国湾区就诊人群为主;数据集通过匹配设计在肤色维度上做了强化,但地域与医疗系统维度仍是单一来源(详见 §7.1)。
§3.9 设备规格
官方未公开统一的摄影设备、光源与分辨率规格——这正是其"真实临床照片"定位的体现:图像来自十年间门诊常规临床摄影,设备与协议异质性被刻意保留。使用建议:预处理时不要假设固定分辨率或白平衡,归一化策略(见 §6.3)应按 ImageNet 统计量而非本数据集经验分布。
这一"无设备规格"特性对两类使用者影响最大:其一是习惯 ISIC 式标准化图像的团队,直接套用为皮肤镜设计的预处理(如黑框裁剪、毛发修复)会失效甚至引入伪影;其二是做多模态融合(照片 + 元数据)的团队,缺少设备/位置元数据意味着无法做"设备分层"分析,只能把异质性作为不可观测混杂处理并在论文局限中声明。
§3.10 深度溯源链
| 环节 | 说明 |
|---|---|
| 数据源系统 | STARR(STAnford medicine Research data Repository)——斯坦福医学临床数据仓库,汇总 Stanford Health Care、Stanford Children’s Hospital、University Healthcare Alliance 与 Packard Children’s Health Alliance 诊所数据 |
| 筛选依据 | 2010-2020 年皮肤病理报告(活检/切除标本) |
| 质量过滤 | 剔除低质量图像后保留 656 张 |
| 标签审核 | 皮肤科医师 + 皮肤病理医师(诊断);两名皮肤科医师(肤色) |
| 去标识化 | 发布前裁剪部分图像以保护隐私;病灶保留 |
| 发布渠道 | Stanford AIMI 门户(注册 + 研究使用协议) |
| 治理文件 | Research Use Agreement(官网全文) |
| 可追溯性边界 | 患者级信息、拍摄日期与设备信息止步于发布环节,不在公开数据中延续——溯源链在使用侧即告中断 |
STARR 是斯坦福医学的研究基础设施底座,同源的 CheXpert Plus、EchoNet 等数据集也经由它治理发布——这意味着 DDI 的合规流程与 AIMI 门户其他数据集一致,熟悉 AIMI 生态的团队可直接迁移申请经验。
§4 数据结构
§4.0 目录树
官方 ZIP 解压后为扁平结构;官方 DDI_Dataset 代码要求把 PNG 移入 images/ 子目录(见 §6.5 坑点 1)。标准工作目录如下:
DDI/ ← data_root(自建)
├── images/ ← 需自行创建并移入全部 PNG
│ ├── 000001.png
│ ├── 000002.png
│ └── ...(共 656 张)
└── ddi_metadata.csv ← 元数据:一行一图
ddi_metadata.csv 结构(官方代码确认的三个字段):
DDI_file,malignancy(malig=1),skin_tone
000001.png,0,56
000002.png,1,12
...
§4.1 DAIMS 字段字典
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| DDI_file | string | 图像文件名,主键 | 000001.png | 关联图像与标签 | 无(发布前核验) | 不适用 | 656 个唯一值 |
| malignancy(malig=1) | integer | 恶性行为标签,1=恶性、0=良性 | 1 | 二分类目标 | 病理确认,错误率约 0.9%(独立审计) | 无缺失 | |
| skin_tone | integer | Fitzpatrick 肤色组编码:12=I-II、34=III-IV、56=V-VI | 56 | 分组评测/公平性分析 | 双医师复核 | 无缺失 | |
| malignant(派生) | bool | 官方代码由 malignancy(malig=1)==1 派生的布尔列 |
True | 官方 Dataset 类内部使用 | 继承原列 | 不适用 | |
| 图像像素(PNG) | uint8×3 | 可见光临床照片,尺寸不一 | — | 分类/分割输入 | 摄影设备异质性;部分图被去标识化裁剪 | 不适用 | 未公开统一规格 |
| 文本诊断(78 类) | string | 具体疾病标签,以论文补充材料形式发布 | Melanoma | 多分类/长尾研究 | 病理确认 | 不适用 | 78 类 |
| (行粒度) | — | 一行 = 一张图像;一名患者可贡献多行 | — | 划分时必须按患者分组 | 患者级重复(656 图 vs 570 患者) | 不适用 | 570 名患者 |
| (标签口径) | — | 同一数据支持两种标签口径:二分类(CSV 列)与 78 类多分类(论文补充表) | — | 不同任务引用不同口径 | 两口径样本量不同(656 vs 564 常见病) | 不适用 | 2 类 / 78 类 |
§4.2 标签分布
| 肤色组 | 良性 | 恶性 | 恶性占比 | 常见诊断良/恶 |
|---|---|---|---|---|
| FST I-II | 159 | 49 | 23.6% | 148 / 42 |
| FST III-IV | 167 | 74 | 30.7% | 153 / 65 |
| FST V-VI | 159 | 48 | 23.2% | 140 / 16 |
| 全量 | 485 | 171 | 26.1% | 441 / 123 |
三个关键读数:其一,良性:恶性约为 2.8:1,训练时需要类别加权;其二,FST V-VI 恶性常见诊断仅 16 张,任何深肤色恶性子组指标都应以 bootstrap 置信区间呈现;其三,"常见诊断"子集(564 张)是论文为排除罕见病干扰而设的分析口径,评测报告应同时给出全量与常见病两个数字。
另一个常被忽视的读数是三组间的恶性占比并不相同(23.6% / 30.7% / 23.2%):FST III-IV 组恶性占比最高。若在分组对比中不做条件标准化(例如只在良性内比、只在恶性内比),组间差异可能混入先验差异。论文的匹配设计只约束了 FST I-II 与 FST V-VI 两组,对 III-IV 组没有匹配保证,因此任何把 III-IV 组纳入因果比较的分析都应额外声明这一局限。
§4.3 关键统计
- 图像 656 张;患者 570 名(平均 1.15 张/患者,86 张图像与同患者另一张共享身份)
- 诊断 78 种;"常见诊断"口径下图像 564 张
- 恶性 171 张(26.1%);深肤色恶性 48 张、其中常见诊断 16 张
- FST 三组图像数 208 / 241 / 207,最大组间差 16.1%,近乎均衡
- 照片质量跨肤色可比(p=0.33);数据集刻意收录非教科书式图像
- 每名患者最多贡献数张图像;患者级统计以 570 为分母、图像级统计以 656 为分母,写作时务必区分
- 肤色标签覆盖率 100%(656/656),远高于多数公开皮肤数据集(常见做法是不标注或仅标注子集)
§4.4 数据层级
患者(570 名)
└── 病灶/就诊(一次活检对应)
└── 临床照片(656 张,PNG)
└── 标签(恶性二值 + 78 类文本诊断 + FST 肤色组)
注意:数据集不提供患者 ID 列,患者级身份只能通过官方说明的"656 图 vs 570 患者"间接推断;这意味着做患者级划分时无法精确执行 group split——这是本数据集最重要的结构局限之一(对策见 §6.5 坑点 4)。
层级设计的实际含义有三点。第一,"一名患者 = 一行标签"的直觉不成立:标签粒度是图像而非患者,同一患者的两张照片可以一个良性一个恶性(不同病灶),统计时必须先明确分析单元。第二,图像编号(000001.png 起)按发布顺序连续排列,官方未承诺其与患者或时间的映射关系,任何基于编号的分组都只能作为近似并做敏感性分析。第三,与"患者→检查→序列→切片"的放射学层级不同,皮肤照片没有中间层级——病灶、就诊与图像三者在该数据集中一一对应,这简化了加载逻辑但也意味着无法从数据本身恢复纵向信息。
§4.5 缺失值与信息性缺失
| 现象 | 编码/表现 | 处理建议 |
|---|---|---|
| CSV 数值列 | 官方三个字段均无缺失值报告 | 无需插补;加载时仍应断言 notnull() 防版本变化 |
| 文本诊断列 | 未包含在公开 CSV 内(以论文补充材料为准) | 需要细粒度标签时按论文补充表 1 对文件名区间映射,并在论文中声明 |
| 患者 ID | 缺失(仅知 570/656 的聚合计数) | 用近似分组(见坑点 4)或做敏感性分析 |
| 病灶位置/设备元数据 | 缺失 | 不要在模型中构造这些特征的假设 |
| 微调实验官方划分 | 缺失(论文切分未随数据发布) | 自建划分并公开种子与清单,勿声称"官方划分" |
| 去标识化裁剪记录 | 缺失(未标注哪些图被裁剪) | 预处理按"病灶可能偏心"设计(§6.3) |
§5 数据划分与使用建议
§5.1 官方划分
DDI 没有官方 train/test 划分。 官方定位是评测基准:论文将 DDI 用作三个外部模型(ModelDerm、DeepDerm、HAM10000)的统一考卷,官方仓库提供的 eval_ddi.py 也只做全量评估。论文的微调实验使用自定义的训练/测试切分并配合 20 个随机种子的 bootstrap 置信区间,但切分代码未作为"官方划分"发布。
§5.2 社区惯例与推荐策略
- 纯评测用法(推荐):全量 656 张作为外部测试集,报告整体 + FST I-II + FST V-VI 三个口径的 ROC-AUC/灵敏度/特异度,并按论文惯例同时给出常见诊断子集(564 张)口径。
- 微调用法:分层(按 skin_tone × malignancy 交叉分层)随机划分,例如 80/20 或五折;必须按患者分组——虽无患者 ID 列,可用图像文件名连续编号区间近似(发布编号与采集顺序相关,患者多图通常相邻),并做"按患者分组划分 vs 随机划分"的敏感性对比。
- 多分类用法:78 类长尾分布下,建议只对每类样本数 ≥5 的诊断子集做分层抽样,其余类合并为 other 或仅做分析。
- 报告惯例:无论哪种用法,结果表都应包含"整体 / FST I-II / FST V-VI"三列 × "全量 / 常见诊断"两口径,并附样本量与 95% CI——这是与论文及社区结果可比的最小报告集。
§5.3 泄漏风险
| 风险 | 机制 | 缓解 |
|---|---|---|
| 患者泄漏 | 656 图对应 570 患者,随机划分会让同一患者的两张图分属训练与测试 | 划分前按患者聚合;无 ID 列时用文件名编号区间近似 + 敏感性分析 |
| 预训练泄漏 | HAM10000/ISIC 预训练权重可能见过相似病变(不同患者) | 报告时声明预训练来源;做从头训练对照 |
| 微调过拟合 | 656 张上反复微调迭代选模,等于把测试集信息泄入超参 | 固定划分 + 种子重复 + 独立保留集;参考论文的 20 种子 bootstrap |
| 口径泄漏 | 评测指标反复查看后选择性报告最优子组/口径 | 预注册报告口径;全量与常见病两口径必须同时呈现 |
§5.4 交叉验证与外部验证建议
- 交叉验证:分层五折(skin_tone × malignancy 交叉分层),每折报告跨 FST 组 AUC 差距而非只报均值。
- 外部验证:以 DDI-2(亚裔队列,169 种诊断)做人群维度的外部集;以 MED-NODE/PH2 做模态与地域维度对照;以 ISIC 派生测试集回测皮肤镜性能以量化模态迁移损失。
补充两条执行细节:其一,分层五折中若某折内 FST V-VI 恶性常见病样本不足 3 张,该折的子组指标应标记为不可估计而非填零——静默填充是小样本子组分析最常见的造假来源;其二,跨数据集外部验证(如 DDI → DDI-2)时,两边标签体系不同(78 类 vs 169 类),只能对齐"恶性/良性"这一共同粒度,多分类结论不可直接迁移。
§5.5 常见误用清单
| 误用 | 后果 | 正确做法 |
|---|---|---|
| 把 DDI 当大规模训练集从头训练 | 656 张过拟合,结论不可迁移 | 用作外部评测集或少量微调 |
| 随机划分不按患者隔离 | 患者泄漏,AUC 虚高 | §5.3 的近似分组 + 敏感性分析 |
| 只报整体 AUC 不报 FST 分组 | 完全错过 DDI 的核心价值 | 三口径报告 + bootstrap CI |
| 把 skin_tone 当连续变量 | 引入伪序(56 > 34 > 12) | 当作无序分组变量 |
| 用 DDI 结论推断"种族差异" | Fitzpatrick ≠ 种族,量具粗粒度 | 表述为 FST 组间差异并声明量具局限 |
| 直接沿用原模型判定阈值 | 深肤色漏诊率爆表(坑点 5) | 在 DDI 上重标定阈值 |
| 把 III-IV 组纳入因果比较 | 该组无匹配设计保证 | 仅对 I-II vs V-VI 做对照推断 |
§6 AI 就绪指南
§6.0 云端快速启动
DDI 需要在 AIMI 门户注册后手动下载,无法用脚本直链拉取。云端工作流推荐:
- 本地注册下载
ddidiversedermatologyimages.zip后上传 Google Drive; - Colab 挂载 Drive 解压到
/content/DDI; - 执行 §6.1 的目录重组脚本。
GPU 需求极低(见 §6.8):免费档 Colab T4 即可完成全量评测与微调实验。
环境准备(Python 3.10+,依赖极轻):
# 核心依赖:torch/torchvision + 表格处理三件套
pip install torch torchvision pandas numpy scikit-learn pillow
# 可选:契约测试与实验追踪
pip install pandera matplotlib
§6.1 快速上手
# ── 目录结构预期 ─────────────────────────────────────────────
# data_root/
# ├── images/ ← 656 张 PNG(必须自建此目录并移入图像)
# └── ddi_metadata.csv ← ZIP 内自带的元数据
# data_root 拼接关系:官方 DDI_Dataset(root=data_root) 期望
# 图像路径 = root/images/*.png,标签 = root/ddi_metadata.csv。
# 最小可用子集:全量 656 张即为最小可用集(无更小官方子集);
# 若只想快速跑通,可用 skin_tone=56 的 207 张做深肤色子集。
# ────────────────────────────────────────────────────────────
import os, shutil, zipfile
import pandas as pd
ZIP_PATH = "ddidiversedermatologyimages.zip"
DATA_ROOT = "DDI"
# 1) 解压(图像与 CSV 同级,无 images/ 子目录)
with zipfile.ZipFile(ZIP_PATH) as zf:
zf.extractall(DATA_ROOT)
# 2) 按官方代码约定重组目录:PNG 移入 images/
os.makedirs(os.path.join(DATA_ROOT, "images"), exist_ok=True)
for f in os.listdir(DATA_ROOT):
if f.lower().endswith(".png"):
shutil.move(os.path.join(DATA_ROOT, f),
os.path.join(DATA_ROOT, "images", f))
# 3) 读取元数据并做基本断言
meta = pd.read_csv(os.path.join(DATA_ROOT, "ddi_metadata.csv"))
assert len(meta) == 656, f"图像数异常: {len(meta)}"
assert set(meta["skin_tone"].unique()) == {12, 34, 56}
print(meta["malignancy(malig=1)"].value_counts()) # 485 良性 / 171 恶性
print(meta["skin_tone"].value_counts()) # 208 / 241 / 207
# 4) 图像-元数据完整性交叉校验(防漏图/漏行)
imgs = {f for f in os.listdir(os.path.join(DATA_ROOT, "images"))
if f.lower().endswith(".png")}
csvs = set(meta["DDI_file"])
missing = csvs - imgs # CSV 有、磁盘无
orphan = imgs - csvs # 磁盘有、CSV 无
assert not missing and not orphan, (list(missing)[:5], list(orphan)[:5])
print("图像-元数据一一对应:656 张")
§6.2 数据获取
| 项目 | 说明 |
|---|---|
| 下载入口 | Stanford AIMI 数据集页(Download here 按钮) |
| 申请流程 | 注册 Stanford 账号 → 同意 Diverse Dermatology Images Dataset Research Use Agreement → 获得下载权限 |
| 许可要点 | 免费、仅限个人非商业研究;禁止再分发、共享下载链接、修改与衍生;仅限研究用途,未经 FDA 审查 |
| 分发文件 | ddidiversedermatologyimages.zip(656 张 PNG + ddi_metadata.csv) |
| 配套资源 | DDI-Code(Dataset 类与评测脚本);Zenodo record 6784279(五个基线模型权重) |
| 引用要求 | 引用数据集 DOI 10.71718/kqee-3z39 与论文 DOI 10.1126/sciadv.abq6147;致谢中加入 AIMI 声明文本 |
# 下载无法脚本化(注册门控);以下代码校验下载完整性:
import hashlib, pathlib
def sha256(path, chunk=1 << 20):
h = hashlib.sha256()
with open(path, "rb") as f:
while blk := f.read(chunk):
h.update(blk)
return h.hexdigest()
zip_path = pathlib.Path("ddidiversedermatologyimages.zip")
assert zip_path.exists(), "请先在 AIMI 门户注册并手动下载 ZIP"
print("sha256:", sha256(zip_path)) # 记录哈希写入实验日志(MLOps 要求)
申请流程逐步说明:
- 访问 AIMI 数据集页,点击 Download here;
- 使用斯坦福账号体系注册(或以机构邮箱注册新账号);
- 阅读并接受 Diverse Dermatology Images Dataset Research Use Agreement——特别注意其中禁止再分发、禁止共享下载链接、禁止衍生作品三条;
- 下载 ZIP 后立即记录 SHA-256 与下载日期;
- 如需商业使用,AIMI 门户提供了单独的商业使用联系通道,默认协议不覆盖商业用途。
§6.3 预处理全流程
# 预处理:尺寸归一 + ImageNet 统计量标准化。
# ⚠️ 不要用 CenterCrop:部分图像经去标识化裁剪、构图异质,
# 中心裁剪可能切掉病灶;用 Resize 到正方形(官方做法)或短边填充。
import torch
from torchvision import transforms as T
IMAGENET_MEAN = [0.485, 0.456, 0.406]
IMAGENET_STD = [0.229, 0.224, 0.225]
# 评测口径(与官方 eval 脚本一致:Resize(299) + CenterCrop(299))
# —— 官方对 DDI 评测使用 CenterCrop 是已知可复现口径;
# 自训练管线若发现病灶被裁切,改用 Resize((299, 299)) 直拉伸。
eval_tf = T.Compose([
lambda x: x.convert("RGB"),
T.Resize(299), # 官方评测口径
T.CenterCrop(299),
T.ToTensor(),
T.Normalize(mean=IMAGENET_MEAN, std=IMAGENET_STD),
])
# 训练口径(病灶保留优先)
train_tf = T.Compose([
lambda x: x.convert("RGB"),
T.Resize((299, 299)), # 直拉伸,避免裁掉病灶
T.RandomHorizontalFlip(p=0.5),
T.ToTensor(),
T.Normalize(mean=IMAGENET_MEAN, std=IMAGENET_STD),
])
预处理要点清单:
- RGB 化:PNG 可能含 alpha 通道,先
convert("RGB")。 - 避免破坏性颜色增强:肤色与病灶颜色对比是 DDI 的公平性核心信号(见 §6.6)。
- 病灶不居中:不要假设病灶在中心,除非确认使用官方 CenterCrop 口径。
- 分辨率异质:十年间设备不一,Resize 即可,不要做 DPI/物理尺寸假设。
- 统一评测口径:与论文对比时锁定官方 transform;自建管线的对比实验内部一致即可,跨论文引用必须声明差异。
- 记录预处理参数:把 transform 定义序列化进实验配置文件——预处理是皮肤照片评测中最常见的隐性不可比来源。
§6.4 PyTorch DataLoader 完整实现
# 完整可运行:Dataset + transform + DataLoader。
# 与官方 DDI_Dataset 兼容(列名、skin_tone 编码一致),但不依赖 ImageFolder,
# 从而绕开"必须手动移图进 images/ 子目录"的要求。
import os
import pandas as pd
import torch
from PIL import Image
from torch.utils.data import Dataset, DataLoader, WeightedRandomSampler
class DDIDataset(Dataset):
"""DDI 临床照片数据集。
root/
├── *.png(或 images/*.png,二选一)
└── ddi_metadata.csv
返回: (image_tensor, malignancy, skin_tone, filename)
"""
def __init__(self, root, transform=None):
self.root = root
self.meta = pd.read_csv(os.path.join(root, "ddi_metadata.csv"))
# 标准化列名:malignancy(malig=1) 含括号,重命名避免后续引用出错
self.meta = self.meta.rename(columns={"malignancy(malig=1)": "malignant"})
# skin_tone 编码 12/34/56(FST I-II/III-IV/V-VI),保留原始编码不换算
img_dir = os.path.join(root, "images")
self.img_dir = img_dir if os.path.isdir(img_dir) else root
self.transform = transform or T.Compose([
lambda x: x.convert("RGB"), T.Resize((299, 299)),
T.ToTensor(), T.Normalize(mean=IMAGENET_MEAN, std=IMAGENET_STD)])
def __len__(self):
return len(self.meta)
def __getitem__(self, idx):
row = self.meta.iloc[idx]
img = Image.open(os.path.join(self.img_dir, row["DDI_file"]))
img = self.transform(img)
return (img, int(row["malignant"]), int(row["skin_tone"]),
row["DDI_file"])
def make_loader(dataset, batch_size=16, balanced=False, seed=0):
"""balanced=True 时按恶性/良性反频率加权采样。"""
if balanced:
labels = dataset.meta["malignant"].values
freq = pd.Series(labels).value_counts(normalize=True)
weights = [1.0 / freq[l] for l in labels]
sampler = WeightedRandomSampler(weights, len(dataset),
replacement=True,
generator=torch.Generator().manual_seed(seed))
return DataLoader(dataset, batch_size=batch_size, sampler=sampler,
num_workers=4, pin_memory=True)
return DataLoader(dataset, batch_size=batch_size, shuffle=True,
num_workers=4, pin_memory=True)
# 使用示例
ds = DDIDataset("DDI")
loader = make_loader(ds, batch_size=16, balanced=True)
imgs, y, tone, names = next(iter(loader))
print(imgs.shape, y.sum().item(), tone.unique()) # [16,3,299,299] ...
在此之上补一个最小可用的微调训练循环(二分类,BCE with logits,带按肤色分组的验证指标):
# 微调训练循环:InceptionV3 迁移头 + 20 种子可重复配置
import torch.nn as nn
from torchvision.models import inception_v3, Inception_V3_Weights
from sklearn.metrics import roc_auc_score
def build_model(num_classes=1, freeze_backbone=True):
model = inception_v3(weights=Inception_V3_Weights.IMAGENET1K_V1,
aux_logits=True)
if freeze_backbone: # 656 张小数据集:先冻结主干
for p in model.parameters():
p.requires_grad = False
in_feats = model.fc.in_features
model.fc = nn.Linear(in_feats, num_classes)
model.aux_logits = False # 关闭辅助头,简化 forward
return model
def finetune_epoch(model, loader, optimizer, device):
model.train()
total = 0.0
for imgs, y, _tone, _names in loader:
imgs, y = imgs.to(device), y.float().to(device)
logits = model(imgs).squeeze(1)
loss = nn.functional.binary_cross_entropy_with_logits(logits, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
total += loss.item() * imgs.size(0)
return total / len(loader.dataset)
@torch.no_grad()
def evaluate_by_tone(model, loader, device):
model.eval()
ys, ps, ts = [], [], []
for imgs, y, tone, _names in loader:
ps.append(torch.sigmoid(model(imgs.to(device)).squeeze(1)).cpu())
ys.append(y); ts.append(tone)
y = torch.cat(ys).numpy(); p = torch.cat(ps).numpy()
t = torch.cat(ts).numpy()
out = {"overall": roc_auc_score(y, p)}
for name, code in [("FST_I-II", 12), ("FST_V-VI", 56)]:
m = t == code
out[name] = roc_auc_score(y[m], p[m])
out["auc_gap"] = out["FST_I-II"] - out["FST_V-VI"]
return out
# device = "cuda"; model = build_model().to(device)
# optimizer = torch.optim.AdamW(filter(lambda p: p.requires_grad, model.parameters()),
# lr=3e-4, weight_decay=1e-4)
# for epoch in range(10):
# print(finetune_epoch(model, loader, optimizer, device))
# print(evaluate_by_tone(model, eval_loader, device))
§6.5 坑点清单(8 个)
⚠️ 坑点 1:ZIP 解压后目录结构与官方代码不匹配(分类:工程陷阱)
问题:官方 ZIP 解压后 PNG 与 CSV 平铺在同一目录,而官方
DDI_Dataset继承torchvision.datasets.ImageFolder,强制要求图像位于root/images/子目录——直接实例化会因找不到类别子目录而报错或得到空数据集。
症状:运行官方仓库eval_ddi.py时出现FileNotFoundError、ValueError: Found no valid class或元数据 join 后 0 行匹配。
解决:
- 简单方法:解压后手动创建
images/并移动全部 PNG(§6.1 第 2 步脚本)。- 进阶方法:用本页 §6.4 的
DDIDataset(不依赖 ImageFolder,直接按 CSV 索引文件路径),目录形态两种都兼容。- SOTA 方法:把"解压 + 重组 + SHA-256 校验"写成一条 Make 目标或 DVC pipeline 阶段,保证每个实验环境目录形态一致。
参考:DDI-Code ddi_dataset.py 官方注释(“this requires moving all .png files into a new subdirectory titled images”)
⚠️ 坑点 2:skin_tone 编码是 12/34/56,不是 Fitzpatrick 1-6(分类:标签理解)
问题:CSV 中
skin_tone列只有三个取值 {12, 34, 56},分别代表 FST I-II、III-IV、V-VI 三个合并组,而非六型逐型编码。把它当六型数值(甚至当连续变量回归)会系统性扭曲公平性分析。
症状:分组统计输出 6 个肤色组但其中 3 组恒为空;或把 56 当作"Fitzpatrick 56 型"产生荒谬图表;回归模型中把编码当大小关系(56 > 12)引入伪序。
解决:
- 简单方法:把
skin_tone视为无序分类变量,one-hot 或 groupby 时用 {12, 34, 56} 原值。- 进阶方法:映射为可读分组
{12: "FST I-II", 34: "FST III-IV", 56: "FST V-VI"}后再入图;跨肤色对照只比 12 vs 56(论文的匹配设计只保证这两组可比)。- SOTA 方法:若需更细的肤色粒度,引用 Monk skin tone 等补充量具的讨论并声明局限,而不要从 RGB 反推"FST 逐型"。
参考:ddi_dataset.py 注释 “Fitzpatrick- 12, 34, or 56”
⚠️ 坑点 3:列名 malignancy(malig=1) 含括号与等号(分类:工程陷阱)
问题:元数据恶性标签列名为
malignancy(malig=1),其中的括号/等号在 pandas 属性访问、SQL 建表、Parquet 列选择、YAML 配置等多种场景都会触发解析错误;且官方代码会再派生一个布尔列malignant,两列并存易混用。
症状:meta.malignancy抛 AttributeError;df["malignancy(malig=1)"]复制粘贴时引号丢失;导入 PostgreSQL/BigQuery 报非法列名;下游代码一半用malignant一半用原列,两者类型不同(int vs bool)导致比较恒 False。
解决:
- 简单方法:加载后立即
rename(columns={"malignancy(malig=1)": "malignant"})并断言取值 ∈ {0, 1}。- 进阶方法:在数据字典/DB schema 中显式登记物理列名
malignant(int8)与业务含义;ETL 层做白名单列名清洗。- SOTA 方法:用 Great Expectations/Pandera 声明列契约(类型、取值域、非空),CI 中跑契约测试防止上游列名变化静默穿透。
参考:DDI-Code 官方代码的派生逻辑(self.annotations['malignancy(malig=1)'].apply(lambda x: x==1))
⚠️ 坑点 4:无患者 ID 列 + 同患者多图,随机划分必然泄漏(分类:数据泄漏)
问题:656 张图对应 570 名患者——约 86 张图像与同患者另一张图像共存,而公开 CSV 不含患者标识。直接随机划分会让"同一位患者的第二张照片"同时进入训练与测试,跨肤色 AUC 被系统性高估。
症状:随机划分的微调 AUC 比按患者隔离划分高出数个百分点且方差异常小;同一患者两张高度相似的照片一折训练一折测试,交叉验证分数虚高。
解决:
- 简单方法:按文件名编号排序后切分(发布编号与采集顺序相关,同患者多图大概率相邻),并声明这是近似。
- 进阶方法:图像嵌入(如 ImageNet 预训练特征)上做近邻聚类,把相似度超过阈值的图像簇强制分到同侧,实现"伪患者分组划分";对比随机/近似分组两种划分的报告差值。
- SOTA 方法:向作者申请患者级信息(协议允许的范围内),或干脆把 DDI 只用作纯外部测试集(不做训练划分),从根上消除该问题。
参考:AIMI 数据集页 656 images / 570 unique patients
⚠️ 坑点 5:活检富集导致恶性先验 26.1%,沿用原模型阈值全线失效(分类:偏倚陷阱)
问题:DDI 从病理报告回溯采样,恶性占比 26.1%,远高于真实分诊场景(个位数百分比);且数据集刻意收录疑难/模糊病例。把在 HAM10000 等数据上标定的判定阈值直接搬过来,灵敏度会崩塌。
症状:论文实测 ModelDerm 在深肤色组灵敏度仅 0.12、HAM10000 模型仅 0.06 而特异度高达 0.99——模型几乎全部输出"良性";自建模型也常出现"离线 AUC 尚可、固定阈值下深肤色漏诊率爆表"。
解决:
- 简单方法:在 DDI 上重新标定阈值(如按目标灵敏度 ≥0.9 选阈值),不要沿用原模型 cutoffs。
- 进阶方法:报告 fixed-sensitivity 与 fixed-specificity 两种口径的操作点曲线;对先验差异使用患病率校正(prior correction / reweighting)后再比较。
- SOTA 方法:按场景先验(初级保健 vs 皮肤科转诊)做概率校准(Platt/isotonic)并分别报告;把"跨先验阈值稳定性"作为模型上线门槛指标。
参考:论文补充表 2 灵敏度/特异度数据;Lacuna 论文解读对活检富集偏倚的讨论
⚠️ 坑点 6:FST V-VI 恶性常见病仅 16 张,子组指标不做置信区间就是误导(分类:评估误用)
问题:跨肤色公平性结论常落在最稀疏的角落——深肤色 + 恶性 + 常见诊断只有 16 张图。单点 AUC/灵敏度在这种样本量下的置信区间宽到可以覆盖任何结论,直接比较数字会得出过强或完全反转的判断。
症状:两个模型在深肤色恶性子组上 AUC 差 0.15 就宣称"显著更公平";不同论文对同一模型报告的深肤色灵敏度从 0.06 到 0.4 不等(口径与随机性所致)却都写成确定值。
解决:
- 简单方法:所有子组指标必须伴随 bootstrap 95% 置信区间(论文用 1,000 次重采样;微调用 20 种子)。
- 进阶方法:报告差异指标(AUC gap = AUC_light − AUC_dark)及其 CI,做差距是否为零的检验;同时给出每子组样本量。
- SOTA 方法:用分层 bootstrap(对子组内重采样)或 Bayes 层级模型收缩极端子组估计;论文口径不可直接比较时,注明固定阈值来源与子集口径(全量 656 vs 常见病 564)。
参考:论文补充表 2(FST V-VI 恶性常见病 16 张及各组 CI)
⚠️ 坑点 7:数据集内含近似重复与无关样本,清洗与否影响基准对比(分类:预处理陷阱)
问题:独立专家审计在 DDI 中标出 8 个近似重复(1.2%)、6 个标签错误(0.9%)与 43 个无关/不可诊断样本(6.6%,多数投票口径)。不同团队各自清洗后对比"同一基准",数字不可比;不清洗则个别离群图像可能主导小样本子组指标。
症状:复现论文数字时对不上零点几个 AUC 点;删除几张图像后深肤色子组指标大幅波动;审计报告与原始标签不一致引发团队争论。
解决:
- 简单方法:全量评测(656 张)与清洗后评测双口径都报告,并公开清洗清单。
- 进阶方法:用近邻检索(嵌入余弦)自动扫描近似重复,人工复核后再决定去留;把审计发现的 43 张无关样本列表作为固定排除集共享。
- SOTA 方法:在排行榜/论文中同时提交"raw"与"clean"两套结果并绑定数据版本哈希,遵循 DAIMS 的版本记录要求。
参考:Towards Reliable Dermatology Evaluation Benchmarks(arXiv:2309.06961)表 1
⚠️ 坑点 8:去标识化裁剪 + 颜色对比度混淆,破坏肤色信号等于破坏实验(分类:预处理陷阱)
问题:两点叠加。其一,发布前部分图像被进一步裁剪保护隐私,病灶不一定居中、画幅比例不一;其二,病灶-背景颜色对比度本身影响模型表现(DDI-CoCo 用 WCAG 对比度分数证明高低对比组性能差异),而常用增强(色彩抖动、HSV 扰动、灰度化)会同时破坏肤色与对比度两组信息,令公平性实验结论失效。
症状:CenterCrop 后深肤色组 AUC 莫名下降(病灶被裁掉);加了 ColorJitter 后"肤色差距消失"——其实是肤色信息被抹掉了,假阳性结论进入报告。
解决:
- 简单方法:训练用
Resize((299, 299))直拉伸或短边填充替代 CenterCrop;增强只用几何类(翻转、小角度旋转)。- 进阶方法:如需裁剪聚焦病灶,先跑病灶检测/分割(或利用部分图像自带的圆形诊断标记)再放大,并记录裁剪率随肤色组的分布是否均衡。
- SOTA 方法:把对比度分数(如 DDI-CoCo 的 WCAG 式计算)作为协变量纳入分析,报告"控制对比度后"的肤色差距;公平性审计一律禁用颜色类增强并在协议中写明。
参考:官网去标识化说明;DDI-CoCo(颜色对比度对检测性能的影响)
§6.6 数据增强策略
| 类别 | 操作 | 判定 |
|---|---|---|
| 几何类 | 水平/垂直翻转、≤15° 旋转、≤10% 平移 | ✅ 安全(不改变肤色与病灶颜色) |
| 光度-温和 | 小幅亮度/对比度扰动(±10%) | ⚠️ 谨慎(保持跨肤色组增强强度一致) |
| 颜色类 | ColorJitter/HSV 扰动/通道置换 | ❌ 危险(破坏 FST 信号与对比度协变量) |
| 灰度化 | RandomGrayscale | ❌ 危险(肤色信息是公平性实验的自变量) |
| 混合类 | MixUp/CutMix | ❌ 危险(混合跨肤色图像产生临床不存在的伪样本,污染子组分析) |
| 生成式 | 生成式肤色转换增强 | ⚠️ 谨慎(仅限方法学研究,需人工审核并在论文中单列) |
增强策略的判断标准只有一条:不能改变实验要测量的变量。在 DDI 上,肤色与病灶-背景对比度既是输入信号也是研究变量——任何把它们"洗掉"或"搬运"的增强(颜色抖动、跨肤色 MixUp、生成式换肤)都会让评测结论失效。一条实用的检查法:增强后把图像重新送回肤色分组评测,如果 FST 分组之间的指标关系发生实质性变化,说明增强泄漏进了研究变量,必须撤掉。同理,测试集上永远只允许确定性预处理(Resize/Normalize),不允许任何随机增强。
§6.7 模型推荐
| 模型 | 定位 | 输入 | 论文/来源 | 备注 |
|---|---|---|---|---|
| DeepDerm(InceptionV3) | 官方基线 | 299×299 | Zenodo 6784279 | 微调后深肤色 AUC 0.74 |
| HAM10000 模型(InceptionV3) | 官方基线 | 299×299 | 同上 | 皮肤镜训练迁移负样本 |
| ModelDerm | 外部商用参照 | 全图 | Daneshjou et al., 2022 | 仅概率输出参与评测 |
| GroupDRO / CORAL / CDANN | 公平性方法基线 | 299×299 | 同上 | 未超过直接微调 |
| EfficientNetV2-S / SwinV2-B | 现代 backbone | 224-384 | DDI-CoCo 使用 | 对比度偏倚同样存在 |
| ResNet50/ViT-Tiny(自训) | 快速实验 | 224×224 | 社区惯例 | 656 张上注意早停与强正则 |
选型提示:若目标是复现论文数字,直接下载 Zenodo 权重并用官方 eval_ddi.py,不要重新训练;若目标是发表新方法,把"直接微调"与"公平性训练方法"都作为基线纳入对比——只与弱基线比较在该数据集的历史结论面前说服力不足。
§6.8 硬件需求
| 场景 | GPU 显存 | 说明 |
|---|---|---|
| 全量评测(656 张推理) | 任意 4GB+ | CPU 也可在数分钟内完成 |
| 微调 InceptionV3/EfficientNet(冻结大部分层) | 6-8GB | batch 16-32 @ 299×299 |
| 微调 ViT-S/SwinV2-S | 8-16GB | 建议冻结部分块 + 低学习率 |
| 嵌入提取(泄漏分析/近重复扫描) | 4GB | 只前向,无需训练 |
数据集仅 656 张图像,训练瓶颈不在算力而在划分协议与随机种子数量——把算力预算花在 20 种子重复实验上比堆大模型更有价值。经验参考:五个基线模型在单张 T4 上完成全量评测合计不足十分钟;即使做 20 种子 × 10 epoch 的微调矩阵,也在一个工作日内可以跑完。存储需求可忽略(数百 MB 级),普通笔记本即可承载全部实验。
§6.9 评估指标代码
评测代码的目标是让"公平性结论"可复算:一段脚本同时产出整体/分组 AUC、置信区间与差距指标,杜绝只报单点数字。
# 跨肤色公平性评测:整体/分组 AUC + AUC gap + bootstrap 95% CI
import numpy as np
from sklearn.metrics import roc_auc_score
def bootstrap_ci(y_true, y_score, n_boot=1000, seed=0):
rng = np.random.default_rng(seed)
idx = np.arange(len(y_true))
scores = []
for _ in range(n_boot):
b = rng.choice(idx, size=len(idx), replace=True)
if len(np.unique(y_true[b])) < 2:
continue
scores.append(roc_auc_score(y_true[b], y_score[b]))
return np.percentile(scores, [2.5, 97.5])
def ddi_fairness_report(meta, y_true, y_score):
"""meta: DataFrame(需含 skin_tone 列);y_true/y_score: np.array"""
out = {}
out["overall"] = (roc_auc_score(y_true, y_score),
*bootstrap_ci(y_true, y_score))
for tone in (12, 56): # 浅 vs 深(论文匹配口径)
m = (meta["skin_tone"].values == tone)
out[f"FST_{'I-II' if tone == 12 else 'V-VI'}"] = (
roc_auc_score(y_true[m], y_score[m]),
*bootstrap_ci(y_true[m], y_score[m], n_boot=1000))
gap = out["FST_I-II"][0] - out["FST_V-VI"][0]
out["auc_gap_light_minus_dark"] = gap
return out
# 输出示例结构:
# {'overall': (0.65, 0.61, 0.70), 'FST_I-II': (0.68, ...),
# 'FST_V-VI': (0.55, 0.46, 0.64), 'auc_gap_light_minus_dark': 0.13}
报告规范:每个子组必须同时给出点估计、95% CI 与样本量;固定阈值口径(灵敏度/特异度)必须注明阈值来源与标定数据集。
在 AUC 之外,临床分诊最关心的是操作点指标——在目标灵敏度下的特异度,以及各组漏诊率。补一段固定操作点代码:
# 固定操作点指标:目标灵敏度下的特异度 + 各 FST 组漏诊率
def sensitivity_at_specificity(y_true, y_score, target_spec=0.9):
thresholds = np.unique(y_score)
best = (0.0, 0.0)
for th in thresholds:
pred = (y_score >= th).astype(int)
tp = ((pred == 1) & (y_true == 1)).sum()
fn = ((pred == 0) & (y_true == 1)).sum()
tn = ((pred == 0) & (y_true == 0)).sum()
fp = ((pred == 1) & (y_true == 0)).sum()
sens = tp / (tp + fn) if tp + fn else 0.0
spec = tn / (tn + fp) if tn + fp else 0.0
if spec >= target_spec and sens > best[0]:
best = (sens, spec)
return best # (灵敏度, 特异度)
def per_group_miss_rate(meta, y_true, y_score, threshold):
"""固定阈值下各肤色组的漏诊率(fn / 恶性数)——部署监控的核心指标"""
pred = (np.asarray(y_score) >= threshold).astype(int)
y = np.asarray(y_true)
for name, code in [("FST_I-II", 12), ("FST_V-VI", 56)]:
m = (meta["skin_tone"].values == code) & (y == 1)
if m.sum():
miss = 1.0 - pred[m].mean()
print(f"{name}: 恶性 n={m.sum()}, 漏诊率={miss:.3f}")
§6.10 MLOps 笔记
- 数据版本化:记录 ZIP 的 SHA-256、下载日期与 AIMI 页面版本(2024-10 登记的 DOI 10.71718/kqee-3z39 版本);清洗决策(坑点 7 的排除清单)作为数据卡随仓库入库。
- 合规资产隔离:DDI 图像禁止再分发——训练产物(权重、嵌入)如构成衍生作品需谨慎对外发布;公开基准结果时只放指标与代码,不放图像与预测明细。
- 公平性监控:把"AUC gap(浅-深)+ 各组固定灵敏度"设为模型注册表的强制门禁指标;任何微调后 gap 扩大都应阻断发布。
- 随机性管理:小样本子组指标对种子极敏感(坑点 6),实验配置必须固定并公开种子清单;建议 20 种子起步对齐论文口径。
- 再校准计划:先验失配(坑点 5)意味着部署前必须按目标人群患病率重新校准,并在监控面板上按肤色分组追踪漏诊率。
- 元数据契约:CSV 仅三个字段但列名易碎(坑点 3),ETL 层应维护列名映射文件并在 CI 中跑契约测试;上游若发布新版本 CSV,契约测试是最早的报警器。
- 实验追溯:为每个评测运行落盘(模型哈希 + 数据哈希 + 种子 + 口径开关 raw/clean + 阈值来源),论文复现请求几乎都卡在"口径没记录"上。
- 评测集隔离:在团队内部把 DDI 标记为"只读评测资产",禁止进入任何训练路径的 feature store——一旦评测集被训练管线引用过,其全部历史指标作废。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 单中心偏倚 | 全部图像来自斯坦福诊所一家机构 | 高 | 外部验证(DDI-2、社区数据)后再下跨机构结论 |
| 活检富集偏倚 | 以病理报告为入口采样,疑难/模糊病例过表达,恶性占比 26.1% 远超真实分诊 | 高 | 阈值重标定;先验校正;仅作评测不作训练 |
| 匹配设计偏倚 | FST I-II 与 V-VI 按诊断/年龄/性别/时间匹配,扭曲自然流行率 | 中(设计使然) | 对照实验内解释;勿把组间占比当作患病率 |
| 肤色量具偏倚 | Fitzpatrick 分型为粗粒度主观量具,且非肤色多样性的完整代理 | 中 | 报告时声明量具局限;关注 Monk skin tone 等替代方案讨论 |
| 长尾偏倚 | 78 类诊断极不均衡,深肤色恶性常见病仅 16 张 | 高 | 子组指标强制报 bootstrap CI |
| 时间偏倚 | 2010-2020 十年设备与摄影协议漂移 | 低-中 | 作为协变量做敏感性分析 |
| 标注者偏倚 | 医师视觉判断本身存在跨肤色差异(读者研究证实) | 中 | 诊断标签以病理为锚,肤色标签双人复核 |
| 选择偏倚(质量过滤) | 低质量图像被剔除,保留集偏向可拍摄清晰的病灶 | 低 | 质量跨肤色组均衡(p=0.33)已部分缓解 |
| 报告偏倚(使用侧) | 只报告模型表现好的子组或口径 | 中 | 采用 §8.3 最小报告集,两口径并行 |
§7.2 标注质量
恶性标签以活检病理为金标准,配置执业皮肤科医师 + 皮肤病理医师双人审核;肤色标签双人医师复核。独立专家复审(arXiv:2309.06961)仅发现 6 个标签错误(0.9%)与 8 个近似重复(1.2%),在六个被审小规模皮肤基准中属最优梯队;同时标出 43 个"无关/不可诊断"样本(6.6%),主要源于其"非教科书式"收录原则——图像难度高但确属真实临床分布。
把 DDI 的标注质量放回同类基准的坐标系中更有意义:同一审计下,MED-NODE 的近似重复率达 4.7%、PAD-UFES-20 的无关样本率约 2.9%、SD-128 的标签错误约 3.0%,而 DDI 三项指标均不超过 1.2%(多数投票口径)。病理锚定带来的标签可靠性,使 DDI 成为少数可以把"模型错误"干净地归因于模型而非标签的皮肤基准。读者研究还揭示了一个更深层的事实:医师视觉判断本身在深肤色上系统性变差(FST V-VI ROC-AUC 0.62 vs I-II 0.75),因此任何依赖医师视觉共识标签的数据集都会继承这一噪声,而 DDI 的病理锚定恰好免疫了它。
§7.3 泛化性
| 目标场景 | 失效风险 | 证据 |
|---|---|---|
| 初级保健大规模筛查 | 高:恶性先验与病变难度分布失配 | 活检富集设计;26.1% 恶性占比 |
| 深肤色人群部署 | 高(若不微调):SOTA 模型深肤色灵敏度 0.06-0.23 | 论文补充表 2 |
| 皮肤镜 → 临床照片迁移 | 高:HAM10000 模型全量 AUC 0.67(其原测试集 0.88-0.94) | 论文 ROC-AUC 相对下降 27-36% |
| 跨机构(非美国/非学术中心) | 中-高:单中心、英语病历体系 | 数据溯源(§3.10) |
| 罕见病识别 | 高:多数诊断每类样本 <10 | 78 类长尾分布 |
| 跨年龄段泛化 | 中:年龄仅用于匹配设计约束,未逐例公开 | §2.4 患者人群 |
| 对比度极端图像 | 中-高:WCAG 式对比度过低/过高的图像特征异常 | DDI-CoCo 过滤了 14 张边界图像 |
§7.4 伦理
数据经斯坦福 IRB 批准框架下回溯收集并完成去标识化;发布前对部分图像进行隐私裁剪。使用协议明确禁止临床决策用途(Research Use Only,未经 FDA 审查)、禁止再分发与下载链接共享、禁止再识别尝试。该数据集涉及肤色这一敏感人口学属性,其动机是纠正而非固化健康差距——使用者在报告跨肤色结论时应避免污名化表述,并把"性能差距"归因于历史数据缺口而非人群本身。
从知情同意的角度看,回溯性临床照片的使用依托斯坦福诊疗环境下的同意流程与 IRB 框架,图片在去标识化(含裁剪)后发布;这与为建模目的重新采集并逐例签署图像使用同意的数据集不同。使用者在向第三方展示示例图像(论文、演示)时,应遵守协议仅展示官方论文已公开的样例或自行向作者申请许可,而非从下载包中随取随用。
§7.5 公平性
公平性评测在该数据集上有两层含义:作为被测对象,DDI 提供了带肤色标注的评测载体;作为证据来源,配套论文给出了一整套可引用的量化结论。四条核心发现构成了皮肤 AI 公平性研究的基础事实:1. 模型差距:三个 SOTA 皮肤 AI 模型在 DDI 上 ROC-AUC 相对下降 27-36%;深肤色(FST V-VI)AUC 0.50-0.57 vs 浅肤色(I-II)0.61-0.72;深肤色灵敏度低至 0.06-0.23(Daneshjou et al., 2022)。
2. 医师差距:皮肤科医师集成在深肤色上同样变差(AUC 0.62 vs 0.75),说明问题不止于数据规模,还在于视觉诊断本身的教育与经验缺口。
3. 数据修复路径:在 DDI 上微调后,DeepDerm 深肤色 AUC 升至 0.74、浅肤色 0.72,差距消除且深肤色恶性识别超过医师水平——“多样化数据是公平性最有效的杠杆”。
4. 公平性算法的局限:GroupDRO、CORAL、CDANN 等公平性/域泛化方法(全量 AUC 0.58-0.60)在该问题上未超过直接微调,提示干预数据本身比干预损失函数更有效。
Fitzpatrick 量具自身的局限也在后续文献中被反复讨论:它把肤色压缩为六型、依赖医师主观评估,无法覆盖全部人群多样性(如 Monk skin tone 的十档设计)。跨肤色结论应表述为"FST 组间差异"而非"种族差异"。
值得强调的是第四条结论的方法学含义:公平性差距的根源是训练数据中的代表性缺口而非模型架构,因此干预顺序应当是"先补数据、再调损失函数"。同时,微调带来的深肤色提升(0.50 → 0.74)是在仅数百张图像上实现的,说明公平性修复所需的数据量远小于预训练量级——这对资源有限的医疗机构是一个可执行的低成本起点。
§7.6 数据漂移
采集窗口长达十年(2010-2020),期间临床摄影设备、分辨率标准与电子病历系统均发生代际更替;皮肤病学实践(皮肤镜普及、远程医疗照片)也在变化。对 2020 年代后基于智能手机照片训练的模型而言,DDI 代表的是"较老一代临床照片 + 疑难病例"的联合分布,直接用于评估现代分诊 App 时应把"设备漂移 × 活检富集"叠加纳入解释框架。
漂移监控的实操建议:以拍摄年代(虽未逐图公开,可用编号区间近似)做分桶回测,观察模型 AUC 是否随年代单调变化;若明显单调,说明模型吸收了设备指纹而非病灶特征——此时应对输入做设备归一化(如白平衡校正)后重测。对计划长期维护的评测管线,建议每年用 DDI-2 等新发布的外部队列复测一次,把"跨年份衰减曲线"纳入模型护照。
§7.7 DAIMS 24 项自评
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式(一行一实体) | ✅ | 一行一图,656 行无歧义 |
| 2 | 唯一标识 | ✅ | DDI_file 文件名主键 |
| 3 | 特殊字符 | ⚠️ | 列名 malignancy(malig=1) 含括号与等号,需重命名 |
| 4 | 重复行 | ⚠️ | 8 个近似重复(1.2%,独立审计),无硬重复行 |
| 5 | 缺失编码 | ✅ | 官方三字段无缺失 |
| 6 | 标签标识 | ✅ | 恶性 0/1 明确;skin_tone 编码官方注释说明 |
| 7 | 罕见类分组 | ⚠️ | 78 类长尾;深肤色恶性常见病仅 16 张 |
| 8 | 偏倚评估 | ✅ | 论文系统性评估模型/医师/肤色差距 |
| 9 | 数据字典 | ✅ | 官方代码注释 + 本页 §4.1 |
| 10 | 信息性缺失解释 | ⚠️ | 患者 ID、拍摄日期、设备信息未随 CSV 发布且无官方解释编码 |
| 11 | 设备记录 | ❌ | 完全未公开摄影设备与协议规格 |
| 12 | 共线性 | ✅ | 仅 3 个元数据字段,无共线性风险 |
| 13 | 编码映射 | ✅ | ICD-11/SNOMED 映射本页补全(§2.1/§2.2) |
| 14 | 时间戳处理 | ⚠️ | 匹配设计使用拍摄日期(±3 年)但日期字段不随数据发布 |
| 15 | 划分建议 | ✅ | §5 给出评测/微调两套协议 |
| 16 | 泄漏讨论 | ✅ | §5.3 患者级泄漏分析与缓解 |
| 17 | 标签分布 | ✅ | §4.2 按 FST × 良恶性完整披露 |
| 18 | 测量偏倚 | ✅ | 医师视觉 vs 病理真值差距已量化(读者研究) |
| 19 | 外部验证建议 | ✅ | §5.4 与 §7.8 给出外部验证矩阵 |
| 20 | 版本记录 | ⚠️ | 无官方版本号/变更日志;仅有 AIMI 门户登记日期(2024-10) |
| 21 | 预处理脚本 | ✅ | 官方 transform 口径 + 本页 §6.3/§6.4 代码 |
| 22 | 合规要求 | ✅ | Research Use Agreement 条款清晰可执行 |
| 23 | 多模态对齐 | ✅ | 图像-元数据以文件名精确对齐(图像+表格单模态组合) |
| 24 | 去标识化 | ✅ | 官方说明裁剪处理流程,病灶保留 |
DAIMS 评分:20 / 24(✅ 17 项 · ⚠️ 6 项 · ❌ 1 项)
评分解读:作为评测型基准,DDI 在"标签可靠性(病理锚定)、偏倚透明度、合规清晰度"三项上达到全库最高梯队;失分集中在元数据丰富度——设备、时间戳、患者级标识均不随数据发布,这在评测集定位下可以接受,但任何想把它当训练集用(尤其做患者级隔离划分)的团队都会撞上这些缺口。
对你意味着什么:如果你只需要一张"跨肤色考卷",可以放心直接使用,按 §5.1 协议报告即可;如果你要做微调研究,必须先解决患者级划分近似问题(坑点 4)并全程报告 bootstrap CI(坑点 6);如果你计划把结论写进监管或注册文档,Fitzpatrick 量具局限(§7.5)与 6.6% 无关样本率(坑点 7)是审阅人最可能追问的两处。一句话总结:这是一份"标签可信度极高、元数据极度克制"的评测型基准——用它检验模型,别用它训练模型。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| DDI(对三个模型均为外部集) | 斯坦福 | 恶性二分类 | ModelDerm 0.65 / DeepDerm 0.56 / HAM10000 0.67(ROC-AUC) | 相对原测试集 0.88-0.94 下降 27-36% | 深肤色与罕见病上退化最重(Daneshjou et al., 2022, Sci Adv, DOI 10.1126/sciadv.abq6147) |
| DDI 深肤色子组(FST V-VI) | 斯坦福 | 恶性二分类 | AUC 0.50-0.57;灵敏度 0.06-0.23 | 显著低于浅肤色子组 | 微调后 DeepDerm 深肤色达 0.74,差距消除 |
| DDI 常见诊断子集(564 张) | 斯坦福 | 恶性二分类 | 医师集成 0.82 / ModelDerm 0.74 / HAM10000 0.71 | 高于全量口径 0.05-0.09 | 罕见病是独立于肤色的第二个性能黑洞 |
| DDI(SelfClean 专家复审) | ISIC 社区审计 | 数据质量 | 近重复 8(1.2%)/ 标签错误 6(0.9%)/ 无关样本 43(6.6%) | — | 六个公开皮肤基准中标签质量最优梯队(arXiv:2309.06961) |
| DDI-CoCo(DDI 衍生对比度分组) | 学术社区 | 恶性二分类(ISIC 2019 训练 → DDI-CoCo 评估) | InceptionV3/EfficientNetV2-S/SwinV2-B 均现高低对比组性能差 | ODL 设定(分布外评估) | 颜色对比度是独立于肤色的混淆变量(DDI-CoCo, arXiv) |
矩阵读法:前两行是"模型视角"的外部验证(对三个模型而言 DDI 是外部集,结果已写入 §8.1 排行榜);第三行是口径敏感性;后两行是"变量视角"的外部验证——它们不改变榜单数字,而是揭示榜单数字背后新的混淆维度(标签质量、对比度),这正是 DDI 生态持续产出方法学增量而非单纯刷分的原因。
§8 基准性能与生态
§8.1 排行榜(恶性二分类,全量 DDI 656 张)
| 排名 | 模型 | ROC-AUC(95% CI) | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 参照 | 皮肤科医师集成(多数投票) | 0.72(0.68-0.77) | 2022 | 11 名执业皮肤科医师集成 | Daneshjou R, et al., 2022, Science Advances 8(32):eabq6147. DOI 10.1126/sciadv.abq6147 | — |
| 1 | HAM10000 模型(微调基线) | 0.67(0.62-0.71) | 2022 | InceptionV3 + 皮肤镜数据预训练 | Daneshjou R, et al., 2022, Science Advances 8(32):eabq6147. DOI 10.1126/sciadv.abq6147 | Zenodo 6784279 |
| 2 | ModelDerm | 0.65(0.61-0.70) | 2022 | 商用/公开网页模型 | Daneshjou R, et al., 2022, Science Advances 8(32):eabq6147. DOI 10.1126/sciadv.abq6147 | 不公开 |
| 3 | DeepDerm | 0.56(0.51-0.61) | 2022 | InceptionV3 + 私有临床照片预训练 | Daneshjou R, et al., 2022, Science Advances 8(32):eabq6147. DOI 10.1126/sciadv.abq6147 | Zenodo 6784279 |
| 微调后 | DeepDerm + DDI 微调 | 浅 0.72 / 深 0.74 | 2022 | DDI 少样本微调(20 种子) | Daneshjou R, et al., 2022, Science Advances 8(32):eabq6147. DOI 10.1126/sciadv.abq6147 | Zenodo 6784279 |
来源:论文正文与补充表 2/3(PubMed 全文);医师集成行来自 11 名执业皮肤科医师的多数投票集成。
⚠️ 数值不可直接比较的原因:三个原始模型使用各自开发时标定的固定阈值与不同训练分布;"全量 656 张"与"常见诊断 564 张"两口径并存;子组样本量小导致 CI 宽;DeepDerm 微调行报告的是分组 AUC 而非整体 AUC。引用任何数字时必须同时注明口径。
阅读本表的三条提示:第一,把"皮肤科医师集成"行当作人类基线而非可超越的终点——微调后的 DeepDerm 在深肤色上已经超过它,这正是数据集希望传达的结论;第二,HAM10000 模型全量 AUC(0.67)高于 DeepDerm(0.56)不代表其更优——HAM10000 的固定阈值把几乎所有样本判为良性(特异度 0.99、灵敏度 0.06),AUC 与操作点指标的背离本身就是 DDI 想暴露的问题;第三,官方五个模型中 GroupDRO/CORAL/CDANN 是公平性训练变体而非性能排行榜选手,其价值在于与"直接微调"的对照。
§8.2 SOTA 总结与选型建议
截至 2026-09,DDI 上的"最高分"仍属于微调后的模型而非任何零样本 SOTA:论文证明在 656 张上简单微调即可同时提升整体性能并消除肤色差距,而 GroupDRO/CORAL/CDANN 等公平性训练方法收效有限。这给出明确的选型信号:在多样化评测集上暴露差距 → 用多样化数据微调 → 按肤色分组验证是当前性价比最高的路线;单纯更换更强 backbone(SwinV2-B 等,DDI-CoCo 验证)不能自动解决肤色与对比度偏倚。
选型建议按使用目的分三条线:
- 生产模型开发者:把 DDI 作为上线前门禁评测集。模型在自有测试集上 AUC ≥0.9 并不保证在 DDI 深肤色子组上可用(论文三个模型均高于 0.85 却在深肤色跌到 0.50-0.57);建议把"AUC gap ≤0.05 且各 FST 组 fixed-sensitivity 0.9 下漏诊率达标"写入发布标准。
- 公平性方法研究者:DDI 提供了"数据杠杆 > 损失函数杠杆"的反直觉结论,是检验新公平性方法的必选对照——任何新方法都应与"直接微调"这条简单基线竞争,而不只是与 GroupDRO/CORAL/CDANN。
- 多分类/长尾研究者:78 类诊断的长尾结构与深肤色交叉子组(16 张的角落)提供了难度远超常规长尾基准的测试场景,但样本量决定了只适合评测、不适合从头训练。
§8.3 评测协议
- 任务定义:恶性二分类(
malignancy(malig=1)),概率输出用于 ROC-AUC。 - 两个口径并行:全量 656 张;常见诊断子集 564 张(排除罕见病干扰)。
- 分组报告:FST I-II / FST V-VI / 整体三列;必要时加入 III-IV。
- 不确定度:bootstrap 95% CI(论文口径 1,000 次;微调实验 20 种子)。
- 操作点:固定阈值口径必须注明阈值来源(各模型开发集标定);建议补报 fixed-sensitivity 0.9 下的特异度。
- 预处理口径:沿用官方 transform(Resize 299 + CenterCrop 299 + ImageNet 归一化)以保证与论文数字可比;自行更换预处理时须在附录中单独报告影响。
- 结果发布:附随机种子、数据哈希与清洗清单,便于第三方在 raw/clean 两口径下复核。
§8.4 相关数据集
| 数据集 | 规模 | 模态 | 获取 | 与 DDI 关系 |
|---|---|---|---|---|
| HAM10000 | 10,015 张 | 皮肤镜 | 开放下载 | 传统训练语料;在 DDI 上迁移退化显著 |
| ISIC 2019/2024 | 25,331+ 张 | 皮肤镜为主 | 竞赛/开放 | 大规模预训练源 |
| Fitzpatrick17k | 约 16,000 张 | 临床照片 | 公开 | 标签噪声大(抽检 69% 可诊断),可做弱监督对照 |
| MED-NODE | 170 张 | 临床照片 | 学术获取 | 小规模临床照片基准 |
| PH2 | 200 张 | 皮肤镜 | 公开 | 黑色素细胞病灶对照 |
| Derm7pt | 2,022 张 | 皮肤镜 + 临床 | 学术获取(CC BY-NC-SA 4.0) | 结构化七点检查表属性可做特征级对照 |
| PAD-UFES-20 | 2,298 张 | 临床照片 | CC BY 4.0 | 含流行病学元数据的临床照片集 |
| DDI-2 | 665 张 / 550 患者 | 临床照片 | 注册获取(AIMI) | DDI 官方续作,亚裔队列、169 种诊断 |
表中前六行是 DDI 论文写作时系统调研的对照对象,也是社区做皮肤基准对比时最常用的组合;选用时注意许可证差异(CC 系可直接商用性不同,DDI 系严格非商业)。
§8.5 关键论文
以下六篇构成理解与使用 DDI 的最小文献集:第 1 篇是必引的原始论文,第 2 篇覆盖官方后续扩展,第 3-6 篇分别对应开放获取、数据质量审计、对比度协变量与下游任务扩展。
- Daneshjou R, Vodrahalli K, Novoa RA, et al. Disparities in dermatology AI performance on a diverse, curated clinical image set. Science Advances, 8(32):eabq6147, 2022. DOI 10.1126/sciadv.abq6147 — DDI 原始论文:数据集 + 三模型/医师/微调全套公平性证据。
- Chang CT, Pathmarajah P, Allerup J, et al. DDI-2: A Diverse Skin Condition Image Dataset Representing Self-Identified Asian Patients. Journal of Investigative Dermatology, 2024(在线)/2025(正式). DOI 10.1016/j.jid.2024.09.018 — 官方续作,把活检确认的多肤色基准扩展到亚裔人群。
- Daneshjou R, et al. Disparities in dermatology AI performance on a diverse, curated clinical image set(预印本). arXiv:2203.08807, 2022. — 开放获取版本,含方法细节。
- Towards Reliable Dermatology Evaluation Benchmarks. arXiv:2309.06961, 2023. — 对含 DDI 在内六个小规模皮肤基准的专家复审:近重复、标签错误与无关样本清单。
- DDI-CoCo: A Dataset for Understanding the Effect of Color Contrast in Machine-Assisted Skin Disease Detection. arXiv(Semantic Scholar 收录), 2024. — 在 DDI 上引入 WCAG 式对比度分数,证明对比度是肤色之外的独立混淆变量。
- DermaBench: A Clinician-Annotated Benchmark Dataset for Dermatology Visual Question Answering and Reasoning. arXiv:2601.14084, 2026. — 在 DDI 图像上叠加 22 层级视觉问答标注的下游扩展。
§8.6 社区活跃度
- 官方代码仓库 DDI-Code:22 stars / 9 forks(截至 2026-09),含完整 Dataset 类与评测 CLI。
- 预训练模型经 Zenodo record 6784279 长期存档,可引可下。
- 论文引用 324+(Dimensions,截至 2026-09),是皮肤 AI 公平性方向被引最高的数据集论文之一。
- 衍生生态活跃:DDI-CoCo(2024)、DermaBench(2026)、DDI-2(2024/2025)均直接复用 DDI 图像或方法学;工业界(Flatiron Health SUDO)也提供基于 DDI 的加载示例。
- 社区讨论主要集中在数据获取(注册流程)与目录结构(ImageFolder 约定)两类工程问题上,未出现数据质量争议——这与审计发现的低标签错误率互相印证。
- 数据集被皮肤 AI 公平性方向的方法学论文普遍采用为标准评测集之一,与 ISIC 系、HAM10000 并列为皮肤三大量化考卷。
- 数据获取门槛(注册 + 协议)过滤了大部分误用,社区内未见公开的协议违规讨论;再分发禁令使镜像站点几乎绝迹,这反而保证了所有使用者引用同一官方快照。
§8.7 生态快照
| 资源 | 类型 | 链接 | Star/热度(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| DDI 官网 | 项目主页 | ddi-dataset.github.io | — | 协议全文、动机、标注说明 |
| AIMI 数据集页 | 数据下载 | aimi.stanford.edu/datasets/ddi-diverse-dermatology-images | — | 唯一官方下载入口 |
| DDI-Code | 官方代码 | github.com/DDI-Dataset/DDI-Code | 22 stars | Dataset 类 + 评测脚本,两小时跑通复现 |
| Zenodo 6784279 | 模型权重 | zenodo.org/record/6784279 | — | 五个基线模型,免训练基线 |
| DDI-2 | 衍生数据集 | daneshjoulab.github.io/ddi2-dataset | — | 亚裔人群外部验证 |
| DDI-CoCo | 衍生基准 | Semantic Scholar 条目 | — | 对比度协变量研究范式 |
| DermaBench | 衍生基准 | arXiv:2601.14084 | — | VQA/推理任务扩展 |
| Flatiron SUDO | 下游示例 | github.com/flatironhealth/SUDO | — | 工业界数据加载参考 |
| Science Advances 出版页 | 论文正式版 | science.org/doi/10.1126/sciadv.abq6147 | — | 补充表 1-3(诊断清单与分组统计) |
| PubMed 记录 | 文献索引 | pubmed.ncbi.nlm.nih.gov/35960806 | — | PMCID PMC9374341,开放全文 |
§9 相关资源与引用
§9.1 官方资源
| 资源 | 链接 | 说明 |
|---|---|---|
| 项目主页 | https://ddi-dataset.github.io/ | 动机、标注协议、Research Use Agreement 全文 |
| 数据下载 | https://aimi.stanford.edu/datasets/ddi-diverse-dermatology-images | 注册后获取 ZIP(数据集 DOI 10.71718/kqee-3z39) |
| 官方代码 | https://github.com/DDI-Dataset/DDI-Code | PyTorch Dataset 类、模型下载与评测 CLI |
| 预训练模型 | https://zenodo.org/record/6784279 | DeepDerm、HAM10000、GroupDRO、CORAL、CDANN |
| 论文(开放版) | https://arxiv.org/abs/2203.08807 | Science Advances 论文预印本 |
| PubMed | https://pubmed.ncbi.nlm.nih.gov/35960806/ | PMID 35960806;PMCID PMC9374341 |
| DDI-2 官网 | https://daneshjoulab.github.io/ddi2-dataset/ | 衍生数据集(亚裔队列) |
| 论文出版页 | https://www.science.org/doi/10.1126/sciadv.abq6147 | Science Advances 正式版本与补充材料 |
§9.2 BibTeX 引用
@article{daneshjou2022disparities,
title = {Disparities in dermatology AI performance on a diverse, curated clinical image set},
author = {Daneshjou, Roxana and Vodrahalli, Kailas and Novoa, Roberto A. and Jenkins, Melissa and Liang, Weixin and Rotemberg, Veronica and Ko, Justin and Swetter, Susan M. and Bailey, Elizabeth E. and Gevaert, Olivier and Mukherjee, Pritam and Phung, Michelle and Yekrang, Kiana and Fong, Bradley and Sahasrabudhe, Rachna and Allerup, Johan A. C. and Okata-Karigane, Utako and Zou, James and Chiou, Albert S.},
journal = {Science Advances},
volume = {8},
number = {32},
pages = {eabq6147},
year = {2022},
doi = {10.1126/sciadv.abq6147}
}
@article{chang2024ddi2,
title = {DDI-2: A Diverse Skin Condition Image Dataset Representing Self-Identified Asian Patients},
author = {Chang, Crystal T. and Pathmarajah, Pirunthan and Allerup, Johan and Jafry, Sheharbano and Yekrang, Kiana and Mitchell, Dominique C. and See, Niki Ai and Perrone, Lila A. and Fong, Bradley and Cisneros, Xiiah D. and Daneshjou, Roxana and Ko, Justin and Chiou, Albert S.},
journal = {Journal of Investigative Dermatology},
year = {2024},
doi = {10.1016/j.jid.2024.09.018}
}
@misc{ddi_dataset2022,
title = {Diverse Dermatology Images Dataset},
author = {{Stanford University School of Medicine}},
year = {2022},
howpublished = {Stanford Center for Artificial Intelligence in Medicine and Imaging (AIMI)},
doi = {10.71718/kqee-3z39},
url = {https://ddi-dataset.github.io/}
}
§9.3 引用指南
- 使用数据集本体时引用
ddi_dataset2022(数据集 DOI)与daneshjou2022disparities(方法学论文);使用亚裔队列比较时引用chang2024ddi2。 - 报告任何性能数字必须注明口径(全量 656 vs 常见病 564;FST 分组;阈值来源)。
- 声明数据使用符合 Stanford School of Medicine Research Use Agreement,并在致谢中加入 AIMI 要求的声明文本(见 AIMI 共享数据集页)。
- 建议的引用顺序:数据集 DOI + 方法学论文 + 你实际参考的衍生研究(如引用了对比度协变量方法则加 DDI-CoCo,引用了 VQA 标注则加 DermaBench)。
- 若你的论文把 DDI 用作外部测试集,请在方法节写明下载时间与数据版本(AIMI 门户 2024-10 登记版本),方便社区对齐同一数据快照。
§10 AI 使用声明卡
§10.1 AI 模型列表
| 模型 | 用途 | 提供方 |
|---|---|---|
| fast-model | 条目初稿撰写、结构组织、代码示例生成 | 千方病案医数集 |
| 代码智能体(CodeBuddy Code) | 检索汇总、格式校验(check_md.py) | 千方病案医数集 |
§10.2 AI 参与范围
AI 负责文献检索结果汇总、初稿撰写与格式规范化;全部关键数字(656 张图像、570 名患者、78 种诊断、FST 分组计数、ROC-AUC、灵敏度/特异度、CI、引用数)均逐条对照下列来源人工核验;医学编码映射(ICD-11/SNOMED CT)由编辑部按 ICD-11 MMS 与既有条目口径补全并复核。AI 未做任何独立医学判断。
具体分工边界:所有"模型性能类"数字只取自论文正文与补充表原文,未经二手转述采信;所有"数据集规格类"数字以 AIMI 官方页面与官方代码为最高优先级;与官方来源冲突的社区数字一律弃用;无法核验的数字(如压缩包体积)直接省略而非估算。代码示例由 AI 起草后经编辑部人工走查,其中与官方口径冲突之处(如 CenterCrop 的取舍)已在文中显式标注两种选择。
§10.3 输入来源列表
- Daneshjou R, Vodrahalli K, Novoa RA, et al. Disparities in dermatology AI performance on a diverse, curated clinical image set. Science Advances, 8(32):eabq6147, 2022. DOI 10.1126/sciadv.abq6147
- Daneshjou R, et al. 同上预印本. arXiv:2203.08807, 2022.
- PubMed 记录 PMID 35960806 / PMCID PMC9374341(含图注与方法学摘录)
- DDI 官方项目主页(含标注协议、去标识化说明、Research Use Agreement 全文). https://ddi-dataset.github.io/
- Stanford AIMI 数据集页(规模数字、FST 分组计数、质量检验、数据集 DOI). https://aimi.stanford.edu/datasets/ddi-diverse-dermatology-images
- Stanford AIMI Shared Datasets 页(AIMI 致谢声明文本、DDI-2 简介). http://aimi2021.sites.stanford.edu/shared-datasets
- DDI-Dataset/DDI-Code GitHub 仓库(模型清单、评测 CLI、BibTeX). https://github.com/DDI-Dataset/DDI-Code
- ddi_dataset.py 源文件(CSV 字段、skin_tone 编码、目录约定、transform 口径). https://github.com/DDI-Dataset/DDI-Code/blob/main/ddi_dataset.py
- Zenodo record 6784279(官方预训练模型存档). https://zenodo.org/record/6784279
- Chang CT, et al. DDI-2: A Diverse Skin Condition Image Dataset Representing Self-Identified Asian Patients. Journal of Investigative Dermatology, 2024. DOI 10.1016/j.jid.2024.09.018
- DDI-2 项目主页与 Research Use Agreement. https://daneshjoulab.github.io/ddi2-dataset/
- Towards Reliable Dermatology Evaluation Benchmarks. arXiv:2309.06961, 2023(DDI 数据质量审计数字)
- DDI-CoCo: A Dataset for Understanding the Effect of Color Contrast in Machine-Assisted Skin Disease Detection. arXiv, 2024(对比度方法与 FST 分组统计)
- DermaBench: A Clinician-Annotated Benchmark Dataset for Dermatology Visual Question Answering and Reasoning. arXiv:2601.14084, 2026(DDI 标注验证转述)
- Lacuna 论文解读页(活检富集与 Fitzpatrick 局限性讨论). https://lacuna.tiptreesystems.com/paper/disparities-in-dermatology-ai-performance-on-a-diverse-curated-clinical-image/art_4a66d2e124b348c39890b9d38d859636
- Weill Cornell VIVO/Dimensions 出版物条目(引文统计 324+). https://vivo.weill.cornell.edu/display/pubid35960806
- Flatiron Health SUDO 仓库 load_ddi_data.py(工业界加载方式参考). https://github.com/flatironhealth/SUDO/blob/main/load_ddi_data.py
- 千方病案医数集既有皮肤科条目(PH2/MED-NODE)ICD-11/SNOMED 编码口径(内部一致性依据)
- Science Advances 出版页(补充表 2/3 分组统计数字). https://www.science.org/doi/10.1126/sciadv.abq6147
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| frontmatter 与 INFOBOX 关键数字 | 千方病案医学编辑部 | 逐条对照 AIMI 页面与论文 | ✅ 已通过 |
| §2 医学背景与 ICD-11/SNOMED 映射 | 千方病案医学编辑部 | 对照 ICD-11 MMS 与全站编码口径复核 | ✅ 已通过 |
| §3 数据集规格 | 千方病案医学编辑部 | 对照官方页面与论文补充材料 | ✅ 已通过 |
| §4 数据结构与字段字典 | 千方病案医学编辑部 | 对照官方 ddi_dataset.py 源码核验 | ✅ 已通过 |
| §5 划分与泄漏分析 | 千方病案医学编辑部 | 方法学复核(论文 + 审计文献) | ✅ 已通过 |
| §6 代码示例与 8 个坑点 | 千方病案医学编辑部 | 代码走查 + 坑点逐条溯源官方仓库/论文 | ✅ 已通过 |
| §7 DAIMS 与外部验证矩阵 | 千方病案医学编辑部 | 对照论文补充表 2/3 与 arXiv:2309.06961 | ✅ 已通过 |
| §8 基准数字与完整引用 | 千方病案医学编辑部 | 逐条对照论文与 Zenodo/GitHub | ✅ 已通过 |
| §9 BibTeX 与引用指南 | 千方病案医学编辑部 | 对照官方 BibTeX 与 DOI 解析 | ✅ 已通过 |
| §10 声明卡 | 千方病案医学编辑部 | 溯源清单完整性检查 | ✅ 已通过 |
| FACTS.md 与正文数字一致性 | 千方病案医学编辑部 | 抽查 20 个关键数字回溯事实清单 | ✅ 已通过 |
§10.5 AI 生成章节标注
本条目全部章节由 AI(fast-model)基于 §10.3 所列公开来源起草,经千方病案医学编辑部按 §10.4 记录逐模块人工核验、修订与批准后发布;未标注单节豁免,全文视作"AI 起草 + 人工定稿"。
生成流程回溯:研究阶段共执行 7 次 Web 检索并落盘事实清单(FACTS.md,与正文同目录),正文中的每一个可量化断言都能回溯到该清单的某一条目及其来源链接;写作阶段一次成稿后由校验脚本(check_md.py)执行结构与纯净度检查,人工复核重点放在数字口径一致性、代码可运行性与医学表述安全性三个维度。
§10.6 最后人工审核日期
2026-09-05
页面状态:published(全部内容已完成审核并发布)
