信息速览

PAD-UFES-20 — 智能手机皮肤癌筛查多模态数据集 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | PAD-UFES-20 |
| 英文全称 | PAD-UFES-20: A skin lesion dataset composed of patient data and clinical images collected from smartphones |
| 别名/简称 | PAD-UFES-20 Smartphone Skin Lesion Dataset |
| 疾病分类(ICD-11) | 2C30 皮肤恶性黑色素瘤(MEL);2C31 皮肤鳞状细胞癌(SCC);2C32 皮肤基底细胞癌(BCC);EK90.1 光化性角化病(ACK);EK90.0 脂溢性角化病(SEK/SEP);2F21 黑色素细胞痣(NEV) |
| SNOMED CT | 372244006(恶性黑色素瘤);402844004(皮肤鳞状细胞癌);127542007(基底细胞癌);201101007(光化性角化病);40399004(脂溢性角化病);400150009(黑色素细胞痣) |
| 数据模态 | 皮肤病变临床照片(智能手机,无皮肤镜)+ 患者临床元数据表(21 项特征) |
| AI 任务类型 | 六类病变分类、良恶性鉴别、图像+表格多模态融合、类别不平衡学习 |
| 样本总数 | 2,298 张图像(1,373 名患者 / 1,641 处病变) |
| 数据大小 | 3.35 GB(v1 完整包) |
| 数据格式 | PNG(图像)+ CSV(metadata.csv,26 列) |
| 许可证 | CC BY 4.0 |
| 访问级别 | 开放(无需注册,直接下载) |
| DUO 标签 | NRES(无限制使用,须署名) |
| 语言 | 英语(metadata 字段与文档);采集语境为葡萄牙语 |
| 首发日期 | 2020-07-07(Mendeley Data v1) |
| 最后更新 | 2020-07(v1;论文刊出 2020-10) |
| 发布机构 | 圣埃斯皮里图联邦大学(UFES)— LABCIN 实验室与 PAD 皮肤病援助项目 |
| 官方主页 | Mendeley Data |
| 下载地址 | v1 完整包 3.35 GB |
| DOI | 10.17632/zr7vgbcyr2(数据集);10.1016/j.dib.2020.106221(数据论文) |
| 引用次数 | 278+(Semantic Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方提供按患者分组的 6-fold 划分思路与 metadata 校验脚本,但预处理与多模态加载需自行实现;图像质量参差需清洗 |
| 页面状态 | published |
§0 E-E-A-T 审核声明
医学审核者:[千方病案医学编辑部] 交叉审核:§2 医学背景(六类病变的 ICD-11/SNOMED CT 映射与流行病学表述)、§7 偏倚分析(标签确认路径差异、人群偏倚与公平性)。
数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略(按患者分组 6-fold)、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。PAD-UFES-20 采用 CC BY 4.0 许可开放获取,使用时须署名并引用原始论文(Pacheco et al., Data in Brief 2020);数据采集已获 UFES 伦理委员会(nº 500002/478)与 Plataforma Brasil(nº 4.007.097)批准。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? PAD-UFES-20 是巴西圣埃斯皮里图联邦大学(UFES)发布的皮肤病变公开数据集:2,298 张用普通智能手机(iPhone/Android)拍下的病变照片,来自 1,373 名患者、1,641 处病变,分为 6 类诊断——3 类皮肤癌(基底细胞癌 BCC、鳞状细胞癌 SCC、黑色素瘤 MEL)和 3 类良性病变(光化性角化病 ACK、脂溢性角化病 SEK、痣 NEV)。每张照片还附带最多 21 项患者临床特征:年龄、性别、病变部位、皮肤癌家族史、吸烟饮酒、农药暴露等。
为什么重要? 在缺乏皮肤科医生和皮肤镜的发展中地区与偏远农村,用普通手机拍照筛查皮肤癌是现实需求——而此前所有主流皮肤病变数据集(如 HAM10000)都是皮肤镜图像,无法支撑这一场景。PAD-UFES-20 是第一个同时提供"手机临床照片 + 患者临床数据"的公开档案,58.4% 的病变经活检证实(三类皮肤癌 100% 活检证实),并且官方实验证明:把临床特征加进来,分类性能比纯图像提升约 7% 的 balanced accuracy。
我能用它做什么? 训练移动端皮肤病变分类/分诊模型(六分类或良恶性二分类);研究图像与表格元数据的融合策略;研究类别不平衡(黑色素瘤仅约 2%)与小样本学习;评测模型对肤色(Fitzpatrick 肤型)、年龄段、病变部位的公平性;做分布外检测与捷径学习分析。它不适合作为自动诊断的充分证据——官方与社区均定位其为"辅助临床分诊的研究基准"。
§1.1 摘要
PAD 项目(Programa de Assistência Dermatológica e Cirúrgica)是 UFES 面向低收入人群的免费皮肤病诊疗项目。2017 年底,UFES 自然启发计算实验室(LABCIN)与 PAD 合作开发了 React-Native 手机 App + 双 Web 服务器的采集系统:最多 3 名资深皮肤科医生(≥15 年经验)在义诊中评估病变,用患者自己的手机(多品牌,无皮肤镜)拍摄病变照片并在 App 内裁剪感兴趣区域,同时由资深医学生按结构化问诊填写临床特征。疑似恶性的病变手术切除后送 HUCAM 病理单元做组织病理学检查,良性病变由皮肤科医生团队临床共识确认。2018-2019 年间共收集 2,298 张图像(1,373 名患者、1,641 处病变),上传后经质量筛选移除低质量图像,最终以 PNG + 单张 metadata.csv(26 列)形式于 2020-07-07 发布在 Mendeley Data(CC BY 4.0)。配套的方法论文(Pacheco & Krohling, Computers in Biology and Medicine 2020)给出了按患者分组的 6-fold 交叉验证协议,并证明融合临床特征可带来约 7% 的 balanced accuracy 提升。
关键数字速查:
| 数字 | 值 | 出处 |
|---|---|---|
| 图像 / 病变 / 患者 | 2,298 / 1,641 / 1,373 | Mendeley 官方页 |
| 六类分布 | BCC 845 · ACK 730 · NEV 244 · SEK 235 · SCC 192 · MEL 52 | Data in Brief Table 1 |
| 活检确认率 | 58.4%(恶性类 100%) | Data in Brief |
| 临床特征 | 最多 21 项(CSV 共 26 列) | Data in Brief |
| 图像尺寸 | 147×147 至 3474×3476,中位约 780×780 | openmedlab 统计 |
| 采集地 / 时间 | 巴西圣埃斯皮里图州 11 城 / 2018-2019 | Data in Brief |
| 融合增益 | 约 +7% balanced accuracy | CBM 2020 |
| 许可 / 大小 | CC BY 4.0 / 3.35 GB | Mendeley 官方页 |
§1.2 战略价值
维度一:移动端筛查场景的唯一性。 主流皮肤病变基准(HAM10000、BCN20000、ISIC 系列)全部由皮肤镜拍摄,图像域高度受控;而真实世界的基层筛查、远程皮肤科(teledermatology)面对的是手机照片——光照不可控、分辨率参差、病变只占画面一小部分。PAD-UFES-20 恰好填补这一"域差距":它是大规模公开数据集中少数以普通手机照片为主体、且带完整诊断标签的基准,因此成为"皮肤镜模型能否迁移到手机照片"与"移动端 CAD 系统可行性"研究的标准试验场,ISIC Archive 也于 2024-11-05 将其收录为官方集合。
维度二:图像+临床元数据融合的标杆。 皮肤科医生本来就依据"患者年龄 + 病变部位 + 病史 + 视诊"做诊断,纯图像模型恰恰缺失了这部分信息。PAD-UFES-20 将问诊数据结构化为 21 项特征随图发布,使"多模态融合是否有效、如何有效"成为可量化的问题:官方基线(CBM 2020)证明融合带来约 7% 提升,后续 MetaBlock(JBHI 2021)、三源特征融合(Heliyon 2022)等持续在此基准上迭代。对于研究 EHR 表格特征与医学影像对齐、缺失值鲁棒建模的团队,它是天然的多模态试验床。
维度三:低资源公共卫生的样本价值。 数据来自免费义诊人群(多为欧洲移民后裔的农场劳动者,慢性日光暴露、平均约 60 岁),天然呈现真实基层人群的疾病谱与风险因子分布(农药暴露、吸烟、有无自来水/排污系统等社会经济变量)。这使它不仅可训练模型,还可支撑流行病学关联分析、公共卫生资源规划等非影像 AI 应用。
维度四:教学与可解释性研究的双重素材。 六类疾病的三对"经典混淆对"(NEV↔MEL、SEK↔BCC、ACK↔SCC)配上 21 项问诊特征,使错误案例本身就是教学案例;UFES 官方明确列出"训练医学生"这一用途。对可解释性研究,图像注意力(Grad-CAM)与表格特征重要性(SHAP)可以逐样本交叉验证——"医生怎么看"与"模型怎么看"在同一患者身上可直接对照。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态 | 标注/确认 | 差异化定位 |
|---|---|---|---|---|
| PAD-UFES-20 | 2,298 图 / 1,373 患者 | 智能手机临床照片 + 21 项临床特征 | 58.4% 活检;良性为临床共识 | 手机照片+元数据融合的独有组合;6 类含非色素病变 |
| HAM10000 | 10,015 图 | 皮肤镜 | 53.3% 活检证实 | 色素性病变为主,皮肤镜域,无临床特征 |
| BCN20000 | ~20,000 图 | 皮肤镜 | 部分活检 | 难例部位(甲、黏膜);两次国际挑战赛基准 |
| ISIC 2019/2020 | 23,247 / 22,480 图 | 皮肤镜+部分临床照 | 混合来源 | 大规模挑战赛基准;2020 加入少量手机图但无元数据 |
| Derm7pt | ~1,013 例 | 临床+皮肤镜 | 七点清单标注 | 提供七点评分语义标注,规模小 |
| Fitzpatrick 17k | 16,577 图 | 皮肤镜/手机混合 | 肤型标注 | 主打肤色公平性,标签为肤型而非诊断金标准 |
§1.4 版本时间轴
| 时间 | 版本/事件 | 说明 |
|---|---|---|
| 2020-07-01 / 2020-07-09 | arXiv:2007.00478 v1/v2 | 数据论文预印本 |
| 2020-07-07 | Mendeley Data v1(DOI 10.17632/zr7vgbcyr2.1) | 当前发布版本:2,298 图 + metadata.csv,3.35 GB |
| 2020-09-16(在线) | CBM 方法论文 | Pacheco & Krohling,按患者分组 6-fold 协议与融合基线 |
| 2020-10(Vol.32:106221) | Data in Brief 刊出 | PMCID PMC7479321 |
| 2021-2025 | 社区生态 | Kaggle/HuggingFace/OpenML 镜像、MetaBlock、三源融合、MLLM 评测(OctoMed) |
| 2024-11-05 | ISIC Archive 收录 | 官方集合(2,298 图;ID 体系与 Mendeley 不兼容,见坑点 8) |
§1.5 典型应用场景
- 移动端皮肤癌分诊:训练手机照片 → 恶性概率模型,输出"建议就诊/随访"级别信号,配套 App 研究已有 balanced accuracy 85%、recall 96% 的先例(Krohling et al., 2021, arXiv)。
- 图像+临床特征融合方法研究:比较 late fusion、注意力机制(MetaBlock)、特征拼接等策略,官方基线为 +7% balanced accuracy。
- 类别不平衡与稀有类学习:MEL 仅 52 张(v1),适合验证 focal loss、加权采样、生成式增广、少样本迁移等方法。
- 公平性审计:按 Fitzpatrick 肤型、性别、年龄、病变部位分组评估性能差距(Deng et al., 2024 已给出按肤型分组的分析范式)。
- 捷径学习与分布外检测:图像含大量背景皮肤/衣物与光照差异,可复现颜色/背景捷径现象,并测试颜色恒常、OOD 打分(Gram 矩阵等)的缓解效果。
- 流行病学与公共卫生分析:问诊字段(吸烟、饮酒、农药暴露、社会经济变量)支持风险因子关联分析与义诊人群画像研究。
§2 医学背景
§2.1 六类诊断与 ICD-11 编码表
| 缩写(metadata 取值) | 疾病中文名 | 疾病英文名 | ICD-11 编码 | 良恶性 |
|---|---|---|---|---|
| ACK | 光化性角化病 | Actinic keratosis | EK90.1 | 良性(癌前病变) |
| BCC | 基底细胞癌 | Basal cell carcinoma | 2C32 | 恶性 |
| MEL | 恶性黑色素瘤 | Melanoma | 2C30 | 恶性 |
| NEV | (黑色素细胞)痣 | Nevus | 2F21 | 良性 |
| SCC | 鳞状细胞癌(含 Bowen 病) | Squamous cell carcinoma(incl. Bowen’s disease, ICD-11 2E67 皮肤原位癌) | 2C31 | 恶性 |
| SEK / SEP | 脂溢性角化病 | Seborrheic keratosis | EK90.0 | 良性 |
注:官方 metadata.csv 的 diagnostic 列取值为 ACK/BCC/MEL/NEV/SCC/SEK 六种;原论文部分表述将脂溢性角化病写作 SEP,两者指同一疾病。Bowen 病(BOD)作为 SCC 原位癌被并入 SCC 类,因此不单独成类。3 类恶性 + 3 类良性的设计使数据集可同时支持六分类与良恶性二分类两种任务。
§2.1b SNOMED CT 映射表
| 标签 | ICD-11 | SNOMED CT | SNOMED 术语 |
|---|---|---|---|
| MEL | 2C30 | 372244006 | Malignant melanoma |
| SCC | 2C31 | 402844004 | Squamous cell carcinoma of skin |
| BCC | 2C32 | 127542007 | Basal cell carcinoma of skin |
| ACK | EK90.1 | 201101007 | Actinic keratosis |
| SEK/SEP | EK90.0 | 40399004 | Seborrheic keratosis |
| NEV | 2F21 | 400150009 | Melanocytic nevus |
§2.2 疾病简介与流行病学
皮肤癌是全球最常见的癌症类别之一:世界卫生组织估计每 3 例确诊癌症中即有 1 例为皮肤癌;在巴西,据 INCA(国家癌症研究所)统计皮肤癌占全部癌症诊断的约 33%,2018-2019 年预计新增 18 万例。三种主要类型中,黑色素瘤最罕见但转移性强、致死率最高;基底细胞癌与鳞状细胞癌合称非黑色素瘤皮肤癌(NMSC),发生率高但转移少、预后相对好。光化性角化病是长期紫外线暴露相关的癌前病变,是 SCC 的危险前体;脂溢性角化病与痣为常见良性病变,是鉴别诊断中的主要"噪声类"。圣埃斯皮里图州因 19 世纪欧洲(含波美拉尼亚地区)移民史,浅肤色人群长期在热带高紫外环境下从事农业劳动,皮肤病变/皮肤癌发病率在该州居高,这正是 PAD 义诊项目与该数据集的地域背景——也意味着数据集人群(浅肤色、平均约 60 岁、农场劳动为主)不能代表全球人群分布。
六类疾病在数据集语境下的临床画像:
| 类别 | 临床画像(数据集语境) | 视觉/问诊线索 | 数据集内角色 |
|---|---|---|---|
| BCC | 最常见的皮肤癌;生长慢、极少转移,但可局部侵袭 | 半透明珍珠样丘疹、溃疡、出血(bleed 字段高频) | 多数类(36.8%),二分类的"恶性主力" |
| SCC(含 BOD) | 第二常见;可转移,需早期处理 | 角化、结痂、暴露部位;老年高发 | 恶性类中部位/年龄线索最强 |
| MEL | 致死率最高的皮肤癌;早期发现治愈率高 | 不规则边缘、颜色不均、近期变化(changed) | 稀有类(2.3%),评估核心难点 |
| ACK | UV 相关癌前病变,可进展为 SCC | 粗糙鳞屑斑、暴露部位(面部/前臂) | 良性多数类之二 |
| SEK | 极常见良性肿瘤,老年 | 油腻附着鳞屑、"贴上去"外观 | 与 BCC/MEL 的经典混淆对 |
| NEV | 黑色素细胞良性增生 | 均匀色素、稳定(不 changed/grew) | 与 MEL 的经典混淆对 |
这组"混淆对"结构(NEV↔MEL、SEK↔BCC、ACK↔SCC)正是六分类任务的临床难点所在,也是为什么官方论文同时报告 MEL vs non-MEL 与 cancer vs non-cancer 两个派生任务——混淆矩阵的 off-diagonal 几乎全部落在这三对之间。
§2.3 临床任务定义
- 筛查/分诊(triage):从手机照片判断病变是否需要由皮肤科医生进一步评估,本质是恶性 vs 良性二分类 + 阈值策略;临床代价不对称——漏诊黑色素瘤的代价远高于误报。
- 六类鉴别诊断:区分 3 恶 + 3 良,是数据集论文的标准评测任务;由于 SEK 与 BCC、ACK 与 SCC 在临床影像上易混淆,六分类的混淆矩阵本身具有临床教学价值。
- 诊断确认路径:恶性类以组织病理学为金标准;良性类以皮肤科医生团队临床共识为标准(良性病变不做活检是伦理与资源约束下的常规做法)。模型研究因此常须报告"活检确认子集"上的性能。
- 风险因子建模:metadata 中的吸烟、饮酒、农药暴露、皮肤癌家族史、Fitzpatrick 肤型等字段支持皮肤癌风险预测与可解释性研究(如 SHAP 分析)。
| 任务 | 输入 | 标签空间 | 推荐主指标 | 注意事项 |
|---|---|---|---|---|
| 六分类 | 图像 / 图像+表格 | ACK/BCC/MEL/NEV/SCC/SEK | balanced accuracy + macro-F1 | 逐 fold 逐类 recall 必报 |
| 恶性 vs 良性 | 同上 | 恶性(BCC/MEL/SCC)vs 良性 | bACC + AUC + 高召回特异性 | 阈值按分诊成本校准 |
| MEL vs non-MEL | 同上 | MEL vs 其余五类 | recall(约束 specificity 下限) | 每 fold MEL 仅 8-9 张 |
| 风险因子解释 | 表格 + Grad-CAM/SHAP | — | 校准(ECE/Brier)+ 特征重要性 | 勿将 biopsed 纳入特征 |
§2.4 患者人群表
| 属性 | 描述 |
|---|---|
| 来源 | PAD 免费皮肤病义诊项目(UFES 附属,面向低收入人群) |
| 时间 | 2018-2019 年(2017 年底启动系统建设) |
| 地域 | 巴西圣埃斯皮里图州 11 个内陆城市(多数为无互联网的农村地区),region 字段划分 15 个宏观区域 |
| 年龄 | 平均约 60 岁(不同诊断的年龄分布有差异) |
| 性别 | 两性均有(gender 字段,具体比例见 §4.3) |
| 族裔/肤型 | 多为欧洲(含波美拉尼亚)移民后代,浅肤色为主(Fitzpatrick 肤型字段记录) |
| 就医类型 | 免费筛查 + 手术治疗一条龙;疑似恶性者转 HUCAM 活检 |
§2.5 临床价值
对基层/偏远地区,该数据集支撑的模型可承担"第一道筛子":帮助非皮肤科医生或社区医疗点决定是否转诊,缓解皮肤科医生与皮肤镜设备短缺(Kittler 等已证明皮肤镜增益高度依赖医生经验)。对教学场景,UFES 官方明示该数据可用于训练医学生识别皮肤癌,六类混淆案例与问诊特征构成真实教学素材。对模型开发者,"临床特征+图像"的组合比纯图像更贴近真实诊断信息结构,是研究可解释 CAD(如 Grad-CAM + SHAP 联合分析)的理想载体。
§2.6 金标准表
| 划分 | 标注方式 | 标注者 | 性质 |
|---|---|---|---|
| 无官方 train/test 切分;方法论文采用按患者分组的 6-fold 交叉验证 | 恶性类(BCC/SCC/MEL):组织病理学(100% 活检证实);良性类(ACK/NEV/SEK):皮肤科医生团队临床共识;biopsed 列逐样本区分 | 最多 3 名资深皮肤科医生(≥15 年经验)会诊;HUCAM 病理单元出具活检报告;数据由资深医学生录入 | 部分金标准(58.4% 活检;100% 的皮肤癌为病理金标准),良性类为临床共识级 |
§2.7 与筛查工作流的对应关系
将数据集映射到真实基层筛查流程,有助于确定模型的验收标准:
| 临床环节 | 对应 AI 任务 | 关键指标 | 数据集支撑 |
|---|---|---|---|
| 患者问诊登记 | 表格特征结构化(21 项) | 字段完整率 | metadata.csv 即问诊数据本身 |
| 手机拍照记录 | 图像质量检查(对焦/曝光/ROI) | 图像可用率 | 官方质量筛选后留存样本 |
| 初筛分诊(是否转诊) | 恶性 vs 良性二分类 | 高召回下的特异性 | 1,229 恶性 vs 1,069 良性 |
| 鉴别诊断辅助 | 六分类 + 混淆对提示 | 逐类 recall、混淆矩阵 | 六类标签 + 部位/直径/症状 |
| 活检决策 | 恶性概率 + 风险因子解释 | 校准曲线(ECE) | 活检子集(58.4%)可作校准集 |
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 大小 | 理由 |
|---|---|---|---|
| 完整可复现基准(图像+metadata) | Mendeley v1 | 3.35 GB | 官方权威发布,含全部 2,298 张 PNG 与 26 列 CSV,CC BY 4.0 |
| 纯表格/快速实验(无图像) | OpenML ID 46630 | ~309 KB CSV | 仅 metadata.csv(26 特征、2,298 行),适合表格模型与统计教学 |
| MLLM/视觉问答评测 | HuggingFace OctoMed/PAD_UFES_20 | 3.63 GB | 附带 GPT-4o 推理轨迹,2,298 行,可直接 load_dataset |
| 与 ISIC 生态联合分析 | ISIC Archive 集合 | 按需 API 拉取 | 2024-11-05 收录;注意 ID 体系换成 ISIC 前缀,与 Mendeley PAT 前缀不兼容(见坑点 8) |
| 云端快速验证 | Kaggle 镜像(mahdavi1202/skin-cancer) | ~3 GB | 免下载上传,但打包时点与官方 v1 可能有差异,须自行核对样本数 |
§3.1 模态详情
- 临床照片(2,298 张 PNG):普通智能手机后摄拍摄(iPhone/Android 多种设备,官方未记录具体型号),无皮肤镜;App 内人工裁剪至病变感兴趣区域;原始图像未经任何算法处理(官方明确建议使用者自行应用颜色恒常等增强)。分辨率从 147×147 到 3474×3476 不等,中位约 780×780。
- 临床元数据(metadata.csv,26 列):每行一张图像样本;5 个 ID 列(patient_id、lesion_id、img_id 等)+ 21 个临床特征列,覆盖人口学(age、gender)、家族史(skin_cancer_history、cancer_history)、社会经济与环境暴露(smoke、drink、pesticide、has_piped_water、has_sewage_system、background_father/mother)、肤型(fitspatrick)、病变属性(region、diameter_1/2、itch、grew、hurt、changed、bleed、elevation)、诊断与确认方式(diagnostic、biopsed)。
- 层级关系:同一病变可有 1-多张图像,同一患者可有 1-多处病变——patient → lesion → image 为 1:N:N 层级,2,298 图对应 1,641 病变对应 1,373 患者。
图像侧属性一览(建模前应知):
| 属性 | 分布/说明 | 对建模的影响 |
|---|---|---|
| 分辨率 | 147×147 至 3474×3476,中位约 780×780 | 统一 resize 时低分辨率端信息损失最大 |
| 拍摄设备 | 多品牌手机混用,型号未记录 | 无法按设备去偏,只能靠增广与颜色恒常 |
| ROI | App 内人工裁剪,含部分背景皮肤/衣物 | 背景捷径风险(坑点 7) |
| 色彩 | 无统一白平衡;官方建议颜色恒常 | 颜色特征(发绀、色素)需谨慎使用 |
| 处理状态 | 原始图像,无任何算法预处理 | 与 ISIC 系列的"预裁剪+染色归一"习惯不同 |
| 格式 | 全部 PNG 无损 | 无压缩伪影干扰 |
§3.2 按子集样本数表
| 诊断类 | 中文名 | 图像数(v1) | 占比 | 活检确认 |
|---|---|---|---|---|
| BCC | 基底细胞癌 | 845 | 36.8% | 100% |
| ACK | 光化性角化病 | 730 | 31.8% | 临床共识 |
| NEV | 痣 | 244 | 10.6% | 临床共识 |
| SEK | 脂溢性角化病 | 235 | 10.2% | 临床共识 |
| SCC | 鳞状细胞癌(含 Bowen 病) | 192 | 8.4% | 100% |
| MEL | 恶性黑色素瘤 | 52 | 2.3% | 100% |
| 合计 | — | 2,298 | 100% | 58.4% |
注:以上为 v1 数据论文 Table 1 统计;不同镜像或不同版本统计中 MEL 等稀有类计数可能出现 45-52 张的出入(详见坑点 8)。
§3.3 格式表
| 内容 | 格式 | 说明 |
|---|---|---|
| 临床图像 | PNG | 尺寸不一(147×147 至 3474×3476),RGB |
| 元数据 | CSV(UTF-8) | metadata.csv,26 列 × 2,298 行;缺失留白,未知填 UNK |
| 布尔字段 | TRUE/FALSE | smoke、drink、itch 等 |
| 校验脚本 | Python | 官方 GitHub sanity_check.py 校验 img_id 与图像对应关系 |
§3.4 存储大小
Mendeley v1 完整包 3.35 GB(ZIP:images 目录 + metadata.csv 309 KB)。HuggingFace OctoMed 镜像 3.63 GB(含推理轨迹)。解压后图像 + CSV 约 3.4-3.7 GB;单卡实验无需降采样,桌面级 SSD 即可承载。对存储敏感的场景可仅保留最长边 ≥224 px 的图像子集(约占总量九成以上)做初版实验。
§3.5 标注方式
人工标注(临床诊断 + 病理确认):诊断不是事后对图像打标签,而是在诊疗流程中自然产生——皮肤科医生团队(≤3 人,≥15 年经验)会诊形成临床意见;疑恶性者手术切除后由 HUCAM 病理单元按标准流程(10% 甲醛固定、石蜡切片、显微判读)出具病理诊断。biopsed 布尔列逐样本标明诊断来源,58.4% 的样本为活检确认。
§3.6 标注者资质与一致性
临床意见由最多 3 名资深皮肤科医生(至少 15 年经验)会诊达成共识;良性病变不做活检属常规临床决策。数据集中未发布标注者间一致性统计(如 Kappa),这是使用时的已知信息缺口;缓解方式是优先在 biopsed=TRUE 子集上评估。
§3.7 采集周期
2018-2019 年持续采集(PAD 义诊例行开展);2017 年底完成采集系统(App + 双服务器)建设。数据集未提供逐样本采集时间戳。
§3.8 地域覆盖
巴西圣埃斯皮里图州(Espírito Santo)11 个内陆城市,多为无互联网农村地区;region 字段将病变部位归为 15 个宏观区域。人群以欧洲移民后代(大量波美拉尼亚裔)与农场劳动者为主。
§3.9 设备规格
患者与医护使用多种消费级智能手机(iPhone 与 Android 设备混用)拍摄;官方未记录逐样本设备型号、焦距或曝光参数——这构成真实的设备异质性(坑点 2、7 的根源),也使"设备去偏"成为开放问题。App 支持人工裁剪 ROI,图像含少量背景皮肤/衣物/光照反射。
采集系统的技术栈(官方开源,可追溯):
| 组件 | 技术 | 角色 |
|---|---|---|
| 手机 App | React-Native(Android/iOS) | 拍照、ROI 裁剪、结构化问诊录入 |
| 本地 Web 服务器 | Angular + Spring-Boot + MySQL | 无网络村庄的现场暂存 |
| 远程 Web 服务器 | 同上 | 数据同步、医生复核界面、随访追踪 |
这一"先建系统、再采数据"的流程解释了 metadata 的工程质量(三级 ID、字段规整、sanity check 可运行),也提示后续建设者:临床数据集的质量上限在采集系统设计阶段就已决定。
§3.10 深度溯源链
| 层级 | 内容 |
|---|---|
| 采集 | React-Native App(Android/iOS)→ 本地 Web 服务器(离线村庄)→ 远程服务器同步(Angular + Spring-Boot + MySQL) |
| 质量控制 | 上传后统一质量筛选(剔除低质量图像)+ metadata 校验脚本(sanity_check.py) |
| 发布 | Mendeley Data v1(2020-07-07,CC BY 4.0)+ Data in Brief 数据论文(同行评审) |
| 代码 | 官方 GitHub(labcin-ufes/PAD-UFES-20):采集软件前后端、sanity_check、EDA notebook |
| 引用闭环 | 方法论文 CBM 2020(DOI 10.1016/j.compbiomed.2019.103545)为数据论文(DOI 10.1016/j.dib.2020.106221)的"original research article" |
§4 数据结构
§4.0 目录树
PAD-UFES-20/ # Mendeley v1 解压后根目录
├── metadata.csv # 26 列 × 2,298 行,每行一个图像样本
└── images/ # 全部临床图像(PNG)
├── imgs_part_1/
│ ├── PAT_8_15_820.png # img_id 即文件名:PAT_{patient}_{lesion}_{rand}
│ ├── PAT_9_17_80.png
│ └── ...
├── imgs_part_2/
│ ├── PAT_587_1117_880.png
│ └── ...
└── imgs_part_3/
├── PAT_1094_381_85.png
└── ...
注:部分镜像(Kaggle、HuggingFace)会将三个子目录合并为单一 images/ 目录或打包为 imgs_part_1.zip/2/3 三个压缩包;加载代码应遍历全部子目录建立 img_id → 路径索引,而不是写死单一目录(见 §6.1)。
§4.1 DAIMS 字段字典(metadata.csv 26 列核心字段)
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| patient_id | string | 患者 ID | PAT_1234 | 患者级分组划分,防泄漏 | 无(代理码) | — | PAT_* |
| lesion_id | string | 病变 ID | 123 | 病变级聚合;同一病变多图 | 无 | — | 正整数 |
| img_id | string | 图像 ID = 文件名 | PAT_1234_123_000 | 图像主键,关联 PNG | 无 | — | PAT___*.png |
| age | integer | 患者年龄 | 65 | 强预测特征(老年→SCC/BCC) | 自报/登记误差 | 留白 | 约 10-100 |
| gender | string | 性别 | MALE | 人口学偏倚分析 | 自报 | 留白/UNK | MALE/FEMALE |
| smoke | boolean | 是否吸烟 | TRUE | 风险因子特征 | 自报偏差 | 留白 | TRUE/FALSE |
| drink | boolean | 是否饮酒 | FALSE | 风险因子特征 | 自报偏差 | 留白 | TRUE/FALSE |
| pesticide | boolean | 农药暴露 | TRUE | 职业暴露风险因子 | 自报偏差 | 留白 | TRUE/FALSE |
| background_father | string | 父亲血源国 | POMERANIA | 族裔/肤色代理变量 | 自报;POMERANIA 非国家名 | UNK | 国名 + POMERANIA |
| background_mother | string | 母亲血源国 | BRAZIL | 同上 | 同上 | UNK | 同上 |
| skin_cancer_history | boolean | 本人/家族皮肤癌史 | TRUE | 强风险因子 | 回忆偏差 | 留白 | TRUE/FALSE |
| cancer_history | boolean | 本人/家族癌症史 | FALSE | 风险因子 | 回忆偏差 | 留白 | TRUE/FALSE |
| has_piped_water | boolean | 家有自来水 | TRUE | 社会经济代理变量 | 登记 | 留白 | TRUE/FALSE |
| has_sewage_system | boolean | 家有排污系统 | FALSE | 社会经济代理变量 | 登记 | 留白 | TRUE/FALSE |
| fitspatrick | integer | Fitzpatrick 肤型 | 2 | 肤色公平性分组(注意官方列名拼写) | 医生评定 | 留白(OpenML 统计缺 804/2,298) | 1-6 |
| region | string | 病变部位(15 宏观区域) | FACE | 部位先验(日晒暴露度) | 登记 | — | FACE/ARM/… |
| diameter_1 | float | 病变水平径(mm) | 15.0 | ABCD 准则的 D 维度 | 手工测量误差 | 留白 | >0 |
| diameter_2 | float | 病变垂直径(mm) | 12.0 | 同上 | 手工测量误差 | 留白 | >0 |
| itch | boolean | 病变瘙痒 | TRUE | 症状特征 | 自报 | 留白 | TRUE/FALSE |
| grew | boolean | 近期增大 | FALSE | 预警症状 | 自报 | 留白 | TRUE/FALSE |
| hurt | boolean | 病变疼痛 | FALSE | 症状特征 | 自报 | 留白 | TRUE/FALSE |
| changed | boolean | 外观改变 | TRUE | 预警症状 | 自报 | 留白 | TRUE/FALSE |
| bleed | boolean | 病变出血 | TRUE | 恶性预警症状 | 自报 | 留白 | TRUE/FALSE |
| elevation | boolean | 是否隆起 | FALSE | 形态特征问诊项 | 自报 | 留白 | TRUE/FALSE |
| diagnostic | string | 诊断标签 | BCC | 分类目标 | 见 §3.6 | — | ACK/BCC/MEL/NEV/SCC/SEK |
| biopsed | boolean | 是否活检确认 | TRUE | 标签质量分层(勿作特征) | — | — | TRUE/FALSE |
§4.2 标签分布
六类比例 BCC:ACK:NEV:SEK:SCC:MEL = 845:730:244:235:192:52(v1 统计,见 §3.2)。最大最小类之比约 16:1(BCC vs MEL);若按恶性 vs 良性聚合则为 1,229 vs 1,069,相对均衡——这解释了为什么同一模型在六分类与二分类任务上报告的数字不可直接比较。MEL 占 2.3%,与 HAM10000(不平衡约 58:1)同量级的"稀有致命类"问题。
不平衡的三个推论:① 6-fold 下每 fold 的 MEL 约 8-9 张,任何按 fold 报告的 MEL recall 都有约 ±10 个百分点的抽样噪声;② WeightedRandomSampler 会让 MEL 在每个 epoch 内被重复采样约 16 倍,须配合较强正则与早停防过拟合;③ 若做两阶段"良恶性 + 恶性细分"级联,第二阶段样本量骤减(1,229 张恶性中 MEL 仅 52),设计上要有显式降级策略。
§4.3 关键统计
- 患者 1,373 人,平均年龄约 60 岁;多数为浅肤色欧洲移民后代、农场劳动者。
- 病变 1,641 处;2,298 张图像 → 平均每病变 1.4 张图、每患者 1.7 张图。
- 58.4% 活检确认(恶性类 100%);对照 HAM10000 的 53.3%。
- OpenML 表格版统计:fitspatrick 缺失 804/2,298(约 35%);全表缺失单元格 10,484;含缺失的行 824/2,298。
- 图像分辨率中位约 780×780,最小 147×147,最大 3474×3476。
§4.4 数据层级
患者 patient_id(1,373)
└── 病变 lesion_id(1,641) # 同一病变随访/多角度可有多图
└── 图像 img_id(2,298) # 建模最小单元;含问诊特征快照
任何 train/val/test 划分都必须在 patient_id 层面切断(同一患者的两张图分属两侧即构成泄漏,见坑点 1);若某患者同病变多图,更严格的做法在 lesion_id 层面分组,避免"同病变近拍两张"造成视觉近重复。
以官方示例 ID 解读层级:img_id PAT_1094_381_355.png 表示患者 PAT_1094 的第 381 号病变的第 355 号随机标识图。数据中未提供逐病变的图像视角说明(如远景/近景),因此同病变多图应默认视为高度相关样本。
§4.5 缺失值与信息性缺失编码表
| 缺失形态 | 编码 | 出现位置 | 建议处理 |
|---|---|---|---|
| 完全缺失 | 空白单元格 | 除 patient_id/lesion_id/img_id/age/region/biopsed 外的所有列;问诊未获答案 | 树模型可用原生 NaN 支持;神经网络建议加"缺失指示位" |
| 未知 | UNK | background_father/mother 等自报项(如不知道父辈血源) | 作为独立类别保留,勿与任何国家合并 |
| 字段级高缺失 | — | fitspatrick 缺约 35%(804/2,298) | 慎作核心特征;公平性分析前先检查分组覆盖率 |
问诊类布尔字段(itch/grew/hurt/changed/bleed/elevation 等)的缺失本身有信息含义——"该项未问/未答"与"FALSE"不可混同,直接把缺失填成 FALSE 会系统性扭曲症状特征分布(见坑点 5 与 §7.1)。
§4.6 五分钟数据质量快检清单
下载数据后建议先跑一遍以下检查(顺序即优先级),任何一项异常都应在建模前解决:
checks = {
"行数 = 2,298": len(df) == 2298,
"img_id 唯一": df["img_id"].is_unique,
"六类白名单无脏值": set(df["diagnostic"].unique()) <= {"ACK","BCC","MEL","NEV","SCC","SEK"},
"图像文件全部找到": df["img_id"].isin(img_paths).all(),
"患者数 = 1,373": df["patient_id"].nunique() == 1373,
"活检占比 ≈ 0.584": abs(df["biopsed"].map({True:1,False:0}).mean() - 0.584) < 0.01,
"恶性类 100% 活检": (df[df.diagnostic.isin(["BCC","MEL","SCC"])]["biopsed"]).all(),
"每 fold MEL 非零(6-fold)": (df[df.diagnostic=="MEL"]["patient_id"].nunique() >= 6),
}
for name, ok in checks.items():
print(("PASS " if ok else "FAIL ") + name)
其中"图像文件全部找到"一项专门检测镜像缺图问题(坑点 8);"每 fold MEL 非零"用于验证患者分组划分可行性(坑点 4)。
§5 划分与使用建议
§5.1 官方划分
数据集本身不内置 train/test 文件。官方方法论文(Pacheco & Krohling, CBM 2020)为全部实验采用 6-fold 交叉验证,fold 按患者分组(patient-level grouping)而非随机打散——同一患者的所有图像固定在同一 fold。后续使用者复制官方协议时,应复现"GroupKFold(n_splits=6, groups=patient_id)"式的划分,而非 sklearn 默认的随机 KFold。
§5.2 社区惯例划分
- 按患者分组 6-fold CV:与官方一致,六分类任务的主流协议。
- 按患者分组的 70/10/20 train/val/test:Deng et al. 2024 用 1,298/1,000 的派生/内部验证切分;社区 MLOps 项目用 GroupShuffleSplit 生成 train/val/test 清单。
- 任务重定义:恶性 vs 良性二分类、MEL vs 其余二分类(官方论文即用后两者辅助分析)。
| 惯例 | 分组键 | 典型用途 | 可比性说明 |
|---|---|---|---|
| 官方 6-fold | patient_id | 论文复现、方法对比 | 与官方基线直接可比 |
| GroupShuffleSplit 70/10/20 | patient_id | 工程迭代、快速实验 | 与 6-fold 数字不可直接比较 |
| 病变级分组 6-fold | lesion_id | 强调多图病变隔离 | 残留患者级协变量泄漏 |
| 活检子集评估 | biopsed 过滤 | 标签质量敏感性 | 样本量降至约 58%,须注明 |
§5.3 划分策略建议与泄漏风险(重点)
按泄漏风险从高到低:
- 图像级随机划分(禁忌):1,373 名患者贡献 2,298 图,随机划分几乎必然让同患者同病变的多图跨集——实测会虚高数个百分点,且 MEL 等稀有类可能整类落入单侧。
- 病变级划分(仍不足):同一患者不同病变共享肤色、部位倾向、光照习惯与问诊特征,病变级分组仍残留患者级协变量泄漏。
- 患者级分组(推荐最低标准):
GroupKFold(groups=patient_id);若做超参搜索,val 也须在同一患者分组约束内产生。 - 严格模式:
groups=patient_id + "_" + lesion_id,同时按 diagnostic 分层,保证每 fold 各类有代表(MEL 仅 52 张,6-fold 下每 fold 约 8-9 张,须检查 fold 内 MEL 非零)。
§5.4 交叉验证建议
- 六分类任务报告 mean ± std(6-fold)的 balanced accuracy / macro-F1,并附逐类 recall(尤其 MEL、SCC)。
- 二分类(恶性 vs 良性)报告 balanced accuracy + AUC + 高召回阈值下的 specificity。
- 复现官方对照:同一组 fold 下分别跑"纯图像"与"图像+临床特征"两个配置,差值即融合增益的稳健估计(官方约 +7%)。
- 超参与模型选择:外层再嵌套一层患者分组的内部验证(或从训练 fold 内再切 20% 患者作 val),确保测试 fold 全程不可见。
- 多随机种子:每 fold 至少 3 个种子取均值,压平 MEL 等稀有类的 fold 间方差后再比较方法。
§5.5 外部验证建议
- 跨域:在 HAM10000/BCN20000(皮肤镜域)上测试 PAD-UFES-20 训练的模型,或反向迁移;预期显著掉点,属域差距而非实现错误。
- 跨人群:Fitzpatrick V-VI 皮肤图像(如 Fitzpatrick 17k 的深肤型子集)上做公平性外推测试。
- 跨设备:用自己的手机实拍小规模测试集(哪怕每类 10 张)检验光照/对焦敏感性。
§5.6 使用前合规与检查清单
| 步骤 | 动作 | 产出 |
|---|---|---|
| 1 | 从 Mendeley 官方页下载 v1 并记录 MD5 | 数据来源凭证(CC BY 4.0 合规) |
| 2 | 运行官方 sanity_check.py + §4.6 快检 | 数据完整性报告 |
| 3 | 冻结 patient 分组 6-fold 文件并入库(DVC/Git LFS) | 不可变划分,全实验共用 |
| 4 | 声明特征黑名单(biopsed、img_id 派生量如分辨率) | 防泄漏清单 |
| 5 | 论文/产品引用:数据论文 DOI + 数据集 DOI + 镜像版本说明 | 署名合规 |
| 6 | 若涉及临床部署:本地伦理审查 + 医生复核界面设计 | 监管与安全 |
§6 AI 就绪指南 ⭐
§6.0 云端快速启动
Kaggle 镜像(mahdavi1202/skin-cancer)可直接挂载于 Kaggle Notebook;HuggingFace OctoMed 镜像支持 load_dataset("OctoMed/PAD_UFES_20") 一行加载(注意其为 MLLM 评测形态,含推理轨迹列)。Colab 免费档(约 12.7 GB RAM + T4)足以完成 §6.4 的 DataLoader 构建与 ResNet18 级训练。
§6.1 快速上手
# 目录结构预期(Mendeley v1 解压后):
# data_root/
# ├── metadata.csv # 26 列 × 2,298 行
# └── images/
# ├── imgs_part_1/*.png
# ├── imgs_part_2/*.png
# └── imgs_part_3/*.png
# data_root 与文件名的拼接关系:img_id 列的值即 PNG 文件名(如 PAT_8_15_820.png),
# 但分散在三个子目录中,因此必须先扫描全部子目录建立 img_id → 绝对路径索引。
# 最小可用子集:仅 metadata.csv(309 KB)即可跑通表格基线与全部数据质量审计。
import pandas as pd
from pathlib import Path
DATA_ROOT = Path("data/PAD-UFES-20")
df = pd.read_csv(DATA_ROOT / "metadata.csv")
# 1) 标签白名单过滤:剔除 diagnostic 列中的脏值/空行(如 BKP,见坑点 6)
VALID = {"ACK", "BCC", "MEL", "NEV", "SCC", "SEK"}
df = df[df["diagnostic"].isin(VALID)].reset_index(drop=True)
# 2) 建立 img_id → 文件路径索引(兼容单目录与三子目录两种镜像布局)
img_paths = {}
for p in (DATA_ROOT / "images").rglob("*.png"):
img_paths[p.name] = p
df["img_path"] = df["img_id"].map(img_paths)
missing = df["img_path"].isna().sum()
print(f"metadata 行数: {len(df)}, 未匹配到图像的行数: {missing}")
# 3) 30 秒体检:标签分布 + 患者数 + 活检占比
print(df["diagnostic"].value_counts())
print("患者数:", df["patient_id"].nunique())
print("活检占比:", df["biopsed"].map({True: 1, False: 0}).mean().round(3))
§6.2 数据获取
| 渠道 | 链接 | 形式 | 大小 | 要求 |
|---|---|---|---|---|
| Mendeley Data(官方) | zr7vgbcyr2 | ZIP(images + metadata.csv) | 3.35 GB | 无需注册,CC BY 4.0 |
| Kaggle 镜像 | mahdavi1202/skin-cancer | 数据集 | ~3 GB | Kaggle 账号 |
| OpenML 表格版 | ID 46630 | ARFF/CSV(仅 metadata) | ~309 KB | 无 |
| HuggingFace(MLLM 形态) | OctoMed/PAD_UFES_20 | parquet + 图像 | 3.63 GB | 无 |
| ISIC Archive 集合 | collections | API 拉取 | 按需 | ISIC 账号;ID 前缀与 Mendeley 不同 |
各渠道目录布局差异(加载代码必须兼容):
| 渠道 | 图像布局 | metadata 位置 | 已知差异 |
|---|---|---|---|
| Mendeley v1 | images/imgs_part_1/2/3/ | 根目录 metadata.csv(309 KB) | 权威基准 |
| Kaggle | 多为合并后单目录 | metadata.csv 同上或重命名 | 打包时点早于/异于 v1 须对账 |
| HuggingFace | all_images/ 或 imgs_part_*.zip | metadata.csv + splits/ | 社区项目附带患者安全划分 |
| OpenML | 无图像 | ARFF(26 特征) | 仅表格;biopsed 被设为默认目标 |
| ISIC | ISIC 图像库条目 | 经 API(含原始元数据) | img_id 全部改为 ISIC 前缀,无法直接 join(坑点 8) |
# 官方 v1 完整包直链下载(约 3.35 GB,CC BY 4.0)
wget -c "https://data.mendeley.com/public-api/zip/zr7vgbcyr2/download/1" -O pad-ufes-20-v1.zip
unzip pad-ufes-20-v1.zip -d data/PAD-UFES-20
# 下载后务必运行官方 sanity check:
# git clone https://github.com/labcin-ufes/PAD-UFES-20 && \
# python PAD-UFES-20/sanity_check/sanity_check.py
§6.3 预处理全流程
# 流程:白名单清洗 → 布尔规整 → 表格特征编码 → 图像标准化
# 依赖:pip install pandas scikit-learn torch torchvision pillow
import numpy as np
BOOL_COLS = ["smoke", "drink", "pesticide", "skin_cancer_history", "cancer_history",
"has_piped_water", "has_sewage_system", "itch", "grew", "hurt",
"changed", "bleed", "elevation", "biopsed"]
def clean_tabular(df: pd.DataFrame) -> pd.DataFrame:
df = df.copy()
# 1) 布尔列规整:TRUE/FALSE → 1/0;空白与 UNK 统一为 NaN(缺失指示随后补位)
for c in BOOL_COLS:
if c in df.columns:
df[c] = df[c].map({"TRUE": 1, "FALSE": 0}).astype("float")
# 2) 高基数文本列按"缺失也是类别"处理
for c in ["background_father", "background_mother", "region", "gender"]:
df[c] = df[c].fillna("MISSING").replace("UNK", "UNKNOWN")
# 3) 数值列缺失掩码(信息性缺失显式化)
for c in ["age", "diameter_1", "diameter_2", "fitspatrick"]:
df[f"{c}_na"] = df[c].isna().astype(int)
return df
tabular = clean_tabular(df)
# 图像侧:颜色恒常(官方论文建议)+ 统一尺寸
import cv2
def shade_of_gray_cc(img_bgr: np.ndarray) -> np.ndarray:
"""Shade-of-Grey 颜色恒常(p=6 幂平均),缓解多设备色温差异。"""
img = img_bgr.astype(np.float32) + 1.0
power = 6
illum = np.power(np.power(img, power).mean(axis=(0, 1)), 1.0 / power)
return np.clip(img * (illum.mean() / illum), 0, 255).astype(np.uint8)
def load_and_normalize(path, size=224):
img = cv2.cvtColor(cv2.imread(str(path)), cv2.COLOR_BGR2RGB)
img = shade_of_gray_cc(img)
img = cv2.resize(img, (size, size), interpolation=cv2.INTER_AREA)
return img
§6.4 PyTorch DataLoader(图像+表格多模态)
<details>
<summary>完整可运行代码(Dataset 类 + transform + DataLoader 实例化,点击展开)</summary>
# 预期目录:见 §6.1 注释;data_root 拼接关系:img_id 即文件名,索引覆盖三个 imgs_part_* 子目录。
# 本例实现:患者分组的 6-fold 划分 + 图像/表格双路输入 + 类别加权采样。
import torch
from torch.utils.data import Dataset, DataLoader, WeightedRandomSampler
from torchvision import transforms
from sklearn.model_selection import GroupKFold
from sklearn.preprocessing import OneHotEncoder
from PIL import Image
LABELS = ["ACK", "BCC", "MEL", "NEV", "SCC", "SEK"]
CAT_COLS = ["gender", "region", "background_father", "background_mother"]
NUM_COLS = ["age", "diameter_1", "diameter_2", "fitspatrick",
"smoke", "drink", "pesticide", "skin_cancer_history", "cancer_history",
"has_piped_water", "has_sewage_system",
"itch", "grew", "hurt", "changed", "bleed", "elevation"]
train_tf = transforms.Compose([
transforms.RandomResizedCrop(224, scale=(0.7, 1.0)),
transforms.RandomHorizontalFlip(),
transforms.ColorJitter(0.2, 0.2, 0.2), # 模拟手机光照差异
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
])
eval_tf = transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
])
class PadUfesDataset(Dataset):
"""图像 + 临床元数据双输入数据集。df 须已按 §6.3 清洗并含 img_path 列。"""
def __init__(self, df, ohe: OneHotEncoder, fit_ohe=False):
self.df = df.reset_index(drop=True)
if fit_ohe:
ohe.fit(self.df[CAT_COLS])
self.ohe = ohe
cats = ohe.transform(self.df[CAT_COLS]).toarray() if hasattr(ohe, "transform") else ohe.transform(self.df[CAT_COLS])
nums = self.df[NUM_COLS].fillna(0).to_numpy(dtype=np.float32)
# 数值列粗略标准化(生产中请用 train fold 统计量)
nums = (nums - nums.mean(0)) / (nums.std(0) + 1e-6)
self.tab = np.hstack([nums, cats.astype(np.float32)])
self.labels = self.df["diagnostic"].map({c: i for i, c in enumerate(LABELS)}).to_numpy()
def __len__(self):
return len(self.df)
def __getitem__(self, i):
row = self.df.iloc[i]
img = Image.open(row["img_path"]).convert("RGB")
return train_tf(img) if self.training else eval_tf(img), \
torch.from_numpy(self.tab[i]), int(self.labels[i])
# ---- 患者分组 6-fold(官方协议的等价实现)----
gkf = GroupKFold(n_splits=6)
tr_idx, te_idx = next(gkf.split(tabular, tabular["diagnostic"], groups=tabular["patient_id"]))
tr_df, te_df = tabular.iloc[tr_idx], tabular.iloc[te_idx]
ohe = OneHotEncoder(handle_unknown="ignore", sparse_output=False)
tr_ds = PadUfesDataset(tr_df, ohe, fit_ohe=True); tr_ds.training = True
te_ds = PadUfesDataset(te_df, ohe); te_ds.training = False
# 类别加权采样对抗不平衡(MEL 仅 52 张)
counts = np.bincount(tr_ds.labels, minlength=len(LABELS))
weights = 1.0 / counts[tr_ds.labels]
sampler = WeightedRandomSampler(weights, num_samples=len(tr_ds), replacement=True)
train_loader = DataLoader(tr_ds, batch_size=32, sampler=sampler, num_workers=4, pin_memory=True)
test_loader = DataLoader(te_ds, batch_size=64, shuffle=False, num_workers=4, pin_memory=True)
print(f"train {len(tr_ds)} / test {len(te_ds)} | 表格特征维度 {tr_ds.tab.shape[1]}")
</details>
<details>
<summary>训练与验证循环(双输入模型 + 逐类指标,点击展开)</summary>
import torch.nn as nn
from torchvision.models import resnet18, ResNet18_Weights
from sklearn.metrics import balanced_accuracy_score
class FusionNet(nn.Module):
"""图像主干(ResNet-18)+ 表格 MLP,特征拼接后分类。"""
def __init__(self, tab_dim: int, n_classes: int = 6):
super().__init__()
backbone = resnet18(weights=ResNet18_Weights.IMAGENET1K_V1)
self.img_feat = nn.Sequential(*list(backbone.children())[:-1])
self.tab_net = nn.Sequential(
nn.Linear(tab_dim, 64), nn.ReLU(), nn.Dropout(0.3), nn.Linear(64, 32)
)
self.head = nn.Linear(512 + 32, n_classes)
def forward(self, img, tab):
f_img = self.img_feat(img).flatten(1)
f_tab = self.tab_net(tab)
return self.head(torch.cat([f_img, f_tab], dim=1))
device = "cuda" if torch.cuda.is_available() else "cpu"
model = FusionNet(tab_dim=tr_ds.tab.shape[1]).to(device)
# 加权交叉熵双保险(与 WeightedRandomSampler 二选一或叠加调权)
class_w = torch.tensor((counts.sum() / (len(counts) * counts)), dtype=torch.float32, device=device)
opt = torch.optim.AdamW(model.parameters(), lr=3e-4, weight_decay=1e-4)
crit = nn.CrossEntropyLoss(weight=class_w)
for epoch in range(10):
model.train(); tr_ds.training = True
for img, tab, y in train_loader:
img, tab, y = img.to(device), tab.to(device), y.to(device)
opt.zero_grad()
loss = crit(model(img, tab), y)
loss.backward(); opt.step()
model.eval(); tr_ds.training = False
preds, trues = [], []
with torch.no_grad():
for img, tab, y in test_loader:
logits = model(img.to(device), tab.to(device))
preds += logits.argmax(1).cpu().tolist(); trues += y.tolist()
print(f"epoch {epoch}: test bACC = {balanced_accuracy_score(trues, preds):.4f}")
</details>
§6.5 坑点 8 个(真实特有失败模式)
⚠️ 坑点 1:官方 6-fold 划分按患者分组,随机 KFold 会造成患者级泄漏(分类:数据泄漏)
问题:2,298 张图像来自 1,373 名患者、1,641 处病变——约 43% 的患者有多张图、每病变平均 1.4 张图。若用随机 KFold/train_test_split,同患者甚至同病变的近拍图像会同时出现在训练与测试集中,模型只需"认人/认病变"而非学习病变形态。
症状:balanced accuracy 高得可疑(如纯图像即可达 0.9+);换到外部数据(HAM10000 或自采手机图)性能断崖式下跌;同患者图像的预测高度一致。
解决:
- 简单方法:
GroupKFold(n_splits=6, groups=df["patient_id"])替换所有随机划分;社区项目(如 HF 镜像的 make_image_splits)同样按 patient_id 分组生成 train/val/test 清单。- 进阶方法:
groups = patient_id + "_" + lesion_id做病变级隔离,再用StratifiedGroupKFold按标签分层,逐 fold 检查 MEL 计数非零(MEL 仅 52 张,6-fold 下每 fold 约 8-9 张)。- SOTA 方法:冻结一组 fold 文件随代码发布(官方 CBM 论文即按患者分组 6-fold),所有对比模型共用同一组 fold,保证增益可归因于方法而非划分随机性。
参考:Pacheco & Krohling, Comput. Biol. Med. 116:103545, 2020(arXiv:1909.12912);HuggingFace SalmaneExploring/pad-ufes-20 的 split protocol。
⚠️ 坑点 2:智能手机图像的色彩与对焦质量差异,直接喂原图会学到"设备指纹"(分类:预处理陷阱)
问题:图像由多品牌手机在 11 个城市的诊室拍摄,分辨率 147×147 至 3474×3476、白平衡与锐度各异;官方明确声明未做任何图像处理。CNN 极易将色温、噪声风格当作预测线索。
症状:Grad-CAM 高亮区域落在病变边缘之外(背景/阴影);训练时加"按设备分组"的伪影特征后性能反而下降;换手机拍摄的验证图像集体偏向某几类。
解决:
- 简单方法:所有图像统一 resize 到 224×224 并做 Shade-of-Grey / Grey-World 颜色恒常(官方论文点名建议 color constancy)。
- 进阶方法:训练管线加入 ColorJitter(亮度/对比度/饱和度 0.2-0.4)与随机 gamma;按图像尺寸分桶检查误差分布,识别低分辨率子集(147×147 级别)的失效模式。
- SOTA 方法:对比学习/风格增广(如 style transfer 域随机化)+ 在颜色恒常前后各评估一次报告差值;引用 ISIC 颜色恒常文献(Barata et al., 2014)作为方法依据。
参考:Pacheco et al., Data in Brief 32:106221, 2020(官方"no image processing + color constancy suggestion");Barata et al., IEEE JBHI 2014。
⚠️ 坑点 3:仅用图像不如图像+临床特征融合——丢掉 metadata 等于自降 7 个点(分类:偏倚陷阱)
问题:该数据集的核心设计就是"图像+问诊特征";官方对照实验证明融合临床数据平均提升约 7% balanced accuracy,且统计显著。只跑图像基线会系统性低估任务难度,也让消融分析失去参照系。
症状:六分类性能卡在某个平台期;误差分析发现误判样本多为"临床线索明显"的病例(如 80 岁患者面部出血性病变判为 NEV)。
解决:
- 简单方法:数值+独热表格特征过 MLP 后与 CNN 特征拼接(late fusion),§6.4 代码可直接改造。
- 进阶方法:注意力融合 MetaBlock(Pacheco & Krohling, IEEE JBHI 2021):用 metadata 对图像特征逐通道加权,突出与临床线索一致的视觉特征;三源融合(CNN 深度特征 + 手工视觉特征 + 临床特征)在官方后续工作中最佳(Mendes & Krohling, Heliyon 2022)。
- SOTA 方法:交叉注意力 transformer 融合 + 模态缺失鲁棒训练(metadata 缺失率 35% 级别,见坑点 5);报告"纯图像 vs 融合"双配置以量化增益。
参考:Pacheco & Krohling, CBM 2020;Pacheco & Krohling, IEEE JBHI 25(9):3554-3563, 2021;Mendes & Krohling, Heliyon 2022。
⚠️ 坑点 4:MEL 类仅约 45-52 张,六分类指标会被"多数类海洋"淹没(分类:评估误用)
问题:v1 统计 MEL 52/2,298(约 2.3%,部分镜像/划分后统计约 45 张),而 BCC 845 张。accuracy 几乎不反映 MEL 识别能力;一个把所有样本判为 BCC/ACK 的模型 accuracy 也能很高。
症状:accuracy 与 macro-F1 差距巨大;fold 间 MEL recall 方差极大(每 fold 仅约 8-9 张 MEL,一两张的出入就是十几个百分点)。
解决:
- 简单方法:以 balanced accuracy / macro-F1 / 逐类 recall 为主指标;WeightedRandomSampler 或加权交叉熵。
- 进阶方法:Focal Loss + 二阶段训练(先平衡采样粗训练,再按类先验校准);对恶性 vs 良性二分类单独调阈值,优先保障 MEL recall。
- SOTA 方法:过采样+MixUp/CutMix 条件增广、少样本迁移(MEL 与 SEK 视觉相似先验)、及 6-fold 逐类结果全量披露;比较时不与 ISIC 大规模 MEL 模型直接对标(域不同)。
参考:Pacheco et al., Data in Brief 2020(不平衡表,对比 HAM10000 58:1);Pacheco & Krohling, CBM 2020。
⚠️ 坑点 5:诊断由活检与临床共识混合确认,biopsed 列不能当模型特征(分类:标签理解)
问题:58.4% 样本为活检确认(恶性类 100%),良性类为皮肤科医生共识。biopsed 列与诊断强相关(恶性几乎全为 TRUE),塞进特征等于把答案泄漏进输入;更隐蔽的是两类标签的证据等级不同——模型可能学到"问诊特征模式 → 恶性"的捷径,因为恶性类的确认流程本身与良性不同。
症状:加入 biopsed 后性能暴涨但在外部数据上完全失效;"活检子集 vs 共识子集"上误差率差异显著。
解决:
- 简单方法:建模特征列表显式排除 biopsed(社区项目已在数据卡中警告);评估时分层报告活检子集与共识子集的性能。
- 进阶方法:把"是否活检"视为标签噪声指标,仅在 biopsed=TRUE 子集上做敏感性分析;问诊特征做缺失指示位而非填 FALSE(良性类的问诊缺失模式与恶性不同,直接填充会放大数据泄漏式捷径)。
- SOTA 方法:标签噪声鲁棒训练(co-teaching/噪声转移矩阵),并用病理确认子集做校准(temperature scaling)后再全量部署。
参考:Data in Brief 2020 伦理与验证章节;HuggingFace SalmaneExploring/pad-ufes-20 数据卡 Limitations。
⚠️ 坑点 6:diagnostic 列混入脏值(如 BKP)与空行,直接 value_counts 会翻车(分类:工程陷阱)
问题:metadata.csv 由多名学生在义诊现场录入,diagnostic 列除六类合法取值外存在少量脏值/空行(社区复现中出现过 BKP 等非病变取值);背景类字段(background_father/mother)还存在 POMERANIA 这类非国家名的特殊取值。
症状:OneHotEncoder 维度比预期多;df["diagnostic"].value_counts()出现来历不明的类;label_map 构建时 KeyError。
解决:
- 简单方法:加载后立即过滤白名单
{ACK,BCC,MEL,NEV,SCC,SEK}(§6.1 代码第 1 步),并打印被剔除行人工确认。- 进阶方法:用官方 sanity_check.py(GitHub)校验 img_id-图像对应与字段异常;对 background_* 列保留 UNK 为独立类别(勿并入最高频国家)。
- SOTA 方法:把数据校验固化为 CI 步骤(pandera/great-expectations schema),镜像更新时自动跑差异报告。
参考:官方 GitHub labcin-ufes/PAD-UFES-20(sanity_check);OpenML ID 46630 字段统计。
⚠️ 坑点 7:光照与背景(皮肤区域占比)捷径学习——模型可能在看"背景"看病(分类:偏倚陷阱)
问题:手机照片仅人工裁剪,病变在画面中占比不一,大量背景皮肤、衣物、阴影入镜;病变颜色/背景亮度与诊断存在统计相关(如 SCC 多见于老年暴露部位、NEV 图像常更均匀),模型可凭颜色分布与背景纹理"猜"诊断。
症状:只用背景补丁(遮掉病变)训练也能得到远高于随机的 accuracy;对病变区域做遮罩/扰动后预测不变;Fitzpatrick 深肤型子集性能显著更差(数据集以浅肤色为主)。
解决:
- 简单方法:颜色恒常(坑点 2)+ 随机裁剪缩放(scale 0.7-1.0)强制模型看向病变局部;训练时用病变分割掩码裁剪(官方团队发布过智能手机图像分割模型,de Angelo et al., IJCNN 2019)。
- 进阶方法:梯度遮罩敏感性测试(把病变遮住看预测翻转程度)作为验收门槛;按 region/肤色分组报告误差。
- SOTA 方法:域对抗/不变风险最小化(IRM)压制背景线索;Grad-CAM + SHAP 联合审计(Deng et al., 2024 的可解释性流程可直接复用)。
参考:Data in Brief 2020(图像未处理声明);Deng et al., 2024(Grad-CAM/SHAP 审计范式);de Angelo et al., IJCNN 2019(分割)。
⚠️ 坑点 8:v1/v2/v3 版本与各镜像的图像数量差异——复现前先对账(分类:工程陷阱)
问题:Mendeley v1(2020-07-07)为当前官方发布(2,298 图、3.35 GB),但数据集早期版本与各社区镜像(Kaggle、HuggingFace 多家、ISIC Archive、OpenML)打包时点不同:文献中对 MEL 计数存在 52(v1 论文表)与约 45(部分复现统计)两种口径;ISIC 版本将 ID 全部替换为 ISIC 前缀,与 Mendeley 的 PAT 前缀体系不兼容;部分镜像还把脂溢性角化病写作 SEP 而非 SEK。
症状:跑通别人的代码但样本数对不上(2,298 vs 少几十张);从 ISIC 拉的图像无法与 Mendeley metadata.csv 直接 join;跨论文比较时"同数据集不同 N"。
解决:
- 简单方法:一切以 Mendeley 官方 v1 为准(2,298 图/1,373 患者/1,641 病变),下载后先运行 img_id 覆盖率检查(§6.1)并记录 N 进实验日志。
- 进阶方法:混合来源时以 metadata.csv 为主键重建索引,ISIC 来源图像单独标记并验证诊断映射;为 SEK/SEP 建立别名表。
- SOTA 方法:复现实验时公布"数据对账单"(各版本/镜像计数、MD5、覆盖率),社区多模态项目已明确警告勿混用 ISIC API 版本与 Mendeley 版本。
参考:Mendeley Data zr7vgbcyr2(v1 页面);ISIC Archive collections(2024-11-05 收录页);GitHub Sourav-02121996/multimodal-skin-cancer-detection(ISIC ID 不兼容警告)。
§6.6 数据增强(安全 ✅ / 危险 ❌)
| 增强 | 结论 | 理由 |
|---|---|---|
| 随机裁剪/缩放(scale≥0.7) | ✅ | 强迫模型关注病变局部,抑制背景捷径 |
| 水平/垂直翻转 | ✅ | 病变方向无诊断语义 |
| 亮度/对比度/饱和度抖动 + 随机 gamma | ✅ | 模拟多设备色温与光照(配合颜色恒常) |
| Shade-of-Grey / Grey-World 颜色恒常 | ✅ | 官方论文点名的推荐增强 |
| 颜色通道强度化(大量随机 hue) | ❌ | 红色→紫色的色相旋转会破坏发绀/色素沉着等关键颜色语义 |
| 剧烈弹性形变 | ❌ | 破坏病变边界形态(不规则边缘是恶性线索) |
| 用背景/衣物纹理做 Mosaic 拼接 | ❌ | 恰好放大背景捷径(坑点 7) |
| 对测试集做任何形式增广 | ❌ | 评估失真;TTA 除外且须声明 |
§6.7 模型推荐表
| 模型 | 输入 | 适用场景 | 备注 |
|---|---|---|---|
| ResNet-18/50(ImageNet 预训练) | 图像 | 基线与消融 | 官方 CBM 论文即以此类为主干 |
| EfficientNet-B0/B2 | 图像 | 低算力移动端 | 小图(147×147)友好 |
| DenseNet-121 | 图像 | 与文献可比 | Deng et al. 2024 采用 |
| CNN + MLP 拼接(late fusion) | 图像+表格 | 官方融合基线复现 | 约 +7% balanced accuracy 起点 |
| MetaBlock(注意力融合) | 图像+表格 | 融合方法研究 | JBHI 2021,代码开源(paaatcha/MetaBlock) |
| ConvMixer/轻量骨干 + XGBoost | 图像特征+表格 | 可解释集成 | 2024-2025 社区常见组合 |
| TabNet / GBDT | 仅表格 | 临床特征消融 | 评估 metadata 单模态上限 |
| MLLM(GPT-4o 级) | 图像+指令 | 零样本评测参考 | OctoMed 2025 已建立评测形态 |
§6.8 硬件需求表
| 配置 | 显存/内存 | 可行内容 |
|---|---|---|
| 笔记本 CPU(16 GB RAM) | 无 GPU | 表格基线、数据审计、metadata 分析(OpenML 版 309 KB) |
| 单卡 8 GB(RTX 3060/T4) | 8 GB | ResNet-18 级 224×224 全量训练(batch 32) |
| 单卡 16-24 GB(4090/A10) | 16-24 GB | EfficientNet-B2 + 融合模型 + Grad-CAM 审计 |
| 全量 6-fold × 多模型对比 | 上述任一 + 时间 | 每配置约数小时级(2,298 张图规模很小) |
§6.9 评估指标代码
# 六分类 + 良恶性二分类双报告;重点:balanced accuracy、逐类 recall、MEL 敏感性
from sklearn.metrics import (balanced_accuracy_score, f1_score, recall_score,
confusion_matrix, classification_report)
import numpy as np
y_true, y_pred = np.array(trues), np.array(preds) # 来自验证循环
labels = ["ACK", "BCC", "MEL", "NEV", "SCC", "SEK"]
print("balanced accuracy:", balanced_accuracy_score(y_true, y_pred).round(4))
print("macro-F1:", f1_score(y_true, y_pred, average="macro").round(4))
print(classification_report(y_true, y_pred, target_names=labels, digits=3))
cm = confusion_matrix(y_true, y_pred, labels=range(6))
mel_recall = cm[labels.index("MEL"), labels.index("MEL")] / cm[labels.index("MEL")].sum()
print(f"MEL sensitivity: {mel_recall:.3f}")
# 良恶性二分类视图
MALIGNANT = {"BCC", "MEL", "SCC"}
bin_true = np.isin(y_true, [labels.index(c) for c in MALIGNANT]).astype(int)
bin_pred = np.isin(y_pred, [labels.index(c) for c in MALIGNANT]).astype(int)
print("binary balanced acc:", balanced_accuracy_score(bin_true, bin_pred).round(4))
补充两个该数据集特有的评估纪律:
- 逐 fold 逐类披露:MEL 每 fold 仅约 8-9 张,必须给出 6-fold 的 mean ± std 而非单 fold 数字,否则稀有类结论不可信。
- 活检/共识分层报告:在 biopsed=TRUE 与 FALSE 子集上分别计算指标;两者差距过大说明模型在利用"标签证据等级"而非病变本身(坑点 5 的验收指标)。
§6.9b 推理与分诊输出脚本
# 部署形态:输出"转诊概率 + 依据特征",而不是诊断结论
import torch.nn.functional as F
def triage_predict(model, img_path, tab_vector, malignant_ids=(1, 4, 2)):
model.eval()
img = eval_tf(Image.open(img_path).convert("RGB")).unsqueeze(0).to(device)
tab = torch.from_numpy(tab_vector).unsqueeze(0).to(device)
with torch.no_grad():
prob = F.softmax(model(img, tab), dim=1).squeeze(0).cpu()
p_malignant = prob[list(malignant_ids)].sum().item() # ACK=0,BCC=1,MEL=2,NEV=3,SCC=4,SEK=5
top = prob.argmax().item()
return {
"malignant_probability": round(p_malignant, 3),
"recommend_referral": p_malignant >= 0.30, # 阈值按召回优先校准后确定
"top_class": LABELS[top],
"disclaimer": "triage support only, not a diagnosis",
}
§6.10 MLOps 笔记
- 数据版本化:锁定 Mendeley v1 的下载 MD5;DVC/LFS 管理图像与 fold 文件;记录 metadata.csv 行数与六类计数作为数据契约。
- 实验追踪:每 run 记录 fold 索引、颜色恒常开关、融合配置(图像 only / +表格),官方增益(约 +7%)作为回归测试阈值。
- 校准与部署:部署前在活检子集上做温度缩放;输出"转诊概率"而非诊断结论,并按科室工作流设定高召回阈值。
- 监控:线上收集设备型号/光照元数据,监测按设备分桶的预测分布漂移;深肤型样本命中率单独告警(公平性 KPI)。
- 复现打包:发布 fold 文件 + 随机种子 + requirements;对账单(坑点 8)写入 README。
- 数据卡发布:衍生版本(清洗/划分后)发布时应附数据卡:样本数对账、六类计数、缺失统计、与官方 v1 的差异说明,并保留 CC BY 4.0 署名与原始 DOI 链接。
- 失败模式预案:灰度上线时准备"低置信即转人工"的降级路径;对背景捷径(坑点 7)与标签证据不对称(坑点 5)分别设置验收红线(遮罩敏感度、活检/共识子集差距)。
§7 质量评估与局限性
§7.1 已知偏倚表
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 人群偏倚 | 浅肤色欧洲移民后代、农场劳动者、平均约 60 岁、巴西一州 11 城 | 高 | 外部验证(深肤型数据集/自采);公平性分组评估(§7.5) |
| 流行率偏倚 | 义诊+疑恶性转诊流程使恶性类占比远高于自然人群 | 中 | 部署前按目标人群先验重新校准阈值 |
| 标签证据不对称 | 恶性=病理金标准;良性=临床共识,且良性不做活检 | 中 | 活检子集敏感性分析(坑点 5) |
| 设备/成像偏倚 | 多品牌手机、无皮肤镜、光照不可控、无设备记录 | 高 | 颜色恒常+强增广;按图像质量分桶评估(坑点 2) |
| 捷径学习风险 | 背景皮肤/衣物、皮肤区域占比与诊断相关 | 高 | 病变聚焦裁剪/分割、遮罩敏感性测试(坑点 7) |
| 缺失信息性 | 问诊缺失与诊断路径相关(fitspatrick 缺约 35%) | 中 | 缺失指示位;缺失模式作为审查对象(§4.5) |
| 字段脏值 | diagnostic 列 BKP 等非六类值、POMERANIA 特殊取值 | 低 | 白名单过滤+schema 校验(坑点 6) |
§7.2 标注质量
恶性三类 100% 活检确认(HUCAM 病理单元标准流程),标签可信度等同金标准;良性三类由 ≤3 名 ≥15 年经验的皮肤科医生会诊共识确认,未发布标注者间一致性系数。整体 58.4% 活检率高于 HAM10000(53.3%),在临床影像数据集中属较高水平。质量筛选环节曾剔除低质量图像,现存图像即"筛选后总体"——注意这构成轻度选择偏差(极低质量图像的分布未涵盖)。
对标签证据等级的三点实操提醒:
- 交界情形(如 SEK 与 BCC 难分)在良性类中可能被"共识"掩盖,而恶性类中不存在对应问题——比较类间错误率时须记住这一不对称的来源。
- biopsed=FALSE 不等于"确定良性",而是"临床共识为良性且未做活检",表述与建模都应遵循这一定义。
- 建议在论文中同时报告"全量六分类"与"活检子集"两组结果,审稿人对该数据集的两个问题(泄漏与标签等级)几乎必问其一。
§7.3 泛化性表
| 目标场景 | 失效风险 | 证据 |
|---|---|---|
| 深肤色人群(Fitzpatrick IV-VI) | 高:数据集以浅肤色为主,深肤型病变视觉表征覆盖不足 | JMIR 2025 对该数据集人群构成的分析;Fitzpatrick 17k 文献的跨肤型差距 |
| 皮肤镜域模型互迁 | 高:手机照片与皮肤镜域差距大,双向迁移均显著掉点 | 数据集定位(无皮肤镜)与 ISIC 域文献共识 |
| 儿童/年轻患者 | 中高:平均年龄约 60 岁,低龄样本稀少 | 年龄分布(Data in Brief Fig.3) |
| 非巴西人群/不同光线环境 | 中:设备与光照异质性已内嵌训练分布,但环境谱仍有限 | 官方"特定地区特定人群"声明 |
| 自治诊断(无医生复核) | 不可接受:标签证据不对称+少数类稀少 | 官方与社区数据卡均定位为辅助分诊 |
§7.4 伦理
采集获 UFES 伦理委员会批准(nº 500002/478)与巴西 Plataforma Brasil 批准(nº 4.007.097),全体患者签署知情同意;发布数据不含姓名等直接标识(代理 ID + 裁剪 ROI 图像)。使用建议:在诊疗决策相关应用中重新走本地伦理审查;发布衍生模型时声明 CC BY 4.0 署名义务。
两点延伸思考:其一,图像虽经 ROI 裁剪且不含面部,但皮肤影像理论上可能携带可识别信息(纹身、特殊痣型),再分发衍生内容时应保持同样的裁剪纪律;其二,数据来自"免费医疗换同意"的义诊语境,弱势人群的同意自愿性需要在再利用(尤其商业化)时谨慎评估——这也被 JMIR 2025 对该数据集的"社会建构类别"分析所强调。
§7.5 公平性
数据集自带 fitspatrick(1-6)与 gender、region 字段,是少数支持按肤型做公平性切片的临床照片基准:Deng et al. 2024 提供了按 Fitzpatrick 分组的性能分析范式(clinical/image/multimodal 三模型 × 肤型子集)。注意两个技术细节:官方列名拼写为 fitspatrick;该字段缺失约 35%,做公平性分析前必须报告分组覆盖率,否则"缺失非随机"本身会扭曲结论。
| 公平性维度 | 数据集内字段 | 已知风险 | 建议分析 |
|---|---|---|---|
| 肤型 | fitspatrick(1-6,缺约 35%) | 浅肤型主导,深肤型覆盖不足 | 分组 bACC + 差距(gap)报告 |
| 性别 | gender | 病变部位分布与性别相关 | 分组误差 + 校准曲线 |
| 年龄 | age(平均约 60) | 低龄稀少 | 年龄分桶误差曲线 |
| 部位 | region(15 宏观区域) | 暴露/遮挡部位先验 | 逐部位混淆矩阵 |
| 社会经济 | has_piped_water、has_sewage_system、background_* | 代理变量敏感 | 仅作偏倚审计,不作部署特征 |
§7.6 数据漂移
数据采集于 2018-2019 年:手机相机硬件(多摄、计算摄影)此后快速迭代,新手机照片的噪声/色彩特征与训练分布已有代差;皮肤病谱与就诊人群亦随时间变化。建议:部署场景中持续收集带时间戳的样本,监控像素统计(颜色恒常后的通道均值)与预测分布的 PSI;对 2020 年后新设备图像建立小规模自适应测试集。
| 漂移类型 | 触发场景 | 监控信号 | 响应动作 |
|---|---|---|---|
| 成像域漂移 | 新型手机/新诊室光照 | 通道均值/直方图 PSI > 0.2 | 更新颜色恒常参数;增广再校准 |
| 人群漂移 | 服务区域扩展到深肤色人群 | 按肤型分组的覆盖率与召回 | 主动补充数据;阈值按人群重校准 |
| 标签策略漂移 | 活检指征变化 | biopsed 占比移动 | 重估标签噪声模型 |
| 疾病谱漂移 | 气候/UV 指数变化 | 类别先验漂移(PSI) | 重新校准类先验 |
§7.7 DAIMS 24 项数据质量评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 单张 metadata.csv 宽表,每行一个图像样本,直接可入 pandas |
| 2 | 唯一标识 | ✅ | patient_id/lesion_id/img_id 三级主键,img_id 即图像文件名 |
| 3 | 特殊字符 | ⚠️ | background_* 含 POMERANIA 等非标准国名与 UNK;文本列大小写混杂 |
| 4 | 重复行 | ✅ | img_id 唯一;同病变多图为设计使然,非重复记录 |
| 5 | 缺失编码 | ✅ | 规则明确:空白=未采集,UNK=患者不知道,论文与数据卡均有说明 |
| 6 | 标签标识 | ⚠️ | diagnostic 六类,但混杂活检与临床共识两种证据等级(biopsed 区分) |
| 7 | 罕见类分组 | ⚠️ | MEL 仅 52 张(v1),无官方分组/合并方案,须使用者自行处理 |
| 8 | 偏倚评估 | ⚠️ | 论文声明人群局限,但未提供逐维度偏倚量化 |
| 9 | 数据字典 | ✅ | Data in Brief Table 1 逐字段定义 + GitHub sanity_check 脚本 |
| 10 | 信息性缺失解释 | ⚠️ | 说明了缺失机制(问诊依赖),但未分析缺失与诊断的关联 |
| 11 | 设备记录 | ❌ | 仅"多款智能手机",无逐样本设备型号/参数 |
| 12 | 共线性 | ⚠️ | itch/grew/changed 等症状字段间相关性未讨论;diameter_1/2 高度相关 |
| 13 | 编码映射 | ⚠️ | region 15 值、背景国名清单无官方码表;fitspatrick 拼写非标准 |
| 14 | 时间戳处理 | ❌ | 无逐样本采集时间戳(仅 2018-2019 年度区间) |
| 15 | 划分建议 | ✅ | 官方方法论文给出按患者分组 6-fold 协议 |
| 16 | 泄漏讨论 | ✅ | 患者级分组在官方与社区文档中均有明确讨论 |
| 17 | 标签分布 | ✅ | 论文 Table 1 给出六类计数与活检占比 |
| 18 | 测量偏倚 | ⚠️ | 直径/问诊项为人工测量与自报,误差未量化 |
| 19 | 外部验证建议 | ✅ | 官方论文讨论了与 HAM10000/BCN20000 的对照语境 |
| 20 | 版本记录 | ⚠️ | Mendeley 版本页存在,但变更日志粒度粗,各镜像差异需自行对账 |
| 21 | 预处理脚本 | ⚠️ | 提供 sanity_check 与 EDA notebook,但无官方预处理/颜色恒常脚本 |
| 22 | 合规要求 | ✅ | CC BY 4.0 明确;伦理批准号与知情同意披露完整 |
| 23 | 多模态对齐 | ✅ | img_id 将图像与 21 项问诊特征一一对应,无对齐缺口 |
| 24 | 去标识化 | ✅ | 代理 ID + ROI 裁剪图像 + 伦理监督,无直接 PHI |
DAIMS 评分:17.0 / 24(12 项 ✅、10 项 ⚠️、2 项 ❌)
评分解读:这是一个"结构干净、语义粗糙"的数据集——标识体系、宽表结构、缺失编码、多模态对齐等工程基础全部到位(这在小规模临床采集数据中少见,得益于先建采集系统再收集数据的流程);扣分集中在三处:设备与时间戳元数据缺失(❌)使成像域控制完全依赖事后统计,标签证据等级混杂与罕见类稀薄(⚠️)要求使用者做分层评估与特殊处理,高基数文本列无码表(⚠️)需要自行清洗。
对你意味着什么:第一天就能跑通全量加载与患者分组 6-fold(不需要申请、不需要格式转换);但交付前必须完成四件套——diagnostic 白名单过滤、biopsed 从特征中剔除、颜色恒常+背景捷径测试、按肤型/活检分层的评估报告。若你的研究目标是深肤色人群或儿童,这个数据集只能作为预训练/预研,不能作为主训练集。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| 真实手机 App 部署(自采用户照片) | UFES(Krohling et al.) | 恶性 vs 良性分诊 | balanced accuracy 85%、recall 96% | 未见同行评审期刊版(arXiv 2021) | 融合临床特征的 CNN App 在真实使用中保持可用召回,验证移动端可行性 |
| Fitzpatrick 肤型子集切片(内部) | Deng et al. 2024(配套 Mendeley 2yv6rv3pzs) | 六分类/良恶性 | 按肤型分组指标 | 未公开统一 leaderboard 数字 | 多模态模型在浅肤型子集表现更好,公开了按肤型评估代码范式 |
| 跨数据集皮肤镜域 | 社区多项研究 | 域迁移 | 显著下降(定性共识) | — | 手机照片与皮肤镜域差距大;反向(ISIC→PAD)亦然,需域适应 |
注:本表仅收录有公开可查证据的结果;多数 PAD-UFES-20 论文使用各自的患者分组划分与任务定义,跨论文数值不可直接比较(§8.1)。
§8 基准性能与生态
§8.1 排行榜
| 排名 | 模型/工作 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | MetaBlock(图像+metadata 注意力融合) | 融合较纯图像持续增益(六分类 bACC) | 2021 | metadata 对图像特征的注意力加权 | Pacheco, A. G. C. & Krohling, R. A., “An attention-based mechanism to combine images and metadata in deep learning models applied to skin cancer classification”, IEEE Journal of Biomedical and Health Informatics, 25(9), 3554-3563, 2021. DOI 10.1109/JBHI.2021.3055054 | GitHub |
| 2 | 三源融合(CNN+手工特征+临床) | Cancer vs non-cancer 与 MEL vs non-MEL 均为该工作最佳 | 2022 | 深度+手工+临床三路特征全连接融合 | Mendes, C. F. S. F. & Krohling, R. A., “Deep and handcrafted features from clinical images combined with patient information for skin cancer diagnosis”, Heliyon, 2022. DOI 10.1016/j.heliyon.2022.e09805 | 未公开 |
| 3 | 智能手机 App(融合 CNN) | balanced accuracy 85%、recall 96% | 2021 | 移动端部署+临床特征融合 | Krohling, R. A., Castro, P. B. C., Pacheco, A. G. C. & Krohling, R. A., “A smartphone based application for skin cancer classification using deep learning with clinical images and lesion information”, arXiv:2104.13598, 2021 | 未公开 |
| 4 | 官方融合基线(多 CNN 对照) | 融合较纯图像提升约 7% balanced accuracy | 2020 | 按患者分组 6-fold;特征级聚合 | Pacheco, A. G. C. & Krohling, R. A., “The impact of patient clinical information on automated skin cancer detection”, Computers in Biology and Medicine, 116, 103545, 2020. DOI 10.1016/j.compbiomed.2019.103545 | 官方数据集 GitHub |
| 5 | DenseNet-121 多模态(BOHB 调参) | 内部验证(1,000 张)多模态优于单模态 | 2024 | 迁移学习+贝叶斯超参优化+肤型公平性分析 | Deng, J. et al., “Development of a transfer learning-based, multimodal neural network for identifying malignant dermatological lesions from smartphone images”, Mendeley Data 2yv6rv3pzs, 2024(配套研究代码) | Mendeley |
| 6 | OctoMed MLLM 评测 | MLLM 多选题形态基线 | 2025 | 每例 16 条 GPT-4o 推理轨迹 | Ossowski, T. et al., “OctoMed: Data recipes for state-of-the-art multimodal medical reasoning”, arXiv:2511.23269, 2025 | HF |
⚠️ 数值不可直接比较:上述工作分别使用六分类、恶性 vs 良性、MEL vs non-MEL 等不同任务定义,划分(6-fold vs 固定切分)、输入配置(图像 only vs +metadata)、指标(bACC / recall / AUC)各异;唯一可比的对照是同一 fold 协议下的"±metadata"消融。
§8.2 SOTA 总结与选型建议
官方与后续工作的一致结论:在 PAD-UFES-20 上,图像+临床特征融合 > 纯图像(约 +7% bACC 起步,MetaBlock 注意力机制进一步扩大优势)。选型建议:复现起点选 ResNet-18 + 表格 MLP 拼接(§6.4 代码 30 分钟可跑通);方法研究选 MetaBlock 或交叉注意力融合;移动端落地选 EfficientNet-B0 级骨干 + 问诊最小特征集(age/region/bleed/changed 等)。
对 2024-2025 年的两条新趋势补充判断:
- MLLM/视觉语言路线:OctoMed 将该数据集改造为多选题评测形态(每例 16 条 GPT-4o 推理轨迹),说明社区开始用它考察多模态大模型的细粒度视觉推理;但 MLLM 在稀有类(MEL)上的召回仍需小模型专家系统兜底。
- 公平性驱动建模:Deng et al. 2024 与 JMIR 2025 的分析共同指向"浅肤色多数人群"这一结构性偏倚;新工作若不在 Fitzpatrick 分组指标上报告结果,已经难以通过同行评审。
§8.3 评测协议
标准协议 = 按患者分组的 6-fold CV + 六分类 balanced accuracy(mean ± std)+ 逐类 recall + 恶性二分类补充报告;同时披露纯图像与融合两配置。派生协议(固定 70/10/20 患者分组切分)须声明随机种子与 fold 文件。任何协议下,测试 fold 中的患者与病变均不得在任何训练/调参环节出现,图像质量过滤与预处理统计量(如标准化均值)只允许来自训练 fold。
§8.4 相关数据集表
| 数据集 | 规模 | 域 | 与 PAD-UFES-20 的关系 |
|---|---|---|---|
| HAM10000 | 10,015 图 | 皮肤镜 | 官方论文对照对象;跨域迁移首选 |
| BCN20000 | ~20,000 图 | 皮肤镜 | 大规模对照与预训练源 |
| ISIC 2019/2020 | 22k-23k 图 | 皮肤镜为主 | 挑战赛协议参考;2020 含少量手机图 |
| Fitzpatrick 17k | 16,577 图 | 混合 | 肤型公平性外推测试 |
| Derm7pt | ~1,013 例 | 临床+皮肤镜 | 七点清单语义标注补充 |
| HAM10000 + PAD 联合训练 | 12k+ 图 | 双域 | 域适应/域泛化研究的标准组合 |
§8.5 关键论文 Top 6
- Pacheco, A. G. C. et al., “PAD-UFES-20: A skin lesion dataset composed of patient data and clinical images collected from smartphones”, Data in Brief, 32, 106221, 2020. DOI 10.1016/j.dib.2020.106221 — 数据集官方描述论文(规格、字段、伦理、统计)。
- Pacheco, A. G. C. & Krohling, R. A., “The impact of patient clinical information on automated skin cancer detection”, Computers in Biology and Medicine, 116, 103545, 2020. DOI 10.1016/j.compbiomed.2019.103545 — 方法论文:患者分组 6-fold 协议与 +7% 融合增益。
- Pacheco, A. G. C. & Krohling, R. A., “An attention-based mechanism to combine images and metadata in deep learning models applied to skin cancer classification”, IEEE JBHI, 25(9), 3554-3563, 2021 — MetaBlock 注意力融合,融合方向引用最高(175+)。
- Krohling, R. A., Castro, P. B. C., Pacheco, A. G. C. et al., “A smartphone based application for skin cancer classification using deep learning with clinical images and lesion information”, arXiv:2104.13598, 2021 — 真机部署形态(bACC 85% / recall 96%)。
- Mendes, C. F. S. F. & Krohling, R. A., “Deep and handcrafted features from clinical images combined with patient information for skin cancer diagnosis”, Heliyon, 2022 — 三源特征融合的系统性消融。
- Groh, M. et al., “Evaluating deep neural networks trained on clinical images in dermatology with the Fitzpatrick 17k dataset”, CVPRW, 2021 — 跨数据集/跨肤型评估的参照系(PAD-UFES-20 常与其联合讨论)。
§8.6 社区活跃度
数据集论文 Semantic Scholar 引用 278+(截至 2026-09),方法论文 183+;Mendeley 端累计 24,381 次浏览、5,133 次下载(PlumX,截至 2026-09 检索);Kaggle、HuggingFace、OpenML 均有活跃镜像与 notebook;官方 GitHub 提供 sanity_check/EDA/采集软件(更新至 2020-10)。ISIC Archive 于 2024-11-05 官方收录,标志其进入主流皮肤影像生态。
社区讨论的三大高频主题:① 划分泄漏(多个 Kaggle notebook 与 HF 数据卡反复强调按 patient_id 分组);② 镜像对账(版本/ID/列名差异,见坑点 8);③ 融合与公平(MetaBlock 复现、按 Fitzpatrick 分组评估)。尚未出现集中的官方 issue 跟踪(官方仓库非 issue 驱动),复现问题主要散落在镜像社区与论文勘误中。
§8.7 生态快照表
| 资源 | 类型 | 链接 | 热度(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| Mendeley Data 官方页 | 数据托管 | zr7vgbcyr2 | 5,133 下载 | 权威版本与 CC BY 4.0 |
| 官方 GitHub | 代码 | labcin-ufes/PAD-UFES-20 | 官方维护 | sanity_check + EDA + 采集软件 |
| Kaggle 镜像 | 数据+Notebook | mahdavi1202/skin-cancer | 活跃 | 云端快速实验 |
| OpenML 表格版 | 表格基准 | ID 46630 | 元数据完整 | 纯表格建模/教学 |
| OctoMed HF 镜像 | MLLM 评测 | PAD_UFES_20 | 2025 新 | 多模态大模型评测形态 |
| MetaBlock 代码 | 融合模型 | paaatcha/MetaBlock | JBHI 2021 官方 | 融合方法复现起点 |
| ISIC Archive 集合 | 数据生态 | collections | 2024-11 收录 | 与 ISIC 体系联合分析 |
§9 相关资源与引用
§9.1 官方资源
- 数据集主页(Mendeley Data,CC BY 4.0):https://data.mendeley.com/datasets/zr7vgbcyr2
- v1 完整包下载:https://data.mendeley.com/datasets/zr7vgbcyr2/1(3.35 GB)
- 数据论文(开放获取):Data in Brief 32:106221(PMC 全文;arXiv:2007.00478)
- 方法论文:Computers in Biology and Medicine 116:103545(arXiv:1909.12912)
- 官方代码仓库:https://github.com/labcin-ufes/PAD-UFES-20(sanity_check、EDA notebook、采集软件前后端)
- ISIC Archive 收录集合(2024-11-05):ISIC collections
§9.2 社区资源
- Kaggle 镜像与 Notebooks:mahdavi1202/skin-cancer
- OpenML 表格版:Task ID 46630
- HuggingFace(MLLM 评测形态):OctoMed/PAD_UFES_20;社区镜像含 patient-safe split 示例
- MetaBlock 官方代码:https://github.com/paaatcha/MetaBlock
- 按肤型公平性分析配套资产:Deng et al. 2024 配套仓库
§9.3 BibTeX 引用块
@article{pacheco2020padufes20,
title = {PAD-UFES-20: A skin lesion dataset composed of patient data and
clinical images collected from smartphones},
author = {Pacheco, Andre G. C. and Lima, Gustavo R. and Salom{\~a}o, Amanda S. and
Krohling, Breno and Biral, Igor P. and de Angelo, Gabriel G. and
Alves Jr, F{\'a}bio C. R. and Esgario, Jos{\'e} G. M. and
Simora, Alana C. and Castro, Pedro B. C. and Rodrigues, Felipe B. and
Frasson, Patricia H. L. and Krohling, Renato A. and Knidel, Helder and
Santos, Maria C. S. and do Esp{\'i}rito Santo, Rachel B. and
Macedo, Telma L. S. G. and Canuto, Tania R. P. and de Barros, Lu{\'i}z F. S.},
journal = {Data in Brief},
volume = {32},
pages = {106221},
year = {2020},
doi = {10.1016/j.dib.2020.106221}
}
@article{pacheco2020impact,
title = {The impact of patient clinical information on automated skin cancer detection},
author = {Pacheco, Andre G. C. and Krohling, Renato A.},
journal = {Computers in Biology and Medicine},
volume = {116},
pages = {103545},
year = {2020},
doi = {10.1016/j.compbiomed.2019.103545}
}
@article{pacheco2021metablock,
title = {An attention-based mechanism to combine images and metadata in deep
learning models applied to skin cancer classification},
author = {Pacheco, Andre G. C. and Krohling, Renato A.},
journal = {IEEE Journal of Biomedical and Health Informatics},
volume = {25},
number = {9},
pages = {3554--3563},
year = {2021},
doi = {10.1109/JBHI.2021.3055054}
}
§9.4 引用指南
使用本数据集时须同时引用:① 数据论文(pacheco2020padufes20)与数据集 DOI(10.17632/zr7vgbcyr2);② 若复现划分协议或融合基线,加引方法论文(pacheco2020impact);③ 若使用 MetaBlock 结构,加引 pacheco2021metablock。使用 Kaggle/ISIC/第三方镜像时,仍以官方论文与 Mendeley DOI 为准并在文中注明镜像版本。
§9.5 学习路径建议
| 阶段 | 目标 | 材料 | 预期产出 |
|---|---|---|---|
| 第 1 天 | 数据体检与基线认知 | §4.6 快检 + 官方 EDA notebook + Data in Brief 论文 | 数据对账单、六类分布图 |
| 第 1 周 | 可靠划分 + 纯图像基线 | §6.4 代码 + CBM 论文协议 | 患者分组 6-fold 基线(bACC) |
| 第 2 周 | 多模态融合 | MetaBlock 论文与代码、§6.4b 训练循环 | 融合 vs 纯图像消融表 |
| 第 3-4 周 | 鲁棒与公平 | §6.5 坑点 2/4/7、Deng et al. 2024 资产 | 颜色恒常/增广消融、按肤型分组报告 |
| 长期 | 部署与监控 | §6.9b、§6.10 | 分诊 API + 漂移监控面板 |
§10 AI 使用声明卡
§10.1 AI 模型列表
本页面由大语言模型辅助撰写(结构化整理、表格生成与代码示例编写),基于公开检索资料(Mendeley Data 官方页面、Data in Brief/CBM 论文全文、Semantic Scholar、官方 GitHub、HuggingFace/Kaggle/OpenML 镜像页)。
§10.2 AI 参与范围
AI 参与资料汇总、初稿撰写与格式规范化;全部硬事实(规模数字、标签分布、伦理批准号、基准数字、引用数)均取自可核验来源并在正文内联链接;医学编码映射(ICD-11/SNOMED CT)、坑点优先级与使用建议由编辑部人工复核定稿。AI 未参与任何原始数据的生成、修改或标注;页面中的代码示例经编辑部按"结构正确性 + 依赖可安装性"标准人工复核,运行结果以使用者环境为准。
§10.3 输入来源列表
- Pacheco, A. G. C. et al., 2020, Data in Brief, 32, 106221. DOI 10.1016/j.dib.2020.106221(PMC7479321)
- Pacheco, A. G. C. & Krohling, R. A., 2020, Computers in Biology and Medicine, 116, 103545. DOI 10.1016/j.compbiomed.2019.103545(arXiv:1909.12912)
- Pacheco, A. G. C. & Krohling, R. A., 2021, IEEE JBHI, 25(9), 3554-3563. DOI 10.1109/JBHI.2021.3055054
- Krohling, R. A. et al., 2021, arXiv:2104.13598(智能手机 App)
- Mendes, C. F. S. F. & Krohling, R. A., 2022, Heliyon. DOI 10.1016/j.heliyon.2022.e09805
- Groh, M. et al., 2021, CVPRW. DOI 10.1109/CVPRW53098.2021.00340
- Deng, J. et al., 2024, Mendeley Data 2yv6rv3pzs(多模态复现资产)
- Ossowski, T. et al., 2025, arXiv:2511.23269(OctoMed)
- Mendeley Data 官方数据集页 zr7vgbcyr2(v1,2020-07-07,3.35 GB,CC BY 4.0)
- 官方 GitHub 仓库 labcin-ufes/PAD-UFES-20(sanity_check、EDA、软件代码)
- Semantic Scholar 作者页(引用计数,截至 2026-09)
- OpenML 数据集 ID 46630(字段与缺失统计)
- ISIC Archive collections 页(2024-11-05 收录记录)
- HuggingFace SalmaneExploring/pad-ufes-20 数据卡(患者分组划分与 biopsed 警告)
- JMIR Medical Informatics, 2025, e59452(数据类别与人群偏倚分析)
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §1 概览与 §1.4 版本时间轴 | 千方病案医学编辑部 | 对照 Mendeley 官方页与 arXiv 版本记录逐项核对 | ✅ 已通过 |
| §2 医学背景(ICD-11/SNOMED 映射与流行病学) | 千方病案医学编辑部 | 医学编辑对照 ICD-11/SNOMED CT 标准术语复核 | ✅ 已通过 |
| §3 规格 / §4 数据结构与 DAIMS 字段字典 | 千方病案医学编辑部 | 对照 Data in Brief Table 1 与 OpenML 字段统计逐列核对 | ✅ 已通过 |
| §5 划分与 §6 AI 就绪指南(含 8 坑点) | 千方病案医学编辑部 | 工程师复核代码可运行性、协议与来源一致性 | ✅ 已通过 |
| §7 质量评估 / §8 基准生态 | 千方病案医学编辑部 | 逐条核对引用数字与原始页面 | ✅ 已通过 |
| §9 引用块 / §10 声明卡 | 千方病案医学编辑部 | BibTeX 字段与 DOI 逐项校验 | ✅ 已通过 |
§10.5 AI 生成章节标注
全部章节由 AI 辅助生成初稿;§2.1/§2.1b 的编码映射、§7.7 DAIMS 评分与解读、§5.3 泄漏策略、§6.5 坑点排序为人工定稿内容;数字类陈述 100% 带内联来源。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核声明一致)
页面状态:published(全部内容已完成审核并发布)
