信息速览

BCN20000 — 皮肤镜"野外"病变分类基准 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | BCN20000 |
| 英文全称 | BCN20000: Dermoscopic Lesions in the Wild |
| 别名/简称 | BCN_20000;ISIC 2019 挑战训练集主要构成(“Barcelona” 皮肤镜数据集) |
| 疾病分类(ICD-11) | 2C30 皮肤恶性黑色素瘤(MEL);2C32 皮肤基底细胞癌(BCC);2C31 皮肤鳞状细胞癌(SCC);EK90.1 光化性角化病(AK);2F21.0 脂溢性角化病(BKL 代表);2F20 黑色素细胞痣(NV) |
| SNOMED CT | 372244006(恶性黑色素瘤);127542007(皮肤基底细胞癌);402844004(皮肤鳞状细胞癌);201101007(光化性角化病);40399004(脂溢性角化病);400150009(黑色素细胞痣) |
| 数据模态 | 皮肤镜图像(1024×1024 JPEG)+ 患者元数据表(年龄分箱/性别/解剖部位/拍摄日期) |
| AI 任务类型 | 8 类皮肤病变分类、分布外(OOD/unknown)检测、图像+元数据融合分类、类别不平衡学习 |
| 样本总数 | 18,946 张皮肤镜图像 / 5,583 个皮损(2019 挑战版口径为 19,424 张;训练集 12,413 张 + 测试集 6,533 张) |
| 数据大小 | ISIC 2019 挑战版训练包 9.1 GB(25,331 张,含 HAM10000 与 MSK 图像);2024 版为 18,946 张 1024×1024 JPEG(Figshare 分卷下载) |
| 数据格式 | JPEG(图像)+ CSV(元数据与标签,每图一行) |
| 许可证 | CC BY 4.0(2024 Figshare 版);ISIC 2019 挑战数据包为 CC-BY-NC |
| 访问级别 | 开放(2024 版 Figshare 直接下载);ISIC Archive 渠道需注册账号并同意使用条款 |
| DUO 标签 | NRES(无限制使用,须署名;2019 挑战版为非商业 NPUNCU/NCU 性质) |
| 语言 | 英语(元数据字段与文档);采集语境为西班牙语/加泰罗尼亚语 |
| 首发日期 | 2019-08(arXiv 预印本 1908.02288 + ISIC 2019 挑战赛) |
| 最后更新 | 2024-06-17(Scientific Data 数据描述论文 + Figshare 存档) |
| 发布机构 | 巴塞罗那 Hospital Clínic 皮肤科黑色素瘤单元(Malvehy/Puig 团队)+ 加泰罗尼亚理工大学(UPC) |
| 官方主页 | Scientific Data 论文 / ISIC Archive collection |
| 下载地址 | Figshare DOI 10.6084/m9.figshare.24140028;挑战版 S3 直链 |
| DOI | 10.1038/s41597-024-03387-w(数据描述论文);10.6084/m9.figshare.24140028(数据) |
| 引用次数 | 687+(Semantic Scholar,合并 arXiv 与 Sci Data 两版,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方 train/test 划分、统一 1024×1024 JPEG、CSV 元数据与官方基线代码齐备;扣分项:测试集标签不公开需自行做皮损级交叉验证、患者级标识缺失、无现成 DataLoader |
| 页面状态 | published |
§0 E-E-A-T 审核声明
医学审核者:[千方病案医学编辑部] 交叉审核:§2 医学背景(8 类诊断的 ICD-11/SNOMED CT 映射与流行病学表述)、§7 偏倚分析(单中心转诊富集、标签确认路径差异与公平性)。
数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略(皮损级分组防泄漏)、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方法说明:全部规模数字经"官方论文 ↔ 挑战官网 ↔ ISIC Archive API"三方对账;类别分布按"BCN 12,413 + HAM 10,015 + MSK 2,903 = ISIC 2019 官方 25,331"逐类复算验证;医学编码与 PAD-UFES-20 条目(同一编辑部系列)及 dermnet.nz 交叉核对;坑点逐条溯源至官方文档、GitHub 仓库或同行评审文献。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。BCN20000 2024 版采用 CC BY 4.0 许可开放获取,使用时须署名并引用原始论文(Hernández-Pérez et al., Scientific Data 2024);ISIC 2019 挑战版数据包为 CC-BY-NC,且须按官方要求同时署名 BCN_20000、HAM10000 与 MSK 三个来源;数据采集已获 Hospital Clínic 伦理委员会批准(HCB/2019/0413)并取得知情同意。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? 这是巴塞罗那 Hospital Clínic(欧洲最繁忙的黑色素瘤专病中心之一)在 2010-2016 年间积累的皮肤镜图像库:18,946 张 1024×1024 图像来自 5,583 个皮损。所谓"野外(in the wild)",是指它刻意保留了临床最棘手的那部分真实世界——长在指甲上和黏膜上的病灶、大到塞不进皮肤镜视场的大病变、色素很少的淡色病变,而不像多数学术数据集那样只收录摆拍规范的典型病灶。除图像外,每张图还带有就诊年龄(5 岁分箱)、性别、解剖部位(6 类)与拍摄日期四项元数据,2024 年起以 CC BY 4.0 在 Figshare 直接开放下载。
为什么重要? 2018 年 ISIC 挑战赛上,顶级算法在"干净"基准上的成绩已经超过专家(balanced accuracy 88.5%),但换到贴近临床的数据上会掉 20 个百分点以上。2019 年,组织方把 BCN20000 作为 ISIC 2019 挑战赛的主训练数据发布,并加入鳞状细胞癌与"以上都不是(unknown)"两类——当年冠军成绩立刻跌到 63.6%。这个落差本身,就是深度学习皮肤镜模型真实泛化能力最著名的量化证据之一。
我能用它做什么? 训练 8 类皮肤病变分类器;研究分布外/unknown 检测(官方测试集专门埋了约 2,040 张不属于任何训练类的图像);做图像+元数据融合(年龄、性别、部位、拍摄日期都有);或把它当作与 HAM10000(维也纳+澳大利亚)、PAD-UFES-20(巴西手机照片)对照的南欧单中心参照系。2024 年起数据以 CC BY 4.0 在 Figshare 直接开放下载,无需申请。
§1.1 摘要
BCN20000 由 Hospital Clínic de Barcelona 皮肤科黑色素瘤单元(Josep Malvehy、Susana Puig 团队)与加泰罗尼亚理工大学 Veronica Vilaplana 组合作构建,2019 年 8 月以 arXiv 预印本形式随 ISIC 2019 挑战赛发布(19,424 张口径),2024 年 6 月在 Scientific Data 刊出正式数据描述论文(18,946 张口径)并同步存档于 Figshare。原始采集共 94,302 张(含贴纸照、临床照),经神经网络自动分类筛选出皮肤镜帧、用 YOLOv3 检测剔除含患者标识的贴纸、再由多位读者复核诊断合理性后入库。2024 版官方划分为训练集 12,413 张(8 类标签公开)与测试集 6,533 张(标签保留,内含约 2,040 张 unknown/OOD 图像),并配套 6 个 CNN 基线的 5 折交叉验证结果(最佳为裁剪后 EfficientNet-B2,balanced accuracy 0.4605)。同一数据训练了 ISIC 2019 挑战赛的 25,331 张合并训练集(BCN 12,413 + HAM10000 10,015 + MSK 2,903)。
技术摘要的三个关键词:unconstrained(无约束)——采集端不做视角/病灶规范筛选,这与"先收集后清洗"的流水线共同构成其"野外"属性;lesion-centric(皮损中心)——所有工程决策(防泄漏、统计推断、置信度)都应落在 lesion_id 这个层级;dual-license(双许可)——CC-BY-NC(2019 挑战版)与 CC BY 4.0(2024 版)并存,使商用与学术评测可以分别选择合规入口。这三个关键词贯穿本 Wiki 的全部坑点与代码。
§1.2 战略价值
维度一:真实世界难度标定(OOD 基准的先声)。 BCN20000 的核心设计——训练只有 8 类、测试集埋入第 9 类 unknown——比"OOD 检测"成为 CV 热词早了两年。ISIC 2018 冠军 88.5% 对 2019 冠军 63.6% 的巨大落差,给出了"受控基准 → 临床现实"的性能衰减定量参考。任何声称"超越皮肤科专家"的模型,都值得先在这个数据集上复测一遍,这正是它被持续引用(687+ 次,截至 2026-09)的主要理由。
维度二:南欧单中心参照系与跨中心研究枢纽。 与 HAM10000(维也纳 + 澳大利亚昆士兰双中心、10,015 张)相比,BCN20000 提供了纯南欧人群、三级转诊富集病例的单一来源样本;与 PAD-UFES-20(巴西初级照护、智能手机图像)相比,它代表了"高质量设备 + 疑难病例"的另一极。三者构成皮肤镜 AI 从设备域、人群域到采集场景域的完整偏倚谱系,是域适应(domain adaptation)、联邦式多中心评估与数据集偏倚量化研究的天然试验场。
维度三:带时间戳的纵向审计能力。 2024 版为每张图像提供 capture_date(YYYY-MM-DD),这在同时代皮肤镜数据集中罕见(HAM10000 仅部分图像有局部时间信息)。它使"按年份分层评估"“设备换代期前后性能漂移”"采集年份作为协变量的公平性审计"成为可能——对于要长期运营的辅助诊断系统,时间维度的可审计性直接决定 MLOps 监控指标(如弃权率漂移)能否归因到数据侧。
§1.2b 战略价值小结
| 维度 | 一句话定位 | 最佳搭档数据 |
|---|---|---|
| 真实难度标定 | OOD 设计早于开集识别热潮,冠军分数落差是领域标尺 | ISIC 2018/2020 挑战集 |
| 人群/中心参照系 | 南欧三级转诊单中心样本 | HAM10000、PAD-UFES-20 |
| 时间可审计性 | 逐图 capture_date 支持漂移归因 | ISIC 2020(患者级) |
| 许可友好度 | 2024 版 CC BY 4.0 可商用 | 挑战版 CC-BY-NC 形成许可梯度 |
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态/设备 | 标注 | 差异化定位 |
|---|---|---|---|---|
| BCN20000 | 18,946 图 / 5,583 皮损 | 皮肤镜(3 相机 + 多附件,1024×1024) | 8 类 + 测试集 OOD;MEL 全部组织病理确认 | 南欧单中心;刻意收录指甲/黏膜/大病灶/低色素"野外"病例;含拍摄日期 |
| HAM10000 | 10,015 图 / 约 5,000 皮损 | 皮肤镜(双中心,600×450 裁剪居中) | 7 类(akiec 合并 AK+SCC)+ 100 张 unknown | 维也纳 + 澳大利亚;多源对照研究的默认锚点(Sci Data 2018) |
| ISIC 2019 聚合集 | 25,331 训练图(8 类)/ 8,238 测试图 | 皮肤镜(三源混合) | 8 类 one-hot + 测试集第 9 类 | BCN 12,413 + HAM 10,015 + MSK 2,903;挑战赛口径 |
| ISIC 2020 挑战集 | 33,126 图 | 皮肤镜(多源) | 恶性/良性二分类(恶性仅 1.8%) | 患者级分层评测;Kaggle SIIM-ISIC 承载 |
| PAD-UFES-20 | 2,298 图 / 1,373 患者 | 智能手机临床照片(无皮肤镜) | 6 类 + 21 项临床特征 | 巴西初级照护;低资源采集与表格融合研究 |
| MED-NODE | 170 图 | 临床照片 | 2 类(色素痣/黑色素瘤) | 小规模外部验证集,常用于跨中心泛化测试 |
读表提示:BCN 与 HAM 的"互补"是全方位的——地域(南欧 vs 中欧+澳洲)、入组(转诊疑难 vs 常规病例)、图像规范(未裁剪多尺度 vs 居中裁剪)、类别设计(SCC 独立 + 测试 OOD vs akiec 合并 + 训练内 unknown)。两者合并的 25,331 张(ISIC 2019)因此成为"难度上界"基准,而各自的单独版本更适合做受控的单变量比较;选择哪一版入表,取决于你的实验要控制的是"域变量"还是"难度变量"。
§1.4 版本时间轴
| 时间 | 版本/事件 | 关键变化 |
|---|---|---|
| 2019-08 | arXiv:1908.02288 v1 + ISIC 2019 挑战赛发布 | 19,424 张口径;挑战训练集用其中 12,413 张(8 类标签公开) |
| 2019-08-16/23 | Task 1 / Task 2 提交截止 | 64 支队伍参赛;DAISYLab 夺双任务冠军(0.636) |
| 2019-10 | MICCAI/ISIC workshop(深圳)颁奖与 Workshop 报告 | 榜单固化;Live Challenge 基础设施沿用 |
| 2020 | SIIM-ISIC Melanoma Classification(Kaggle) | 后继挑战采用 ISIC 档案图像(含 BCN 来源)+ 患者级分层评测 |
| 2023-06 | ISIC Archive 建 BCN20000 collection(249) | 18,946 张口径首次成为存档标准 |
| 2023 | Figshare v1 发布(DOI 10.6084/m9.figshare.24140028) | CC BY 4.0;1024×1024 JPEG + CSV;训练/测试划分字段化 |
| 2024-06-17 | Scientific Data 数据描述论文刊出 | 官方元数据 8 字段(新增 capture_date);6 个 CNN 基线 + GitHub 代码 |
时间轴的读法:从 2019 预印本到 2024 正式论文间隔近五年,这五年里社区一直在用"半成品文档"工作(挑战页 + 预印本),由此产生了大量口径混乱——理解这一点,就能理解为什么 2019-2023 年文献中同一数据集的名字与数字五花八门(ISIC 2019 / BCN_20000 / 25,331 / 19,424 混用)。2024 版发布后,新研究应一律以 Sci Data 论文为唯一权威文档,旧口径仅在复现历史基准时引用。
§1.5 典型应用场景
- 8 类病变分类基准:以官方训练集 + 5 折皮损级交叉验证复现 Sci Data 2024 基线,作为新架构的对照起点(注意官方基线 balanced accuracy 仅 0.46,远低于 HAM10000 上常见报道,见坑点 7)。
- 分布外/unknown 检测:利用测试集约 2,040 张 OOD 图像与 7 类子类构成(瘢痕、炎症、感染等)评估开集识别算法,ISIC 2019 的赛制设计正是为此而生。
- 图像 + 元数据融合:年龄分箱、性别、6 类解剖部位、拍摄日期可与图像分支融合;ISIC 2019 Task 2 与后续 metadata-fusion 研究的标准素材。
- 跨中心泛化与域适应:BCN→HAM10000(不同中心/设备)、BCN→PAD-UFES-20(皮肤镜→手机照片)迁移实验,量化单中心偏倚。
- 类别不平衡方法评测:NV 4,206 张对 VASC 111 张(约 38:1)的真实不平衡,且 DF/VASC 等罕见类有独立标签,适合重采样/损失函数研究的分层评估。
- 标签噪声与确认路径研究:利用"MEL 全病理 vs 良性多路径确认"的分层结构,做噪声转移矩阵估计与置信学习实验(确认类型比例未公开本身就是一个可研究问题)。
- 时间漂移与 MLOps 演练:用 capture_date 做年份分层与时间外推折,为"数据冻结后多久需要再训练"提供经验参数——这是多数影像数据集给不出的能力。
§2 医学背景
§2.1 八类诊断与 ICD-11 编码表
| 缩写 | 疾病中文名 | 疾病英文名 | ICD-11 编码 | 良恶性 |
|---|---|---|---|---|
| MEL | 恶性黑色素瘤 | Melanoma | 2C30 | 恶性 |
| NV | (黑色素细胞)痣 | Nevus / Melanocytic nevus | 2F20(常见获得性黑色素细胞痣) | 良性 |
| BCC | 基底细胞癌 | Basal cell carcinoma | 2C32 | 恶性 |
| AK | 光化性角化病 | Actinic keratosis | EK90.1 | 癌前病变 |
| BKL | 良性角化病(日光性黑子 / 脂溢性角化病 / 扁平苔藓样角化病) | Benign keratosis-like lesions | 2F21(良性角化细胞棘层肥厚瘤;2F21.0 脂溢性角化病) | 良性 |
| DF | 皮肤纤维瘤 | Dermatofibroma | 2F23.0 | 良性 |
| VASC | 血管病变(樱桃状血管瘤、化脓性肉芽肿等) | Vascular lesion | 2F25 / 2F26 | 良性 |
| SCC | 鳞状细胞癌 | Squamous cell carcinoma | 2C31 | 恶性 |
| unknown | 以上皆非(仅测试集) | Out-of-distribution / None of the others | —(多病种混合:瘢痕、炎症、感染、良性肿瘤等) | 混合 |
注:BKL 是一个"多病种合并筐"——2019 挑战赛将其定义为日光性黑子 / 脂溢性角化病 / 扁平苔藓样角化病三类良性角化病变的统称,这也是社区常说的"keratosis-like"模糊类(见坑点 2 与坑点 8)。与 HAM10000 的 akiec 类合并使用时,必须先做 AK/SCC 拆分映射(见坑点 2)。同一张表里 ICD-11 码的粒度并不均一:恶性类有独立的三位码,而 BKL/VASC 只能落到"组块级"编码,这本身就是类别语义宽窄不均的信号——在向 ICD 编码的医疗系统集成模型输出时,BKL/VASC 的预测需要额外的映射策略声明。
§2.1b SNOMED CT 映射表
| 标签 | ICD-11 | SNOMED CT | SNOMED 术语 |
|---|---|---|---|
| MEL | 2C30 | 372244006 | Malignant melanoma |
| NV | 2F20 | 400150009 | Melanocytic nevus |
| BCC | 2C32 | 127542007 | Basal cell carcinoma of skin |
| AK | EK90.1 | 201101007 | Actinic keratosis |
| BKL | 2F21 | 40399004 | Seborrheic keratosis(代表成员;BKL 为合并类) |
| DF | 2F23.0 | 427186000 | Dermatofibroma |
| VASC | 2F25 / 2F26 | —(合并类无单一概念码;常见成员为 cherry angioma、pyogenic granuloma) | Vascular lesion(多病种) |
| SCC | 2C31 | 402844004 | Squamous cell carcinoma of skin |
§2.2 疾病简介与流行病学
皮肤癌是最常见的恶性肿瘤类别之一,主要发生于日晒暴露部位;黑色素瘤虽非最高发,却占皮肤肿瘤死亡的 75%,是 25-29 岁人群中最常诊断的癌症、20-24 岁组第二位、15-19 岁组第三位,也是欧洲按"每例死亡成本"计最昂贵的皮肤癌(Sci Data 2024 引言引述)。皮肤病变直视可及,皮肤镜(dermoscopy)以放大镜头 + 偏振光消除表面反射,可显示表皮下结构,已被证实提升皮肤科医师诊断准确率;"ABCD 规则"等结构化流程把形态学线索转成诊断标准,也正是早期计算机辅助诊断模仿的对象。
从数据集构成看,BCN20000 反映的是三级黑色素瘤转诊中心的病例谱而非筛查人群:训练集中黑色素瘤与基底细胞癌各占约 23%(合计近半),色素痣占 34%,而皮肤纤维瘤与血管病变各仅约 1%;年龄均值 56.8±18 岁,SCC(72±11 岁)与 AK(67.8±13 岁)显著偏向高龄,与光损伤累积的流行病学一致。
§2.2b 八类病变的临床与皮肤镜画像
| 类别 | 典型临床画像 | 关键皮肤镜特征 | 数据集内表现 |
|---|---|---|---|
| MEL 恶性黑色素瘤 | 中老年高发,可由痣恶变或新发;预后与厚度(Breslow)强相关 | 不规则网状结构、蓝白幕、不规则条纹、血管结构多变 | 2,857 张(23%),全部组织病理确认,标签可信度最高 |
| NV 黑色素细胞痣 | 人群中最常见色素病变,青春期后渐趋稳定 | 均匀色素网、球状模式、对称 | 4,206 张(34%),最大类,年龄最轻(43.4±16) |
| BCC 基底细胞癌 | 光暴露部位,生长缓慢,很少转移但局部破坏 | 树枝状血管、溃疡、珍珠样结构、蓝灰色卵圆巢 | 2,809 张(23%),非色素型对图像分类极具挑战 |
| AK 光化性角化病 | 老年光损伤皮肤,癌前病变,可进展为 SCC | 红色草莓样外观、鳞屑、毛囊开口周围色素 | 737 张(6%),与 BKL/SCC 存在真实临床灰色地带 |
| BKL 良性角化病 | 脂溢性角化/日光性黑子/LPLK 的统称,老年常见 | 粉刺样开口、粟粒样囊肿、脑回状/指纹状结构 | 1,138 张(9%),“多病种合并筐”,类内异质性大 |
| DF 皮肤纤维瘤 | 中青年四肢(尤其小腿)坚实小结节,捏起凹陷 | 中央白斑 + 外周纤细色素网 | 124 张(1%),临床易诊、数据集最小类之一 |
| VASC 血管病变 | 樱桃状血管瘤等,随年龄增多 | 红紫色腔隙(lacuna)、均一红色球 | 111 张(1%),颜色线索明确但与无色素 MEL 需鉴别 |
| SCC 鳞状细胞癌 | 老年光损伤部位,可转移,常继发于 AK | 角化、白色圆环、中央角栓、多形血管 | 431 张(3%),2019 挑战新增类,与 AK 边界模糊 |
注:表中皮肤镜特征为各病种的教科书式典型描述,用于辅助理解标签语义;BCN20000 刻意收录的"野外"病例(指甲、黏膜、大病灶、低色素)恰恰以偏离这些典型模式为特征——这正是官方基线 balanced accuracy 仅 0.46 的原因之一。类间真实灰色地带(AK↔SCC、BKL↔AK、无色素 MEL↔VASC/BCC)意味着即使人类专家在这些类别上的判读一致性也有限。
三条类间边界的临床注解:AK 与 SCC 共享"日光性角化→原位癌→浸润癌"的进展谱系,同一皮损在不同时点可归入不同类,这让两者间的标签噪声具有系统性而非随机性;BKL 的三病种筐内,日光性黑子与脂溢性角化的皮肤镜模式重叠度本就极高,类内方差大是先天属性;无色素黑色素瘤在皮肤镜下可表现为红色/粉色病变,与 VASC、BCC 的鉴别依赖血管形态细节,是数据集中最困难的细粒度任务之一。建模建议:对这三对边界类做专门的混淆对分析(confusion-pair analysis),比总体 accuracy 更能定位改进空间。
§2.2c 训练集各年龄画像(Sci Data 2024 Table 1)
| 类别 | 年龄均值±标准差 | 相对全集 56.8±18 的偏移 | 与临床流行病学的一致性 |
|---|---|---|---|
| NV | 43.4±16 | −13.4 岁 | 痣高发于较年轻年龄段,一致 |
| MEL | 60.5±16 | +3.7 岁 | 中老年高发,一致 |
| BCC | 65.5±15 | +8.7 岁 | 光累积驱动,一致 |
| AK | 67.8±13 | +11.0 岁 | 老年光损伤皮肤,一致 |
| BKL | 62.6±15 | +5.8 岁 | 老年良性角化病变,一致 |
| SCC | 72±11 | +15.2 岁 | 数据集中年龄最大的类,一致 |
| DF | 50.4±17 | −6.4 岁 | 中青年外伤相关,一致 |
| VASC | 55.6±17 | −1.2 岁 | 随年龄增多但跨度大,基本一致 |
这张表的建模价值有二:它是"年龄→类别先验"特征的合法性证明(各类年龄差异数十岁且方向符合医学常识,不是伪相关);它同时是捷径学习的风险清单——任何元数据融合实验都必须回答"去掉年龄特征掉多少分",若掉分显著而图像性能未同步提升,模型可能过度依赖年龄先验。
§2.3 临床任务定义
- 鉴别诊断(多分类):给定皮肤镜图像,从 8 类中输出诊断类别——对应皮肤科门诊"这个痣/斑/结节是什么"的一线判断;ISIC 2019 用各类召回率算术平均(balanced multi-class accuracy)排名,以对齐"每类都要会认"的临床要求。
- 恶性筛查(二分类衍生):将 MEL/SCC/BCC(恶性)与其余(良性/癌前)合并可构建"活检 vs 不活检"决策任务;注意 AK 是癌前病变,归类取决于临床定义。
- 开集识别 / 转诊决策:识别"不属于任何已知类"的病变(瘢痕、炎症、感染等),对应"看不出来 → 转诊/活检"的临床保守路径,即官方测试集 unknown 类的设计意图。
- 辅助预后分层信息:解剖部位(掌跖、口腔生殖器为高危部位)、年龄、拍摄日期为风险分层与随访建模提供弱监督信号。
四类任务对应四套指标与工程方案:鉴别诊断看 balanced accuracy 与逐类召回;筛查看"固定 MEL 敏感度下的特异性"与 AUC;开集识别看 unknown 检测的 AUROC/AUPR 与弃权率-覆盖率曲线;分层建模看按部位/年龄切片的指标方差。官方测试集将四者压缩在同一场考试里(8 类 + unknown),这是 BCN20000 区别于普通分类数据集的结构性特征,复现时必须把 OOD 评估从闭集指标中剥离出来单独报告。
§2.4 患者人群表
| 维度 | 内容 |
|---|---|
| 来源机构 | Hospital Clínic de Barcelona 皮肤科黑色素瘤单元(三级转诊中心,常接收加泰罗尼亚地区其他中心转来的疑难病例) |
| 采集时间 | 2010-2016(2024 版提供逐图 capture_date) |
| 年龄 | 训练集 56.8±18 岁(5 岁分箱记录,0-85;NV 43.4±16、MEL 60.5±16、SCC 72±11、BCC 65.5±15、AK 67.8±13) |
| 性别 | 男 6,499(52%)/ 女 5,840(47.5%)/ 未报告 74(0.5%,训练集) |
| 种族/肤色 | 未记录(无 Fitzpatrick 分型字段;采集地为南欧人群) |
| 就医类型 | 专科/转诊门诊(黑色素瘤单元),含大量他院转诊的疑难、切除病例 |
人群表使用要点:年龄与性别两项直接可用于元数据融合与先验校准;"种族/肤色未记录"一行是公平性评估的最大约束,任何涉及肤色的结论都必须外接带肤型标注的数据集(如 Fitzpatrick17k)间接完成;就医类型一行解释了 BCC/MEL 合计近半的"反常"构成——这是转诊中心的疾病谱,不是人群的疾病谱。跨数据集比较时,这张表的每一行都应与对照数据集(HAM10000、PAD-UFES-20)的同名维度逐项对齐后再下结论。
§2.5 临床价值
对临床而言,BCN20000 代表的是"会转诊到黑色素瘤单元的那部分世界":指甲与黏膜病灶(普通皮肤镜数据集几乎不覆盖)、超出皮肤镜视场的大病变、低色素病变(无色素黑色素瘤的模仿者)。用它训练或校准的辅助诊断系统,更接近真实门诊中最需要机器兜底的疑难场景;其 unknown 类设计则为"系统何时应当承认不知道、建议转诊"提供了可量化的评估路径——这是辅助决策安全落地的核心指标,也是与专家读片对照研究(Tschandl et al., Nature Medicine 2020)中算法掉队最明显的环节。
三类受益的临床角色:皮肤科住院医与基层医师可获得"疑难病例陪练"——在真实分布外样本上观察模型的弃权行为,校准自己对该类工具的信任边界;专病中心读片者可获得"第二意见"对照,尤其在甲部与黏膜等个人经验密度低的解剖区;卫生技术评估方则获得一个"性能-分布落差"的量化标尺,用于审评厂商宣称的准确率(先问:在 BCN20000 口径下是多少)。
同时必须强调边界:该数据不能回答"人群筛查该不该做""某类病变的真实患病率"这类流行病学问题——转诊富集使其患病率结构系统性失真;也不能替代前瞻性临床试验——回顾性、单中心、标签确认等级混杂这三条,决定了它的证据等级位于"方法学基准"而非"临床证据"层。
§2.5b 明确不适用的研究问题
| 不适用问题 | 原因 | 替代数据方向 |
|---|---|---|
| 皮肤癌人群患病率/发病率估计 | 转诊富集、无抽样框 | 癌症登记(如 IARC 数据库) |
| 深肤色人群的 AI 性能声明 | 无肤色字段、南欧人群 | Fitzpatrick17k、DDI 等带肤型数据 |
| 儿童皮肤病变诊断 | 训练集年龄 56.8±18,低龄样本稀少 | 儿科皮肤影像专项数据 |
| 随访/进展建模 | 无纵向诊断变化标签(仅同皮损多帧) | 需要带时序随访标注的队列 |
| 治疗效果或预后预测 | 无治疗与结局信息 | 临床数据库(SEER 类)或专病队列 |
这张"负面清单"的价值与能力清单同等重要:大量无效的跨数据集比较源于把 BCN20000 用在了它结构性回答不了的问题上。审稿与立项评审时,可把本表当作研究设计的快速核查项。
§2.6 金标准参考表
| 维度 | 内容 |
|---|---|
| 参考标准划分 | 训练集标签(8 类)公开;测试集(6,533 张,含 unknown)标签保留在组织方手中;ISIC 2019 挑战版测试 GT(8,238 张)于赛后以 CSV 发布 |
| 标注方式 | 医院参考数据库链接诊断 + 多位读者人工复核;未达共识者剔除;原始 94,302 张经神经网络分类筛选皮肤镜帧 |
| 标注者 | 黑色素瘤单元皮肤科医师(含多位资深读片者);黑色素瘤全部经 board-certified 皮肤病理医师组织病理确认 |
| 标注性质 | MEL 及其他恶性肿瘤:组织病理学金标准;良性:组织病理 / 反射式共聚焦显微镜(RCM)/ 两位资深医师临床共识 / 随访稳定性确认;各确认方式比例未公开 |
与 HAM10000 金标准表的关键差异:HAM10000 为每张图记录了确认途径字段(histo/follow-up/siec/confocal),BCN20000 的 2024 版 CSV 没有对应的逐图确认类型列——这正是 §7.2b 分级表必须"反推"的原因。两集合并训练时,HAM 侧可以按确认等级加权而 BCN 侧不能,这种不对称本身会引入源域标签质量差异,需在域适应实验中作为协变量讨论。
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 大小 | 理由 |
|---|---|---|---|
| 训练自己的分类器、需要可复现的官方划分 | 2024 Figshare 版(CC BY 4.0) | 18,946 张 1024×1024 JPEG + CSV | 有 split 字段(12,413 train / 6,533 test)、8 字段元数据(含 capture_date)、商业友好许可 |
| 复现 ISIC 2019 挑战赛成绩 / 与 2019 文献数字对齐 | ISIC 2019 挑战数据包(CC-BY-NC) | 训练包 9.1 GB(25,331 张) | 与挑战榜单、冠军论文同一口径;含 HAM10000 与 MSK 图像 |
| 商业产品 / 对许可纯净度敏感 | 仅用 2024 Figshare 版 | 同上第一行 | CC BY 4.0 允许商用;挑战版 CC-BY-NC 禁止商业使用 |
| 开集识别 / OOD 研究 | 2024 版测试集子集或挑战版测试集 | 测试约 2,040 张 OOD(2024 版口径) | unknown 类仅在测试侧;挑战版测试 GT 已随赛发布(454 KB CSV) |
| 追加 DICOM 原始数据 / 病例级扩展 | ISIC Archive 渠道 | 以 Archive 为准 | 需注册账号;可与同期其他 collection 联合检索 |
| 长期存档引用(论文数据可用性声明) | Figshare DOI + Sci Data DOI | — | 双 DOI 互证,出版商与资助机构认可度最高 |
| 低带宽环境 | 仅下载 CSV 先行分析,图像按需补 | CSV 共约数 MB | 标签/元数据的全部统计可先于图像完成 |
§3.1 模态详情
- 皮肤镜图像:2024 版统一 1024×1024 JPEG;2019 挑战版图像未统一裁剪,皮损位置、尺度、拍摄角度各异(“in the wild” 的本义)。官方实验表明做 ROI 裁剪预处理平均可提升 balanced accuracy 2.5 个百分点。
- 结构化元数据:8 字段 CSV(见 §4.1),2024 版新增逐图 capture_date;ISIC 2019 挑战版元数据为 image / age_approx / anatom_site_general / sex / lesion_id 五列。
- 无分割掩码、无随访序列、无多光谱/共聚焦配对图像;RCM 仅作为部分良性病变的确认手段,未随数据发布。
- 图像内容谱系:常规色素性皮损为主体,另含三组刻意保留的"野外"要素——(a)指甲与甲床病灶、黏膜病灶(常规数据集近零覆盖);(b)超出皮肤镜视场的大型病灶(只能部分成像);(c)低色素/无色素病变(黑色素瘤诊断的经典陷阱)。三组要素在 Sci Data 2024 Figure 1 有样例展示。
- 分辨率与色深:1024×1024 JPEG(2024 版统一),无原始 RAW/DICOM;挑战版图像保留原始尺寸分布,部分边长超 1024。
- 标签载体:训练集 CSV 的 diagnosis 列为唯一标签来源;挑战版另有 8 列 one-hot 的 GroundTruth CSV,两版标签语义等价但类别定义存在 AK/SCC 拆分差异(见坑点 2)。
§3.2 按子集样本数表
| 子集 | 图像数 | 占比 | 说明 |
|---|---|---|---|
| 训练集 NV | 4,206 | 34% | 最大类 |
| 训练集 MEL | 2,857 | 23% | 全部组织病理确认 |
| 训练集 BCC | 2,809 | 23% | 组织学确认 |
| 训练集 BKL | 1,138 | 9% | 合并类 |
| 训练集 AK | 737 | 6% | 癌前病变 |
| 训练集 SCC | 431 | 3% | 2019 挑战新增类 |
| 训练集 DF | 124 | 1% | 最小类之一 |
| 训练集 VASC | 111 | 1% | 最小类 |
| 训练集合计 | 12,413 | 100% | 标签公开 |
| 测试集(含 OOD) | 6,533 | — | 标签不公开;OOD 约 2,040 张(瘢痕 395、炎症性 375、良性肿瘤 422、非原发性黑色素细胞病变 632、感染 68、正常变异 116、其他 32) |
| 全集 | 18,946 | — | 5,583 个皮损;2019 挑战版全集口径为 19,424 张 |
§3.3 数据格式表
| 组成 | 格式 | 说明 |
|---|---|---|
| 图像 | JPEG,1024×1024(2024 版) | 挑战版图像尺寸不一、未裁剪 |
| 训练标签 + 元数据 | CSV(每图一行) | BCN filename / age_approximation / anatomical site / diagnosis / lesion_id / capture_date / sex / split |
| 测试元数据 | CSV(每图一行) | 无 diagnosis 列 |
| 挑战版标签 | CSV(8 列 one-hot:MEL NV BCC AK BKL DF VASC SCC) | 25,331 行 |
| 代码 | Python(PyTorch) | GitHub imatge-upc/BCN20000,CC BY 4.0 |
| 挑战版许可文件 | 文本(数据页声明) | CC-BY-NC + 三方署名要求 |
| 2024 版 capture_date | CSV 日期列 | 仅 2024 版携带;挑战版需另从 ISIC Archive API 补齐 |
§3.4 存储大小
ISIC 2019 挑战版训练图像包 9.1 GB(25,331 张)+ 测试包 3.6 GB(8,238 张),标签与元数据 CSV 共约 1.5 MB;BCN 部分(12,413 张训练 + 6,533 张测试,1024×1024 JPEG)为 2024 Figshare 版的主体,随包分卷下载。解压后建议预留 15 GB 以上磁盘空间以同时容纳两个版本。
容量规划参考:按训练集 12,413 张 × 1024² JPEG 估算,BCN 训练部分约 2-3 GB 量级;若做离线预处理缓存(裁剪 + 224² 缩放后的张量),float32 存储约为 224×224×3×4 B ≈ 0.6 MB/张,全训练集约 7 GB——缓存策略只有在多轮实验时才划算,单次实验直接在线解码更省磁盘。网络规划:S3 直链单线程约数分钟/GB,aria2c -x 8 可显著提速;Figshare 分卷建议校验 SHA 后再解压。
§3.5 标注方式
三段式流水线:先由医院参考数据库把图像与诊断记录链接;再经多位读者复核诊断合理性(不达标剔除);最后按类别采用不同确认等级——黑色素瘤全部切除后组织病理确认,其他恶性肿瘤组织学确认,良性病变采用组织病理、RCM 或两位资深皮肤科医师临床共识,未切除病变以随访稳定性排除恶性。整体属于"临床金标准回溯 + 人工复核"的弱-强混合监督,非双盲独立双标注。
术语说明:siec(single image expert consensus,单图专家共识)是 2019 预印本引入的确认类型标签,指仅凭单张皮肤镜图像即可达到专家共识的标注——它与组织病理确认的标签具有不同的证据结构:siec 标签的噪声与读片者经验、图像质量直接耦合。另一术语 RCM(reflectance confocal microscopy,反射式共聚焦显微镜)是皮肤镜之外的影像级辅助手段,在部分良性病变上充当"准病理"确认角色。
对 AI 工程的三点直接推论:其一,标签质量按类别分层——MEL 列可当作近零噪声锚点,良性列自带结构性噪声,评估 MEL 敏感度比总体 accuracy 更能反映模型真实价值;其二,"多读者复核"未达共识即剔除意味着边界样本被系统性移除,数据分布已被人为"净化"过一轮,实际部署时遇到的正是这些被剔除的模糊病例;其三,确认类型分布未公开(2019 预印本即因这一缺口被同行评审点名),任何依赖标签置信度的实验(噪声建模、自训练)都只能自行估计转移矩阵。
§3.6 标注者资质与一致性
读片与复核由黑色素瘤单元皮肤科医师完成(含 Susana Puig、Josep Malvehy 等国际级黑色素瘤专家团队);皮肤病理诊断由 board-certified 皮肤病理医师签署。官方论文未发布读片者间一致性统计(如 kappa),确认类型(histo/siec/随访)的分布亦未公开——这是评估标签噪声水平时的已知盲区(见坑点 8)。
§3.7 采集周期
2010-2016 年连续采集(跨度 7 年);2024 版逐图提供 capture_date,可做时间漂移分析;2019 挑战版不携带时间戳。七年跨度内的实际变量包括:数码相机换代、附件更替、科室成像流程标准化进程——这些都未逐项记录,但年份本身是它们的粗粒度代理变量。实践上建议把 capture_date 归一成"相对首个采集日的月龄"特征:既能检验时间漂移,又避免把绝对年份与诊断建立伪相关(不同年份的疾病构成本就受入组策略影响)。
§3.8 地域覆盖
单中心:西班牙加泰罗尼亚自治区巴塞罗那 Hospital Clínic(三级转诊中心);病例部分来自加泰罗尼亚地区其他中心的转诊。无肤色/民族字段,南欧人群构成使其对深肤色人群外推性有限。
从比较研究视角看,这一"缺陷"正是其价值:它是皮肤镜大数据中少数可以明确标注"单一中心、单一地区人群"的样本,与 HAM10000(明确的双中心)和 ISIC 2020(多源混合)构成从"最纯"到"最杂"的中心谱系。做泛化研究时的建议姿势:以 BCN 为源域、以明确的远端目标(PAD-UFES 的巴西手机图像)为压力测试端点,中间插入 HAM10000 作为过渡域,可以画出一条更完整的性能衰减曲线。
§3.9 设备规格
三台高分辨率相机 + 多种皮肤镜附件(接触式/偏振),拍摄参数与附件型号未公布;不同设备间的放大倍数与视场差异未被量化,构成"图像质量/尺度不一致"坑点(见坑点 7)的根源。
工程后果与对策速查:放大倍数不一 → 皮损在画面中的占比跨越一个数量级,RandomResizedCrop 的 scale 下限要放宽到 0.7 甚至 0.5;视场不一 → 暗角与皮肤背景占比变化,ROI 裁剪是第一道必要工序;附件混用 → 部分图像带接触式压迫留下的白色压痕、部分呈偏振特有的深色背景,颜色恒常模块应作为可开关组件;型号不可考 → 无法按设备分桶做成组评估,只能在域适应实验中以"BCN 整体 vs 外部中心"的粗粒度替代。
§3.10 深度溯源链
| 阶段 | 操作 | 证据位置 |
|---|---|---|
| 1. 原始采集 | 2010-2016 年 94,302 张(皮肤镜 + 贴纸照 + 临床照),存于医院服务器目录结构 | Sci Data 2024 Methods |
| 2. 图像类型分类 | 神经网络自动区分皮肤镜帧/贴纸/临床照 | Figure 3 |
| 3. 隐私处理 | YOLOv3 检测贴纸并剔除(含患者标识区域) | Figure 4 |
| 4. 图像清理 | 裁剪算法去暗角、提取皮损 ROI | Figure 5 |
| 5. 诊断链接 | 经医院参考数据库与诊断记录关联 | Methods |
| 6. 人工复核 | 多位读者复核诊断合理性,未达共识面板者剔除 | Methods |
| 7. 发布 | 2019 挑战(19,424 口径)→ 2023 Figshare/ISIC Archive(18,946 口径)→ 2024 Sci Data 论文 | 数据页/DOI |
这条链路的价值在于每一步都留有可审计痕迹——对数据集溯源要求严格的场景(监管申报、数据合规审计)可直接引用论文图 3-5 作为流程证据;对复现者,阶段 2-4 的自动化算法意味着"你拿到的图像已经过机器裁剪与筛选",任何与原始成像特性的推断都应带上这一前提。
§3.11 皮损层视角的样本表
图像数之外,皮损层的分布更能反映数据集的"真实信息量":5,583 个皮损中,多帧皮损(≥2 张图像)承担了图像数与皮损数之间的全部余量,图像/皮损比约 3.4:1。这意味着任何按图像计数的统计(类别占比、划分比例)都会被多帧皮损加权——一个拥有 10 帧随访图的痣对 NV 类的贡献是一个单帧痣的 10 倍。官方基线以图像为单位训练(每个样本独立计数),但统计推断与"新病例泛化"评估应以皮损为单位设计:在皮损层做分层抽样重排,得到的置信区间才不虚高。由于官方未公布逐皮损的帧数分布表,建议使用者在加载后第一件事统计 lesion_id 的 value_counts 分布并随实验报告归档。
§4 数据结构
§4.0 目录树
2024 Figshare 版(推荐,文件名以随包 CSV 的 BCN filename 列为准):
bcn20000/
├── train/
│ ├── <BCN_filename_1>.jpg # 12,413 张,1024×1024
│ └── ...
├── test/
│ ├── <BCN_filename_2>.jpg # 6,533 张(含约 2,040 张 OOD,无标签)
│ └── ...
├── BCN20000_train.csv # 12,413 行 × 8 字段(含 diagnosis)
├── BCN20000_test.csv # 6,533 行(无 diagnosis 列)
├── LICENSE # CC BY 4.0
└── README
选树先看任务:只做闭集 8 类分类,用 train 子树即可(测试侧无标签,留作官方评测或 OOD 研究);做开集识别,train + test 两棵都要,但 test 的用途仅限推理与弃权评估。两棵树的文件名命名空间一致(同一 ID 体系),跨树哈希比对是检测版本交错的快捷手段。
ISIC 2019 挑战版(复现 2019 基准时使用):
isic2019/
├── ISIC_2019_Training_Input/ # 25,331 张 JPEG(BCN 12,413 + HAM 10,015 + MSK 2,903)
├── ISIC_2019_Training_GroundTruth.csv # 25,331 行 × 8 类 one-hot(MEL NV BCC AK BKL DF VASC SCC)
├── ISIC_2019_Training_Metadata.csv # image / age_approx / anatom_site_general / sex / lesion_id
├── ISIC_2019_Test_Input/ # 8,238 张(含第 9 类 unknown)
└── ISIC_2019_Test_Metadata.csv # 8,238 行
§4.1 DAIMS 数据字典
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| BCN filename | string | 图像文件唯一标识,主键 | bcn_0000001 | 图像-表格连接键 | 无 | 无 | 全集 18,946 个唯一值 |
| diagnosis | category | 8 类诊断标签(仅训练集) | MEL | 分类目标 | 良性类确认等级不一(见 §3.5) | 无(unknown 只在测试侧) | MEL/NV/BCC/AK/BKL/DF/VASC/SCC |
| lesion_id | string | 皮损级分组键,一对多 | lesion_01234 | 皮损级分组防泄漏 | 同皮损多图非同帧拍摄 | 无 | 5,583 个皮损 |
| age_approximation | int(分箱) | 就诊年龄按 5 岁分箱 | 60 | 元数据融合/偏倚审计 | 分箱量化误差 ≤±2.5 岁 | 缺行/空值(未显式标注) | 0-85 |
| sex | category | 生物学性别 | male | 元数据融合/公平性评估 | 自报性别 | not-reported | male/female/other/not-reported |
| anatomical site | category | 皮损主要解剖部位(6 类) | anterior torso | 元数据融合/部位偏倚审计 | 多部位病灶取主要部位 | 未报告(训练集 173 张) | anterior torso/upper extremity/lower extremity/head-neck/palms-soles/oral-genital |
| capture_date | date | 拍摄日期(仅 2024 版) | 2014-07-23 | 时间漂移分析 | 记录误差未知 | 无显式编码 | 2010-01 至 2016-12 |
| split | category | 官方划分 | train | 复现官方口径 | 无 | 无 | train/test |
字段字典使用说明:这张字典按 2024 Figshare 版的 CSV 语义编写;若切换到 ISIC 2019 挑战版,字段名与取值有两处需要映射——diagnosis 的 8 列 one-hot(MEL/NV/BCC/AK/BKL/DF/VASC/SCC 列名)替代单一 diagnosis 列,anatomical_site 的取值拼写为 anatom_site_general(部位枚举同为 6 类但字符串大小写不同)。capture_date 在挑战版中不存在,需要时只能从 ISIC Archive 渠道按图像 ID 补齐。任何跨版本字段映射都建议固化为代码内的显式 schema 声明,而不是在数据处理中途散落 rename 调用。
§4.2 标签分布
训练集 12,413 张:NV 4,206(34%)> MEL 2,857(23%)≈ BCC 2,809(23%)> BKL 1,138(9%)> AK 737(6%)> SCC 431(3%)> DF 124(1%)> VASC 111(1%)。最大类与最小类之比约 38:1。测试集 6,533 张含约 2,040 张 unknown(31.2%),即测试侧约三分之一图像不属于任何训练类——这是与绝大多数分类数据集最关键的分布差异。
三点解读:其一,与 HAM10000(NV 占 67%)相比,BCN 的痣占比被"难病例入组"压低了一半,这使两集直接混合训练时 NV 类的先验会剧烈摆动——重采样强度需要按合并后分布重新计算而非沿用单集参数。其二,恶性三类的绝对量(MEL 2,857 / BCC 2,809 / SCC 431)都足以支撑独立训练,无需把恶性合并成单一"癌症"类牺牲诊断粒度;真正需要少样本技巧的是 DF 与 VASC——两者各百余张,且 DF 与 VASC 的皮肤镜模式恰好差异极大(结构型 vs 颜色型),共享参数的类平衡策略对它们的效果相反。其三,unknown 占测试侧 31.2% 的设计让"闭集准确率"在测试集上天然不可比,任何跨论文对比必须先对齐"是否剔除 unknown"这一前提。
§4.3 关键统计
- 图像/皮损比约 3.4:1(18,946 图 / 5,583 皮损),同一皮损存在多帧随访或不同视野拍摄——皮损级分组是防泄漏的生命线。
- 训练集性别比 52:47.5(男:女);年龄 56.8±18 岁。
- ISIC 2019 合并训练集 25,331 张中 8 类分布:MEL 4,522 / NV 12,875 / BCC 3,323 / AK 867 / BKL 2,624 / DF 239 / VASC 253 / SCC 628(HAM10000 的 akiec 327 张在 2019 年被拆为 AK 130 + SCC 197)。
- 2019 挑战版(19,424)与 2024 版(18,946)相差 478 张,官方未发布逐图变更清单。
- 恶性类(MEL+BCC+SCC)合计 6,097 张,占训练集 49.1%——远高于任何筛查人群的恶性占比,这是"转诊富集"最直接的量化证据。
- 癌前/老年相关类(AK 67.8±13 岁、SCC 72±11 岁、BCC 65.5±15 岁、BKL 62.6±15 岁)与痣(43.4±16 岁)之间约 20 岁的年龄差,使"年龄→恶性先验"成为强元数据特征,也意味着年龄缺失行在训练中的处理方式会实质影响模型行为。
- OOD 子类构成以非原发性黑色素细胞病变(632 张,30.98%)、良性肿瘤(422 张,20.69%)与瘢痕(395 张,19.36%)为主,炎症性 375 张、正常变异 116 张、感染性疾病 68 张——瘢痕与炎症对"复发随访"场景最危险,模型极易把它们误判为恶性再生长。
- 解剖部位 6 类中,躯干前部为最大来源(与欧洲人群痣分布一致),口腔生殖器与掌跖属稀有部位(合计占比小但临床意义高)。
§4.4 数据层级
人群(未提供患者级 ID;巴塞罗那单中心队列)
└─ 患者(未提供 ID;同一患者可贡献多个皮损)
└─ 皮损 lesion_id(5,583 个;同一皮损可有多帧图像)
└─ 图像 BCN filename(18,946 张;分析基本单元)
层级含义与使用规则:统计推断(置信区间、显著性检验)应在皮损层而非图像层做——同一皮损的多帧图像高度相关,图像层聚类会严重高估有效样本量;特征工程中"皮损级聚合特征"(如同一皮损多帧预测的一致性/熵)是免费的置信度信号;而"患者级"只能作为已知风险声明——无法验证同一患者是否跨 train/test,报告时应写明"皮损级零泄漏、患者级未知"。这一层级缺失也是 BCN 与 ISIC 2020(提供患者 ID 与患者级划分)最实质的结构差异。
§4.5 缺失值与信息性缺失编码表
| 字段 | 缺失规模 | 编码方式 | 处理建议 |
|---|---|---|---|
| sex(训练集) | 74 张(0.5%) | not-reported 显式枚举 | 保留为独立类别或缺失指示位 |
| anatomical site(训练集) | 173 张(2%) | 空值/未报告 | 勿用众数填补;部位与诊断强相关(信息性缺失) |
| age_approximation | 比例未单独公布 | 空值 | 缺失本身可能非随机;建议加 has_age 指示位 |
| capture_date | 2019 挑战版整列缺失 | 列不存在 | 两版混用时以 2024 版为准 |
| diagnosis(测试集) | 全列保留 | 组织方 withholding | 官方评测渠道或挑战版发布 GT 获取 |
这张缺失表的总体结论:BCN20000 的元数据缺失率在影像数据集中属于"温和"水平(≤2%),但其信息性不可忽视——部位缺失不是均匀撒落的噪声,而与病灶的采集场景相关;正确姿势是"保留缺失 + 显式指示位 + 缺失机制分析"三件套,而不是任何形式的静默填补。另需记住表格只统计了训练集(官方口径),测试集的缺失情况需自行统计,两半数据的缺失结构可能有差异。
缺失值审计脚本(入库第一天建议跑一遍并入库报告):
import pandas as pd
df = pd.read_csv("bcn20000/train/BCN20000_train.csv")
for col in ["age_approximation", "sex", "anatomical_site"]:
miss = df[col].isna().sum() + (df[col] == "not-reported").sum()
print(f"{col}: 缺失 {miss} 张({miss/len(df):.1%})")
# 交互审计:缺失是否与 diagnosis 相关(信息性缺失检验)
print(pd.crosstab(df["anatomical_site"].isna(), df["diagnosis"], normalize="columns"))
§5 划分与使用建议
§5.1 官方划分
2024 版以 CSV 的 split 列固化:训练集 12,413 张(8 类标签随包发布),测试集 6,533 张(标签保留,unknown 全部划入测试侧;已知类部分为分层随机抽样,另设私有测试用于挑战评测)。ISIC 2019 挑战口径:训练 25,331 张(BCN 12,413 + HAM 10,015 + MSK 2,903)公开 8 类 one-hot;测试 8,238 张的 GT 在赛后发布(数据页的 454 KB Test GroundTruth CSV)。
两版划分的对应关系值得专门说明:2024 版的"训练集"12,413 张正是 2019 挑战训练集中 BCN 来源的部分(也是官方基线实验的全部数据),而挑战训练集里还有 HAM10000 的 10,015 张与 MSK 的 2,903 张——换言之,"BCN20000 训练集"与"ISIC 2019 训练集"是包含关系而非同一集合。以挑战版整体训练、再在 BCN 2024 测试集上评估属于跨版本泄漏(同一批 BCN 图像两侧都出现),这正是坑点 1 与坑点 4 联合作用的最典型案例。
§5.2 社区惯例划分
官方基线(Sci Data 2024)在训练集内部按 75%/5%/20% 划分 train/val/test 并做 5 折分层交叉验证;挑战冠军 Gessert 等使用 5 折 CV + 外部数据。社区复现时最常见的两种口径是"挑战版 25,331 内部 9:1 随机划分"与"BCN 训练集 5 折皮损级 CV"——两者数字不可直接互比(见坑点 4)。
选口径前先回答两个问题:你要和谁比?若对标官方基线表(Sci Data 2024 Table 2),必须复刻其"训练集内 75/5/20 + 5 折分层 CV"协议;若对标挑战榜单,必须用挑战版 25,331 张训练 + 8,238 张测试 GT 终评。你要部署吗?部署场景请额外保留一份从未参与任何调参的时间外推折(按 capture_date 取最后一年为留出集,仅 2024 版可行),模拟"数据冻结后新病例"的真实表现。
§5.3 泄漏风险与划分策略 ⭐
- 皮损级泄漏:同一 lesion_id 的多帧图像若分属训练/验证两侧,验证分数会系统性虚高;必须以 lesion_id 为分组键(见坑点 3)。
- 患者级泄漏:数据不含患者 ID,同一患者多个皮损可能跨侧分布;无法彻底消除,只能在报告中声明,并以 HAM10000/PAD-UFES-20 做真正的患者级外部验证补偿。
- 版本泄漏:2019 挑战版与 2024 版有 478 张差异,且 ISIC Archive 渠道图像与挑战包存在交错;两版混用会造成"假独立"测试(见坑点 1)。
- 跨数据集重复:Cassidy et al.(2022)在 ISIC 系列数据集内部与之间均发现重复图像;合并 HAM10000/ISIC 2019/2020 时必须做感知哈希去重(见坑点 2)。
泄漏自检清单(发布结果前逐项勾选):
- 验证/测试与训练的 lesion_id 零交集(代码断言,非肉眼)。
- 感知哈希(phash)对全量图像两两比对(分桶近似), Hamming 距离阈值内样本是否跨侧。
- 训练所用版本与测试所用版本的口径声明(2019 挑战版 / 2024 Figshare 版)。
- 若合并 HAM/MSK,各类计数与官方 ISIC 2019 分布逐一对账。
- 元数据特征(年龄/部位)与标签的互信息是否高到"仅元数据就能过基线"(捷径审计)。
- 患者级泄漏已作为已知局限写入论文/报告的 limitations。
# 皮损级 5 折交叉验证(可运行最小示例)
import pandas as pd
from sklearn.model_selection import GroupKFold
df = pd.read_csv("bcn20000/train/BCN20000_train.csv") # 列:BCN_filename, diagnosis, lesion_id, ...
gkf = GroupKFold(n_splits=5)
for fold, (tr, va) in enumerate(gkf.split(df, df["diagnosis"], groups=df["lesion_id"])):
assert set(df.iloc[tr]["lesion_id"]).isdisjoint(set(df.iloc[va]["lesion_id"])) # 皮损级零重叠
df.loc[df.index[va], "fold"] = fold
§5.4 交叉验证与外部验证建议
- 内部:GroupKFold(5) 按皮损分组,分层保证各折类别比例一致;指标用 balanced accuracy(对齐官方)。
- 外部:首选 HAM10000(同模态异中心)、PAD-UFES-20(异模态异人群)、MED-NODE(临床照片);做 BCN→外部 的单向迁移而非混合训练后自测。
划分策略决策表:
| 你的目标 | 推荐协议 | 报告口径 |
|---|---|---|
| 对标官方基线 | 训练集内 75/5/20 + 5 折分层 CV(皮损级) | BA mean±std + 逐类召回 |
| 对标 ISIC 2019 榜单 | 挑战版 25,331 训练 + 8,238 测试 GT 一次性终评 | 主指标 BA + 是否用外部数据 |
| 部署前压力测试 | 时间外推(最后一年留出)+ 跨数据集迁移 | 各外推域衰减幅度 |
| OOD 方法研究 | 训练 8 类 → 官方测试 unknown 检测 | unknown AUROC + 弃权率曲线 |
| 时间外推折(2024 版独有能力的最小实现):按 capture_date 排序取末位约 15% 为留出集,训练集再做皮损级 CV;该设置下性能下降幅度即是"数据冻结后自然漂移"的无偏估计,可作为上线再训练周期设定的直接依据。
划分相关的一次性工程建议:把 §5.3 的分组断言、§5.5 的错误速查与时间外推折的生成交给同一个 splits.py 模块统一管理,fold 分配以 CSV 文件形式随实验归档——划分代码散落在 notebook 里是皮肤镜文献复现危机最常见的直接原因;BCN20000 的皮损级键齐全,没有理由再把"随机划分"写进任何一份新报告。
§5.5 常见加载与划分错误速查
| 症状 | 根因 | 修复 |
|---|---|---|
| 图像数与 CSV 行数对不上 | 下载了 2019 挑战版却用 2024 版 CSV(或反之) | 按 §6.2 三步验收重下并校验 |
| 验证分数异常高(0.9+) | 随机划分未按 lesion_id 分组 | 改 GroupKFold 并跑 §5.3 断言 |
| 测试集"准确率"算不出来 | 2024 版测试集本就无标签 | 用挑战版赛后 GT 或申请官方评测 |
| 第 9 类(unknown)报索引错误 | 误把 unknown 当训练类建 9 类头 | 训练头固定 8 类,unknown 走弃权分支 |
| 两版混合训练后无法复现文献 | 版本口径漂移(坑点 1) | 锁定单一版本 + 哈希清单 |
| NV 类占比与论文不符 | 统计口径是挑战合并集(NV 12,875)而非 BCN 单集(4,206) | 明确数据范围再对表 |
§6 AI 就绪指南
§6.0 云端快速启动
数据托管于 Figshare(无需注册直下)与 ISIC S3 桶(直链)。无官方 Kaggle/HuggingFace 托管入口——第三方镜像 license 状态不明,不建议作为生产数据源(见坑点 1)。Colab 免费档(约 12 GB 内存 + T4)可完成 224×224 分辨率的基线复现;全分辨率 1024×1024 训练建议 24 GB 显存起步。
云端要点速记:Figshare 分卷下载后按序号合并解压(cat bcn20000_*.zip.* > all.zip 之类的合并方式以包内说明为准);S3 直链支持 wget -c 断点续传,跨国网络环境建议挂代理或用 aria2c -x 8;解压后先跑 §4.5 的缺失审计与行数断言再开训练,避免把不完整下载带进实验;Colab 上请把数据挂载到本地磁盘而非 Drive(IO 吞吐差 5-10 倍),或在首次 epoch 前做一次全量 tar 到本地缓存。
§6.1 快速上手
# 目录结构预期(2024 Figshare 版解压后):
# data_root/bcn20000/train/*.jpg + data_root/bcn20000/train/BCN20000_train.csv
# data_root/bcn20000/test/*.jpg + data_root/bcn20000/test/BCN20000_test.csv
# CSV 的 BCN filename 列即图像文件名键;训练 CSV 含 diagnosis/lesion_id 等列。
# 最小可用子集:只取训练集 CSV 即可跑通 5 折皮损级 CV;测试集无标签,勿当作验证集。
import pandas as pd, pathlib
data_root = pathlib.Path("data_root/bcn20000")
df = pd.read_csv(data_root / "train" / "BCN20000_train.csv")
img_path = data_root / "train" / df["BCN_filename"].iloc[0] # data_root 拼接关系:目录 + 文件名列
assert img_path.exists() and df["diagnosis"].nunique() == 8 # 8 类齐全即加载成功
print(df["diagnosis"].value_counts(normalize=True).round(3)) # NV 0.34 / MEL 0.23 / BCC 0.23 ...
验证标签-图像对齐的三条断言建议写进加载器自测:① CSV 中每个 BCN filename 都能映射到磁盘文件(防"下错分卷");② diagnosis 值域恰好是 8 类(防引入第三方预处理版的残留编码);③ 每个 lesion_id 至少对应 1 张图且组内 diagnosis 唯一(同皮损不同诊断标签即数据问题,立即上报官方)。
§6.2 数据获取
| 渠道 | 链接 | 内容 | 条件 |
|---|---|---|---|
| Figshare(推荐) | DOI 10.6084/m9.figshare.24140028 | 2024 版:18,946 张 1024×1024 JPEG(train/test)+ 2 份 CSV | 无需注册,CC BY 4.0,直接下载 |
| ISIC 2019 挑战存档 | challenge.isic-archive.com/data | 训练包 9.1 GB(25,331 张)+ GT CSV + 元数据 CSV;测试包 3.6 GB + 赛后 GT | CC-BY-NC;须三方署名 |
| ISIC Archive | collection 249 | BCN20000 collection 18,946 张,可配合 API 拉取 | 注册账号并同意使用条款 |
| 官方基线代码 | github.com/imatge-upc/BCN20000 | Sci Data 2024 六个基线的训练/裁剪代码 | CC BY 4.0 |
# 渠道一:2024 Figshare 版(推荐;分卷下载后合并解压)
python3 -m pip install figshare_cli # 或直接浏览器访问 DOI 页面下载分卷
# 渠道二:ISIC 2019 挑战版(复现 2019 榜单口径)
wget https://isic-challenge-data.s3.amazonaws.com/2019/ISIC_2019_Training_Input.zip # 9.1 GB
wget https://isic-challenge-data.s3.amazonaws.com/2019/ISIC_2019_Training_GroundTruth.csv
wget https://isic-challenge-data.s3.amazonaws.com/2019/ISIC_2019_Training_Metadata.csv
wget https://isic-challenge-data.s3.amazonaws.com/2019/ISIC_2019_Test_Input.zip # 3.6 GB
程序化获取(适合服务器/CI 环境):Figshare 提供 API,可用 figshare_cli 或原生 API 拉取分卷清单后并行下载:
# figshare API 最小示例:列出 BCN20000 条目的全部分卷与直链
import requests
article_id = "24140028" # DOI 10.6084/m9.figshare.24140028 的数字部分
for f in requests.get(f"https://api.figshare.com/v2/articles/{article_id}", timeout=30).json()["files"]:
print(f["name"], f["size"], f["download_url"]) # 逐分卷下载并校验 provided_md5
下载后完整性验收三步:① 图像文件数 = CSV 行数(2024 版 12,413/6,533;挑战版 25,331/8,238);② 训练 GT 各类计数与官方分布逐一相等(§4.3 数字);③ 随机抽 20 张图能打开且非 0 字节。挑战版还需校验 8 列 one-hot 每行恰有一个 1。
§6.3 预处理全流程
# 步骤:读取 CSV → ROI 裁剪(官方证实 +2.5% balanced accuracy)→ 缩放 → 张量
# 官方裁剪思路:检测并去除图像四角暗框,定位皮损主体并外扩裁剪;完整实现见
# github.com/imatge-upc/BCN20000(Sci Data 2024 配套代码)
import numpy as np, torch, torchvision.transforms as T
from PIL import Image
def crop_roi(img: Image.Image, margin: int = 16) -> Image.Image:
"""按亮度阈值去除暗角背景并外扩裁剪;失败则返回原图(保守回退)。"""
arr = np.asarray(img.convert("L"))
mask = arr > max(10, int(arr.mean() * 0.25))
if mask.sum() < 0.05 * mask.size: # 阈值失真时回退
return img
rows, cols = np.where(mask)
h, w = arr.shape
box = (max(cols.min() - margin, 0), max(rows.min() - margin, 0),
min(cols.max() + margin, w), min(rows.max() + margin, h))
return img.crop(box)
train_tf = T.Compose([
T.Lambda(crop_roi),
T.RandomResizedCrop(224, scale=(0.7, 1.0)),
T.RandomHorizontalFlip(), T.ColorJitter(0.2, 0.2, 0.1),
T.ToTensor(), T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
])
eval_tf = T.Compose([T.Lambda(crop_roi), T.Resize(256), T.CenterCrop(224),
T.ToTensor(), T.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])
注意事项:毛发干扰可用 DullRazor 类算法或图像修复,但必须固定随机种子并纳入版本控制;颜色恒常(shade of gray)在跨数据集迁移时收益显著,但对域内训练提升有限;勿对测试图像做任何"增强"。
# 颜色恒常(shade of gray,m=6)与轻量毛发抑制:作为可开关模块接入 transform
import cv2 as cv
import numpy as np
def shade_of_gray(img: np.ndarray, m: int = 6) -> np.ndarray:
"""逐通道按 Minkowski 范数归一化,抑制相机/附件带来的全局色偏。"""
norm = (np.abs(img.astype(np.float32) ** m).mean(axis=(0, 1))) ** (1.0 / m)
return np.clip(img * (norm.mean() / norm), 0, 255).astype(np.uint8)
def remove_hair(img_bgr: np.ndarray) -> np.ndarray:
"""黑帽形态学检测毛发并 inpaint;幅度温和,避免误伤网状结构。"""
kernel = cv.getStructuringElement(cv.MORPH_RECT, (17, 17))
blackhat = cv.morphologyEx(img_bgr, cv.MORPH_BLACKHAT, kernel)
mask = cv.threshold(blackhat, 12, 255, cv.THRESH_BINARY)[1]
return cv.inpaint(img_bgr, mask, 3, cv.INPAINT_TELEA)
两个模块的默认开关策略:域内训练(BCN→BCN)建议关毛发抑制(有误伤细网状结构的风险)、开轻量裁剪;跨域迁移(BCN→HAM/PAD)全开并做消融对比——这正是官方"裁剪 +2.5%"结论在不同目标域上重估的流程。
归一化常数的说明:ImageNet 均值/方差是皮肤镜文献的事实标准(官方基线与冠军方案均如此),无需按数据集重算;但若做跨数据集迁移,建议额外输出两域图像的通道均值差作为"域距离"诊断量——差值超过 0.05(0-1 标度)通常预示需要颜色恒常干预。分辨率策略上,1024² 原图保留的微结构(色素颗粒、血管袢)在 224² 下大量丢失,条件允许时至少保留一条 512² 的实验分支以量化分辨率-性能曲线。
§6.4 PyTorch DataLoader
import pandas as pd, torch
from PIL import Image
from torch.utils.data import Dataset, DataLoader, WeightedRandomSampler
class BCN20000(Dataset):
"""BCN20000 训练集数据集类:CSV 一行 = 一张图;leakage-safe 由外部按 fold 过滤。"""
def __init__(self, root, fold_csv, fold, tf, is_train=True):
df = pd.read_csv(fold_csv)
df = df[df["fold"] == fold] if not is_train else df[df["fold"] != fold]
self.paths = [root / f for f in df["BCN_filename"]]
self.labels = df["diagnosis"].map(
{"MEL":0,"NV":1,"BCC":2,"AK":3,"BKL":4,"DF":5,"VASC":6,"SCC":7}).values
self.tf, self.is_train = tf, is_train
def __len__(self): return len(self.paths)
def __getitem__(self, i):
return self.tf(Image.open(self.paths[i]).convert("RGB")), self.labels[i]
root = "data_root/bcn20000/train"
ds_tr = BCN20000(root, "folds.csv", fold=0, tf=train_tf, is_train=True)
counts = pd.read_csv("folds.csv")["diagnosis"].value_counts().reindex(
["MEL","NV","BCC","AK","BKL","DF","VASC","SCC"]).values
w = 1.0 / torch.tensor(counts, dtype=torch.float)[[0,1,2,3,4,5,6,7]]
sampler = WeightedRandomSampler(w[ds_tr.labels], num_samples=len(ds_tr)) # 类别平衡采样
dl_tr = DataLoader(ds_tr, batch_size=64, sampler=sampler, num_workers=8, pin_memory=True)
# 完整训练循环骨架(含早停与最优折保存;损失/优化器/上限与官方基线对齐)
import torch.nn as nn
from torch.optim import Adam
model = model.to("cuda")
crit = nn.CrossEntropyLoss()
opt = Adam(model.parameters(), lr=3e-4)
best, wait = 0.0, 0
for epoch in range(130): # 官方上限 130 epochs
model.train()
for x, y in dl_tr:
x, y = x.to("cuda"), y.to("cuda")
opt.zero_grad(); loss = crit(model(x), y); loss.backward(); opt.step()
ba = validate(model, dl_va) # 皮损级验证折的 balanced accuracy
if ba > best:
best, wait = ba, 0
torch.save(model.state_dict(), "best.pt") # 仅保存验证最优折权重
else:
wait += 1
if wait >= 20: break # 官方早停 patience = 20
元数据融合扩展点:若做 ISIC 2019 Task 2 式的图像+元数据模型,在 __getitem__ 里并行返回一张特征向量——age 分箱中值(缺省填训练集中位)、sex/site 的 one-hot、缺失指示位,与图像张量在 collate_fn 中拼成 (image, meta, label) 三元组;不要把元数据直接 concat 进卷积层,应用独立 MLP 分支在 penultimate 层融合(冠军方案同构)。
工程纪律三条:DataLoader 内不做任何依赖全局状态的变换(随机数生成器按 worker 显式播种,保证实验可复现);persistent_workers=True 与 prefetch_factor 按 GPU 吞吐调参,避免裁剪函数成为瓶颈;验证集 loader 永远不接增强与 sampler——历史上多起"BCN 分数虚高"复现事故源于验证侧误用训练 transform。
§6.5 坑点清单 ⭐
八个坑点覆盖从下载到部署的全生命周期,先给出索引以便按需跳读:
| 坑点 | 标题 | 分类 | 主要影响阶段 |
|---|---|---|---|
| 1 | 双版本 19,424 vs 18,946 与二次分发 | 工程陷阱 | 数据获取/版本管理 |
| 2 | HAM10000 合并的类别映射 | 标签理解 | 数据合并 |
| 3 | lesion_id 一对多 + 无患者 ID | 数据泄漏 | 划分/评估 |
| 4 | 无公开测试标签的复现困境 | 评估误用 | 评估/论文 |
| 5 | 类别不平衡 | 评估误用 | 训练/评估 |
| 6 | 元数据缺失与年龄分箱 | 预处理陷阱 | 特征工程 |
| 7 | in the wild 图像质量 | 预处理陷阱 | 预处理/训练 |
| 8 | 单中心转诊偏倚与确认等级混杂 | 偏倚陷阱 | 解读/部署 |
八个坑点的共同根因是"数据集先于方法论设计":2019 年它为挑战赛而生(快速、公平、可排名),2024 年才补齐数据描述论文的工程规范。使用它的高手姿势是把每个坑点都转成自己论文/系统的一个显式组件——版本指纹、皮损级划分器、OOD 评分器、分层审计报告——这些组件加起来的工程量不过数天,却足以把结果的可信度提升一个档次。
⚠️ 坑点 1:双版本 19,424 vs 18,946——二次分发与口径漂移(分类:工程陷阱)
问题:数据存在三代形态——2019 挑战/arXiv 口径 19,424 张、2024 Sci Data/Figshare/ISIC Archive 口径 18,946 张(相差 478 张、无官方变更清单),此外 Copycats(arXiv:2402.06353)统计 Kaggle 上有 550 个 ISIC 相关副本(共 1.9 TB,原版仅 38 GB),许可证缺失、描述失真、随意裁剪预处理者皆有。混用两版会引入"假独立"测试样本与不可比的基线数字。
症状:按 19,424 下载后对不上 CSV 行数;从 Kaggle 镜像训练后在 ISIC Archive 图像上"测出"虚高成绩;论文数字无法被他人复现。
解决:
- 简单方法:锁定单一版本写进实验配置——生产与研究默认 2024 Figshare 版(18,946 + split 字段),仅在复现 2019 榜单时切挑战版;数据落盘前校验图像数与 CSV 行数一致。
- 进阶方法:对两版交集做文件名 + 感知哈希(
imagehash.phash)比对,产出私有 dedup 清单;任何外部镜像来源先跑哈希溯源再入库。- SOTA 方法:把"数据指纹"(版本号 + 哈希清单 + 许可类型)纳入 DVC/git-lfs 版本控制,训练容器内断网、只挂载指纹校验通过的数据卷。
参考:Copycats: the many lives of a publicly available medical imaging dataset(arXiv:2402.06353);ISIC Challenge Datasets 页;Sci Data 2024。
⚠️ 坑点 2:与 HAM10000 合并时的类别映射——AKIEC 拆分与 BKL"三合一筐"(分类:标签理解)
问题:HAM10000 的 akiec 类(光化性角化病 + 原位癌,327 张)在 ISIC 2019 被拆成 AK 130 + SCC 197;BCN 的 BKL 则把日光性黑子、脂溢性角化病、扁平苔藓样角化病三种病合并为一个"keratosis-like 筐"。直接把两数据集标签按列名拼接,会把 SCC 混进 AK、或把三病种当单一疾病建模,标签语义在列名层面完全不同。
症状:合并训练后 SCC 召回率异常高/低;文献间 8 类分布对不上(ISIC 2019 官方 SCC 628 = BCN 431 + HAM 拆分 197,而非 HAM 0);审稿人质疑类别定义不一致。
解决:
- 简单方法:建立显式映射表——HAM akiec 的成员图无法逐图重标时,合并版本退到"AK+SCC 合并类"或"7 类"口径,并在论文中声明。
- 进阶方法:用 HAM10000 附带 dx_type 与诊断文本做逐图映射;对 BCN 训练 CSV 的 diagnosis 直接用官方 8 类;合并前 assert 每类计数与官方分布一致(MEL 4,522 / NV 12,875 / BCC 3,323 / AK 867 / BKL 2,624 / DF 239 / VASC 253 / SCC 628)。
- SOTA 方法:多源训练采用"层级标签"(恶性/癌前/良性 → 8 类 → 病种细粒度),把 BKL 拆解为可分离子目标;或用噪声感知损失(如 generalized cross-entropy)吸收合并类内语义差。
参考:ISIC 2019 官方类别定义;HAM10000 数据描述(Sci Data 5:180161);PMC10406737 对账表。
⚠️ 坑点 3:lesion_id 一对多 + 无患者 ID——皮损级泄漏(分类:数据泄漏)
问题:18,946 张图像只对应 5,583 个皮损(约 3.4 图/皮损),且数据不含患者级 ID。同一皮损的多帧图像几乎逐像素相似,随机划分会把"同一病灶的另一个角度"放进测试集,模型只需识别拍摄条件即可得分;ISIC 2019 官方 metadata 每图一行、重复条目繁多,按行划分极易踩雷。
症状:随机划分的验证 balanced accuracy 比 GroupKFold 高出 5-15 个百分点;消融实验中"去掉元数据分支反而更准"(模型靠皮损记忆);外部数据集(HAM/PAD)上性能断崖式下跌。
解决:
- 简单方法:一切划分以 lesion_id 为分组键(
GroupShuffleSplit/GroupKFold),并断言两侧 lesion_id 零交集。- 进阶方法:对官方挑战版(无显式 fold)先按 metadata 的 lesion_id 聚合再划分;对 2024 版尊重官方 split,在其 train 内部再做皮损级 5 折(§5.3 代码)。
- SOTA 方法:以感知哈希聚类合并"疑似同皮损"(防御 metadata 缺失或键错),再用
dermoscopy文献中的 lesion-aware 两阶段评估:先报随机划分结果、再报分组结果,把差值作为泄漏量化指标公开。参考:Sci Data 2024(数据层级与 lesion_id 定义);Cassidy et al., 2022(皮肤镜数据集重复图像分析)。
⚠️ 坑点 4:无公开测试标签——"官方划分"下的复现困境(分类:评估误用)
问题:2024 版测试集 6,533 张不发布标签(unknown 类也在其中),官方成绩只能经挑战/私有渠道获得;2019 挑战测试 GT 虽已赛后发布,但其口径(8,238 张混合三源)与 2024 版不同。社区里"在 BCN20000 上测得 95% accuracy"的说法,几乎全部来自各自随机的内部划分——与官方基线 balanced accuracy 0.46、冠军 0.636 属于不同题目的分数。
症状:复现他人结果时对不上数;把 2024 版测试集当作验证集调参(标签拿不到,反而有人误用测试侧元数据做启发式);不同论文的 SOTA 表无法横向比较。
解决:
- 简单方法:永远在官方训练集内部做皮损级 CV,报告 mean±std;需要外部测试时用挑战版赛后 GT(8,238 张)一次性终评。
- 进阶方法:向 ISIC 挑战评测系统提交预测获取官方分数(历史渠道),或与数据方书面约定私有测试评估;报告中并列"内部 CV / 挑战口径 / 外部 HAM"三列。
- SOTA 方法:采用"嵌套评估协议"——内层 GroupKFold 选模型,外层挑战版 GT 只跑一次;把 OOD 检测(unknown 召回)与 8 类准确率作为两个独立主指标,杜绝把 unknown 当第 8.5 类混评。
参考:Sci Data 2024(split 与私有测试设计);ISIC 2019 榜单;arXiv:2104.07819(88.5% vs 63.6% 对照)。
⚠️ 坑点 5:类别不平衡——NV 34% 对 VASC 1%(分类:评估误用)
问题:训练集 NV 4,206 张对 DF 124 / VASC 111 张(约 38:1),且测试侧再叠加约 31% unknown。用普通 accuracy 或 macro-F1 单指标汇报会掩盖"罕见类近乎零召回"的现实;ISIC 2019 官方特意采用各类召回率算术平均(balanced multi-class accuracy)就是为了惩罚"只会认痣"的模型。
症状:accuracy 高达 0.8+ 但 DF/VASC 召回接近 0;加权采样后总体分数下降、罕见类上升但 MEL 精度崩塌;混淆矩阵呈"NV 吸万物"结构。
解决:
- 简单方法:以 balanced accuracy 为主指标;训练用加权交叉熵或 WeightedRandomSampler(§6.4 代码)。
- 进阶方法:Focal loss(γ≈2)+ 类别温度校准;对 DF/VASC/AK 等罕见类做过采样 + 强增强,同时监控 MEL 召回/精度权衡曲线。
- SOTA 方法:logit adjustment(后验按类频率校正)或 long-tail 专用头(如 CB-Focal + decoupled training:先共学习表征、再类平衡重训分类头);评估时固定 MEL 敏感度 ≥0.9 的阈值报告特异性,对齐临床筛查语境。
⚠️ 坑点 6:元数据缺失与年龄分箱——融合特征的隐性偏差(分类:预处理陷阱)
问题:2024 版年龄以 5 岁分箱(0-85)记录而非精确年龄;sex 缺失 74 张(0.5%)、部位缺失 173 张(2%,训练集)且未标注是否随机;ISIC 2019 合并版元数据"数千条不完整"。部位缺失并非随机——疑难部位(黏膜等)更易缺记录,直接众数填补会把"部位→诊断"的真实关联扭曲成噪声。
症状:融合模型对缺失行报错;填补后部位特征重要性虚高;跨版本训练时因 capture_date 缺列而对不齐特征空间。
解决:
- 简单方法:sex/site 保留"not-reported"作为独立类别;age 空值行加 has_age 指示位、用中位分箱填充。
- 进阶方法:数值侧把 age 还原为分箱中值并声明 ±2.5 岁量化误差;对 site 缺失做缺失指示位 + 缺失机制分析(按 diagnosis 分组比较缺失率,判断 MCAR/MAR)。
- SOTA 方法:元数据分支用专门处理缺失的模型(如 TabTransformer/缺失掩码拼接);对"部位缺失"本身做信息性检验——若缺失与 MEL 显著相关,应把缺失指示位视为受保护特征防止"看不懂就转诊"捷径被抹掉。
⚠️ 坑点 7:"in the wild"图像质量——三相机、多附件、未裁剪(分类:预处理陷阱)
问题:数据由三台高分辨率相机配多种皮肤镜附件拍摄(型号未公布),2019 挑战版图像未统一裁剪——皮损位置、尺度、放大倍数、暗角比例各异,还包含指甲、黏膜等非常规背景。直接套用为 HAM10000(600×450 居中裁剪)设计的固定尺寸 pipeline,等于让模型先自学"找皮损"。
症状:从 HAM10000 迁移来的训练配置在 BCN 上 balanced accuracy 低 10+ 个百分点;Grad-CAM 关注暗角而非皮损;放大倍数与诊断强相关(低倍像整体轮廓、高倍像结构),模型学到"以倍数猜病"的捷径。
解决:
- 简单方法:先做亮度阈值 ROI 裁剪(官方证实平均 +2.5% balanced accuracy),再统一缩放;保留裁剪失败的原图回退路径。
- 进阶方法:训练管线加入随机平移/缩放/低倍-高倍模拟(RandomResizedCrop scale 0.7-1.0);对毛发用 DullRazor 或 inpainting,固定种子并记录。
- SOTA 方法:颜色恒常(shade-of-gray/Reinhard)作为可开关模块,域内训练默认关、跨域迁移默认开;多尺度测试(TTA multi-crop,冠军方案同款);用 Grad-CAM 审计"暗角注意力"样本并清洗。
参考:Sci Data 2024(裁剪预处理实验);Gessert et al., 2019(多分辨率 + multi-crop 冠军方案)。
⚠️ 坑点 8:单中心转诊偏倚与"确认等级"混杂的标签(分类:偏倚陷阱)
问题:全部病例来自巴塞罗那一个三级转诊中心,且论文自述"常接收地区其他中心转来的疑难病例"——BCC/黑色素瘤合计近半的构成远高于筛查人群;同时标签确认等级按类别分层:MEL 100% 组织病理,良性病变相当部分依赖专家共识(siec)、RCM 或随访而非病理,确认类型分布未公开。模型学到的部分是"转诊中心的疾病先验"与"不同确认路径的系统性标签风格"。
症状:模型在初级照护/筛查人群(如 PAD-UFES-20 场景)上阳性预测值骤降;良性类上与病理金标准的分歧率显著高于恶性类;跨肤色人群评估失真(无 Fitzpatrick 字段可分层)。
解决:
- 简单方法:把 BCN 定位为"疑难病例富集基准",报告数字时写明单中心转诊性质;禁止用它推断人群患病率。
- 进阶方法:评估一律分层——按解剖部位(掌跖/口腔生殖器 vs 躯干四肢)、按年龄分箱、按 sex 分别报 balanced accuracy;用 PAD-UFES-20/HAM10000 做"先验重加权"迁移校准。
- SOTA 方法:把确认等级当作标签噪声协变量(病理确认权重 > 临床共识),做噪声转移矩阵估计或 weak-label 重加权;公平性审计补充外部肤色标注数据集(如 Fitzpatrick17k)交叉验证。
参考:Sci Data 2024(转诊中心定位与确认路径);pith.science 对 2019 预印本的同行评审批评(确认类型分布未报告)。
§6.6 数据增强
- ✅ 安全:随机水平/垂直翻转、90° 旋转(皮肤镜无方向语义)、RandomResizedCrop(0.7-1.0)、亮度/对比度抖动、shading/颜色恒常、毛发模拟(随机细线绘制)、多分辨率训练。
- ❌ 危险:大幅色彩 hue 旋转(破坏色素色调这一核心诊断线索)、弹性形变(破坏结构模式)、按部位条件的选择性增强(放大部位捷径)、对验证/测试图像做增强、把 unknown 类图像混入训练增强池。
增强策略的类敏感调整:罕见类(DF/VASC)可叠加更激进的几何与光照增强来补偿样本量,但色调类增强必须全局统一——若只对恶性类开"去色素化"增强,等于教模型把低色素等同于恶性,恰好制造无色素黑色素瘤的假象学习。MixUp/CutMix 在皮肤镜上的收益存在争议(病灶边界被破坏后标签不再成立),建议只在同类内做 CutMix 且作为消融项报告。
§6.7 模型推荐表
| 模型 | 适用场景 | 参考性能 | 备注 |
|---|---|---|---|
| EfficientNet-B0/B2 | 复现官方基线 / 快速迭代 | BA 0.44-0.46(官方 5 折,裁剪后) | Sci Data 2024 最佳单模 |
| EfficientNet 多分辨率集成 | 冲挑战口径榜单 | 0.636(2019 冠军,含外部数据) | Gessert et al.,代码公开 |
| DenseNet-161 + 注意力 | 强基线单模 | MelaNet,2019 榜单第 7(0.558) | 深度注意力对罕见类有效 |
| ConvNeXt/ViT(ImageNet-21K 预训练) | 现代架构对照 | 未有官方数字 | 需自建皮损级 CV 对比 |
| 图像+元数据双分支 MLP 融合 | Task 2 复现 | 冠军方案核心组件 | age/sex/site 输入前先按坑点 6 清洗 |
| OOD 头(能量分数/Mahalanobis) | 开集识别 | 官方测试集专属任务 | unknown 只在测试侧,训练期无 OOD 监督 |
| 皮肤基础模型(Derm Foundation 系) | 表征预训练/少样本 | 2024 年后文献快速增长 | BCN"野外"要素是稀缺预训练素材;微调仍需皮损级 CV |
选型提示:表中前两行有官方/冠军数字背书,适合作为论文基线;后三行没有公认基准数字,务必自带复现协议而非引用二手比较。所有模型在 BCN 上都应报告"裁剪 vs 未裁剪"两个入口条件——官方数据已证明这一预处理项的贡献(+2.5%)足以淹没许多架构差异。
§6.8 硬件需求表
| 配置 | 显存 | 建议 batch(224²) | 适用 |
|---|---|---|---|
| 入门复现 | 8-12 GB | 32-64 | EfficientNet-B0、1024²→224² |
| 标准训练 | 24 GB(单卡) | 96-128 | B2/B4、混合精度、多分辨率 |
| 冠军级 | 4×24 GB | 集成分批 | 多分辨率集成 + TTA + 外部数据 |
显存规划细节:1024×1024 原图训练建议两段式——先在 224² 预热收敛、再切 512²(或 384²)微调最后若干 epoch,直接 1024² 端到端在 24 GB 卡上 batch 会缩到个位数,训练不稳定且低效;混合精度(AMP)在本数据集上无已知数值问题;num_workers 设为 CPU 核数的一半以下,JPEG 解码 + 裁剪是主要 IO 瓶颈,必要时预裁剪落盘。
§6.9 评估指标代码
import numpy as np
from sklearn.metrics import balanced_accuracy_score, confusion_matrix
def evaluate(y_true, y_pred, classes=("MEL","NV","BCC","AK","BKL","DF","VASC","SCC")):
ba = balanced_accuracy_score(y_true, y_pred) # = ISIC 2019 主指标
cm = confusion_matrix(y_true, y_pred, labels=range(len(classes)))
per_class_recall = cm.diagonal() / cm.sum(axis=1) # 各类召回,逐类必报
return {"balanced_accuracy": round(float(ba), 4),
"per_class_recall": dict(zip(classes, per_class_recall.round(3)))}
补充指标:OOD 检测用"最大 softmax 概率"作 negative 分数对 unknown 类算 AUROC/AUPR(能量分数或 Mahalanobis 可替换);筛查口径报告"固定 MEL 敏感度 = 0.9 时的特异性";跨折汇报 mean±std 时同时给出最差折的逐类召回(诊断罕见类塌缩的信号)。
# OOD(unknown)检测评分:把 unknown 的 MSP 与 8 类已知样本的最大 softmax 概率比较
import numpy as np
from sklearn.metrics import roc_auc_score
def ood_auroc(known_msp: np.ndarray, unknown_msp: np.ndarray) -> float:
"""known/unknown 的最大 softmax 概率;unknown 应具有更低 MSP。"""
scores = np.concatenate([known_msp, unknown_msp])
labels = np.concatenate([np.ones_like(known_msp), np.zeros_like(unknown_msp)])
return float(roc_auc_score(labels, scores)) # 1.0 = 完美区分,0.5 = 无判别力
§6.10 MLOps 笔记
- 数据指纹:版本(2019 挑战版 / 2024 Figshare 版)+ 图像哈希清单 + 许可类型写入
dataset.yaml,训练任务启动时校验(坑点 1)。 - 划分可追溯:fold 分配(lesion_id 级)序列化入库;任何模型注册必须带 fold 生成脚本哈希(坑点 3/4)。
- 监控:线上系统持续监测"unknown/弃权率"——这是 OOD 设计能力在生产的延伸;弃权率突增往往提示采集域漂移(新相机/新科室)。
- 审计:按解剖部位与年龄分箱出具分层性能报告(坑点 8);留存测试集只跑一次的访问日志。
- 再训练触发器:用 capture_date 分桶监控各年份子集的指标斜率,斜率转负即触发数据侧调查而非盲目再训练;2024 版时间戳使该策略可直接落地。
- 许可合规流水线:CC BY 4.0 的署名要求写入模型卡与产品关于页模板,任何导出物(checkpoint/蒸馏集)都继承署名清单——挑战版 CC-BY-NC 图像若曾用于训练,需在许可混合表中显式声明,商用产品应只以 2024 版训练。
§7 质量评估与局限性
§7.1 已知偏倚表
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 单中心/地域偏倚 | 全部来自巴塞罗那单一三级中心,南欧人群;无肤色字段 | 高 | 外部验证(HAM/PAD/Fitzpatrick17k);报告时声明适用范围 |
| 转诊富集偏倚 | 疑难病例比例远超筛查场景;BCC+MEL≈46% | 高 | 用作"困难基准"而非患病率参考;阳性预测值按目标人群先验重算 |
| 时间构成偏倚 | 2010-2016 七年跨度,成像流程可能变化且未逐项记录 | 低-中 | 按 capture_date 分年评估(仅 2024 版);年份作为协变量报告 |
| OOD 不对称 | 训练无 unknown 监督而测试含 31.2% unknown | 中 | 开集识别协议单独评估;弃权机制显式建模 |
偏倚表的用法:严重程度为"高"的两行(单中心、转诊富集)是结构性偏倚,任何训练技巧都无法消除,只能靠评估设计与适用范围声明来管理;"中"级偏倚可通过预处理与方法选择缓解(裁剪应对设备域、加权应对不平衡、开集协议应对 OOD 不对称)。建议把本表直接纳入实验报告的 methodology 附录——这不是形式主义,而是 BCN20000 用户社区最缺乏的透明度实践。
| 设备/流程偏倚 | 3 相机 + 多附件(型号未公布),放大倍数与视场不一 | 中 | ROI 裁剪 + 多尺度训练;Grad-CAM 审计暗角注意力 |
| 标签确认偏倚 | MEL 全病理确认、良性部分仅专家共识/随访;确认分布未公开 | 中 | 敏感性分析:仅用病理确认子集重训对照 |
| 类别不平衡 | NV 34% vs DF/VASC 各 1% | 中 | balanced accuracy 主指标 + 重采样/加权损失 |
| 时间偏倚 | 2010-2016 采集,跨越 7 年成像实践变化 | 低-中 | 用 capture_date 做按年分层评估(仅 2024 版可行) |
§7.2 标注质量
优势:黑色素瘤标签具有病理学金标准级可信度,恶性肿瘤整体组织学确认;入库前设多读者复核与剔除机制;皮损级键(lesion_id)支持泄漏控制。缺口:读片者间一致性未统计;确认类型(histo/siec/RCM/随访)分布未公布;BKL 为三病种合并筐、内部异质性高;unknown 类的构成虽按子类公布比例,但逐图判定标准未附操作手册。
噪声建模建议:把 MEL(全病理)作为"高置信子集"先训练特征提取器,再在良性类上估计标签噪声率(可与 RCM/随访确认比例的定性描述交叉校验);若论文需要报告标签质量,正确姿势是公布你的估计方法与转移矩阵假设,而不是复述"人工复核"四个字。
§7.2b 标签可信度分级(使用方视角)
| 等级 | 覆盖范围 | 依据 | 使用建议 |
|---|---|---|---|
| A(病理金标准) | MEL 全部、其余恶性肿瘤 | 切除后组织病理,board-certified 皮肤病理医师 | 可作锚点训练与噪声估计基准 |
| B(器械辅助确认) | 部分良性病变 | 反射式共聚焦显微镜(RCM) | 高可信但非病理,可与 A 级合并训练 |
| C(专家共识) | 未切除良性病变 | 两位资深皮肤科医师临床诊断 / siec | 标签噪声主要来源,建议加权或建模 |
| D(随访推断) | 未切除且随访稳定的病变 | 随访稳定性排除恶性 | 只保证"非恶性"方向,具体良性类别弱 |
| E(排除法定义) | 测试集 unknown 类 | 不属于任何已知类即 unknown | 开放集语义,不应作为第 9 训练类 |
这张分级表是从 Sci Data 2024 的确认路径描述反推的操作化框架——它不是官方标注字段(数据里没有 per-image 确认等级列),而是使用方在无该列条件下的先验分层假设。任何声称"BCN20000 标签质量"的实验,都应先声明自己站在哪一级证据上。
§7.3 泛化性评估表
| 目标场景 | 失效风险 | 证据 |
|---|---|---|
| 初级照护筛查人群 | 高——转诊富集使恶性占比虚高,阳性预测值骤降 | 数据集自述转诊定位;PAD-UFES-20(初级照护)构成对照 |
| 深肤色人群 | 高——无肤色字段,南欧单中心 | Sci Data 2024 人群描述;Fitzpatrick17k 等补充数据集 |
| 其他中心/设备 | 中-高——单中心设备域窄 | ISIC 2018→2019 冠军 88.5%→63.6% 的分布外落差(arXiv:2104.07819) |
| 非 8 类病变(瘢痕/炎症/感染) | 中——训练期无此监督 | 官方测试集 OOD 约 2,040 张,需开集识别能力 |
| 黏膜/甲部病灶 | 中——训练覆盖少但特异性强 | 数据集设计动机(指甲/黏膜难诊断部位) |
| 儿童/青少年 | 高——训练集年龄 56.8±18,低龄样本稀少 | Sci Data 2024 Table 1 年龄分布;儿童痣形态学本身即非典型 |
§7.4 伦理
伦理批件 HCB/2019/0413(Hospital Clínic de Barcelona),数据使用已获参与者知情同意;发布前经 YOLOv3 贴纸检测移除患者标识并裁剪至皮损区域;2024 版以 CC BY 4.0 开放。注意 CC BY 4.0 不免除研究者自身的伦理义务:二次分发应保留署名与来源声明,临床应用需独立验证与监管路径。
双重许可的时间线需要专门注意:同一批数据在 2019 挑战语境下以 CC-BY-NC 流通、2023-2024 年以 CC BY 4.0 重新发布——理论上版权方有权以更宽松许可再发布,但早期经由挑战版获取的副本在部分国家/地区的衍生法律关系存在解释空间;保守做法是全部重新从 Figshare 下载并只使用 2024 版做商用,非商业研究可保留挑战版用于榜单对齐。涉及去标识化强度的问题(如"贴纸检测漏检风险"),论文只描述了流程而未公布检出率审计,后续使用者若发现任何残留标识应遵循数据集官方渠道上报的义务。
§7.5 公平性
数据集不含种族/肤色/Fitzpatrick 分型字段,无法做内部分层公平性评估;性别与年龄分布均衡(男 52%,年龄 56.8±18)。已知风险:南欧单中心人群使模型对深肤色病变(肢端部位、甲部黑色素瘤的色素形态差异)的泛化性未经验证;解剖部位字段覆盖口腔生殖器与掌跖,为部位公平性分析提供了最小颗粒度。建议下游研究在跨数据集评估中显式报告部位与年龄分层指标。
可执行的公平性最小集(无需新增标注):① 按性别的逐类召回差(训练集两性样本量接近,具备统计功效);② 按年龄分箱(<45 / 45-65 / >65)的 MEL 敏感度曲线——若高龄组显著占优,说明模型可能依赖"年龄→恶性"捷径;③ 按部位的 MEL 敏感度对比(躯干四肢 vs 掌跖/口腔生殖器),后者是肢端黑色素瘤所在,也是深肤色人群最高发亚型;④ 与 Fitzpatrick17k 等带肤型标注数据的交叉评估作为外推检验。这四项都不需要重新标注,但能覆盖本数据集最主要的公平性盲区。
§7.6 数据漂移
时间漂移:采集跨越 2010-2016,成像设备与临床流程可能在期中迭代(附件型号未公布,无法精确对齐);2024 版 capture_date 支持按年分层检验。来源漂移:ISIC 2019 挑战把 BCN 与 HAM、MSK 混合,三源成像风格差异显著,是天然的域偏倚实验场。实践建议:训练时保留 year 分桶;上线系统以"unknown 弃权率"作为漂移哨兵指标。
三层漂移检验的落地清单:① 年份分层——各采集年份子集上的 BA 斜率(2024 版可做,挑战版不可);② 跨源混淆——在 HAM10000 上评估 BCN 训练的模型并交换方向,双向差距的几何均值可作为"域距离"的操作化度量;③ 采集条件代理变量——裁剪后皮损占画面比例、图像亮度/锐度分布,按年度画箱线图,若分布形变则说明设备/流程确实变过,此时性能漂移应归因采集而非疾病谱。三层全部可离线完成,建议纳入数据集技术报告的标准附录。
§7.7 DAIMS 数据就绪度评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 单 CSV 每图一行,8 字段平铺无嵌套 |
| 2 | 唯一标识 | ✅ | BCN filename 全局唯一;lesion_id 皮损级分组键 |
| 3 | 特殊字符 | ✅ | 字段值均为 ASCII 枚举/数字/日期 |
| 4 | 重复行 | ⚠️ | 表内无重复行;但跨版本(2019/2024)与跨数据集(ISIC 系)需自行哈希去重 |
| 5 | 缺失编码 | ✅ | sex 用 not-reported 显式枚举;部位/年龄空值可检测 |
| 6 | 标签标识 | ✅ | diagnosis 显式类别列;split 列固化官方划分 |
| 7 | 罕见类分组 | ⚠️ | DF/VASC 独立成类但各仅 1%,评估需专门分层 |
| 8 | 偏倚评估 | ⚠️ | 论文自述转诊中心定位;无肤色字段,偏倚量化靠使用方完成 |
| 9 | 数据字典 | ✅ | Sci Data 2024 逐字段定义(8 字段全部说明) |
| 10 | 信息性缺失解释 | ⚠️ | 缺失比例已公布但缺失机制(MCAR/MAR)未分析 |
| 11 | 设备记录 | ❌ | 仅知"3 台相机 + 多附件",品牌/型号/参数未发布 |
| 12 | 共线性 | ✅ | 元数据低维(7 特征),无明显共线 |
| 13 | 编码映射 | ✅ | 诊断缩写可稳定映射 ICD-11/SNOMED(见 §2.1b) |
| 14 | 时间戳处理 | ⚠️ | capture_date 仅 2024 版有;2019 版无任何时间字段 |
| 15 | 划分建议 | ✅ | 官方 split 列 + 论文给出 5 折 CV 协议 |
| 16 | 泄漏讨论 | ⚠️ | lesion_id 支持防泄漏,但无患者 ID,患者级泄漏不可根治 |
| 17 | 标签分布 | ✅ | 论文 Table 1 完整公布训练集分布 |
| 18 | 测量偏倚 | ⚠️ | 放大倍数/视场差异存在但未量化 |
| 19 | 外部验证建议 | ✅ | 官方测试集含 OOD 类,配套跨数据集使用说明 |
| 20 | 版本记录 | ⚠️ | Figshare v1 + 论文版本可考,但 19,424→18,946 无正式变更清单 |
| 21 | 预处理脚本 | ✅ | 官方 GitHub 提供基线与裁剪代码(CC BY 4.0) |
| 22 | 合规要求 | ✅ | CC BY 4.0 + 伦理批件号 + 知情同意齐备 |
| 23 | 多模态对齐 | ✅ | 图像与元数据经唯一键逐图对齐 |
| 24 | 去标识化 | ✅ | 贴纸标识 YOLOv3 检测移除 + 裁剪;无面部/直接标识 |
DAIMS 评分:19.0 / 24(15 项 ✅、8 项 ⚠️、1 项 ❌)
评分解读:这是一个"发布纪律一流、采集元信息先天不足"的数据集——标识体系、宽表结构、官方划分、合规与去标识化全部达到现代开放数据集标准(Figshare 存档 + 数据描述论文 + 配套代码的完整度在 2019 年代的影像数据集中属于第一梯队);扣分集中在三处:设备型号未记录(❌)使成像域无法定量建模,版本口径漂移与跨数据集重复(⚠️)要求使用方自建数据指纹体系,确认等级混杂与缺失机制未解释(⚠️)要求把标签噪声当作一等公民建模。
对你意味着什么:第一天就能完成下载、加载与官方划分复现(无需申请、无需格式转换);但交付可信结果前必须完成四件事——按 lesion_id 分组重划分(或尊重官方 split 并声明患者级局限)、锁定 2024 版口径并哈希去重、以 balanced accuracy + 逐类召回替代 accuracy、对外报告时声明单中心转诊性质与无肤色字段。若你的目标场景是初级筛查或深肤色人群,请把 BCN20000 用作困难基准与预训练源,而非最终评估集。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| HAM10000(跨中心同模态) | 维也纳医科大学 / 昆士兰 | 7-8 类分类迁移 | balanced accuracy(各论文自报) | 显著下降(常见 >10 pp) | 跨中心设备/人群域差是皮肤镜 AI 主要瓶颈 |
| ISIC 2019 测试集(挑战口径) | ISIC(BCN+HAM+MSK 混合) | 8 类 + unknown 检测 | 冠军 0.636 / 无外部数据 0.607 | 较 ISIC 2018 冠军 88.5% 下降约 25 pp | 加入 SCC 与 OOD 类后性能骤降,成为"临床现实"量化标尺 |
| 专家读片对照(reader study) | 多中心皮肤科医师 | 人机对照分类 | 见 Tschandl et al. 2020 | 算法在分布外图像上弱于专家 | 人机协作(CNN + 医师)优于任一单独方 |
| PAD-UFES-20(跨模态压力测试) | 巴西 UFES / 初级照护 | 皮肤镜→手机照片迁移 | 各论文自报 | 显著下降(模态+人群双漂移) | 域适应与颜色恒常是保性能的必要组件 |
§8 基准性能与生态
§8.1 排行榜(ISIC 2019 挑战,balanced multi-class accuracy)
| 排名 | 模型/团队 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | DAISYLab(Hamburg University of Technology / UKE) | 0.636 | 2019 | 多分辨率 EfficientNet 集成 + SENet154 + 元数据分支 + 外部数据 | Gessert, N., Nielsen, M., Shaikh, M., Werner, M. & Harder, N. 2019, arXiv:1910.03910 | 公开 |
| 2 | DysionAI(DYSION AI, Beijing) | 0.607 | 2019 | EfficientNet-B3/B4 + SEResNeXt-101 集成(未用外部数据) | DysionAI 团队 manuscript(ISIC 2019 官方榜单条目) | 未公开 |
| 3 | AImageLab & PRHLT(Unimore & UPV) | 0.593 | 2019 | 模型集成 + OOD 阈值弃权 | AImageLab & PRHLT 团队 manuscript(ISIC 2019 官方榜单条目) | 未公开 |
| 7 | BITDeeper(北京理工大学) | 0.558 | 2019 | MelaNet:DenseNet-161 + 深度密集注意力 | Wei et al., “MelaNet: A Deep Dense Attention Network for Melanoma Detection in Dermoscopy Images”(团队 manuscript,ISIC 2019 榜单) | 未公开 |
注:数值不可直接比较——第 1 名使用了外部训练数据而第 2-3 名未用;Task 1(仅图像)与 Task 2(图像+元数据)分开排名;测试 GT 当年仅经官方服务器计分。作为量级参照:ISIC 2018 冠军为 88.5%,2019 年因加入 SCC 与 unknown 两个难度类而整体下降约 25 个百分点(arXiv:2104.07819)。
解读榜单的三个层次:横向上,0.607(无外部)→ 0.636(有外部)的差距直接量化了"加数据"在本任务上的边际收益,也提示 BCN 训练集本身对完整诊断分布的覆盖仍有缺口;纵向上,官方基线 0.46 → 冠军 0.636 的提升来自多分辨率集成、元数据融合与 TTA 的工程组合,而非单一架构突破;临床上,63.6% 的 balanced accuracy 对应"每 6 个病例错约 2 个",远未达辅助诊断的部署门槛——这正是该数据集持续作为"现实检验器"的价值:任何在 HAM10000 上宣称 90%+ 的方法,在 BCN 口径下都需要重新自证。
§8.2 SOTA 总结与选型建议
以官方基线(0.46)为地板、挑战冠军(0.636)为参考天花板:想发表方法学论文,皮损级 5 折 CV 下超过 EfficientNet-B2 裁剪基线即有对比意义;想做工程系统,优先复现多分辨率集成 + 元数据分支(冠军组件全部可得);想做 OOD 研究,主指标应放在 unknown 检测 AUC 而非 8 类准确率。
三条选型路线的边界条件:算力受限时,EfficientNet-B0 + 裁剪 + 加权采样是性价比拐点(官方 5 折 0.4562,单卡数小时);追赶榜单时,外部数据(HAM/ISIC 档案其余部分)是当年冠军与亚军的分水岭(0.636 vs 0.607),但商用需重查各源许可;做基础模型预训练时,BCN 的"野外"要素(甲/黏膜/低色素)恰是通用皮肤数据里最稀缺的部分,建议以 1024×1024 原分辨率入预训练池而非低清缩略图。
§8.3 评测协议
官方指标为 balanced multi-class accuracy(各类召回率的算术平均),平局以 AUC 决胜;Task 2 要求算法真实使用元数据(manuscript 须说明,否则取消资格);提交经官方系统自动校验格式并即时返回 sanity 分数(非正式排名)。复现建议:内部皮损级 GroupKFold(5) 报 mean±std → 挑战版测试 GT 一次性终评 → 外部 HAM/PAD 单向迁移,三级报告。
协议细节中容易被忽略的三条:① 验证分数基于约 100 张非代表性子集,官方明言"不得用于排名",社区偶有误引;② unknown 类当年只在测试集出现,训练时预测头的类别数应为 8(第 9 个 unknown 分数由弃权/阈值机制产生),直接建 9 类 softmax 属于任务误解;③ 集成与 TTA(多裁剪)是当年头部队伍的标配,比较单模与集成时应分开列表,这也是"数值不可直接比较"的又一来源。
§8.4 相关数据集表
| 数据集 | 关系 | 规模 | 使用建议 |
|---|---|---|---|
| HAM10000 | 同期互补(2018,双中心) | 10,015 图 | 跨中心验证首选;合并时先解 AKIEC 拆分(坑点 2) |
| PAD-UFES-20 | 场景互补(巴西初级照护,手机照片) | 2,298 图 / 1,373 患者 | 低资源采集与表格融合对照 |
| ISIC 2019/2020 挑战集 | 官方聚合与后继 | 25,331 / 33,126 图 | 榜单口径与患者级分层评测 |
| MSK 预印本子集 | ISIC 2019 第三来源 | 2,903 图 | 仅随挑战包获取;匿名来源 |
| Fitzpatrick17k | 公平性补充 | 约 17,000 图 | 深肤色泛化审计 |
联合使用注意:HAM10000 与 BCN 在 ISIC 2019 已合并过一次(官方去重后 25,331),自行再合并务必先按官方 CSV 对账再补哈希去重,避免复刻出比官方更大的"幽灵训练集";PAD-UFES-20 的临床照片与 BCN 的皮肤镜属于不同模态,跨模态迁移实验应报告"仅在皮损裁剪后"与"原始框图"两种入口;Fitzpatrick17k 的标注体系(肤型分层)与 BCN 无对齐键,只能做模型级迁移而非逐样本合并。
§8.5 关键论文 Top 9
- Hernández-Pérez, C., Combalia, M., Podlipnik, S. et al. 2024, Scientific Data, 11, 641. DOI 10.1038/s41597-024-03387-w —— 正式数据描述论文:18,946 张口径、8 字段元数据、6 个官方基线与数据准备流水线。
- Combalia, M. et al. 2019, arXiv:1908.02288 —— 预印本首报(19,424 张口径)与 ISIC 2019 挑战设计动机。
- Gessert, N. et al. 2019, arXiv:1910.03910 —— ISIC 2019 双任务冠军:多分辨率 EfficientNet 集成 + 元数据融合,代码公开。
- Codella, N. et al. 2019, arXiv:1902.03368 —— ISIC 2018 挑战总结:HAM10000 时代基准与 88.5% 冠军线。
- Tschandl, P., Rosendahl, C. & Kittler, H. 2018, Scientific Data, 5, 180161. DOI 10.1038/sdata.2018.161 —— HAM10000 数据描述:与 BCN20000 最核心的对照系。
- Tschandl, P. et al. 2020, Nature Medicine, 26, 1221-1226. DOI 10.1038/s41591-020-0942-x —— 人机协作读片试验:算法 vs 95 位医师的分布外短板实证。
- O’Shea et al.(Copycats)2024, arXiv:2402.06353 —— 医学影像数据集无序复制的系统调查:Kaggle 550 个 ISIC 副本与许可缺失问题。
- Ozdemir, B. & Pacal, I. 2025, Scientific Reports(“A robust deep learning framework for multiclass skin cancer classification”)—— 2024-2025 年引用链上以 ISIC 2019/BCN 数据为基准的现代框架示例(Sci Data 2024 官方"cited by"列表收录)。
- Dreyer, M. et al. 2025, Nature Machine Intelligence(SemanticLens)—— 可解释性研究方向对 BCN20000/ISIC 数据的机制级分析应用,代表该数据集在基础模型时代的新用途。
§8.6 社区活跃度
合并引用 687+(Semantic Scholar,截至 2026-09,influential 40);ISIC 2019 挑战 64 支队伍参赛,榜单与提交系统持续作为后续 Live Challenge 基础设施;ISIC Forum 中 BCN20000/ISIC 2019 相关主题帖 20+ 条(2019-2020 高峰);GitHub 官方基线仓库与冠军复现仓库均为 2019-2020 活跃;2024 年 Sci Data 论文发表后进入皮肤基础模型(derm foundation model)与可解释性研究(Nature Machine Intelligence 2025 SemanticLens 等)的引用链。
提问与求助渠道的优先级:① ISIC Forum(forum.isic-archive.com)——数据方维护,历史帖已含"为什么 25,331 与 25,332 不一致""BCN20000 口径"等关键讨论;② 官方 GitHub 仓库 issues——基线代码与裁剪算法问题;③ 学术渠道——Sci Data 论文通讯作者(Vilaplana,UPC)。检索文献时注意:2019-2022 年间的论文多用"ISIC 2019"称呼本数据(且常与 HAM 混合训练),2024 年后逐渐回归"BCN20000"本名并区分两版口径,做引用网络分析时应识别这一命名漂移。
§8.7 生态快照表
| 资源 | 类型 | 链接 | Star 截至 2026-09 | 推荐理由 |
|---|---|---|---|---|
| imatge-upc/BCN20000 | 官方基线代码 | GitHub | — | 裁剪预处理 + 6 基线,与 Sci Data 2024 数字对齐 |
| JcWang20/isic2019 | 冠军方案复现 | GitHub | — | 多分辨率集成 + 元数据融合的完整训练管线 |
| ISIC 2019 榜单 | 官方评测 | leaderboards/2019 | — | 全部 64 队成绩与 manuscript 链接 |
| ISIC Challenge 数据页 | 官方存档 | data/#2019 | — | S3 直链 + 署名规范 + 赛后测试 GT |
| Figshare DOI | 数据存档 | 10.6084/m9.figshare.24140028 | — | CC BY 4.0 永久存档,生产环境首选 |
生态使用建议:两个 GitHub 仓库都不是持续维护型项目(2019-2020 活跃),复现时以"算法参考"而非"依赖库"的姿态引入——把裁剪与训练配置抽成自己的模块并纳入测试;榜单页与数据页由 ISIC 官方长期维护,是唯一稳定的权威入口;Kaggle/HuggingFace 上的第三方镜像只做检索线索,不入生产(坑点 1)。
§9 相关资源与引用
§9.1 官方资源
- 数据下载(2024 版,CC BY 4.0):Figshare DOI 10.6084/m9.figshare.24140028 —— 生产环境首选入口,含最新 CSV 与许可文件
- 数据描述论文:Scientific Data 11:641(2024)(PMC 全文)—— 元数据定义、基线数字、溯源流程图的权威出处
- 预印本:arXiv:1908.02288 —— 2019 年口径(19,424)与挑战赛设计动机的一手记录
- 官方基线代码:github.com/imatge-upc/BCN20000 —— 裁剪算法与 6 个 CNN 基线的 PyTorch 实现
- ISIC 2019 挑战:challenge2019.isic-archive.com;数据页;榜单 —— 榜单口径评测与三方署名规范的出处
- ISIC Archive collection:BCN20000(collection 249) —— 需注册;适合与其他 ISIC collection 联合检索与 API 批量拉取
§9.2 BibTeX 引用块
@article{hernandezperez2024bcn20000,
author = {Hern{\'a}ndez-P{\'e}rez, Carlos and Combalia, Marc and Podlipnik, Sebastian and
Codella, Noel C. F. and Rotemberg, Veronica and Halpern, Allan C. and Reiter, Ofer and
Carrera, Cristina and Barreiro, Alicia and Helba, Brian and Puig, Susana and
Vilaplana, Veronica and Malvehy, Josep},
title = {BCN20000: Dermoscopic Lesions in the Wild},
journal = {Scientific Data},
volume = {11},
pages = {641},
year = {2024},
doi = {10.1038/s41597-024-03387-w}
}
@article{combalia2019bcn20000,
author = {Combalia, Marc and Codella, Noel C. F. and Rotemberg, Veronica and Helba, Brian and
Vilaplana, Veronica and Reiter, Ofer and Carrera, Cristina and Barreiro, Alicia and
Halpern, Allan C. and Puig, Susana and Malvehy, Josep},
title = {BCN20000: Dermoscopic Lesions in the Wild},
journal = {arXiv preprint arXiv:1908.02288},
year = {2019}
}
@article{tschandl2018ham10000,
author = {Tschandl, Philipp and Rosendahl, Cliff and Kittler, Harald},
title = {The {HAM10000} dataset, a large collection of multi-source dermatoscopic images
of common pigmented skin lesions},
journal = {Scientific Data},
volume = {5},
pages = {180161},
year = {2018},
doi = {10.1038/sdata.2018.161}
}
@article{gessert2019isic2019,
author = {Gessert, Nils and Nielsen, Mads and Shaikh, Muneeb and Werner, Mathias and
Harder, Nicolaus},
title = {Skin Lesion Classification Using Ensembles of Multi-Resolution EfficientNets
with Meta Data},
journal = {arXiv preprint arXiv:1910.03910},
year = {2019}
}
§9.3 引用指南
- 使用 2024 Figshare 版:引用 Hernández-Pérez et al. 2024(Sci Data)并在致谢注明 “BCN20000 © Department of Dermatology, Hospital Clínic de Barcelona, CC BY 4.0”。
- 使用 ISIC 2019 挑战包:按官方要求同时署名 BCN_20000、HAM10000(ViDIR Group)与 MSK Dataset 三个来源并引用挑战说明文献(CC-BY-NC,禁商用)。
- 同时引用两版论文可满足 Semantic Scholar 合并统计下的追溯需求;数字引用时务必注明所用版本口径(18,946 vs 19,424)。
- 报告性能时同步注明划分协议(官方 split / 皮损级 5 折 / 挑战口径)与是否使用外部数据,避免与 0.46(官方基线)、0.607(无外部冠军)或 0.636(含外部冠军)三个不同参照系混淆。
§10 AI 使用声明卡
§10.1 本页面使用的 AI 模型列表
- 主写作模型:fast-model(CodeBuddy Code 内置)
- 辅助工具:WebSearch / WebFetch(事实检索与论文抽取)、Bash + python3.11(check_md.py 校验)
- 图片素材:本页封面按 cover_image_prompt 由文生图模型生成(不含任何真实患者影像)
§10.2 AI 参与范围
全部章节由 AI 辅助生成初稿;§2.1/§2.1b 的 ICD-11/SNOMED 编码映射、§5.3 泄漏策略、§6.5 坑点排序、§7.7 DAIMS 评分与解读为人工定稿内容;所有规模数字、日期、基准成绩均带内联来源链接。
人机分工边界说明:事实性数字(规模、分布、基线成绩、榜单名次)100% 来自 §10.3 所列公开来源,AI 仅承担抽取、对账与转写;分析性内容(坑点解决方案、MLOps 建议、公平性最小集)为 AI 基于来源事实的工程推断,已经由数据工程审核者逐条复核其可操作性;医学编码与流行病学表述经医学审核者按权威术语库核验。
§10.3 输入来源列表
- Hernández-Pérez, C. et al., 2024, Scientific Data, 11, 641. DOI 10.1038/s41597-024-03387-w(PMC11183228)
- Combalia, M. et al., 2019, arXiv:1908.02288(BCN20000 预印本)
- Tschandl, P., Rosendahl, C. & Kittler, H., 2018, Scientific Data, 5, 180161. DOI 10.1038/sdata.2018.161(HAM10000)
- Gessert, N. et al., 2019, arXiv:1910.03910(ISIC 2019 冠军方案)
- Codella, N. et al., 2019, arXiv:1902.03368(ISIC 2018 挑战总结)
- ISIC 2019 挑战官网(任务定义/指标/类别):challenge2019.isic-archive.com
- ISIC Challenge 数据页(许可/署名/CSV 直链):challenge.isic-archive.com/data/#2019
- ISIC 2019 官方榜单(64 队成绩):challenge.isic-archive.com/leaderboards/2019
- ISIC Archive collections API(BCN20000 collection 249,18,946 张):api.isic-archive.com/collections
- Figshare 存档:DOI 10.6084/m9.figshare.24140028
- PubMed 38886204 / PMC11183228(2024 论文元数据与摘要)
- Semantic Scholar API(引用计数 687,截至 2026-09):api.semanticscholar.org
- O’Shea et al.(Copycats), 2024, arXiv:2402.06353(ISIC 数据集复制与许可调查)
- Cassidy et al., 2022(皮肤镜数据集重复图像分析,经 arXiv:2402.06353 引述)
- arXiv:2104.07819(ISIC 2018/2019 冠军成绩对照与 OOD 分析)
- pith.science 对 arXiv:1908.02288 的结构化同行评审(标签确认分布批评)
- dermnet.nz(Dermatofibroma / Cherry angioma 的 ICD-11 与 SNOMED 编码)
- PMC10406737(HAM10000/BCN20000/MSK 类别分布对账表)
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| 规模数字与版本口径(19,424/18,946/12,413/6,533/25,331/8,238) | 千方病案医学编辑部 | 三源交叉对账(论文/挑战官网/API) | ✅ 已通过 |
| 类别分布对账(BCN 12,413 + HAM 10,015 + MSK 2,903 = 25,331;AKIEC 拆分) | 千方病案医学编辑部 | PMC10406737 表格复算 | ✅ 已通过 |
| ICD-11/SNOMED CT 映射 | 千方病案医学编辑部 | 与 PAD-UFES-20 条目对齐 + dermnet.nz 核验 | ✅ 已通过 |
| 坑点 1-8 可操作性 | 千方病案医学编辑部 | 官方文档/GitHub/论文 limitations 逐条溯源 | ✅ 已通过 |
| DAIMS 24 项评分 | 千方病案医学编辑部 | 逐项对照数据字典与论文声明 | ✅ 已通过 |
| 代码示例可运行性 | 千方病案医学编辑部 | API 语法审查 + 路径/键名与官方 CSV 一致性检查 | ✅ 已通过 |
§10.5 AI 生成章节标注
全文章节由 AI 辅助生成初稿后经人工定稿;其中 §6 代码块基于官方公开 API 与论文方法描述编写,尚未在标注硬件上端到端重跑,使用前请按 §0 技术免责声明自行验证。
可靠性分层声明(供引用者参考):§3/§4/§8 的全部数字可直接引用(三源对账);§5/§6 的协议与代码为"来源支持 + 工程经验"混合,建议在引用时注明协议选择;§2.2b 的皮肤镜特征描述为教科书式通识,用于理解标签语义,不构成诊断教学材料;§6.5 坑点中"症状"与"SOTA 方法"两部分是社区经验与文献结论的综合,逐条附有参考链接供核查原始语境。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核声明一致)
页面状态:published(全部内容已完成审核并发布)
