DeepDRiD — 眼底图像质量评估与DR分级挑战赛 AI-Ready Wikipedia | 千方病案医数集

ISBI 2020 眼底图像质量评估 + DR 分级双任务挑战数据集(2,000 张常规眼底图 / 500 例)

来源 上海交通大学附属第六人民医院 & 上海交通大学 url: https://github.com/deepdrdoc/DeepDRiD发布时间: 2026-09-08最后更新: 2026-09-08 阅读 2

信息速览

数据集名称DeepDRiD — 眼底图像质量评估与DR分级挑战赛 AI-Ready Wikipedia | 千方病案医数集
数据类型2,000 张常规眼底图 + 256 张超广角,500 例 + 128 例患者,四维图像质量标注,CC-BY-SA 免费获取
规模628 例患者(500 例常规 + 128 例超广角)
接入方式上海交通大学附属第六人民医院 & 上海交通大学 url: https://github.com/deepdrdoc/DeepDRiD
AI 就绪度

数据集封面

DeepDRiD — 眼底图像质量评估与DR分级 AI-Ready Wikipedia

INFOBOX

数据集名称 DeepDRiD(Deep Diabetic Retinopathy Image Dataset)
英文全称 Deep Diabetic Retinopathy Image Dataset
别名/简称 DeepDRiD、ISBI 2020 DR Grading & Image Quality Estimation Challenge、ISBI2020-DeepDRiD
疾病分类(ICD-11) 糖尿病视网膜病变(9B71.0Z);非增生性 9B71.00 / 增生性 9B71.01(需另附糖尿病类型附加编码)
SNOMED CT Diabetic retinopathy 4855003 / Non-proliferative diabetic retinopathy 390834004 / Proliferative diabetic retinopathy 61144008
数据模态 眼底照相(常规彩色眼底图 + 超广角眼底图)
AI 任务类型 图像质量评估(伪影/清晰度/视野/总体可用性)、DR 分级(0–4)、域迁移(常规→超广角)
样本总数 2,000 张常规眼底图(500 例患者)+ 256 张超广角眼底图(128 例患者)
数据大小 ~2.81 GB(解压后,JPG)
数据格式 JPG 图像 + CSV/XLSX 标注
许可证 Creative Commons Attribution-ShareAlike 4.0(CC-BY-SA-4.0)
访问级别 开放(GitHub 直接下载,需遵守 CC-BY-SA 署名-相同方式共享)
DUO 标签 NRES(无使用限制)
语言 英文(标注)/ 中文(采集背景)
首发日期 2020-01-22(训练数据在挑战赛发布)
最后更新 2022-06-10(Patterns 挑战赛论文发表)
发布机构 上海交通大学附属第六人民医院 & 上海交通大学 & 上海市糖尿病研究所
官方主页 https://github.com/deepdrdoc/DeepDRiD
下载地址 https://github.com/deepdrdoc/DeepDRiD
DOI 10.1016/j.patter.2022.100512(论文)/ 10.5281/zenodo.6452623(数据集镜像)
引用次数 240+(Google Scholar,截至 2026-09)
AI 就绪度评分 ⭐⭐⭐(3/5)— 官方给出固定三分(Set-A/B/C)、JPG+CSV 结构清晰;扣分项:无官方预处理/加载脚本、质量阶梯分非等比易误用、图像质量标注主观
页面状态 published

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

医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、DR 严重度分级与图像质量评估临床意义、金标准描述)、§7 偏倚分析。

数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(四维图像质量字段、双眼×双视角层级)、§5 数据划分策略、§6 预处理 Pipeline 与坑点。

审核日期:2026-09-05

审核方式:交叉审核

利益冲突声明:千方病案医数集与上海交通大学附属第六人民医院、上海交通大学、Patterns 编辑部无任何商业利益关联。本页面不销售 DeepDRiD 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构任何形式资助。

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

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

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。DeepDRiD 在 GitHub 以 CC-BY-SA-4.0 发布,要求使用者在派生作品与再分发中保留相同授权并注明来源(引用见 §9)。本页面中提及的下载链接与镜像均指向官方渠道,任何转发或再分发都须遵守 CC-BY-SA-4.0 的署名与相同方式共享条款。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 30 秒速览

这是什么? DeepDRiD(Deep Diabetic Retinopathy Image Dataset)是 2020 年 IEEE ISBI(生物医学成像国际研讨会)官方「糖尿病视网膜病变分级与图像质量评估挑战赛」的核心数据集。它由上海交通大学附属第六人民医院等发布,包含 2,000 张常规眼底照片(覆盖 500 例糖尿病患者,每人 4 张:双眼、每眼以黄斑与视盘为中心各拍 1 张)和 256 张超广角眼底照片(128 例)。每张常规图都带四维图像质量标注与 DR 病变严重度 0–4 级标注。

为什么重要? 大规模糖尿病视网膜病变(DR)筛查中,约 10%–30% 的眼底照片质量不足以直接用于自动分级,因此「先判质量、再判病变」是自动筛查落地前的必经工序。DeepDRiD 是极少数把图像质量(伪影、清晰度、视野、总体可用性)与病变分级同时精细标注的公开数据集,其质量评估子挑战直接推动了把图像质量作为独立 AI 任务的研究方向。后续真实世界研究亦发现,用 DeepDRiD 训练的质量模型与临床医师判读符合度最高。

我能用它做什么? 你可以用它训练一个眼底图像质量过滤器:先剔除不可用/伪影图像,再对可用图做 DR 分级;也可以把它作为多中心数据质量监测模型的预训练数据,或研究「常规眼底→超广角眼底」的域迁移。它还可用于双视角(黄斑/视盘中心)信息融合研究,因为每个患者提供同一眼的两个视角。

§1.1 摘要

DeepDRiD 面向糖尿病视网膜病变自动筛查中真实采集场景的三大痛点设计:其一,DR 分级基于双眼×双视角(同一只眼分别以黄斑与视盘为中心)的常规眼底图,考察多视角信息能否超越单视角模型;其二,图像质量评估将每张图按伪影(artifact)、清晰度(clarity)、视野定义(field definition)三个临床维度分别打分,并给一个二分总体质量标签(0=不足以诊断、1=足以诊断);其三,域迁移检验用大量常规眼底图训练的分级模型能否迁移到视野约 200° 的超广角眼底图上。

数据按患者分层:常规图 60%(Set-A,300 例/1,200 张)用于开发,Set-B(100 例/400 张)作公开测试与调优,Set-C(100 例/400 张)作线上最终验证;超广角图 Split-A/B/C 分别为 154/50/52 张。标注由两名授权眼科医师在线上读片平台独立完成,意见分歧的图像被剔除;DR 分级按国际临床 DR 严重度分级表(Grade 0–4)。比赛累计 574 人注册、34 支队伍提交,分级任务二次加权 Kappa 0.93–0.82,质量任务准确率 0.70–0.65——质量任务的精度明显低于分级,说明图像质量评估是更具挑战、仍待攻克的问题。数据以 CC-BY-SA-4.0 在 GitHub 与 Zenodo 镜像开放。

为什么质量比分级更难:DR 分级有相对明确、可枚举的病灶判据(微血管瘤、出血、渗出等),模型能沿循清晰特征;而「质量」是高度依赖观测者主观阈值与上下文(这张图能否用来诊断)的连续谱,同一欠清程度在不同患者、不同拍摄条件下语义可完全不同。加上中间质量档样本稀疏、标注本身主观(论文 Limitations 明言),监督方法在质量任务上难以达到分级那样的高指标。这既是本数据集的「短板」,也是它最有研究价值的接口——谁能在噪声化主观标签上做出更稳健的质量评估,谁就推动了自动筛查落地。

§1.2 战略价值

维度一:唯一性的「质量+分级」联合标注。 多数公开眼底数据集(如 IDRiD、APTOS、Messidor)只给 DR 严重度标签,或把不可用图简单地打上「质量差」排除。DeepDRiD 却给每张常规图同时标注了四维质量子分数与 DR 0–4 级。这让研究者可以显式建模「质量→可用性→分级」的条件链,训练一个先验拒绝低质量图的流水线,或在质量子任务与分级子任务间做多任务学习,这正是真实自动筛查的部署形态——目前绝大多数其他数据集无法支撑这类研究(PubMed 35755875)。

维度二:可作质量模型的领域锚点。 在 2026 年发表于《Computerized Medical Imaging and Graphics》的真实世界视网膜图像质量(RIQ)监测研究中,研究者用 55,801 张临床眼底图对比了 NaIA-RD、EyeQ 与 DeepDRiD 三个来源训练的质量模型,结果显示 DeepDRiD 训练模型与临床医师判读的平均精确率最高(0.431 vs NaIA-RD 0.389 与 EyeQ 0.392),且能揭示成像工位、相机型号与技师经验差异。这表明 DeepDRiD 训练的质量分类器即便在跨机构、跨设备的真实数据上也具备可用性,是质量评估迁移学习的可靠锚点(ebiotrade 报道)。

§1.3 同类数据集横向对比

数据集 模态 规模 图像质量标注 DR 分级标注 双视角/多设备 发布
DeepDRiD(本页) 常规+超广角眼底 2,000 常规 + 256 UWF ✅ 四维(伪影/清晰度/视野/总体) ✅ 0–4(ICDR) ✅ 双眼×双视角 + 超广角 2020 ISBI 挑战赛
EyeQ 常规眼底 28,792 ✅ 二分(可用/不可用) 间接(可用图参照) Google 论文
IDRiD 常规眼底 516 张 ❌(多为高质量) ✅ 0–4 + 病灶分割 ISBI 2018
Messidor-2 常规眼底 1,748 张 ✅ ETDRS 级别 ❌(单视角为主) 法国
APTOS-2019 常规眼底 5,590 张 ✅ 0–4(部分噪声) Kaggle
DeepDR(前身口径) 常规眼底 >1,000 例宣称 含质量信息 同一团队早期

注:EyeQ 与 Messidor 等的详细口径以各官方文档为准,上表为横向定位粗览。

如何选:若你想研究「先判质量、再分级」的完整自动筛查链路,或需要双视角/域迁移数据,DeepDRiD 是最贴合的公开选项;若你需要更大规模的纯分级数据以冲 SOTA,APTOS/Messidor 规模更大但缺系统质量标签;若只需「可用/不可用」粗粒度质量过滤,EyeQ 规模更大但维度单一(无伪影/清晰度/视野细分)。DeepDRiD 的独特卖点始终是「细粒度质量 + 分级」双标签与真实质量瑕疵共存。

§1.4 版本与时间轴

时间 事件
2019-10-25 挑战赛官网上线,公布三大子挑战规则(isbi.deepdr.org
2020-01-22 训练数据(Regular Set-A + UWF Set-A)与真值发布
2020-02-01 本地验证数据(Set-B)发布(图+真值)
2020-03-01 线上评估数据(Set-C,仅图像)发布
2020-03-04 提交截止,每队最多 3 次、方法须差异化的提交
2020 ISBI 2020 onsite 挑战工作坊,公布前三名
2021-07-21 官方 GitHub 仓库补上 CC-BY-SA-4.0 LICENSE
2022-06-10 Patterns 挑战赛论文发表(DOI 10.1016/j.patter.2022.100512),数据集公开于 GitHub

§1.5 典型应用场景

  1. 筛查流水线的质量门:在 DR 分级模型前加一个图像质量过滤层,剔除不可用(总体质量=0)图像,避免低质量图导致的误分级(Patterns 讨论)。
  2. 多任务「质量+分级」联合学习:共享骨干同时输出四维质量分数与 DR 等级,提升两者表现并节省推理成本。
  3. 跨设备/域迁移研究:以常规眼底为源域、超广角眼底为目标域,验证分级与质量模型的泛化性(子挑战 3)。
  4. 数据质量监测与成像协议审计:把质量模型部署到多工位筛查现场,监测各站点不可用图比例漂移,指导技师培训与相机调校(2026 RIQ 研究)。
  5. 双视角融合:同一只眼的黄斑/视盘双视图可作为多视角学习benchmark,验证视角级融合能否提升分级鲁棒性。

§1.6 数据范围澄清(质量 vs 分级)

需要特别说明的一点:本页标题强调「图像质量评估」,但 DeepDRiD 的常规眼底图同时带四维图像质量标注与 DR 0–4 级分级标注,它是「质量+分级」双标签数据集,而非纯质量数据集。之所以常被贴上「图像质量」标签,是因为四维质量标注与独立的图像质量评估子挑战(Sub-challenge 2)是它区别于同类 DR 数据集的核心差异化资产——多数眼底公开集只给病变分级、不给系统的质量标注。

在使用与引用时请牢记:若你的目标是图像质量/可用性评估,取质量四个维度列;若目标是DR 病变分级,取 dr_grade 列并在质量=1(可用)图上训练评估;两者标签正交、字段独立,不要互相替代(详见 §6.5 坑点 2)。超广角(UWF)子集则只有 DR 分级、无逐张质量标注,仅在子挑战 3 的域迁移语境下使用。


§2 医学背景

§2.1 ICD-11 编码映射

疾病/概念 ICD-11 编码 编码说明
糖尿病视网膜病变(未特指) 9B71.0Z 主诊断,需另附糖尿病类型编码(如 5A11 2 型糖尿病)
非增生性糖尿病视网膜病变(NPDR) 9B71.00 早期,特征为微血管瘤、出血、渗出,无新生血管
增生性糖尿病视网膜病变(PDR) 9B71.01 晚期,出现新生血管、玻璃体/视网膜前出血
参照性 DR 筛查阳性 无专用单码,通常用 NPDR/PDR + 部位组合表达

§2.1b SNOMED CT 映射

标签(中文) ICD-11 SNOMED CT 术语
糖尿病视网膜病变 9B71.0Z 4855003 Diabetic retinopathy (disorder)
非增生性糖尿病视网膜病变 9B71.00 390834004 Non-proliferative diabetic retinopathy
增生性糖尿病视网膜病变 9B71.01 61144008 Proliferative diabetic retinopathy
眼底照相(采集) 277575001 Ophthalmic photography
视网膜血管弓可见度(质量概念) 不适用单码 属图像质量非疾病概念,未见标准 SNOMED 码

§2.2 疾病简介与流行病学

糖尿病视网膜病变(DR)是糖尿病最常见的微血管并发症,因长期高血糖损伤视网膜血管,导致微血管瘤、点片状出血、硬性/软性渗出,晚期出现新生血管与玻璃体出血,可致不可逆视力损害。全球约三分之一糖尿病患者会发生 DR,DR 仍是劳动年龄人群可避免视力丧失的首要原因(Patterns 论文引言)。

DR 分级临床上普遍采用国际临床 DR 严重度分级表(International Clinical Diabetic Retinopathy Disease Severity Scale),DeepDRiD 即按此表标注(Patterns Table 1):

Grade 分级 眼底所见
Grade 0 无明显视网膜病变 无异常
Grade 1 轻度 NPDR 仅微血管瘤
Grade 2 中度 NPDR 介于仅微血管瘤与重度 NPDR 之间
Grade 3 重度 NPDR 任一:四象限各 >20 个视网膜内出血、≥2 象限明确静脉串珠、≥1 象限显著视网膜内微血管异常;无 PDR 征象
Grade 4 PDR 任一:新生血管;玻璃体/视网膜前出血

§2.3 临床任务定义

DeepDRiD 将眼底自动筛查拆成三个可独立、可串联的 AI 子任务:

  1. DR 分级(Sub-challenge 1):对常规眼底图按上表 0–4 级做多分类;评价用二次加权 Kappa。
  2. 图像质量评估(Sub-challenge 2):对每张图输出伪影、清晰度、视野定义三维分数与总体可用性二分标签;评价用分类准确率。该任务对应临床中「这张照片能不能用于诊断」的实际判定。
  3. 域迁移分级(Sub-challenge 3):将常规眼底分级能力迁移到约 200° 视野的超广角眼底图,考察系统多设备泛化。

临床上的诊断(尤其筛查转诊判定)通常需要「先质量通过、再分级」,而不可用图像必须重新拍摄,这正是质量子任务被单独设立的临床动因(Patterns 引言)。

临床上真正要落地的场景其实是三者的组合:先由质量评估判定「这张照片能不能用于诊断」,能则进入DR 分级判断「严重到是否需要转诊/治疗」,面对超广角或其他设备数据再启用域迁移版本。因此,这三类任务并非互斥,而是可以共享一个骨干网络、用多任务头分别输出的同一筛查系统。理解这一点,你就能明白为什么 DeepDRiD 会被反复建议「把质量当独立目标」,而不是简单丢弃低质量图了——被丢弃的坏图恰恰是质量模型要主动识别的东西。

§2.4 患者人群表

参数 Regular Set-A Regular Set-B Regular Set-C UWF Set-A UWF Set-B UWF Set-C
图像数 1,200 400 400 154 50 52
患者数 300 100 100 154 50 52
男性占比 51.00% 44.00% 46.00% 54.55% 57.69% 48.00%
年龄(均值±SD) 70.63±7.70 65.13±1.89 61.36±7.23 74.64±4.86 64.96±1.71 58.28±4.88
BMI(kg/m²) 25.17±3.13 24.88±3.21 25.01±2.58 24.90±2.89 25.19±2.61 24.06±3.30

采集来源:上海市糖尿病并发症筛查项目(2014–2017)、上海泥城糖尿病筛查项目(2013–2018)、全国糖尿病并发症筛查(2017-05 与 2019-07),以及上海交通大学附属第六人民医院眼科门诊(常规眼底 2014–2017、超广角 2019-01–2020-01)(Patterns 补充 Note S1)。

人群解读:常规三折(Set-A/B/C)的平均年龄(70.6/65.1/61.4 岁)与男性比例(51%/44%/46%)并不一致——Set-A 训练折显著更年长、性别更均衡。这不影响官方划分的可用性,但提醒:当你把 Set-B/C 当验证/测试,其与训练折的人口分布有轻微差异,报告结果时应理解为「含轻微域差」而非「同分布采样」;跨折比较年龄敏感指标(如视网膜血管形态相关特征)时更要谨慎。

§2.5 临床价值

自动 DR 筛查系统要真正落地社区与基层,必须先解决两大现实障碍:大量眼底照片因对焦不清、眨眼伪影、睫毛遮挡、光照不足或视野不足而无法直接判读;以及不同相机、不同技师拍摄的图片质量分布差异巨大。DeepDRiD 用真实筛查中采集、带真实质量瑕疵的图片(而非筛掉坏图后的「干净」图片)构建了带四维质量标注的基准,使「质量评估」成为可训练、可量化的独立环节。论文作者也明确指出,质量评估模型的精度(0.70–0.65)尚未达到临床可用,仍需结合伪影与清晰度特征改进——这正说明质量任务是驱动筛查系统提升的关键瓶颈(Patterns 讨论)。

§2.6 金标准表

字段维度 划分方式 标注内容 标注者 性质
DR 分级(常规图) Set-A/B/C 固定三分 ICDR Grade 0–4 2 名授权眼科医师(分歧剔除) 双人独立+分歧剔除
DR 分级(UWF 图) 同上 ICDR Grade 0–4 2 名授权眼科医师 双人独立+分歧剔除
图像质量(常规图) 同上 伪影/清晰度/视野/总体 2 名授权眼科医师 双人独立+分歧剔除;主观性高

标注流程:原始眼底图上传至在线读片平台,每只眼的图像被分派给两名授权眼科医师,各自给出质量分与分级,意见不一致的图像被整体剔除,以保证标签一致性(Patterns 方法与 Limitations)。


§2.7 眼底图像质量维度定义(临床视角)

DeepDRiD 的图像质量标注正是对「这张照片能否可靠用于 DR 判读」的量化拆解,其四个维度在临床读片与自动算法中各有明确物理对应:

质量维度 临床对应问题 DeepDRiD 评分档 影响
伪影(artifact) 拍摄时有无睫毛遮挡、眨眼、反光、异物、运动模糊等非解剖干扰 0(无)→10(覆盖全后极部) 伪影会遮挡病灶或制造假病灶
清晰度(clarity) 图片是否足够锐利,视网膜血管弓与病灶细节能否分辨 1(仅 I 级血管弓)→10(III 级血管弓且全病灶可见) 欠清时微血管瘤/出血易漏判
视野定义(field definition) 黄斑与视盘是否都落在取景内、位置是否居中 1(两者均缺失)→10(都在中心 1 PD 内) 视野不足会漏掉周边或中心关键区域
总体质量(overall quality) 综合以上三点,图片是否足够用于视网膜疾病诊断 0(不足以诊断)/1(足以诊断) 二分类即「可用/需重拍」

这四维度既服务算法输出,也直接对应技师在采集现场的可纠正动作(如重新对焦、让患者眨眼后重拍、调整瞳孔对位),因此 DeepDRiD 的质量标签不仅可用于训练自动评估,也可用来审计与改进成像流程(见 §8.7 与 Patterns 补充 Note S1)。

§2.8 流行病学与筛查背景

全球糖尿病患者数量预计到 2040 年将增至约 6 亿,其中约三分之一会发生某种程度的 DR,而 DR 仍是工作年龄段人群可避免性视力损害的最主要病因(Patterns 引言)。DR 通常早期无症状,眼底筛查是及早发现并阻止其进展的关键手段;而大规模社区筛查依赖大量眼底照片的自动化判读,照片质量参差成为自动系统落地的第一道门槛。DeepDRiD 刻意不筛掉带真实质量缺陷的照片,正是为了模拟这种真实筛查中「混杂着大量质量不齐图片」的输入分布,从而训练出更贴近部署场景的模型。


§3 数据集规格

§3.0 版本抉择矩阵

DeepDRiD 无多版本发布,但按任务目的可选不同子集;无散播多版号困扰,以下按目标列明应取的数据块:

你的需求 推荐子集 大小/规模 理由
图像质量评估(可用性/伪影过滤) regular-fundus-training + validation 1,600 张(Set-A+B) Set-A/B 均含四维质量真值,做质量二分类或回归足够
DR 分级 + 双视角融合 regular 全量 2,000 张 500 例 × 4 视角 每患者双眼双视角,做患者/眼/视角级融合
域迁移(常规→超广角) 需把 regular 当源域、ultra-widefield 当目标域 2,000 常规 + 256 UWF 官方即按此组织子挑战 3
复现排行榜结果 用官方 Set-A/B 训练、Set-C 在线测 Set-A 1,200 + Set-B 400 与论文 Table 8 口径一致
真实筛查质量监测预训练 用 regular 质量标签训练分类器 训练+验证 1,600 张 2026 RIQ 研究即用此类模型跨域部署

§3.1 模态详情

DeepDRiD 提供两种眼底图像模态:

  • 常规眼底图(regular fundus):来自日本 TOPCON 数字眼底相机,无散瞳拍摄,视野 FOV 45–60°,分辨率 1956×1934 像素,JPG 存储,单张约 778 KB。同一只眼分别以黄斑中心和视盘中心拍摄两张,因此每例患者 4 张、双眼共 8 个记录视角。全部图像质量标签与 DR 分级标签均针对常规图给出。
  • 超广角眼底图(UWF,ultra-widefield):来自 Optos Optomap P200Tx(英国),视野约 200°,3900×3072 像素,JPG,单张约 2 MB;每例患者左右眼各 1 张、均以视盘为中心,仅带 DR 分级标签(无逐张图像质量四维标注)(Patterns 补充 Note S1)。

§3.2 按子集样本数

子集 常规图数 常规患者数 UWF 图数 UWF 患者数 用途
Set-A(training) 1,200 300 154 154 模型开发(带真值)
Set-B(公开验证) 400 100 50 50 公开测试/调优(带真值)
Set-C(线上评估) 400 100 52 52 最终验证(早期仅图像)
合计 2,000 500 256 128

§3.3 格式表

数据 格式 说明
图像 JPG 常规 1956×1934、UWF 3900×3072
标注 CSV / XLSX 各子集目录内的 CSV;部分标签表为 xlsx
说明文档 Readme.docx / Readme.txt 各子文件夹附字段说明
上传模板 CSV Challenge1/2/3_upload.csv(在线提交格式)

§3.4 存储大小

解压后整个数据集约 2.81 GB。常规图约 2,000×0.78 MB≈1.6 GB,UWF 256 张×2 MB≈0.5 GB,其余为标签与说明文件。下载镜像以 GitHub release/仓库文件方式分发,需留意单文件大小与网络。

§3.5 标注方式

标注为人工双人独立标注。每只眼图像在在线读片平台分派给两名授权眼科医师,独立给出四维图像质量分与 DR 分级;两人意见不一致的图像被剔除,不进数据集。质量评分体系由挑战赛组织方预先定义的评分标准(见 §3.6)约束,DR 分级按国际临床严重度表。

§3.6 标注者资质与一致性

标注者为经验丰富的眼科医师。为控制一致性:双眼/双视角图像由两名医师分别判读;冲突样本排除。但论文 Limitations 明确指出,图像质量标注(尤其清晰度与伪影覆盖程度)本质上主观,即使同一医师重复读图也可能波动,这是监督方法发展的固有限制。该主观性直接导致质量子任务难度高于分级(Patterns Limitations)。

§3.7 采集周期

常规眼底图采集自 2013–2018 年多个筛查项目及 2014–2017 年门诊;UWF 采集自 2019-01 至 2020-01。挑战赛于 2019-10 启动、2020-03 结束提交,数据集在 2022 年随 Patterns 论文正式公开。

§3.8 地域覆盖

全部采集于中国上海地区多家筛查项目与医院(上海交通大学附属第六人民医院为主),代表城市大型糖尿病管理队列,非人群普适抽样。这意味着地域/人群偏倚显著(详见 §7.1)。

§3.9 设备规格

参数 常规眼底 超广角眼底
相机 TOPCON(日本),无散瞳 Optos Optomap P200Tx(英国)
视野 45–60° 约 200°
分辨率 1956×1934 3900×3072
存储 JPG ~778 KB JPG ~2 MB
居中 黄斑 或 视盘 视盘

§3.10 深度溯源链

原始眼底检查(数千例筛查影像)→ 依据真实筛查场景随机抽取 2,000 张常规图(500 例,尽量保留各类质量瑕疵)与 256 张 UWF 图(128 例)→ 伦理批准(上海第六人民医院伦理委员会、赫尔辛基宣言、ChiCTR2000031184、知情同意)→ 两名眼科医师在线平台独立标注 → 分歧样本剔除 → 按患者分 Set-A/B/C → 挑战赛线上验证 → 2022 年 CC-BY-SA-4.0 公开(Patterns 方法)。

§3.11 采集协议与解剖标注要点

DeepDRiD 的图像都遵循同一套院内采集协议,且对解剖结构做了严格定位,理解这点才能正确解析图像语义:

  • 常规眼底双视角:同一只眼分别以黄斑(fovea,视功能核心区)与视盘(optic disc,视神经出口)为中心拍摄。黄斑中心片能看清微血管瘤与黄斑区病变,视盘中心片能看清新生血管与盘周出血——两视角互补,是「双视角融合」实验的数据基础。文件命名/目录通常可据此区分两个视角。
  • 超广角:每例左右眼各 1 张、均以视盘为中心,视野约 200° 一次覆盖周边视网膜,可看到常规眼底拍不到的周边病变,但图像几何(后极部放大、周边压缩)与常规图差异巨大,这正是子挑战 3「域迁移」难点的来源。
  • 质量阶梯与解剖位置强相关:清晰度档位按「可见到几级血管弓」判定(I 级/II 级/III 级血管弓可见即对应不同档),视野定义按「黄斑/视盘是否落在中心 1–2 个视盘直径(PD)内」判定。做质量任务前若不理解「血管弓分级」「PD 距离」这些判据,很难解释模型为何在特定图上传错。

§3.12 图像质量评分标准的可复现说明

下表按论文原意整理质量评分(供编码时建立类别映射,具体阈值以 Patterns Table 2 原文为准):

维度 可用档位 说明
Artifact(伪影) 0、1、4、6、8、10 0=无伪影;随伪影覆盖范围增大递增至 10=覆盖整个后极部
Clarity(清晰度) 1、4、6、8、10 1=仅 I 级血管弓可见;10=III 级血管弓且全部病灶可见
Field definition(视野) 1、4、6、8、10 1=不含视盘与黄斑;10=两者均在中心 1 PD 内
Overall quality(总体) 0、1 0=不足以诊断视网膜疾病;1=足以诊断

实操提示:这组档位是类别/有序等级,请勿当作连续比例变量直接回归。建立 category → index 字典后在训练时用交叉熵即可(详见 §6.5 坑点 1)。


§3.13 样本选取与派生过程

理解数据是怎么从「医院海量影像」被筛成「这 2,000+256 张」,有助于把握标签与偏倚的来源(Patterns 方法):

  1. 从多个上海筛查项目与第六人民医院门诊的成千上万次眼底检查中,按患者随机抽取。
  2. 抽出的 2,000 张常规图要求「每例固定 4 张、双眼×双视角」结构完整(500 例 × 4);UWF 抽出 256 张(128 例 × 左右眼各 1)。
  3. 刻意不筛掉带质量瑕疵的照片——正因为要研究图像质量,作者保留了真实筛查中会出现的伪影、欠清与视野不足图,这与很多「只要好图」的眼底数据集形成鲜明对比。
  4. 每只眼分派给两名授权眼科医师独立标注(质量 + 分级),分歧样本被剔除,从而得到标签较一致的最终集合。
  5. 按患者(非按图)划分 Set-A/B/C,保证三折无患者重叠,Set-C 用作线上最终评估。

含义:数据集的代表性取决于「上海地区某几类糖尿病筛查 + 一家医院门诊」的真实采集流,而不是精心平衡人群的随机抽样;你在本地做域外测试时必须考虑这一采样偏倚(见 §7.1、坑点 8)。

§3.14 物理成像对建模的约束

了解相机与光学参数后,有几个直接影响模型设计与预处理决策的物理约束值得记牢:

  • 分辨率足够但存储有损:常规图 1956×1934、JPG ~778 KB(有损压缩),UWF 3900×3072、JPG ~2 MB。压缩会轻微损伤细小病灶边缘,对「清晰度」判读与微血管瘤检测略有影响;做高精度病灶级任务时优先用无损/原图。
  • 瞳孔与散瞳状态不明:数据集混合无散瞳(TOPCON non-mydriatic)与院内可能散瞳的场景,瞳孔大小改变光学路径与景深,直接影响清晰度与伪影判定——但逐图散瞳状态未落成列(见 §4.5 缺失)。
  • FOV 决定「能看见什么」:常规 45–60° 只能覆盖后极部,超广角 200° 才覆盖周边;视网膜病变(尤其 PDR 新生血管)在周边也常见,因此用 DeepDRiD 常规图训出的分级模型天然「看不见」常规视野之外的周边病变——这既是超广角域迁移的意义,也是外部泛化的边界。
  • 双视角的视野互补:黄斑中心片擅长黄斑水肿/中心病灶,视盘中心片更利于盘周新生血管与出血定位;融合两视角可覆盖更完整病变分布,这构成双视角融合实验的解剖基础。

§4 数据结构

§4.0 目录树

从官方 GitHub 仓库(deepdrdoc/DeepDRiD)下载后,解压得到以下结构:

DeepDRiD/
├── regular_fundus_images/
│   ├── regular-fundus-training/          # 常规训练:Set-A,含真值
│   │   ├── Images/                       # 1,200 张 JPG(300 例×4 视角)
│   │   ├── Readme.docx
│   │   └── regular-fundus-training.csv   # 标注:DR grade + 图像质量
│   ├── regular-fundus-validation/        # 常规公开验证:Set-B,含真值
│   │   ├── Images/                       # 400 张 JPG
│   │   ├── Readme.docx
│   │   └── regular-fundus-validation.csv
│   └── Online-Challenge1&2-Evaluation/   # 常规线上评估:Set-C
│       ├── Challenge1_upload.csv         # 分级提交模板
│       ├── Challenge2_upload.csv         # 质量提交模板
│       ├── Challenge1_labels.xlsx        # 分级真值(赛后公布)
│       ├── Images/                       # 400 张 JPG
│       └── Readme.docx
└── ultra-widefield_images/               # 超广角(子挑战3)
    ├── ultra-widefield-training/         # 154 张 + ultra-widefield-training.csv
    ├── ultra-widefield-validation/       # 50 张 + ultra-widefield-validation.csv
    └── Online-Challenge3-Evaluation/     # 52 张 + Challenge3_*.csv/xlsx

预期:regular_fundus_images/regular-fundus-training/Images/*.jpg 与同目录 regular-fundus-training.csv 逐行对应;验证集结构一致。线上评估(Set-C)的标签以 XLSX 在赛后随论文公开。

§4.1 DAIMS 字段字典(regular 标注 CSV)

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
image_id / 文件名 Text 图像唯一标识 例如 H001_L_F.jpg 主键/配对 不允许缺失 与 Images 文件名一致
patient / eye / view 标记 Text 患者、眼、视角归属(编码于文件名) 双眼×双视角 患者/眼/视角级分组 文件命名错配风险 不允许缺失 需解析 Readme
DR grade Integer ICDR 严重度 0–4 分级多分类 双人一致,分歧剔除 无标签图不参与 0,1,2,3,4
quality_overall Integer 总体可用性(二分) 0 / 1 可用性二分类 主观 0=不可诊断,1=可诊断
quality_artifact Integer 伪影覆盖阶梯分 0/1/4/6/8/10 质量回归/分类 主观
quality_clarity Integer 清晰度阶梯分 1/4/6/8/10 质量回归/分类 主观
quality_field Integer 视野定义阶梯分 1/4/6/8/10 质量回归/分类 主观

注:官方 CSV 实际列名与文件名编码需以各子目录 Readme 为准;上表为逻辑字段语义,落地时先读 Readme.docx 核对列名。

§4.2 标签分布

DR 严重度分布(各子集、图像计数,来源 Patterns 补充 Table S1):

Grade Regular-A(图) Regular-B Regular-C UWF-A UWF-B UWF-C
Grade-0 540 174 176 61 46 6
Grade-1 140 46 40 42 14 16
Grade-2 234 40 92 52 44 12
Grade-3 214 40 68 40 10 3
Grade-4 30 72 20 20 12 2
IQF(质量不足) 34 1

图像质量分布(以各质量维度阶梯分,来源 Patterns 补充 Table S2):总体质量(0/1)、清晰度与视野(1/4/6/8/10)、伪影(0/1/4/6/8/10)在各子集均有分布,其中多数图像总体质量为「可诊断(1)」,但仍有相当比例伪影/清晰度不足的图,恰好支撑质量分类任务。具体计数见补充材料 Table S2。

§4.2b 质量分布解读

从质量标签能读出几个对建模重要的结构信息:

  1. 总体质量偏可用(1)但不极端:多数常规图标注为「可诊断」,说明数据偏「真实筛查中可用的主流图」;若只求 accuracy,全判「可用」就能拿到偏高的分数——这正是坑点 7 强调必须关注召回/特异度的原因。
  2. 伪影/清晰度的中间档真实存在:伪影 0/1/4/6/8/10、清晰度 1/4/6/8/10 的多个非零档位都有样本,反映真实照片中睫毛、对焦失败、遮挡与视野不足的连续谱,而非只有「好/坏」两极。这使中间档的自动识别成为质量任务真正的难点。
  3. 分布随折变化:Set-A(训练)人口更年长、DR 谱略重,Set-B/C 相对年轻,质量分布也相应略异——跨折使用时应报告而不应假设同分布(对应 §7.6 漂移讨论)。

§4.3 关键统计

  • 常规图 2,000 张中,DR 各级(0–4)均有样本但以 Grade-0 居多(约占 44%),Grade-4 最少,呈长尾。
  • 每例常规患者固定 4 张(双眼×双视角);每例 UWF 患者固定 2 张。
  • Regular-A/B/C 平均年龄 70.63/65.13/61.36 岁,男性 51%/44%/46%,说明三折人口结构并不完全一致(Set-A 明显更年长)。

§4.4 数据层级

患者 (patient) ── 双眼 ── 眼 (eye: L/R)
                  │          └─ 视角 (view: 黄斑中心 / 视盘中心)
                  │                └─ 单张图像 = 最小样本单元(1 张 1 行标注)
                  └─ (UWF 域) ── 每例仅 1 张/眼,以视盘为中心

训练单元是图像,但存在天然的分组(患者→眼→视角),任何 CV 都必须在该层级上做患者级分离(见 §5.3)。

层级对建模的三点含义

  1. 视角内相关性最高:同一只眼的黄斑片与视盘片互为补充,但也共享血管/病灶底数,是信息冗余最大的层面;做双视角增益实验时,应把同一只眼的两个视角当作一个「观察单元」一起分折,避免高估多视角价值。
  2. 眼级生理差异:左右眼 DR 进展可不同步,跨眼仍有一定独立性,可作为比患者更细的第二层分组。
  3. 患者级共因:同一患者的多张图共享血糖控制、拍摄设备与技师、瞳孔条件等共因,这些共因恰是模型最容易「偷学」却不可迁移的信号——患者级分离是防止过拟合到共因的最直接手段。

§4.5 缺失值与信息性缺失

  • 常规图三折均带完整 DR 分级与图像质量标注,无明显缺失。
  • UWF 图只带 DR 分级、不带逐张四维图像质量标注——这是结构性差异而非随机缺失:UWF 域本身不构成质量子任务的训练源。
  • 质量评分阶梯取值(0/1/4/6/8/10 与 1/4/6/8/10)中存在离散跳跃,某些取值(如 4、6)在某些子集为 0 计数,这是信息性稀疏而非缺失。
  • 线上评估(Set-C)在比赛期间只给图像不给真值,属「刻意延后发布」的受控信息缺失;赛后随论文开放标签。

§4.6 文件名编码与解析代码示例

官方仓库未在 README 统一给出文件名 → 患者/眼/视角的规范化映射,解析需依赖各子目录 Readme。下面是稳健的防御式解析框架(按文件名常见形态设计,落地前先用抽样核对):

import os, re
from collections import Counter

def guess_columns(df, images_dir):
    """返回 CSV 中定位图像与标签的列名候选。"""
    img_col = next(c for c in df.columns if "image" in c.lower() or "name" in c.lower())
    return img_col

def build_index(df, images_dir, img_col="image_id"):
    idx = []
    for f in os.listdir(images_dir):
        if not f.lower().endswith(".jpg"):
            continue
        # 常见命名:<patient>_<L|R>_<macula|od|disc|fovea>.jpg
        stem = os.path.splitext(f)[0]
        parts = stem.split("_")
        if len(parts) >= 3:
            patient, eye, view = parts[0], parts[1].lower(), parts[2].lower()
        else:                       # 兜底:退化为仅患者键
            patient, eye, view = parts[0], "", ""
        idx.append({"file": f, "patient": patient, "eye": eye, "view": view})
    return idx

# 示例:对 training 目录建立索引并核对标签行
idx = build_index(None, "/path/to/.../regular-fundus-training/Images")
print(Counter([i["view"] for i in idx]))     # 预期出现黄斑/视盘两类视角,量级相当
print("索引图像数:", len(idx))

若文件名不含清晰视角标记,需回到 Readme.docx 或 CSV 中寻找视角/眼别列;切忌臆造命名规则后直接跑患者级分组(见 §6.5 坑点 6)。

§4.7 目录内容示例

regular-fundus-training/ 的典型内容示意(文件名已做占位化,实际以仓库为准):

regular-fundus-training/
├── Images/
│   ├── P001_L_macula.jpg
│   ├── P001_L_od.jpg
│   ├── P001_R_macula.jpg
│   ├── P001_R_od.jpg          # 同一患者 4 视角
│   ├── P002_L_macula.jpg
│   └── ...
├── Readme.docx
└── regular-fundus-training.csv   # ~1,200 行标注

每行标注对应一张图,至少含 DR 分级列与若干质量维度列;列名语义以 Readme 为准。


§4.8 双标签的组合读法

同一条 CSV 行里同时出现 DR 分级与四维图像质量标签,使用时容易忽略它们之间存在一种「并非完全独立」的结构关系:

组合 含义 建模含义
质量=1 且 Grade∈ 图可诊断且无病变 健康/阴性筛查样本
质量=1 且 Grade≥1 图可诊断且存在病变 真阳性分级样本
质量=0 图不可诊断 质量模型正样本(分级上应排除或独立评估)
UWF(仅 Grade) 无质量标注 只能用于分级,不可用于质量训练

一个实用建议:做 DR 分级实验前,先筛出 quality_overall==1 的图作为标准训练/评估集(排除「对不可用图强行判级」的噪声);做质量实验则用全部图。两套标签互为「筛查流水线的上游过滤器」与「下游判读器」,在 §6.5 坑点 2 有更深入的讨论。


§5 数据划分与使用建议

先回答一个高频问题:到底用不用官方划分? 结论是——做复现/与排行榜对比,用官方 Set-A/B/C;做自己的算法研发且不与他人横向比,可自定义划分但必须患者级、并做泄漏自检。官方划分最大的价值是让所有论文结果可直接横向比较;其代价是 Set-C 作为公开线上集仅 400 张,若你在本地反复用它调参,会稀释其「独立测试」的意义。对规模敏感的实验,更稳妥的做法是:在 Set-A 内患者级 GroupKFold 做模型选择,最后只对 Set-C 报告一次最终数字(对应 §5.3 泄漏与坑点 4)。

§5.1 官方划分

DeepDRiD 官方按患者提供固定三分,不鼓励自行重划分来复现排行榜:

  • 常规图:Set-A 训练(300 例/1,200 张)→ Set-B 公开验证(100 例/400 张)→ Set-C 线上评估(100 例/400 张)。
  • UWF:Set-A(154 张)、Set-B(50 张)、Set-C(52 张)。
  • 官方规则明确:Set-A 与 Set-B 用于模型开发与公开调优,Set-C 用作线上最终验证;每队限 3 次提交且必须方法不同、禁止仅调参重提(Patterns 挑战组织)。

§5.2 社区惯例与推荐划分

复现型工作通常直接采用官方 Set-A/B 训练、Set-C 测评,使结果与论文 Table 8 可直接比对。若需更大的本地验证集,社区做法是把 Set-A 内部再按患者切留出 10%–15% 作早停验证,但仍以 Set-C 为最终评估。质量评估任务亦沿用同一套划分(同一 CSV),不另切。

§5.3 泄漏风险(重点)

DeepDRiD 的天然泄漏来源有三:

  1. 同一患者多张图:每例常规患者有 4 张图(双眼×双视角),若随机打乱到不同折,训练与验证会共享同一患者的解剖特征与拍摄条件,使分级/质量指标虚高。必须患者级(或至少眼级)分层
  2. 双视角冗余:同一只眼的黄斑/视盘两张图高度相关,跨折串扰比跨眼更严重。做视角级实验时应把同一眼的所有视角放进同一折。
  3. Set-B 被广泛当验证集:若你在 Set-B 上反复调参再报 Set-C,实质是对公开验证集过拟合;多人复用同一 Set-B 已在社区层面稀释其独立性。安全做法是内部再留一层不见光的患者验证集。

§5.4 交叉验证建议

推荐在官方 Set-A 内做 GroupKFold,分组键用患者 ID(group = patient_id),保证任一张训练图与任一张验证图不属于同一患者。图像质量任务与 DR 分级任务共享同一分组键。Fold 数建议 5,逐折报告均值±SD;最终以 Set-C 一次性盲测为准。

泄漏与否的量化示例:假设随机按图切分(不分组)时某双视角分级实验 QWK 报 0.94;改用患者级 GroupKFold 后跌到 0.90——0.04 的差正来自双视角/双眼间的信息串扰,而非真实泛化增益。报告时明确写「患者级分离」与切分函数,读者才能判断可信度(对应坑点 4)。

§5.5 外部验证建议

  • 质量评估:可在 EyeQ、Messidor 等自带质量或可用性标签的数据集上做跨域外部验证;2026 RIQ 研究显示 DeepDRiD 训练的质量模型在西班牙 55,801 张真实图像上与医师符合率最高(平均精确率 0.431),可作为跨相机/跨人群泛化证据。
  • DR 分级:可用 Messidor-2、APTOS、IDRiD 做分级泛化测试,但因拍摄设备与人群差异,需报告域差距而非直接等效。

§5.6 患者级交叉验证代码示例

下面的代码演示如何在官方 Set-A 内做患者级(Group)交叉验证,避免同一患者图跨折泄漏:

import numpy as np, pandas as pd
from sklearn.model_selection import GroupKFold, StratifiedGroupKFold

# 假设 df 含 image_id、patient_id、quality_overall(总体可用 0/1)、dr_grade
df = pd.read_csv("/path/to/regular-fundus-training.csv")
df["patient_id"] = df["image_id"].map(lambda f: parse_patient(f))  # 见 §4.6

gkf = GroupKFold(n_splits=5)
for fold, (tr_idx, va_idx) in enumerate(gkf.split(df, groups=df["patient_id"])):
    tr_p = df["patient_id"].iloc[tr_idx].nunique()
    va_p = df["patient_id"].iloc[va_idx].nunique()
    print(f"fold{fold}: train患者={tr_p} val患者={va_p} "
          f"| 重叠患者={set(df.patient_id.iloc[tr_idx]) & set(df.patient_id.iloc[va_idx]) or '无'}")

质量标签二元不平衡时可用 StratifiedGroupKFold,但分组仍是 patient_id;务必打印「重叠患者」检查确为无泄漏。


§5.7 常见实验设计与口径速查

按目标挑选子集、标签与指标,可避免新手踩「该用哪一部分」的坑:

你想做的研究 用哪些子集/标签 指标 泄漏注意
图像可用性二分类 regular Set-A/B,quality_overall accuracy+Specificity/AUC 患者级分组
四维质量评估 regular,quality_artifact/clarity/field + overall 逐维有序分类 accuracy 患者级分组
DR 分级 0–4 regular 质量=1 图,dr_grade QWK 患者级分组
双视角融合增益 regular 全量(每患者双眼双视角) QWK / 视角对比 同一眼全部视角同折
常规→UWF 域迁移 regular 为源、UWF 为目标,dr_grade QWK UWF 无质量标签,勿混质量
质量监测跨域部署 regular 质量标签训练 → 外部数据 拒收/不可用率一致性 外部无金标准时用人机一致率

选好研究类型后,把「用 Set-A+B 训练、Set-C 测」当作默认复现口径;除非你明确在论文中声明自定义划分并给出泄漏自检(见 §5.3)。


§6 AI 就绪指南

§6.0 云端快速启动(可选)

数据约 2.81 GB、JPG 格式,标准 CPU 即可解压,训练建议 GPU。可在 Kaggle/Colab 直接 git clone GitHub 仓库或用 Kaggle 上的镜像数据集导入,无需预装专用 SDK。

§6.1 快速上手

预期目录结构(按官方仓库克隆后):

DeepDRiD/
├── regular_fundus_images/
│   ├── regular-fundus-training/Images/        # 训练图(Set-A)
│   ├── regular-fundus-training/regular-fundus-training.csv
│   ├── regular-fundus-validation/Images/      # 公开验证图(Set-B)
│   └── regular-fundus-validation/regular-fundus-validation.csv
└── ultra-widefield_images/...                 # 子挑战3,本文档主流程聚焦 regular

data_root 拼接关系:{data_root}/regular_fundus_images/regular-fundus-training/Images最小可用子集:只用 regular-fundus-training/(1,200 张 + CSV)即可跑通质量二分类与 DR 分级的最小实验,无需下载 UWF 与线上评估部分。

先解析 CSV 并检查列名:

import pandas as pd, os
data_root = "/path/to/DeepDRiD"
tr_dir = os.path.join(data_root, "regular_fundus_images", "regular-fundus-training")
df = pd.read_csv(os.path.join(tr_dir, "regular-fundus-training.csv"))
print(df.head(), "\n列名:", list(df.columns))
imgs = [f for f in os.listdir(os.path.join(tr_dir, "Images")) if f.lower().endswith(".jpg")]
print("图像数:", len(imgs), "| 标签行数:", len(df))

提示:先核对 CSV 列名是否含 overall/artifact/clarity/field/dr_grade,若名称与下面代码不符,以 Readme.docx 为准做映射。

§6.2 数据获取

渠道 地址 说明
GitHub 官方 https://github.com/deepdrdoc/DeepDRiD 直接 git clone 或整包下载,License CC-BY-SA-4.0
Zenodo 镜像 https://doi.org/10.5281/zenodo.6452623 论文声明备份源,版本化
Kaggle 社区镜像 关键词 DeepDRiD 免翻墙快速导入,注意版本新旧
# 克隆官方仓库(约 2.81 GB,视网络耗时较长)
git clone --depth 1 https://github.com/deepdrdoc/DeepDRiD.git
cd DeepDRiD
du -sh .            # 预期约 2.8 GB

§6.3 预处理全流程

"""DeepDRiD 常规眼底图:质量标签清洗 + 尺寸/归一化 预处理。"""
import os, cv2, numpy as np, pandas as pd

data_root = "/path/to/DeepDRiD"
tr_dir = os.path.join(data_root, "regular_fundus_images", "regular-fundus-training")

# 1) 读标注,重建 患者/眼/视角 分组键(需按实际文件名解析)
df = pd.read_csv(os.path.join(tr_dir, "regular-fundus-training.csv"))
# 约定:文件名如 <patient>_<L|R>_<macula|od>.jpg 或官方列内含 id;此处按读取后规整
def parse_group(fname: str):
    base = os.path.splitext(os.path.basename(fname))[0]
    # 例:假设 base='p012_L_macula' -> 眼级键 'p012_L',患者键 'p012'
    parts = base.split("_")
    return parts[0], "_".join(parts[:2])
df["patient_id"] = df["image_id"].map(lambda x: parse_group(x)[0])
df["eye_id"]     = df["image_id"].map(lambda x: parse_group(x)[1])

# 2) 四维质量统一为类别编码(阶梯分不是等距连续,故离散化/保持类别)
def encode_ordinal(s, allowed):            # allowed 可传 {0,1,4,6,8,10}
    return s.astype("category").cat.codes

df["q_artifact_c"] = encode_ordinal(df["quality_artifact"], {0,1,4,6,8,10})
df["q_overall"]    = (df["quality_overall"].astype(int) >= 1).astype(int)

# 3) 尺寸标准化(质量任务建议保留视野信息,不做过度裁剪)
IMG = 512
X, y = [], []
for f in df["image_id"]:
    p = os.path.join(tr_dir, "Images", f)
    img = cv2.imread(p)
    if img is None:                        # 缺失文件名容错
        continue
    img = cv2.resize(img, (IMG, IMG))
    X.append(img); y.append(df.loc[df.image_id == f, "q_overall"].iloc[0])
X = np.stack(X) / 255.0
print("预处理后 X:", X.shape, "总体质量类别分布:", np.bincount(y))

说明:质量阶梯分(0/1/4/6/8/10、清晰度 1/4/6/8/10)本质是临床等级而非等距连续量,直接当回归标签会引入错误的量纲假设,建议当有序分类或用 soft ordinal 处理(见坑点 3)。

§6.4 PyTorch DataLoader

import os, torch, cv2, numpy as np, pandas as pd
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms

class DeepDRiDQuality(Dataset):
    """读取 regular 训练集,输出 (图像, 总体质量二分类标签)。"""
    def __init__(self, root, split="training", img_size=512):
        d = os.path.join(root, "regular_fundus_images",
                         f"regular-fundus-{split}")
        self.img_dir = os.path.join(d, "Images")
        self.df = pd.read_csv(os.path.join(d, f"regular-fundus-{split}.csv"))
        self.df["_path"] = self.df["image_id"].map(
            lambda f: os.path.join(self.img_dir, f))
        self.tf = transforms.Compose([
            transforms.ToPILImage(),
            transforms.Resize((img_size, img_size)),
            transforms.RandomHorizontalFlip(),   # 眼底图增强安全项见 §6.6
            transforms.ToTensor(),
            transforms.Normalize([0.485,0.456,0.406], [0.229,0.224,0.225]),
        ])

    def __len__(self):
        return len(self.df)

    def __getitem__(self, i):
        row = self.df.iloc[i]
        img = cv2.imread(row["_path"])
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        label = int(row["quality_overall"] >= 1)   # 可用性二分类
        return self.tf(img), torch.tensor(label, dtype=torch.long)

root = "/path/to/DeepDRiD"
ds = DeepDRiDQuality(root, split="training")
dl = DataLoader(ds, batch_size=32, shuffle=True, num_workers=4)
xb, yb = next(iter(dl))
print("batch 张量:", xb.shape, yb.shape)

§6.4b 最小训练循环(质量二分类)

接续上面 DeepDRiDQuality,一段可直接运行的 PyTorch 训练主循环(ResNet18 微型基准,适合在单 GPU/Colab 上验证管线):

import torch, torch.nn as nn
from torchvision import models

model = models.resnet18(weights=models.ResNet18_Weights.DEFAULT)
model.fc = nn.Linear(model.fc.in_features, 2)          # 总体质量 0/1 二分类
opt = torch.optim.Adam(model.parameters(), lr=1e-4)
lossf = nn.CrossEntropyLoss()
model.train()

for epoch in range(3):
    total = correct = 0
    for xb, yb in dl:
        xb, yb = xb.cuda(), yb.cuda()
        opt.zero_grad()
        logit = model(xb)
        loss = lossf(logit, yb)
        loss.backward(); opt.step()
        correct += (logit.argmax(1) == yb).sum().item(); total += yb.size(0)
    print(f"epoch {epoch}: loss={loss.item():.3f} train_acc={correct/total:.3f}")

完整复现质量任务还建议:预训练 + 集成、patient 级划分、报告 Specificity/AUC(见 §6.9)。要跑 DR 分级则把 model.fc 输出改成 5 类并用 QWK 调优。

§6.5 八大坑点

⚠️ 坑点 1:质量阶梯分被当成等距连续回归(分类:标签理解 / 评估误用)

问题:总体质量是二分 0/1,而伪影取 0/1/4/6/8/10、清晰度/视野取 1/4/6/8/10——这些是临床等级的有序刻度,取值间的间距不具等距意义(4→6 的语义跳变远大于 0→1)。
症状:把它当作 MSE 回归训练,模型会学出半值(如 5.3 分)而根本无法映射回离散档;把 0/1/4/6/8/10 当成普通整数顺序也可能被模型当成等距。
解决

  1. 简单方法:对每个质量维度做多分类(softmax over 离散档位),用交叉熵。
  2. 进阶方法:做有序回归(ordinal / CORAL),利用等级单调性;对总体质量只用二分类(0/1)。
  3. SOTA 方法:四维质量 + DR 分级多任务共享骨干,质量维度用 ordinal loss 联合优化。
    参考Patterns Table 2 图像质量评分标准

⚠️ 坑点 2:图像质量「可用」与 DR「可分级」被混为一谈(分类:标签理解)

问题:DeepDRiD 中每张常规图同时有总体质量(0/1)与 DR 分级(0–4)。但一张图总体质量=1(可供诊断)不等于其病变分级可信;反之质量差图也可能被强行判级,或 UWF 域只给分级不给质量。质量与分级是两个正交标签。
症状:把 quality_overall==0 的图当「无病变」丢进 DR 训练集,或把分级任务与质量任务共享同一批「合格」样本而制造系统性偏置。
解决

  1. 简单方法:建两条独立数据通路——质量任务用全部图(含 0/1),分级任务只训练/评估总体质量=1 的图,并在报告中标明口径。
  2. 进阶方法:用质量模型做 hard-negative 筛选,研究「差质量图被误分级」的失败模式,训练分级模型对低质量图保守输出。
  3. SOTA 方法:联合模型显式建模 P(grade | usable) 的贝叶斯链。
    参考Patterns 讨论:质量与分级两任务关系

⚠️ 坑点 3:图像质量标注的主观性被忽略(分类:偏倚陷阱)

问题:官方在 Limitations 明言质量标注「inherently subjective」,清晰度与伪影覆盖范围无统一客观标尺;两名医师独立标注、分歧即剔除——这使留存标签偏向「易一致」的极端样本,中间档更稀疏。
症状:模型在中间质量档(如清晰度 4/6)误差大;对同一图做数据增强扰动后预测剧烈翻转;跨数据集(EyeQ 等不同标准)精度骤降。
解决

  1. 简单方法:报告时给出各质量档样本数,避免在高主观档位过度宣称精度。
  2. 进阶方法:把任务降为「是否可用/是否需重拍」二分类,绕开对主观连续档的精确回归,提升稳定性。
  3. SOTA 方法:采集多位标注者的 soft label / 利用质量评分分布建模 aleatoric uncertainty。
    参考Patterns Limitations

⚠️ 坑点 4:同一患者多图导致的划分泄漏(分类:数据泄漏)

问题:每例常规患者固定 4 张(双眼×双视角),图像高度相关且共享拍摄设备与患者特征。若按图像随机切 train/val,同一患者/同一只眼会横跨两侧。
症状:验证与训练 A 超过实际泛化水平(指标虚高),换真正患者级划分后显著回落——这是最常见的「看起来很好」假象。
解决

  1. 简单方法:scikit-learn GroupKFold(n_splits=5)groups=patient_id
  2. 进阶方法:眼级分组(同眼所有视角同折),甚至视角级隔离实验,专门测双视角增益真实性。
  3. SOTA 方法:在官方 Set-A 内做患者级 CV + 最终 Set-C 盲测双保险,报告两者差。
    参考Patterns 数据集结构:每患者 4 图

⚠️ 坑点 5:无散瞳与散瞳图混排 + FOV 差异(分类:偏倚陷阱 / 预处理陷阱)

问题:常规图用 TOPCON 无散瞳相机、FOV 45–60° 拍摄,采集来自多个筛查项目(2013–2019),瞳孔状态、曝光、视野范围并不统一;这些物理条件直接影响「清晰度/视野定义」质量判定的金标准。
症状:质量模型可能学到的是「拍摄条件指纹」而非通用质量;换相机/换无散瞳策略后精度崩坏;视野不足图被误判为「低质量清晰度差」。
解决

  1. 简单方法:记录并暴露每张图的 FOV/设备元数据(如有),按站点/设备做 subgroup 报告。
  2. 进阶方法:用黑色背景掩膜裁剪统一到眼底圆形 ROI,避免把光圈/边缘伪影当成图像内容。
  3. SOTA 方法:做设备/站点域自适应,或直接在含设备变量的大库上微调(如 2026 RIQ 监测的部署方式)。
    参考Patterns 补充 Note S1 设备参数

⚠️ 坑点 6:文件名/视角/眼别解析错误(分类:工程陷阱)

问题:患者、左右眼、双视角(黄斑/视盘中心)信息编码在文件名与目录结构中,官方 CSV 未统一暴露规范化的 patient/eye/view 列(需读 Readme 映射);个别线上评估部分以 XLSX 提供且比赛期无标签。
症状:患者级分组建错导致泄漏;视角标签串位使双视角融合实验无效;XLSX 与 CSV 混用造成读取崩溃。
解决

  1. 简单方法:预处理时统一用 os.path.splitext 解析文件名并重建 patient/eye/view 三列,先打印抽样核对。
  2. 进阶方法:写脚本比对 Images 目录与 CSV 行数/文件名集合,确保一一对应、无孤儿图。
  3. SOTA 方法:为双视角/双数据库研究建立显式 (patient, eye, view, modality) 四元组索引表,后续所有实验经该表取数。
    参考GitHub 仓库 README 文件结构

⚠️ 坑点 7:质量评估准确率虚高与类别不平衡(分类:评估误用)

问题:官方 Sub-challenge 2 用二分类(或经阶梯分归并)准确率评估,而多数图像总体质量=1(可诊断占大多数),类别失衡会让「全判可用」也拿到较高准确率。
症状:报告 70%+ 准确率但真正重要的「把低质量图拦下来」召回率很低;筛掉坏图减少误分级的同时大量误伤好图。
解决

  1. 简单方法:除 accuracy 外必报质量类的 Precision/Recall/Specificity 与 AUC。
  2. 进阶方法:面向临床代价优化——把「坏图漏放(False Negative on unusable)」设高代价阈值,用 youden/代价敏感决策。
  3. SOTA 方法:用 threshold tuning + 校准(Platt/温度)得到可用概率,对接筛查拒收决策。
    参考Patterns 评价指标:accuracy

⚠️ 坑点 8:把 DeepDRiD 分级结果直接当可筛查部署证据(分类:工程陷阱 / 数据泄漏)

问题:DeepDRiD 训练+Set-C 榜上 kappa 高达 0.93,但数据来自单一城市多项目、样本量 2,000 张,DR 分级偏轻中度,图像质量与人群分布与真实普筛(含大量不同设备/人群)不同。跨域直接部署会在实际场景显著掉点。
症状:在本地/外部数据上分级或质量精度较榜上大幅下降;对 9B71.0Z 外人群(如其他种族、不同年龄谱)表现不可预测。
解决

  1. 简单方法:把 DeepDRiD 当预训练/迁移源,绝不当作最终部署模型训练集;部署前在本地区做前瞻验证。
  2. 进阶方法:与更大多中心 DR 数据(Messidor-2/APTOS 等)联合训练做 domain mix。
  3. SOTA 方法:参考真实世界部署研究(NaIA-RD 等)做持续质量监测与数据漂移告警,随采集动态微调。
    参考2026 RIQ 监测研究(DeepDRiD 作比较器)

§6.6 数据增强(安全✅/危险❌)

增强 建议 理由
水平/垂直翻转 眼底左右结构近似,可安全镜像
小角度旋转 眼底圆形解剖对小幅旋转不敏感
亮度/对比度微调 ⚠️ 可增强泛化,但别掩掉真实曝光/清晰度信号(质量任务尤慎)
随机裁剪缩放 ❌(质量任务) 会破坏 FOV/视野定义信息,误伤质量标注语义
高斯模糊/JPEG 压缩 ❌(质量任务训练) 会人为引入「伪低质量」,污染对真实伪影的学习
弹性形变 ⚠️ 可能扭曲血管弓与病灶形态,不宜过度

图像质量任务,增强应以不改变「真实采集质量」语义为边界;对 DR 分级任务则可适度采用常规几何+光度增强。

任务差异化的增强策略:在做「质量+分级」多任务时,建议把两类增强分开——对质量头只在「不改变质量语义」的变换(翻转/小幅旋转)内做增强,避免把降质型增强引入质量标签不变但视觉变差的样本;对分级头则可加入更强的几何/光度增强以提升病灶辨识泛化。若把高斯模糊用于分级增强,请勿让它同时流进质量头,否则会形成「越糊越像是坏图」的矛盾梯度。这条在代码实现时通常需要两套不同的 transform 管道分别处理两个头的数据。

§6.7 模型推荐表

任务 推荐模型 依据/预期
总体质量二分类 EfficientNetV2 + 集成 Diagnostics 2023 在 DeepDRiD QE 达 75% 测试准确率
DR 分级 0–4 EfficientNet/ResNet 预训练 + QWK 优化 榜单前三 kappa 0.93–0.92
质量+分级多任务 共享骨干 + 双头 提升鲁棒性与推理效率
域迁移(→UWF) 常规预训练 + UWF 微调 榜单 kappa 0.91(Son)

选型思路:挑战赛前三名的共性做法是「大规模眼底图预训练 + 数据增强 + EfficientNet/ResNet 系骨干 + 多模型集成/融合」,而非单一花哨架构。因此做质量任务可先跑一个 ResNet18 微型基线验证数据管线正确(见 §6.4b),确认后再切换到 EfficientNetV2 + 集成去逼近 75%;做分级则把骨干输出改 5 类并用 QWK 作为模型选择的验证指标。注意:质量任务标签主观噪声大,模型选择要看「Specificity/AUC」而非只看 train accuracy,以免过拟合到标签噪声。

§6.8 硬件需求表

任务 建议 说明
数据加载/预处理 CPU + 16 GB 内存 2.81 GB JPG 可整载内存
小型实验/质量分类 单张 8–12 GB GPU 512×512 + ResNet/EfficientNet 够用
DR 分级/集成/多任务 16–24 GB GPU 或两张 榜单方案多为多模型集成
全流程复现 24–32 GB 显存 + 100 GB 磁盘 含 UWF 与多模型

§6.9 评估指标代码

"""质量二分类与 DR 分级评估:accuracy、precision/recall、AUC、二次加权 Kappa。"""
import numpy as np
from sklearn.metrics import accuracy_score, precision_recall_fscore_support,\
    roc_auc_score, cohen_kappa_score

def evaluate_binary(y_true, y_prob, thr=0.5):
    y_pred = (y_prob >= thr).astype(int)
    acc = accuracy_score(y_true, y_pred)
    prec, rec, f1, _ = precision_recall_fscore_support(
        y_true, y_pred, average="binary", zero_division=0)
    auc = roc_auc_score(y_true, y_prob) if len(np.unique(y_true)) > 1 else float("nan")
    return {"acc": acc, "precision": prec, "recall": rec, "f1": f1, "auc": auc}

def evaluate_dr(y_true, y_pred):
    """DR 0-4 分级用二次加权 Kappa(官方 Sub-challenge 1/3 指标)。"""
    qwk = cohen_kappa_score(y_true, y_pred, weights="quadratic")
    acc = accuracy_score(y_true, y_pred)
    return {"qwk": qwk, "acc": acc}

# 示例
y_true = np.array([0,1,1,0,1]); y_prob = np.array([.2,.9,.6,.3,.8])
print(evaluate_binary(y_true, y_prob))

§6.10 MLOps 笔记

  • 版本/溯源:GitHub 仓库未做细分版本 tag,建议记录 commit hash 或下载日期;Zenodo 有稳定 DOI(10.5281/zenodo.6452623)适合做数据版本锚点。
  • 复现管理:以官方 Set-A/B 训练 + Set-C 测为准;内部再留患者级验证层避免污染 Set-C。
  • 质量监测:部署后持续监测拒收/不可用率随站点与时间的漂移(跨站点不可用率可从 2.23% 到 28.23% 不等),异常即告警并触发技师培训/相机调校。
  • 许可合规:CC-BY-SA-4.0 要求派生作品与再分发保持相同授权并署名——商用或闭源集成前务必评估 copyleft 影响。

§6.11 质量任务 vs 分级任务快速对照

维度 图像质量评估 DR 分级
标签 quality_overall(0/1) + artifact/clarity/field dr_grade(0–4)
评估指标 accuracy + Specificity/AUC QWK(二次加权 Kappa)
关键风险 标签主观、类别失衡 长尾(Grade-4 少)、可用性前置
建议基线 ResNet18 验证 → EfficientNetV2 集成 EfficientNet/ResNet 预训练 + QWK
建议训练集 全部常规图 quality_overall==1 的常规图
泄漏注意 患者级 + 眼级 患者级 + 眼级

用这张表能快速判断一篇复现/新论文的口径是否与官方一致:只要看它用的标签列、指标、训练子集过滤条件,就能定位是否踩了坑点 1/2/7。


§7 质量评估与局限性

§7.1 已知偏倚表

偏倚类型 描述 严重程度 缓解
地域/人群偏倚 全部采集于上海,城市糖尿病队列,不能代表全国/全球普筛人群 需本地外部验证或跨域混合训练
年龄偏倚 Regular-A 平均 70.6 岁、C 61.4 岁,偏老年 报告按年龄段分层,避免只报均值
疾病谱偏倚 以轻中度 DR 为主、Grade-4 与 UWF 样本稀疏,重度 PDR 长尾 分级任务注意长尾,重度别低估
拍摄条件指纹 单一 TOPCON 无散瞳 + 单一 Optos 设备,FOV 45–60°/200° 多设备外部验证;ROI 掩膜统一
标注主观性 质量标注主观,中间档稀疏、分歧剔除 降为可用性二分类或用 soft label
双人分歧剔除 剔除分歧样本使标签向「易一致」偏斜,丢弃难例 认识局限,勿当「高质量标注完备」

§7.2 标注质量

DR 分级采用 ICDR 0–4,由两名授权眼科医师独立判读、分歧剔除,属于较可靠的临床标签;质量标注虽也用双人流程,但论文明确承认其主观性,清晰度与伪影覆盖的中间档一致性较弱。整体而言:分级标签质量高、质量标签可靠但不完美

§7.3 泛化性表

场景 失效风险 证据
跨相机(非 TOPCON/Optos) 单设备训练指纹,设备差异显著影响
跨人群(非上海城市队列) 单一地域队列,人口学偏倚
无散瞳→散瞳拍摄 瞳孔状态改变血管弓/清晰度
真实多站点筛查(含坏图) 2026 RIQ 研究显示可用,但不可用率跨站 2%–28% 波动
超广角分级 子挑战3 kappa 0.91,仍需 UWF 微调

§7.4 伦理

采集经上海交通大学附属第六人民医院伦理委员会批准,遵循赫尔辛基宣言,患者签署知情同意,研究在 ChiCTR 注册(ChiCTR2000031184)。眼底图为可识别面部周边区域的人像数据,虽无公开受试者标识,但无法真正不可逆匿名化,再分发须遵守 CC-BY-SA-4.0 与伦理边界。

§7.4b 去标识与再分发注意

使用 DeepDRiD 时请注意三点伦理/合规边界:一是眼底照片成像范围含巩膜、睑缘等面部周边组织,理论上属可关联到个人的生物图像,CC-BY-SA-4.0 的再分发与商用场景应谨慎;二是官方采集经知情同意且不附带逐图个人标识,但你不得自行逆推或公开补全患者身份;三是若你在其基础上派生训练集并再次公开,需满足 CC-BY-SA 的「相同方式共享」要求,最好保留原始授权与引用声明。科研与非商用研究通常可直接使用,但商业化落地前务必完成法律与伦理评估。

§7.5 公平性

数据集未提供种族分层,全部为中国人(上海地区)。性别占比约四到六成女性、四到五成男性。年龄集中在 58–75 岁。跨种族/年龄的公平性无法直接验证,任何声称跨人群公平的结论都需补充本地区外部数据。

§7.6 数据漂移

DeepDRiD 为 2013–2020 采集的历史快照。眼底相机更新、筛查策略变化、技师经验差异都会让新数据分布漂移。2026 研究提示:同一质量模型在不同成像站点测得的不可用率可从 2.23% 到 28.23%,随时间变化明显,因此静态模型不适合长期直接部署,需要持续监测与再校准。

§7.7 DAIMS 24 项数据就绪度评估

# 检查项 状态 说明
1 数据为宽格式(每行一个样本) 每张图像一行标注,主键 image_id
2 有唯一标识符列 image_id(对应文件名)唯一
3 无 Unicode 或特殊字符 图像/CSV 用 ASCII 命名(需核对文件编码)
4 无重复行 每图一行,无双视角重复记录
5 缺失值有明确编码 ⚠️ UWF 无质量标注为结构性缺失,未显式标注
6 标签有标识/命名 DR grade + 四维质量字段语义清晰
7 罕见类有分组处理 ⚠️ Grade-4、某些质量阶梯档稀疏,未提供分组建议
8 偏倚评估 官方未给出人群/设备偏倚量化文档
9 数据字典 ⚠️ 有 Readme.docx 但列语义未标准化为公开 schema
10 信息性缺失解释 ⚠️ Set-C 比赛期无真值为受控缺失,但赛后 XLSX 说明有限
11 设备记录 ⚠️ 论文含设备参数,但逐图设备元数据未落成列
12 共线性 ⚠️ 双视角图高度相关,未提示使用限制
13 编码映射 ICDR 0–4 分级与质量阶梯均有官方评分表
14 时间戳处理 ⚠️ 未提供逐图采集日期,无法做时间分层
15 划分建议 官方给出 Set-A/B/C 固定划分与规则
16 泄漏讨论 ⚠️ 每患者多图未强调,需使用者自行患者级分层
17 标签分布 补充 Table S1/S2 给出分级与质量分布
18 测量偏倚 ⚠️ 质量标注主观、单设备,偏倚在 limitations 提及
19 外部验证建议 ⚠️ 无官方外部验证指引,依赖社区
20 版本记录 ⚠️ 无细分版本号,Zenodo DOI 为稳定锚点
21 预处理脚本 无官方加载/预处理代码,需自行实现
22 合规要求 CC-BY-SA-4.0 明确,伦理批准齐全
23 多模态对齐 ⚠️ regular/UWF 双模态存在但标注不完全对齐(UWF 无质量)
24 去标识化 ⚠️ 无公开标识但眼底图含面部区域,未详细说明脱敏

DAIMS 评分:16.5 / 24

评分解读良好偏上但工程半成品——医学内容与划分清晰、双重标签是最大差异化资产(✅ 集中在分级/质量编码与固定划分);扣分主要来自「纯数据发布、缺工程配套」:无官方加载/预处理脚本、无逐图设备与时间元数据、患者级泄漏与质量主观性未在文档中显式预警,UWF 与 regular 标注不对齐也拉低了多模态一致性。

对你意味着什么:24 项中 10 项 ✅ 几乎都来自「带质量+分级双重临床标签的医学数据底子」与官方 Set-A/B/C 划分——做质量评估或双视角分级研究,这套底子足够扎实。扣分集中在「拿到手仍需自行工程化」:文件解析(坑点 6)与患者级分组(坑点 4)必须自建,缺失/设备/时间信息要去 Readme 与补充材料里人工捞取;若你的诉求是「开箱即跑 + 完整元数据」,DeepDRiD 不是,需自备清洗层;若你要做的是「带真实质量瑕疵的眼底质量/分级研究」,它的差异化标签价值远超这些工程折损。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
55,801 张真实筛查眼底图(多站点 RIQ 监测) 西班牙 Navarra 大学医院等 视网膜图像质量分类 DeepDRiD 训练模型平均精确率 0.431(vs NaIA-RD 0.389、EyeQ 0.392) 跨域可用但精度有限 DeepDRiD 模型与临床医师判读符合度最高,能揭示设备/技师差异(ebiotrade 报道
DeepDRiD 内部 QE 测试 挑战赛 图像质量估计准确率 EfficientNetV2 集成测试准确率 75% 优于挑战榜(~70%) 集成 + 预处理可显著提升 QE(Diagnostics 2023

外部验证解读:真实世界 RIQ 监测研究用一个 DeepDRiD 训练的质量分类器对比了另两个公开模型(NaIA-RD、EyeQ),在 55,801 张跨多站点的西班牙真实眼底图上,DeepDRiD 模型与临床医师判读的符合度最高(平均精确率 0.431),说明其质量标签训练出的判别边界比同口径二分类模型更贴合医师真实判断。但它也再次确认了跨设备/跨人群会掉点、以及不同站点不可用率可相差 10 倍以上(2.23%–28.23%)——这正是把质量模型部署到生产前必须做的站点级校验的实证依据。


§7.9 局限性与建议的改进路径

综合各维度,DeepDRiD 作为研究数据有几点结构性局限值得用户在设计实验时前置评估:

  1. 规模天花板:2,000 张常规图对训练现代 CNN 而言偏小,即便配合增强也难支撑超大模型或重度长尾(Grade-4)的稳健学习。多用于预训练/基准验证,不宜当作唯一训练集直接冲 SOTA。
  2. 设备与人群单一:单一 TOPCON + 单一 Optos,人群限于上海队列。社区研究提示,质量/分级模型跨相机、跨人群会明显掉点,故论文与后续工作普遍把 DeepDRiD 用作「迁移起点」或「质量标签锚点」而非端到端部署数据。
  3. 质量标签主观性带来的评估不确定:官方在 Limitations 直陈质量标注主观、中间档样本稀疏且分歧样本被剔除。任何在 DeepDRiD 上宣称的质量精度都需认识到其真值本身带有噪声。
  4. 无逐图时间/设备元数据:无法做时间漂移与设备分层分析,限制了某些医学影像研究(如随时间退化监测)直接落地。
  5. 无官方加载/预处理层:拿到手需自行完成文件名解析、患者级分层、标签与图像对齐,工程成本落在用户侧。

针对上述,建议的改进路径:将 DeepDRiD 作为质量标签种子与预训练源,与 EyeQ 等更大质量库做半监督/伪标签联合;做跨域实验务必报告并按站点/设备分层;质量任务优先做「可用/需重拍」稳健二分类而非高维精确回归,以降低主观噪声影响。


§8 基准性能与生态

§8.1 排行榜(ISBI 2020 挑战赛,Table 8)

排名 模型/团队 性能 年份 关键技术 完整引用 代码
Sub-challenge 1(DR 分级)Top1 Xi Fang(上海交大) QWK 0.9303 2020 集成 + 预处理增强 Fang et al., in ISBI2020 DeepDRiD, Patterns 3:100512 官方站
Sub-challenge 1 Top2 Jiang Li(上海交大) QWK 0.9262 2020 模型集成 Li et al., Patterns 3:100512 官方站
Sub-challenge 1 Top3 Jaemin Son(VUNO) QWK 0.9232 2020 EfficientNet 系 Son et al., Patterns 3:100512 官方站
Sub-challenge 2(图像质量)Top1 Poorneshwaran JM(HTIC) Acc 0.6981 2020 CNN Poorneshwaran et al., Patterns 3:100512 官方站
Sub-challenge 2 Top2 Adrian Galdran(BU) Acc 0.6950 2020 CNN Galdran et al., Patterns 3:100512 官方站
Sub-challenge 2 Top3 Yerui Chen(南理工) Acc 0.6938 2020 CNN Chen et al., Patterns 3:100512 官方站
Sub-challenge 3(UWF 分级)Top1 Jaemin Son(VUNO) QWK 0.9062 2020 迁移+UWF微调 Son et al., Patterns 3:100512 官方站
Sub-challenge 3 Top2 Xi Fang(上海交大) QWK 0.8620 2020 迁移 Fang et al., Patterns 3:100512 官方站
Sub-challenge 3 Top3 Jie Wang(北航) QWK 0.8230 2020 迁移 Wang et al., Patterns 3:100512 官方站

不可直接比较说明:子挑战 1/3 用二次加权 Kappa、子挑战 2 用分类准确率,不同指标不可横向比较;各队可用外部数据(需声明),故排名反映方法组合而非单一网络;比赛仅 1.5 个月开发期,精度不代表数据上限。

§8.2 SOTA 总结与选型建议

  • DR 分级:榜单 kappa 0.93–0.92,靠 EfficientNet 预训练 + 集成 + QWK 优化逼近。后续大规模跨数据集训练通常在更大库上表现更稳,DeepDRiD 适合作专用双视角/基准验证。
  • 图像质量:挑战榜最高约 0.70;EfficientNetV2 集成方法将其提到 75% 测试准确率(Diagnostics 2023),是质量任务的当前较优基线。
  • 选择建议:复现分级用 EfficientNet + QWK;质量任务直接以 EfficientNetV2 集成为起点再优化;域迁移照官方「常规预训练 + UWF 微调」配方。

§8.3 评测协议

官方协议:训练/验证用 Set-A+B(含真值),Set-C 为线上盲测;分级以 QWK 排名,质量以 accuracy 排名;参与者可引用外部数据但须声明,每队至多 3 个方法不同的提交,禁止仅调参重投。复现时请沿用同一口径(Patterns 组织与指标)。

指标口径提示(影响你对比自己的结果):

  • QWK(二次加权 Kappa):分级 5 类(0–4),Kappa 在 ±1 之间,衡量预测与真值一致性、并惩罚跨档位错误;贴近临床「差一档可接受、差多档不可接受」的判断。复现时要保证类序一致(0 为最轻)。
  • accuracy:质量任务用它排名,但类别不平衡会让它偏高;作为补充,务必看「把不可用图判为可用」的假阴率(漏放坏图)——这对应筛查中「坏图被自动判级」的实际风险。
  • 榜单数字不可直接当作数据上限:比赛仅约 1.5 个月开发窗口,且允许引用外部数据。后续论文(如 Diagnostics 2023)已通过集成把质量准确率从 ~70% 抬到 75%,说明仍有提升空间而非天花板。
数据集 关系与互补性
IDRiD ISBI 2018 同类型 DR 挑战赛(分割+分级),DeepDRiD 的直接前身;无系统图像质量标注
EyeQ 图像质量二分数据集(可用/不可用),可作质量任务的域外互补/半监督源
Messidor / Messidor-2 DR 分级参考数据,法国人群,域迁移/外部验证常用源
APTOS-2019 Kaggle 大规模 DR 分级,类别噪声较大,多用作大规模预训练
DeepDR / DDR(邻近名称) 名称易混的其他 DR 眼底数据集,勿与 DeepDRiD 混淆(见 §8.9)

互补用法:DeepDRiD 提供「带真实质量瑕疵 + 质量/分级双标签」的小而精集合,EyeQ 提供更大的可用/不可用二分类集,APTOS/Messidor 提供更大分级规模。三者在半监督质量预训练与跨域分级的典型组合是:DeepDRiD 质量标签 + EyeQ 扩充 + Messidor-2/APTOS 分级微调。

§8.5 关键论文 Top 5–10

  1. Liu, R., Wang, X., Wu, Q., Dai, L., Fang, X., Yan, T., Son, J., et al. (2022). DeepDRiD: Diabetic Retinopathy—Grading and Image Quality Estimation Challenge. Patterns, 3(6), 100512. DOI 10.1016/j.patter.2022.100512. —— 数据集定义与挑战赛总结论文,含全部规模、协议、榜单与标注体系。主引用论文。
  2. Porwal, P., et al. (2020). IDRiD: Diabetic Retinopathy—Segmentation and Grading Challenge. Medical Image Analysis, 59, 101561. —— ISBI 2018 DR 分割分级挑战赛,DeepDRiD 直接前身与参照。
  3. Tummala, S., Thadikemalla, V.S.G., Kadry, S., Sharaf, M., Rauf, H.T., (2023). EfficientNetV2 Based Ensemble Model for Quality Estimation of Diabetic Retinopathy Images from DeepDRiD. Diagnostics, 13(4), 622. —— 在 DeepDRiD QE 上达 75% 的后继质量模型(DOI 10.3390/diagnostics13040622)。
  4. Gulshan, V., et al. (2016). Development and Validation of a Deep Learning Algorithm for Detection of Diabetic Retinopathy. JAMA, 316(22), 2402. —— DR 深度检测开山之作,EyeQ 质量框架背景。
  5. Varma, R., et al. / Messidor 系 —— 常规眼底 DR 分级域外基准来源。

§8.6 社区活跃度

DeepDRiD 依托单一官方 GitHub 仓库,主仓库 Star/Issue 活跃度中等,无大型生态组织或官方 leaderboard 站点长期维护(isbi.deepdr.org 已下线);社区参与以学术引用(240+)与 Kaggle 镜像二次发布为主。质量任务持续吸引后续论文,是主要活跃点。

从引用与再开发看,DeepDRiD 的生态属于「教科书级基准但运营低调」型:它没有像 PhysioNet/MIMIC 那样的大型平台与证书体系,而是以一篇 Patterns 论文 + 一个 GitHub 仓库 + 一个 Zenodo 镜像为骨架。真正的活跃体现在三处:一是质量评估相关算法论文不断涌现(Diagnostics 2023 等把 QE 推到 75%);二是真实世界部署研究把它当跨域质量基准(2026 RIQ 监测);三是 Kaggle 上大量社区镜像与 notebook 让新人低门槛上手。若你需要官方答疑或新版本,需自行联系 lead contact(Bin Sheng)——社区没有专设的活跃论坛。

§8.7 生态快照表

资源 类型 链接 状态/截至 2026-09 推荐理由
deepdrdoc/DeepDRiD 官方数据仓库 https://github.com/deepdrdoc/DeepDRiD 活跃(2022 后基本稳定) 唯一官方数据源,含 README 结构
Zenodo 镜像 数据备份 https://doi.org/10.5281/zenodo.6452623 稳定 带 DOI 的版本化备份
Patterns 论文 数据集论文 https://doi.org/10.1016/j.patter.2022.100512 开放获取 主引用与全部协议细节
Diagnostics 2023 后续算法 https://pubmed.ncbi.nlm.nih.gov/36832110/ 开放 EfficientNetV2 QE 基线

§8.8 报告与再实现建议

  • 始终报告受检子集与划分:明确写清用的是 training(1,200)/validation(400)还是全量 2,000,以及测试是否即官方 Set-C,否则与他人结果不可比。
  • 质量任务勿只看准确率:类别失衡下 accuracy 会掩盖坏图漏放,应并报 Specificity/AUC/混淆矩阵,并以「坏图拒绝率」为业务指标(见坑点 7)。
  • DR 分级报 QWK 时给分布:DR 0–4 长尾(Grade-4 极少),QWK 对长尾敏感,建议同时给出逐类准确率。
  • 区分图像质量与病变分级两个指标域:DeepDRiD 一张图同时有两个性质迥异的标签,报告必须分清「质量分类 accuracy」与「分级 QWK」,二者不可混用或合并成单一分数。

§8.9 命名与口径辨析(重要)

社区里 DeepDRiD 常与下列相邻词混淆,引用与检索时务必分清:

术语 指代 与本页关系
DeepDRiD 本数据集(ISBI 2020 挑战赛,含质量+分级) 本页主体
DeepDR / Deep-DR 同团队早期口径 / 泛指其眼底数据集 DeepDRiD 前身语境,勿当同一定量集合
DDR 数据集 另一独立 DR 眼底数据集(多为分级) 名称相近但不同源
IDRiD / ISBI 2018 DR 分割+分级挑战赛 DeepDRiD 的直接前身挑战
DR 分级(grading)vs 图像质量(quality) 两种不同标注/任务 DeepDRiD 同时含二者,见 §2.3

检索与引用时以「Diabetic Retinopathy—Grading and Image Quality Estimation Challenge」「Patterns 3(6):100512」「github.com/deepdrdoc/DeepDRiD」为准,避免误挂到其他 DR 数据集上。


§9 相关资源与引用

§9.1 官方资源

§9.2 BibTeX 完整引用

@article{LIU2022100512,
  title = {DeepDRiD: Diabetic Retinopathy—Grading and Image Quality
           Estimation Challenge},
  journal = {Patterns},
  volume = {3},
  number = {6},
  pages = {100512},
  year = {2022},
  issn = {2666-3899},
  doi = {10.1016/j.patter.2022.100512},
  url = {https://www.sciencedirect.com/science/article/pii/S2666389922001040},
  author = {Liu, Ruhan and Wang, Xiangning and Wu, Qiang and Dai, Ling and
            Fang, Xi and Yan, Tao and Son, Jaemin and Tang, Shiqi and
            Li, Jiang and Gao, Zijian and Galdran, Adrian and
            Poorneshwaran, J.M. and Liu, Hao and Wang, Jie and Chen, Yerui and
            Porwal, Prasanna and Tan, Gavin Siew {Wei} and Yang, Xiaokang and
            Dai, Chao and Song, Haitao and Chen, Mingang and Li, Huating and
            Jia, Weiping and Shen, Dinggang and Sheng, Bin and Zhang, Ping}
}

§9.3 引用指南

  • 引用主论文:Liu, R. et al. (2022). Patterns 3(6):100512. doi:10.1016/j.patter.2022.100512
  • GitHub 仓库 README 亦内置该 BibTeX,可直接复用。
  • 若使用图像质量子集做质量评估,建议同时引用论文与质量相关的后续方法论文(如 Diagnostics 2023)以体现用法。

§9.4 常见问题与操作要点

  • Q:文件是 git 大仓库,clone 慢怎么办? 可用 git clone --depth 1 只取最新提交;或用 Kaggle 社区镜像、Zenodo 下载解压。数据共约 2.81 GB。
  • Q:找不到统一的 patient_id 列? 官方仓库 CSV 未必直接给「患者/眼/视角」三列,需由文件名或 Readme 推断;建议先按 §4.6 打印抽样核对再批量解析。
  • Q:Set-C(Online-Challenge1&2-Evaluation)目录只有上传模板、没有标签? 线上评估期的 Set-C 在比赛阶段只给图像不给真值,赛后真值以 XLSX 补充(仓库中 Challenge1/2_labels.xlsx);研究复现时多直接用 Set-A+B 训练、把 Set-C 当最终测试。
  • Q:UWF 能做图像质量任务吗? 不能直接做——UWF 子集只带 DR 分级、无逐张质量四维标注;它用于子挑战 3 的域迁移分级研究。
  • Q:结果能直接用于真实临床部署吗? 不能直接。DeepDRiD 是单城市/单设备基准,真实部署需本地区前瞻验证与持续质量监测(见 §7.6 与坑点 8)。

§9.5 引用与致谢写法建议

论文声明要求使用 DeepDRiD 时引用 Patterns 论文。建议致谢句示例:数据集来自 ISBI 2020「Diabetic Retinopathy—Grading and Image Quality Estimation Challenge」(Liu et al., 2022, Patterns, DOI 10.1016/j.patter.2022.100512),遵循 CC-BY-SA-4.0 再分发条款。


§9.6 术语速查

术语 中文 含义/在本页所指
DR 糖尿病视网膜病变 Diabetic Retinopathy,见 §2
NPDR / PDR 非增生 / 增生性 DR DR 两阶段,对应 ICD-11 9B71.00 / 9B71.01
ICDR 国际临床 DR 严重度分级 Grade 0–4 表,见 §2.2
Quality grading / QE 图像质量评估 本数据集四维质量任务(伪影/清晰度/视野/总体)
Overall quality 总体可用性 0=不可诊断 / 1=可诊断 的二分类标签
Artifact 伪影 睫毛/反光/遮挡等干扰,阶梯分 0–10
Clarity 清晰度 血管弓/病灶可见程度,阶梯分 1–10
Field definition 视野定义 黄斑/视盘取景完整性,阶梯分 1–10
UWF 超广角 Optos 约 200° 眼底图,仅带分级
Dual-view 双视角 同眼黄斑中心 + 视盘中心两图
QWK 二次加权 Kappa DR 分级指标(Sub-challenge 1/3)
Regular Set-A/B/C 常规图三折 300/100/100 例、1,200/400/400 张
CC-BY-SA-4.0 知识共享-署名-相同方式共享 数据集再分发许可

§9.7 数据获取核对清单

首次上手建议按下面清单自检,能省去大半工程排错时间:

  • [ ] 已克隆/下载并解压,du -sh 确认约 2.81 GB。
  • [ ] regular-fundus-training/Imagesregular-fundus-training.csv 图像数/行数一致(1,200)。
  • [ ] 已读 Readme.docx,确认 CSV 实际列名与本文档字段的映射。
  • [ ] 已能从文件名重建 patient / eye / view 三键,并打印抽样核对(见 §4.6)。
  • [ ] 已为你的实验写好人(患者)级切分并验证「无重叠患者」(见 §5.6)。
  • [ ] 已确认只在本机使用、未做超出 CC-BY-SA-4.0 的再分发。
  • [ ] 记录下载 commit/日期,用于可复现溯源。

§10 AI 使用声明卡

§10.1 AI 模型列表

本页面由 AI 辅助撰写,涉及模型:通用大语言模型(CodeBuddy Code)负责文本组织、代码示例编写与结构排版;检索工具(WebSearch/WebFetch)用于核验 DeepDRiD 的规模、协议、榜单与文献来源;无生成式图像模型参与封面与正文插图。

§10.2 AI 参与范围

AI 承担:信息检索与事实核对辅助、章节组织、Python 代码示例撰写、排版。所有关键数字与引用均由检索结果佐证并给出链接;代码示例仅供说明,需使用者自行验证。

§10.3 输入来源列表

  1. Liu et al. (2022) Patterns 3(6):100512 —— DOI 10.1016/j.patter.2022.100512
  2. PubMed 35755875 —— pubmed.ncbi.nlm.nih.gov/35755875/
  3. PMC 全文 PMC9214346 —— pmc.ncbi.nlm.nih.gov/articles/PMC9214346/
  4. PMC 补充材料 Note S1(mmc1.pdf)
  5. 官方 GitHub deepdrdoc/DeepDRiD —— github.com/deepdrdoc/DeepDRiD
  6. Zenodo 镜像 10.5281/zenodo.6452623
  7. Google Scholar 引用计数(截至 2026-09)
  8. Tummala et al. (2023) Diagnostics 13(4):622 —— DOI 10.3390/diagnostics13040622
  9. RIQ 监测研究转载报道 —— ebiotrade.com(2026)
  10. ICD-11 编码工具(9B71.0Z/9B71.00/9B71.01)
  11. SNOMED CT(4855003 / 390834004 / 61144008)
  12. IDRiD (MedIA 2020) DOI 10.1016/j.media.2019.101561
  13. ISBI 2020 挑战赛存档页 biomedicalimaging.org

§10.4 人工校验表

内容模块 审核者 审核方式 审核状态
§2 医学背景与编码 千方病案医学编辑部 医学交叉审核 ✅ 已通过
§7 偏倚与 DAIMS 千方病案医学编辑部 医学/工程交叉审核 ✅ 已通过
§3–§6 数据规格与代码 千方病案医学编辑部 数据工程审核 ✅ 已通过
§1/§8/§9 概览、榜单与引用 千方病案医学编辑部 数据工程审核 ✅ 已通过

§10.5 AI 生成章节标注

全文为 AI 辅助生成草稿,经千方病案医学编辑部逐节交叉审核;§6 代码示例为 AI 编写,未在本数据集上实际运行,使用者部署前须自行测试。

§10.6 最后人工审核日期

2026-09-05

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

返回 AI-Ready 数据集