IDRiD — 像素级病灶标注眼底数据集 AI-Ready Wikipedia | 千方病案医数集

516 张眼底彩照,像素级 DR 病灶分割与分级标注

来源 IEEE DataPort(SGGS IE&T Nanded 等) url: https://ieee-dataport.org/open-access/indian-diabetic-retinopathy-image-dataset-idrid发布时间: 2026-09-08最后更新: 2026-09-08 阅读 6

信息速览

数据集名称IDRiD — 像素级病灶标注眼底数据集 AI-Ready Wikipedia | 千方病案医数集
数据类型516 张眼底彩照,81 张像素级病灶掩码,4288×2848 JPG,CC BY 4.0 开放获取,2009-2017 采集
规模516 张图像(自数千次检查精选,患者级人数未公开)
接入方式IEEE DataPort(SGGS IE&T Nanded 等) url: https://ieee-dataport.org/open-access/indian-diabetic-retinopathy-image-dataset-idrid
AI 就绪度

数据集封面

IDRiD(印度糖尿病视网膜病变数据集)— 像素级病灶标注眼底分级与分割基准 AI-Ready Wikipedia


INFOBOX

字段 内容
数据集名称 印度糖尿病视网膜病变数据集(IDRiD)
英文全称 Indian Diabetic Retinopathy Image Dataset (IDRiD)
别名/简称 IDRiD;ISBI 2018 DR Segmentation and Grading Challenge 数据集
疾病分类(ICD-11) 9B71 糖尿病性视网膜病变(糖尿病 5A11);DME 归入 9B71 相关子类
SNOMED CT 312912009(糖尿病性视网膜病变)
数据模态 眼底彩照(CFP)+ 像素级病灶分割掩码
AI 任务类型 病灶分割(MA/HE/EX/SE/OD)、DR 分级、DME 风险分级、OD/中心凹定位
样本总数 516 张眼底彩照(分割子集 81 张,413/103 分级划分)
数据大小 约 500 MB(JPG 图像)+ TIF 掩码与 CSV 标签
数据格式 JPG(图像)、TIF(掩码)、CSV(标签)
许可证 Creative Commons Attribution 4.0 International(CC BY 4.0)
访问级别 开放(IEEE DataPort 免费注册下载)
DUO 标签 NRES(无限制使用,须按 CC BY 4.0 署名)
语言 英语(标注文件与文档)
首发日期 2018-01-20(挑战赛训练数据发布;数据论文 2018-07-10 发表)
最后更新 2025-06-17(IEEE DataPort 页面更新)
发布机构 SGGS IE&T Nanded、Sushrusha Hospital 眼科诊所、Shankarrao Chavan 政府医学院、UT PETRONAS
官方主页 https://idrid.grand-challenge.org/
下载地址 https://ieee-dataport.org/open-access/indian-diabetic-retinopathy-image-dataset-idrid
DOI 10.21227/H25W98(数据);10.3390/data3030025(数据论文)
引用次数 154+(Scopus,MedIA 2020 挑战赛论文,截至 2026-09)
AI 就绪度评分 ⭐⭐⭐⭐(4/5)— 官方 413/103 划分、三层标注齐全、社区镜像成熟;扣分项:无官方预处理脚本,分割与分级子集编号体系不一致需手动对齐
页面状态 published

§0 E-E-A-T 审核与免责声明

  • 医学审核:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11/SNOMED CT 映射、DR/DME 临床定义)、§7 偏倚分析。
  • 数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
  • 审核日期:2026-09-05

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

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

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。IDRiD 以 CC BY 4.0 许可发布,通过 IEEE DataPort 免费注册获取,使用时须署名原始团队并引用数据论文。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 📌 30 秒速览

这是什么? IDRiD(Indian Diabetic Retinopathy Image Dataset)是 2018 年 ISBI 挑战赛发布的印度人群眼底彩照数据集:516 张 4288×2848 高分辨率图像,来自印度 Nanded 一家眼科诊所 2009-2017 年间的数千次检查。它的独特之处是双重标注——既有图像级的疾病严重程度分级,又有 81 张图像上微动脉瘤、出血、硬性渗出、软性渗出和视盘的像素级勾画,后者在当年是公开眼底数据中独一无二的。

为什么重要? 糖尿病视网膜病变(DR)是全球工作年龄人群首位可避免致盲原因,筛查的核心是识别这些微小病灶。此前的公开眼底数据集(Messidor、DRIVE 等)只有图像级标签,AI 无法回答「病灶在哪里、长什么样」。IDRiD 让病灶分割、分级与可解释性研究第一次有了统一的像素级基准,也是首个代表印度人群的眼底数据集。

我能用它做什么? 训练 DR 分级模型(ICDR 0-4 五分类)、四类病灶分割模型、视盘/中心凹定位模型;把像素级掩码当作可解释性的「标准答案」;或作为外部测试集检验在 EyePACS、APTOS 上训练的模型。81 张分割图像很小,更适合方法验证与基准评测,不适合单独支撑大规模训练。

§1.1 摘要

IDRiD 由 Shri Guru Gobind Singhji Institute of Engineering and Technology(SGGS IE&T)联合 Nanded Sushrusha Hospital 眼科诊所构建,为 ISBI 2018「Diabetic Retinopathy – Segmentation and Grading Challenge」而发布。团队从 2009-2017 年数千次检查中精选 516 张散瞳眼底彩照(Kowa VX-10α,50° 视野,4288×2848 px,约 800 KB/张 JPG),由专家确认质量、临床相关性与 DR/DME 分层混合。数据集分三个子任务组织:①病灶分割——81 张图像提供 MA/HE/EX/SE 四类病灶与视盘的二值 TIF 掩码(54 训练/27 测试);②疾病分级——516 张图像按国际临床 DR(ICDR)量表标注 0-4 级、按黄斑中心渗出定义标注 DME 风险 0-2 级(413/103 划分);③定位——全部图像提供视盘与中心凹中心坐标。挑战赛吸引 495 个注册团队、148 支队伍有效提交,结果发表于 Medical Image Analysis 2020(Porwal et al.),数据论文发表于 MDPI Data 2018。数据以 CC BY 4.0 通过 IEEE DataPort 开放,累计下载超 13 万次,已成为病灶分割与跨库泛化研究的标准评测集。

§1.2 战略价值

维度一:像素级标注的稀缺性。 在公开眼底数据中,同时具备像素级病灶掩码与图像级分级的基准屈指可数:E-Ophtha 只有 MA/EX 两类且规模更小,DRIVE/CHASE-DB1 标的是血管而非病灶。IDRiD 是第一个把 DR 诊断逻辑(病灶组合 → 分级)完整落到像素层的公开数据集,使「分割结果与分级结论互相印证」的可解释性研究成为可能——这也是它至今仍是病灶分割论文默认评测集的原因。

维度二:印度人群与单设备可控性。 全球 DR 筛查资源最匮乏的地区恰是南亚,而 IDRiD 是首个代表印度人群的眼底数据集(数据论文原话),且全部图像来自单一 Kowa VX-10α 相机、同一诊所、统一 50° 视野协议——设备方差被压到最低,是研究「疾病信号 vs 设备噪声」的理想对照。代价是采集中心单一带来的外推限制(见 §7.1、坑点 5)。

维度三:社区基准的事实标准。 ISBI 2018 挑战赛把分割与分级放进同一数据集统一评测,MedIA 2020 结果论文公开了全部获胜方案的技术构成;此后 Zhou et al.(IEEE TMI 2021)以其为锚点建立跨数据集迁移基准,2026 年又有团队发布专家复核的 Refined IDRiD。围绕它的排行榜、复现代码与镜像(Kaggle、HuggingFace)使「在 IDRiD 上报一个数」仍然是分割方向最快的可比路径。

§1.3 同类数据集横向对比

数据集 规模 模态 标注层次 与 IDRiD 的差异
IDRiD 516 张(分割 81 张) 眼底彩照 4288×2848 4 类病灶像素掩码 + DR/DME 分级 + OD/中心凹坐标 唯一同时具备像素级病灶掩码与分级的印度人群数据集
EyePACS(Kaggle DR) 88,702 张 眼底彩照 仅 DR 分级 0-4 规模大数百倍但无任何像素标注;人群为美国筛查
APTOS 2019 3,662 张 眼底彩照(多相机) 仅 DR 分级 印度真实筛查分布(正常占多数),设备异构,与 IDRiD 互补
Messidor-2 1,748 张 眼底彩照 参照标准分级(可转 ICDR) 法国人群;无病灶掩码、无 DME 独立标签
E-Ophtha 463 张 眼底彩照 MA/EX 像素掩码 仅 2 类病灶、无分级;常与 IDRiD 联合做跨库验证
DeepDRiD 1,152 张 眼底彩照 分级 + 图像质量 同团队 2022 年续作,加入质量估计任务
RFMiD 3,200 张 眼底彩照 46 类疾病多标签 同团队扩展至多病种,标注粒度回到图像级

§1.4 版本时间轴

时间 事件 说明
2017-10-25 挑战赛网站上线 idrid.grand-challenge.org
2018-01-20 训练数据(图像+标注)发布 ISBI 2018 挑战赛官方渠道
2018-02-20 分割子任务测试图像发布 Sub-challenge 1
2018-04-04 ISBI 2018 华盛顿现场赛 分级与定位子任务现场评测
2018-07-10 数据论文发表于 MDPI Data DOI 10.3390/data3030025
2020-01 挑战赛结果论文发表于 Medical Image Analysis DOI 10.1016/j.media.2019.101561
2025-06-17 IEEE DataPort 页面最近更新 数据以 CC BY 4.0 持续开放

版本治理说明:IDRiD 自 2018 年发布以来内容集未变(516 张 + 81 张掩码的官方口径一致),IEEE DataPort 页面的历次更新属于维护性质;学术界在其之上派生了两个「增强版本」——Refined IDRiD(复核掩码,2026)与各 Kaggle/HF 镜像(格式转换,内容同源)。引用时以官方 DOI 10.21227/H25W98 为准,衍生版本单独引用其来源。

§1.5 典型应用场景

  1. 四类 DR 病灶分割基准:训练 U-Net 系或 Transformer 分割网络,在 27 张官方测试图上与 ISBI 2018 挑战赛及后续论文直接比 F-score。这是 IDRiD 至今最强的不可替代场景——像素级 DR 病灶掩码在公开数据中仍然稀缺。
  2. DR/DME 分级模型:413 张训练图的 ICDR 五分类与 DME 三级风险预测,常见做法是 ImageNet 预训练骨干 + 加权损失。规模不大,更适合验证训练策略(有序回归、标签平滑、多任务头)而非刷榜。
  3. 可解释性验证:把分级模型的 Grad-CAM/注意力图与 81 张图的病灶掩码比对,量化「模型在看什么」。掩码提供的连续区域真值使 IoU 类指标可直接计算,比纯定性热图检查严谨得多。
  4. 跨库泛化评测:在 EyePACS/APTOS/Messidor-2 训练、以 IDRiD 为外部测试集(或反向),量化分布偏移损失(见 §7.8)。IDRiD 单设备、高分辨率的特性使它成为「设备协变量」的清晰探针。
  5. 解剖结构定位:视盘分割(Jaccard 0.93+ 的既有基准)与视盘/中心凹中心坐标回归(欧氏距离评测)。坐标标签还常被复用作其他眼底数据集的 ROI 对齐参考。
  6. 教学与课程实验:三子任务、CSV+掩码+JPG 的朴素组织方式,使它成为医学影像课程的理想教学集——一天内即可跑通「加载→分割→分级→评测」全链路。

§2 医学背景

§2.1 ICD-11 编码映射

数据集标签 含义 ICD-11 编码 ICD-11 名称(中文)
DR Grade 0 无明显 DR 5A11(基础病)+ 9B71 排除 糖尿病;无视网膜病变证据
DR Grade 1 轻度 NPDR 9B71 糖尿病性视网膜病变(轻)
DR Grade 2 中度 NPDR 9B71 糖尿病性视网膜病变(中)
DR Grade 3 重度 NPDR 9B71 糖尿病性视网膜病变(重)
DR Grade 4 增殖性 DR(PDR) 9B71 糖尿病性视网膜病变(增殖期)
Risk of DME 0-2 无 → 中心累及 DME 9B71 相关子类 糖尿病性黄斑水肿

ICD-11 将 DR 主体归入 9B71(糖尿病性视网膜病变),糖尿病本体为 5A11;DME 在 ICD-11 中以 9B71 相关子类表达。上表「轻度/中度/重度」的细分以 WHO ICD-11 浏览器为准,IDRiD 的 0-4 数字分级遵循的是国际临床 DR(ICDR)严重程度量表而非 ICD-11 自身的分期轴。

§2.1b SNOMED CT 映射

标签/概念 ICD-11 SNOMED CT 码 术语
糖尿病性视网膜病变 9B71 312912009 Diabetic retinopathy
增殖性视网膜病变(Grade 4) 9B71 57190008 Proliferative retinopathy
微动脉瘤(病灶类) 399957004 Microaneurysm of retina
视盘(分割目标) 56246009 Optic disc structure

注:IDRiD 官方文档未提供编码映射,以上为按概念匹配的参考映射;ICDR 分级与 SNOMED 分期概念并非一一对应,用于数据治理时建议保留原始 0-4 整数标签并另行维护映射表。

§2.2 疾病简介与流行病学

糖尿病视网膜病变是糖尿病微血管并发症,以视网膜微动脉瘤、点片状出血、硬性渗出(脂质沉积)、软性渗出(棉绒斑,微血管闭塞所致)为标志性病灶;病变进展至视网膜新生血管即为增殖性 DR(PDR)。糖尿病黄斑水肿(DME)可出现在任一分期,表现为黄斑区液体积聚与增厚,在眼底彩照上以黄斑中心附近的硬性渗出为间接征象——IDRiD 的 DME 风险标签正是基于这一征象定义。据数据论文引用的 ICO 报告:全球每 3 名糖尿病患者中约 1 人有某种形式的 DR,每 10 人中约 1 人患有威胁视力的 DR;在印度,DR 是第六位致盲原因,而印度眼科专家与人口之比低至 1:107,000(部分地区达 1:608,000),这构成了大规模自动化筛查的刚性需求,也是 IDRiD 立项的直接动机。

四类病灶的临床语义(IDRiD 分割标签的解剖基础):

病灶 外观(彩照) 病理本质 分级意义
MA 微动脉瘤 小而圆的暗红点(直径 15-100 μm) 毛细血管壁囊状外突 DR 最早征象;ICDR 轻度判据
HE 出血 边界不清的暗红斑块 深层视网膜出血(点状/火焰状) 中-重度 NPDR 依据
EX 硬性渗出 边界锐利的黄色蜡样沉积 外丛状层脂质与蛋白渗出 提示血-视网膜屏障破坏;DME 间接征象
SE 软性渗出(棉绒斑) 边界模糊的灰白色绒团 神经纤维层微血管闭塞梗死 重度 NPDR 的警示病灶

IDRiD 图像全部取自有临床意义的检查(散瞳、黄斑中心视野),因此上述病灶的呈现质量普遍高于筛查现场图像——这既是标注可行性的前提,也是分布偏倚的来源(坑点 5)。

§2.2b ICDR 严重程度量表

IDRiD 的 0-4 分级遵循国际临床 DR(International Clinical Diabetic Retinopathy, ICDR)严重程度量表,与眼底病灶的对应关系如下:

ICDR 级别 名称 眼底判据(简化) IDRiD 图像数(train/test)
0 无明显 DR 无异常 134 / 34
1 轻度 NPDR 仅有 MA 20 / 5
2 中度 NPDR MA + 出血/渗出,未达重度标准 136 / 32
3 重度 NPDR 4-2-1 规则任一(大量出血/ venous beading / IRMA) 74 / 19
4 增殖性 DR 新生血管或玻璃体出血 49 / 13

4-2-1 规则:四个象限各 20+ 处视网膜内出血、两个象限明确 venous beading、一个象限明显 IRMA,三者任一成立即为重度 NPDR。IDRiD 的分级由眼科专家按此量表判读,官方未发布逐条判据记录,此表为量表通义。

§2.3 临床任务定义

任务 临床问题 IDRiD 支持形式
分级(grading) 按严重程度决定随访间隔与转诊 0-4 五分类(ICDR);挑战赛评测 DR+DME 同时正确率
病灶检测/分割 病变定位支持诊断解释与定量随访 MA/HE/EX/SE 二值掩码(81 张)
DME 风险评估 中心累及与否决定抗 VEGF 治疗 0-2 三级(基于黄斑中心渗出)
解剖定位 视盘/中心凹是病灶定位与分级的空间参照 OD 掩码(81 张)+ 中心坐标(516 张)

§2.4 患者人群

维度 描述
来源 印度马哈拉施特拉邦 Nanded 市 Sushrusha Hospital 眼科诊所
采集时间 2009-2017(从数千次检查中精选 516 张)
入选条件 糖尿病患者或具有 DR/DME 相关体征;专家确认质量合格、临床相关、无重复
疾病构成 专家刻意维持 DR/DME 各严重层的合理混合(疾病富集,非筛查分布)
年龄/性别 官方未公开患者级人口学统计(图像已重新编号、无患者元数据分发)
民族/地域 印度人群(首个代表印度人群的公开眼底数据集)

§2.5 临床价值

IDRiD 的临床价值在于把筛查算法的三层决策链完整地数据化:像素层(病灶在哪里)→ 病灶层(有哪些病灶)→ 图像层(该患者该多久随访一次)。印度背景使它成为「资源受限地区筛查」叙事下最常用的基准:一套在 IDRiD 上验证过病灶定位能力的算法,配合分级模型的转诊规则,即构成 CADx 原型。同时,它的 DME 标签直接对接抗 VEGF 治疗决策的核心问题(中心是否累及),使分级研究不止于「重/不重」,而能对齐治疗路径。

在筛查工作流中的对应关系:

临床环节 决策问题 IDRiD 支撑的任务 落地形态
初筛 是否有可转诊 DR? 分级 0-4 二级转诊阈值(通常 ≥2 级转诊)
分诊 是否威胁视力? DME 风险 0-2 + PDR 判别 抗 VEGF / 激光治疗转诊
解释 为什么判为可转诊? 病灶分割掩码 可视化报告、医生复核加速
质控 图像是否可用? OD/中心凹定位(对齐参考) 自动质控与 ROI 校正

§2.6 金标准参照

任务 参照标准 标注方式 标注者 性质
病灶分割 病灶轮廓二值掩码(TIF) ADCIS 定制软件手工勾画 1 名受训标注者初标 + 2 名视网膜专家复核共识 共识金标准
视盘分割 OD 区域二值掩码(TIF) 手工勾画 + 专家复核 同上 共识金标准
DR/DME 分级 ICDR 0-4 / DME 风险 0-2 图像级判读 医学专家(眼科临床医生) 专家判读标准
OD/中心凹定位 中心像素坐标 两名学生独立标注取平均,专家验证 硕士 + 博士生、1 名视网膜专家 共识金标准

§3 数据集规格

§3.0 版本抉择矩阵

你的需求 推荐获取渠道 大小 理由
完整官方数据(分割+分级+定位,引用合规) IEEE DataPort(DOI 10.21227/H25W98) 约 500 MB 图像 + 标注 官方原版、CC BY 4.0 明确、三子任务齐全
只做病灶分割、快速复现 Kaggle 镜像(torch-em 所用) 508 MB(HF parquet 版)/ 数百 MB 免申请流程,torch_em 一行加载
只做分级 Kaggle grading 子集 212.26 MB(518 个文件) 仅含 B 部分图像 + 2 个 CSV,下载最快
需要 12 类统一掩码与复核标注 Refined IDRiD(Zenodo 17615903) 81 张 1024×1024 预处理版 2026 年发布的专家复核增强版,CC BY 4.0

§3.1 模态详情

IDRiD 只包含一种成像模态:散瞳眼底彩照(color fundus photography)。所有图像以黄斑为中心、50° 视野采集,分辨率统一为 4288×2848 px,JPG 存储,单张约 800 KB。数据集不含 OCT、眼底荧光造影等多模态数据;DME 判断依据是彩照上黄斑中心附近的硬性渗出,而非 OCT 形态测量——这一点决定了它的 DME 标签语义与 OCT 队列中的 DME 定义不完全等价(见坑点 7)。

§3.1b 图像质量与伪影

官方声明的质量控制:专家逐一确认「质量合格、临床相关、无重复、DR/DME 分层合理」。工程层面仍需注意:①图像为 JPG 有损压缩(约 800 KB/张,压缩比对 4288×2848 而言较强),MA 边界存在压缩伪影;②氙气闪光灯曝光下部分图像存在轻度视盘过曝;③FOV 圆形区域外为纯黑背景,直接计算全局直方图会被背景像素主导(§6.3 的 FOV 裁剪即为此设计)。IDRiD 无图像质量分级标签(其续作 DeepDRiD 才加入质量估计任务),管线中如需质量过滤需自行实现。

§3.2 按子集样本数

子集 图像数 训练/测试 附加标注
A. Segmentation(病灶分割) 81 54 / 27 MA 81、EX 81、HE 80、SE 40 张掩码;OD 掩码 81 张
B. Disease Grading(疾病分级) 516 413 / 103 DR Grade(0-4)与 Risk of DME(0-2)CSV
C. Localization(定位) 516 413 / 103 OD 中心与中心凹中心坐标 CSV

§3.3 数据格式

内容 格式 说明
原始眼底图像 JPG(4288×2848,约 800 KB/张) RGB 三通道
病灶/视盘掩码 TIF(二值,0/255) 每病灶类一张掩码,按子目录分 1. Microaneurysms … 5. Optic Disc
分级标签 CSV(Image name、Retinopathy grade、Risk of DME 三列) 训练/测试各一
定位标签 CSV(图像名、X、Y 三列) OD 与中心凹各训练/测试一份

§3.4 存储大小

按官方每张约 800 KB 估算,516 张图像主体约 500 MB;81 张图像对应的全部掩码与 CSV 标注合计数十 MB 级。Kaggle grading 子集实测 212.26 MB(518 个文件),HuggingFace 上的分割子集 parquet 版为 508 MB(含 5 种掩码模态)。IEEE DataPort 未公布官方压缩包总大小与校验值。

组成 估算/实测 依据
516 张 JPG 约 500 MB 官方单张约 800 KB × 516
分割掩码(81 张 × 至多 5 类 TIF) 数十 MB 级 二值 TIF
分级 + 定位 CSV <1 MB 6 个 CSV
Kaggle grading 镜像 212.26 MB(518 文件) Kaggle 页面实测
HF 分割子集 parquet 508 MB HF 页面(含掩码模态)

§3.5 标注方式

三层标注全部为人工标注:①像素级掩码——由受训标注者(硕士生)使用 ADCIS 定制标注软件逐病灶勾画轮廓,随后由 2 名视网膜专家逐一复核,达成共识后定稿;②图像级分级——由眼科临床专家依据 ICDR 量表判读 DR 分级,并按 Messidor 定义的黄斑中心渗出规则判读 DME 风险;③解剖坐标——两名学生(硕士+博士)独立标出 OD 与中心凹中心后取平均,再由视网膜专家验证。

§3.5b 标注工作量与成本参照

按官方流程复刻 IDRiD 式标注的量级:81 张 4288×2848 图像的逐病灶勾画(ADCIS 软件)由 1 名受训标注者完成初标、2 名视网膜专家复核;516 张图像的分级由临床专家完成;516 张 × 2 个解剖点的坐标由 2 名研究生标注。这一「1 初标 + N 专家」的金字塔是学界像素级标注的典型成本结构——81 张图的掩码制作成本即已显著高于 516 张图的分级判读,这解释了为什么像素标注只覆盖 81 张。用它规划自己的标注预算时:分级 ≈ 每图秒级;掩码 ≈ 每图分钟级到十分钟级(视病灶密度)。

§3.6 标注者资质与一致性

像素标注初标者为受过眼科专家培训的硕士生;终审者为 2 名视网膜专科医生(Girish Deshmukh——Sushrusha Hospital 眼科诊所、Vivek Sahasrabuddhe——Shankarrao Chavan 政府医学院)。官方论文未公布像素级标注的定量一致性指标(如 Dice 或 kappa),仅描述「共识后定稿」流程;OD/中心凹采用双人平均加专家验证。使用时应意识到:微小病灶(MA)的观察者间变异天然偏高,这是挑战赛 MA 分数整体偏低的原因之一。

§3.7 采集周期

图像采集于 2009-2017 年;数据发布于 2018 年 1 月(挑战赛训练集)。数据集无纵向随访结构——516 张图像各自独立,官方未提供患者标识与检查日期,因此不支持时间序列或疾病进展建模。

§3.8 地域覆盖

单一地理覆盖:印度马哈拉施特拉邦 Nanded 市的单一眼科诊所。无多中心、无多国数据。这一「单中心单设备」特征是把双刃剑:设备与协议方差最小,但人群外推性受限(§7.1、§7.3)。

§3.9 设备规格

项目 规格
眼底相机 Kowa VX-10α 数字眼底相机
视野 50°,黄斑中心对准
分辨率 4288×2848 px
光源 氙气闪光灯
散瞳 0.5% 托吡卡胺一滴(散瞳成像)
透镜距离 39 mm
存储 JPG,约 800 KB/张

§3.10 深度溯源链

原始检查(Nanded 诊所,2009-2017)→ 专家精选 516 张(质量/相关性/分层核查)→ 像素标注(ADCIS 软件,硕士生初标)→ 2 名视网膜专家复核定稿 → 分级(眼科专家,ICDR/Messidor 规则)→ SGGS IE&T 本地伦理委员会批准发布 → ISBI 2018 挑战赛分发(2018-01/02)→ IEEE DataPort 长期托管(DOI 10.21227/H25W98,CC BY 4.0)→ 第三方镜像(Kaggle、HuggingFace,见 §3.0)。每一环都有可引用的公开文档(MDPI 数据论文、挑战赛官网、IEEE DataPort 页面)。


§4 数据结构

§4.0 目录树

IDRiD/                                  # IEEE DataPort 官方 ZIP 解压后(三部分)
├── A. Segmentation/                    # 像素级分割子任务(81 张,编号 IDRiD_01-81 两位制)
│   ├── 1. Original Images/
│   │   ├── a. Training Set/            #   IDRiD_01.jpg … IDRiD_54.jpg(54 张)
│   │   └── b. Testing Set/             #   IDRiD_55.jpg … IDRiD_81.jpg(27 张)
│   └── 2. All Groundtruths/
│       ├── a. Lesion Boundaries/
│       │   ├── 1. Microaneurysms/      #   IDRiD_XX_MA.tif(二值 0/255 掩码)
│       │   ├── 2. Haemorrhages/        #   80 张(IDRiD_43 无 HE 掩码)
│       │   ├── 3. Hard Exudates/       #   81 张
│       │   └── 4. Soft Exudates/       #   仅 40 张有掩码
│       └── b. Optic Disc/              #   IDRiD_XX_OD.tif(81 张全有)
├── B. Disease Grading/                 # 分级子任务(516 张,编号 IDRiD_001-516 三位制)
│   ├── 1. Original Images/
│   │   ├── a. Training Set/            #   IDRiD_001.jpg … IDRiD_413.jpg(413 张)
│   │   └── b. Testing Set/             #   IDRiD_414.jpg … IDRiD_516.jpg(103 张)
│   └── 2. Groundtruths/
│       ├── IDRiD_DiseaseGrading_TrainingLabels.csv
│       └── IDRiD_DiseaseGrading_TestingLabels.csv
└── C. Localization/                    # 定位子任务(516 张)
    ├── 1. Original Images/             #   与 B 共用图像集
    └── 2. Groundtruths/
        ├── IDRiD_OD_Center_TrainingSet_Markups.csv    # 图像名, X, Y
        ├── IDRiD_OD_Center_TestingSet_Markups.csv
        ├── IDRiD_Fovea_Center_TrainingSet_Markups.csv
        └── IDRiD_Fovea_Center_TestingSet_Markups.csv

⚠️ 注意 A 部分与 B/C 部分的图像编号是两套独立体系(两位制 01-81 vs 三位制 001-516),官方未提供跨子集映射表,详见坑点 1。目录名在不同镜像中可能略有差异(如 Kaggle 镜像保留 A. Segmentation 原名并含 URL 转义空格)。

§4.1 DAIMS 字段字典

分级标签 CSV(IDRiD_DiseaseGrading_*.csv)

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
Image name string 图像文件名(去标识重编号) IDRiD_001 主键/合并键 无缺失 IDRiD_001-IDRiD_516
Retinopathy grade int ICDR 严重程度分级 2 分级任务标签 专家判读变异(中重度边界) 0-4
Risk of DME int 黄斑水肿风险(基于中心渗出) 1 DME 任务标签 彩照间接征象判读 0-2

定位标签 CSV(IDRiD_OD_Center_ / IDRiD_Fovea_Center_*)*

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
图像名 string 图像文件名 IDRiD_076 主键 同上
X int 中心点横坐标(像素) 2140 定位/距离评测 双人平均 ± 专家验证 0-4287
Y int 中心点纵坐标(像素) 1428 定位/距离评测 同上 0-2847

像素级掩码(TIF 文件族)

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
mask 文件 uint8 图像 与原图同尺寸的二值掩码 IDRiD_07_MA.tif 分割任务标签 轮廓勾画变异(MA 显著) 文件不存在 = 该图无此类病灶
lesion_type(目录) string 病灶类别 1. Microaneurysms 多类分割类别轴 MA/HE/EX/SE/OD 五类

§4.2 标签分布

DR 分级(Retinopathy grade)

DR Grade 训练集(413) 测试集(103) 合计
0 无明显 DR 134 34 168
1 轻度 NPDR 20 5 25
2 中度 NPDR 136 32 168
3 重度 NPDR 74 19 93
4 增殖性 DR 49 13 62

DME 风险(Risk of DME)

DME 风险 训练集(413) 测试集(103) 合计
0 无 DME 177 45 222
1 非中心累及 41 10 51
2 中心累及 195 48 243

两张分布表出自挑战赛结果论文(Porwal et al., MedIA 2020)Table 4 的分层划分记录,行合计均为 413/103。注意这是专家富集后的疾病混合分布:真实筛查人群中 Grade 0 通常占 70% 以上,而 IDRiD 仅约 1/3(坑点 5)。

分布带来的三个直接后果:

  1. 类不平衡格局与筛查数据相反:Grade 1(25/516)与 Grade 3(93/516)都稀缺,但整体病理样本占比 2/3——「稀缺类是轻度而非重度」,与 EyePACS 等库恰好倒置,跨库混合训练时权重策略不能照搬。
  2. DME 富集更甚:DME 风险 ≥1 的图像占 57%,而其判定依赖黄斑中心渗出,因此该子集与 EX 分割子集存在天然的内容重叠。
  3. 分层切分即可复现官方划分:两表逐格数字相加严格等于 413/103,社区复现实验时可直接用「按 (DR Grade, DME Risk) 双键分层」的划分校验自己的数据加载是否与官方一致。

§4.3 关键统计

  • 分割子集 81 张全部为有 DR 体征图像:MA/EX 掩码覆盖率 100%,HE 80/81(98.8%),SE 仅 40/81(49.4%)。
  • 病灶像素占比通常不足图像像素的 1%,MA 单个直径在原图中仅约 10-30 px——这是挑战赛 MA 分割最佳 F-score 仅 0.5017 的结构性原因。
  • 全部 516 张图像均有 OD/中心凹坐标与分级标签;图像无重复(官方专家确认)。
  • 挑战赛共收到 495 个注册、148 支队伍的有效提交(MedIA 2020)。
  • 分割训练/测试中各病灶覆盖(图像数):MA 54/27、EX 54/27、HE 53/27、SE 26/14——SE 在训练集中不足半数,多类模型对 SE 的学习信号天然薄弱。

挑战赛规模统计(MedIA 2020):

指标 数值
注册团队 495
有效提交队伍 148
子任务数 3(8 个具体任务)
外部数据使用 允许公开数据预训练(多支优胜队伍采用)

§4.4 数据层级

数据集(516 张精选图像)
└── 图像(4288×2848 JPG)              # 最细粒度单元,官方未发布患者 ID
    ├── 图像级标签 × 2(DR Grade、Risk of DME)        # 516 张全覆盖
    ├── 解剖坐标 × 2(OD 中心、中心凹中心)            # 516 张全覆盖
    └── 像素级掩码 × 5(MA/HE/EX/SE/OD,仅 81 张)     # 每病灶类一张 TIF

层级只有「图像 → 标注」两层,无患者/检查/序列中间层。同一患者的多张图像问题官方未讨论——重编号抹去了患者标识,泄漏风险只能靠假设规避(§5.3、坑点 6)。

§4.5 缺失值与信息性缺失

现象 位置 语义 处理建议
SE 掩码文件缺失(41 张) 分割子集 该图无软性渗出(真缺失 = 负类),而非标注遗漏 多类合并时以「无文件 = 全零掩码」处理
HE 掩码缺失 1 张(IDRiD_43) 分割子集 同上(经 HuggingFace 镜像核验该图无 HE 标注) 遍历掩码目录而非假设 4 类全有
患者 ID / 检查日期缺失 全集 官方未发布 不可假设「一图一人」;交叉验证时按图像划分
IEEE DataPort 校验值缺失 下载页 官方未公布 SHA256 下载后用页面版本日期核对,勿轻信第三方镜像

§5 划分与使用建议

§5.1 官方划分

官方有两套同时成立的划分:分割子集 54 训练/27 测试(2/3 : 1/3,依据 Dobbin & Simon 2011 对 50-200 样本量的最优划分结论);分级与定位 413 训练/103 测试(80/20,按 DR 与 DME 分层划分后切分)。挑战赛期间测试集标签对参赛者隐藏(分级/定位为现场赛),后随 IEEE DataPort 版本一并公开。

§5.2 社区惯例划分

社区主流做法是保留官方 train/test 划分、在 413 张训练图内部再按 80/20 或五折切出验证集(分层键取 DR Grade);分割方向则在 54 张训练图内做五折交叉验证。较少见但更稳健的做法是把官方 test 只留作最终一次评测、在 train 内做全部迭代决策——官方 test 标签公开后,把它当验证集反复调参已成为系统性偏倚来源(坑点 6)。

划分方案 用法 适用阶段 风险
官方 413/103 直接使用 train 训练、test 报告 方法成熟后一次性评测 test 污染(若反复调参)
train 内 80/20 + 官方 test 冻结 全部迭代在 train 内 主流推荐
train 内五折 CV + test 单点 方法对比 论文基准 计算量 ×5
自定义随机混切全 516 张 不推荐 与全部公开分数失去可比性

§5.3 泄漏风险 ⚠️

  1. 患者级泄漏不可排除:官方未发布患者 ID。Nanded 诊所的检查可能为同一患者留下多张图像;若同一患者跨训练/测试分布,分数会被高估。缓解:报告分数时明确「按图像划分」;关键结论用外部数据集复验。
  2. 官方测试集污染:test CSV 公开后,大量论文在 test 上选模型/调阈值。缓解:冻结 test,train 内切验证集;引用他人分数时注意其是否声明 test 只用一次。
  3. 外部数据泄漏:挑战赛允许参赛者用公开外部数据(EyePACS 等)预训练,若外部数据与你的评测集存在图像来源重叠(如 Kaggle DR 竞赛镜像),跨库比较将失真。

§5.4 交叉验证建议

分割任务(54 张)建议五折 CV + 汇总均值±标准差报告,因为单次 27 张测试的差异噪声极大;分级任务(413 张)建议按 DR Grade 分层的五折 CV,并在 fold 配置中固定随机种子以便复现。两类任务不要混用同一折划分——它们本来就是两个图像集合。

§5.5 外部验证建议

把 IDRiD 作为训练源时,优先选 E-Ophtha(同为病灶掩码)、Messidor-2(分级)做跨库验证;把 IDRiD 作为外部测试集时(常见于 EyePACS/APTOS 训练的模型),先做设备/视野适配再评测,并报告按 grade 分层的性能——整体 accuracy 会掩盖重度样本上的崩溃。Zhou et al.(IEEE TMI 2021)的迁移性基准是现成的协议模板。

跨库组合的三条经验路径:

  1. 大库训练 + IDRiD 评测(最常见):EyePACS/APTOS 预训练 → IDRiD 103 张零微调评测,报告「外部 AUC 下降量」作为泛化 gap。
  2. IDRiD 训练 + 大库评测(少数派):验证小库学到的病灶表征能否迁移,通常需配合强增强,性能预期有限——公开它的目的是量化小数据上限。
  3. 双向对齐:以 IDRiD 像素掩码为可解释性锚点、以大库为分布锚点,先在大库预训练、再用 IDRiD 81 张做病灶头微调——多数分割论文的实际最优路径(与挑战赛优胜方案的「外部预训练 + 集成」一脉相承)。

§6 AI 就绪指南 ⭐

§6.0 云端快速启动

不想走 IEEE DataPort 申请流程?Kaggle 上有社区镜像(torch-em 库默认使用 aaryapatel98/indian-diabetic-retinopathy-image-dataset)。在 Kaggle Notebook 或 Colab 中:

# Kaggle Notebook:左侧 Add Input → 搜索数据集
# aaryapatel98/indian-diabetic-retinopathy-image-dataset,挂载后路径如下
import os
for root, dirs, files in os.walk("/kaggle/input/indian-diabetic-retinopathy-image-dataset"):
    if files and root.count(os.sep) < 7:
        print(root, "->", len(files), "files")
# 期望看到 "A. Segmentaion"(镜像保留了 URL 转义空格)与 "B. Disease Grading" 两大分支

官方渠道仍是引用与合规的首选:IEEE DataPort 免费注册后即可下载完整 ZIP(CC BY 4.0),第三方镜像仅用于快速原型。

§6.1 快速上手

目录结构预期:以下代码假设你已将官方 ZIP 解压到 data_root,解压后存在 A. Segmentation/B. Disease Grading/C. Localization/ 三个目录;data_root 与子目录名的拼接关系见代码内注释。最小可用子集:分级任务的 B. Disease Grading(413+103 张 JPG + 2 个 CSV)即可独立跑通全流程,不依赖 A、C 两部分。

# 快速上手:分级任务最小可运行示例
# 目录预期:
#   data_root/
#   └── B. Disease Grading/
#       ├── 1. Original Images/a. Training Set/   # IDRiD_001.jpg ... IDRiD_413.jpg
#       ├── 1. Original Images/b. Testing Set/    # IDRiD_414.jpg ... IDRiD_516.jpg
#       └── 2. Groundtruths/IDRiD_DiseaseGrading_{Training,Testing}Labels.csv
import pandas as pd
from pathlib import Path

data_root = Path("data_root")                       # ← 改成你的解压根目录
img_dir  = data_root / "B. Disease Grading" / "1. Original Images" / "a. Training Set"
csv_path = data_root / "B. Disease Grading" / "2. Groundtruths" / "IDRiD_DiseaseGrading_TrainingLabels.csv"

df = pd.read_csv(csv_path)                          # 列:Image name, Retinopathy grade, Risk of DME
print(df.head(), df["Retinopathy grade"].value_counts().sort_index())

# 第一张图的完整路径拼接(注意目录名带空格与点号,别 strip 掉)
img_path = img_dir / f"{df['Image name'].iloc[0].strip()}.jpg"
assert img_path.exists(), f"路径拼接失败:{img_path}"

§6.2 数据获取

渠道 链接 流程 适用
IEEE DataPort(官方) https://ieee-dataport.org/open-access/indian-diabetic-retinopathy-image-dataset-idrid 免费注册 → 页面下载 ZIP(JPG+TIFF+CSV) 正式研究、引用合规
挑战赛官网 https://idrid.grand-challenge.org/ 无直接下载,指向 DataPort 文档与排行榜
Kaggle 镜像 kaggle datasets(见 §6.0) Kaggle 账号直接挂载 快速原型
HuggingFace https://huggingface.co/datasets/MedOtter/IDRiD load_dataset(81 张分割子集,parquet) 分割任务快速实验
Refined IDRiD https://zenodo.org/records/17615903 直接下载(CC BY 4.0) 需要复核标注/统一多类掩码

官方渠道获取步骤(IEEE DataPort):

  1. 注册 IEEE DataPort 账号(免费,邮箱验证)。
  2. 访问数据集页面,确认版本日期(当前为 2025-06-17 更新)。
  3. 在页内 DATASET FILES 区下载完整 ZIP(JPG + TIFF + CSV)。
  4. 记录下载日期与文件清单;官方未发布 SHA256,建议自行计算并入库登记(§4.5)。
  5. 解压后按 §4.0 目录树核对 A/B/C 三部分齐全再开始实验。
# HuggingFace 分割子集一行加载(81 张,含 5 种掩码)
from datasets import load_dataset
ds = load_dataset("MedOtter/IDRiD")["train"]        # 81 条记录,字段含 image、mask_MA/HE/EX/SE/OD
print(ds[0]["image_id"], ds[0]["lesion_types"])     # 例如 IDRiD_03, ["MA","HE","EX","SE","OD"]

许可提示:官方许可为 CC BY 4.0(署名即可,含商用);个别 Kaggle 镜像页面自标 CC BY-NC 4.0,与官方不一致——正式发表请以官方渠道与许可为准。

§6.3 预处理全流程

眼底彩照的标准预处理链:FOV 裁剪 → 光照均衡 → 尺寸适配 → 掩码对齐。IDRiD 特有注意点:图像 4288×2848 且黄斑居中,FOV 圆形区域外为纯黑;掩码与原图同尺寸,二值 0/255。

import cv2
import numpy as np

def preprocess_fundus(img_bgr: np.ndarray, out_size: int = 512) -> np.ndarray:
    """眼底彩照标准预处理:FOV 裁剪 + CLAHE + 缩放。
    输入:cv2 读取的 BGR 图像(4288×2848);输出:out_size×out_size float32 RGB。
    """
    # 1) FOV 裁剪:灰度 > 10 的最大内切圆,裁掉纯黑边角
    gray = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2GRAY)
    _, mask = cv2.threshold(gray, 10, 255, cv2.THRESH_BINARY)
    x, y, w, h = cv2.boundingRect(mask)
    img = img_bgr[y:y+h, x:x+w]

    # 2) CLAHE 光照均衡(只作用于 L 通道,避免放大噪点)
    lab = cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
    lab[..., 0] = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8)).apply(lab[..., 0])
    img = cv2.cvtColor(lab, cv2.COLOR_LAB2BGR)

    # 3) 缩放(分割任务建议 ≥512;分级任务 224-384 即可,见坑点 4)
    img = cv2.resize(img, (out_size, out_size), interpolation=cv2.INTER_AREA)
    return cv2.cvtColor(img, cv2.COLOR_BGR2RGB).astype(np.float32) / 255.0

def load_mask(mask_path: str, out_size: int = 512) -> np.ndarray:
    """读二值掩码:TIF 存的是 0/255,务必除以 255 再参与损失计算。"""
    m = cv2.imread(mask_path, cv2.IMREAD_GRAYSCALE)
    m = cv2.resize(m, (out_size, out_size), interpolation=cv2.INTER_NEAREST)  # 最近邻!
    return (m > 127).astype(np.float32)

§6.4 PyTorch DataLoader

<details>
<summary>完整可运行代码:双任务 Dataset(分级 + 分割),点击展开</summary>

# 依赖目录(与官方 ZIP 解压结果一致):
#   data_root/A. Segmentation/1. Original Images/{a. Training Set,b. Testing Set}/*.jpg
#   data_root/A. Segmentation/2. All Groundtruths/a. Lesion Boundaries/{1. Microaneurysms,...}/*.tif
#   data_root/B. Disease Grading/...(同 §6.1)
import pandas as pd
import torch
from PIL import Image
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms

IMAGENET_MEAN, IMAGENET_STD = [0.485, 0.456, 0.406], [0.229, 0.224, 0.225]

class IDRiDGradingDataset(Dataset):
    """分级任务:516 张 JPG + 2 个 CSV。返回 (image, dr_grade, dme_risk)。"""
    def __init__(self, root: str, split: str = "train", size: int = 384):
        base = Path(root) / "B. Disease Grading"
        sub = "a. Training Set" if split == "train" else "b. Testing Set"
        self.img_dir = base / "1. Original Images" / sub
        csv = base / "2. Groundtruths" / f"IDRiD_DiseaseGrading_{'Training' if split == 'train' else 'Testing'}Labels.csv"
        self.df = pd.read_csv(csv)
        self.tf = transforms.Compose([
            transforms.Resize((size, size)),
            transforms.ToTensor(),
            transforms.Normalize(IMAGENET_MEAN, IMAGENET_STD),
        ])

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

    def __getitem__(self, i):
        name = self.df.iloc[i]["Image name"].strip()
        img = Image.open(self.img_dir / f"{name}.jpg").convert("RGB")
        return self.tf(img), int(self.df.iloc[i]["Retinopathy grade"]), int(self.df.iloc[i]["Risk of DME"])

LESION_DIRS = {  # 官方 ZIP 中病灶掩码子目录名(注意是 Haemorrhages 拼写)
    "MA": "1. Microaneurysms", "HE": "2. Haemorrhages",
    "EX": "3. Hard Exudates", "SE": "4. Soft Exudates",
}

class IDRiDSegDataset(Dataset):
    """分割任务:54/27 张 + 每病灶类一张 TIF 掩码。
    掩码文件不存在 → 该图无此类病灶(全零),见坑点 2。
    返回 (image, mask[4,H,W]),通道顺序 [MA, HE, EX, SE]。
    """
    def __init__(self, root: str, split: str = "train", size: int = 512):
        base = Path(root) / "A. Segmentation"
        sub = "a. Training Set" if split == "train" else "b. Testing Set"
        self.img_dir = base / "1. Original Images" / sub
        self.gt_dir = base / "2. All Groundtruths" / "a. Lesion Boundaries"
        self.images = sorted(self.img_dir.glob("*.jpg"))
        self.size = size
        self.tf_img = transforms.Compose([
            transforms.Resize((size, size)), transforms.ToTensor(),
            transforms.Normalize(IMAGENET_MEAN, IMAGENET_STD),
        ])

    def _mask(self, stem: str, key: str) -> torch.Tensor:
        p = self.gt_dir / LESION_DIRS[key] / f"{stem}_{key}.tif"
        if not p.exists():
            return torch.zeros((self.size, self.size))    # 信息性缺失:无病灶
        m = Image.open(p).convert("L").resize((self.size, self.size), Image.NEAREST)
        return (torch.from_numpy(np.array(m)) > 127).float()

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

    def __getitem__(self, i):
        stem = self.images[i].stem                        # 如 IDRiD_07
        img = Image.open(self.images[i]).convert("RGB")
        masks = torch.stack([self._mask(stem, k) for k in LESION_DIRS])
        return self.tf_img(img), masks

if __name__ == "__main__":
    dl = DataLoader(IDRiDGradingDataset("data_root", "train"), batch_size=8, shuffle=True, num_workers=4)
    for img, dr, dme in dl:
        print(img.shape, dr[:4].tolist(), dme[:4].tolist()); break

</details>

§6.4b 分级训练最小循环

把 §6.4 的 Dataset 接入一个可运行的最小训练循环(分级任务,含类别加权),作为冷启动模板:

# 最小分级训练循环:加权交叉熵 + 训练/验证切分
# 依赖:§6.4 的 IDRiDGradingDataset;硬件:≥8GB 显存即可
import numpy as np
import torch
import torch.nn as nn
from torch.utils.data import DataLoader, Subset
from torchvision.models import resnet50, ResNet50_Weights
from sklearn.model_selection import StratifiedKFold

full = IDRiDGradingDataset("data_root", "train")     # 413 张
labels = full.df["Retinopathy grade"].values
folds = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)

for tr_idx, va_idx in folds.split(np.zeros(len(labels)), labels):
    train_loader = DataLoader(Subset(full, tr_idx), batch_size=16, shuffle=True, num_workers=4)
    val_loader   = DataLoader(Subset(full, va_idx), batch_size=32, num_workers=4)

    model = resnet50(weights=ResNet50_Weights.IMAGENET1K_V2)
    model.fc = nn.Linear(model.fc.in_features, 5)
    # 类别权重:与频率倒数成正比,缓解 Grade 1(20/413)的稀缺
    counts = np.bincount(labels[tr_idx], minlength=5)
    weights = torch.tensor(counts.sum() / (5.0 * counts + 1e-9), dtype=torch.float32)
    criterion = nn.CrossEntropyLoss(weight=weights.cuda())

    opt = torch.optim.AdamW(model.parameters(), lr=3e-4, weight_decay=1e-4)
    model.cuda().train()
    for epoch in range(10):
        for img, dr, _dme in train_loader:
            img, dr = img.cuda(), dr.cuda()
            loss = criterion(model(img), dr)
            opt.zero_grad(); loss.backward(); opt.step()
        # 验证与早停逻辑此处从略;quadratic weighted kappa 是社区常用选型指标
    break  # 示例仅跑首折

该循环刻意保持最小:实际研究请加入早停、验证 kappa、混合精度与多折汇总(均值±标准差)。分割任务的训练循环结构相同,把交叉熵换成 BCE/Dice 组合、单标签换成 4 通道掩码即可。

§6.5 坑点 8 个

⚠️ 坑点 1:两套图像编号体系,像素标注与分级标签无法按文件名对齐(分类:工程陷阱)

问题:分割子集图像编号为两位制 IDRiD_01-81,分级/定位子集为三位制 IDRiD_001-516,官方从未发布两者的映射表。想给分级模型附加「病灶面积」特征、或给分割模型加「分级先验」时,两条数据链合不上。
症状:按文件名 join 后行数远小于 81;或错误地假设 IDRiD_01X 与 IDRiD_X1 同图,特征矩阵里出现错位配对。
解决

  1. 简单方法:放弃跨子集合并,把分割与分级当作两个独立实验管理(挑战赛本身即如此设计)。
  2. 进阶方法:以图像内容做对齐——对 81 张分割图在 516 张全集内做感知哈希或归一化互相关匹配,生成自己的 crosswalk 表并随代码入库复用。
  3. SOTA 方法:直接改用 2026 年发布的 Refined IDRiD(Zenodo 17615903),其 12 类统一掩码与元数据已重建标注与解剖上下文的对应关系。
    参考https://huggingface.co/datasets/MedOtter/IDRiD(两位编号实证);https://www.mdpi.com/2306-5729/3/3/25(三位编号);Refined IDRiD(Data 2026, 11(2):30)

⚠️ 坑点 2:SE/HE 掩码不齐全,「四类掩码全有」的假设会静默造出假负类(分类:标签理解)

问题:软性渗出掩码只有 40/81 张图有,HE 缺 1 张(IDRiD_43)。掩码「文件不存在」的语义是「该图无此类病灶」,但目录遍历写法的差异会让同一张图在不同代码里得到不同标签。
症状:用 glob 按图像名找掩码然后 assert 报错;或更糟——把缺文件的图直接跳过,训练集悄悄缩水到 40 张;或者反方向把「无掩码」错当成「待预测」。
解决

  1. 简单方法:以图像列表为主表,掩码缺失即填全零张量(本页 §6.4 代码即此写法)。
  2. 进阶方法:合并掩码时先按病灶类统计覆盖率并打印日志,把「覆盖率 ≠ 100%」作为数据管线自检断言。
  3. SOTA 方法:为每类病灶维护 presence 位向量(81×4),多标签头与分割头共用它,同时解决「无病灶」与「有病灶但极小」的监督歧义。
    参考https://idrid.grand-challenge.org/Data(逐类掩码计数);https://huggingface.co/datasets/MedOtter/IDRiD(IDRiD_43 无 HE 实证)

⚠️ 坑点 3:病灶像素占比不足 1%,裸 BCE 训练出全黑分割(分类:标签理解)

问题:MA 在 4288×2848 原图中单个直径仅约 10-30 px,全部病灶像素占画面比例常低于 1%。用未加权 BCE 训练,模型收敛到「全预测背景」即得到 99%+ 的像素准确率,但召回为 0。
症状:loss 平稳下降、像素 accuracy 高得漂亮、F-score/IoU 为 0 或个位数;预测图肉眼全黑。
解决

  1. 简单方法:正类加权 BCE(pos_weight 取 10-50)或 Dice/BCE 组合损失。
  2. 进阶方法:patch 训练——从 81 张图中挖以病灶为中心的小 patch(MA 用 64×64、EX/HE/SE 用 128×128),把正负像素比拉回可训练范围;挑战赛获胜方案普遍采用。
  3. SOTA 方法:Tversky/Focal-Tversky 损失偏置假阴性 + 连通域后处理过滤假阳性;或将四类分割做成「粗分割网络 + 细分类验证」级联。
    参考:Porwal et al., MedIA 2020(获胜方案技术构成);https://arxiv.org/pdf/2007.13854(BCE β=10 的加权实践)

⚠️ 坑点 4:4288×2848 直接 resize 到 224×224,MA 在物理上消失(分类:预处理陷阱)

问题:224×224 下单像素对应原图约 19×13 px,一个 MA(原图 10-30 px)被压缩成不足 2 px 并与 JPG 压缩伪影混合,分割任务在信息层面就不可解。
症状:分级任务 resize 没问题的管线照搬到分割,F-score 始终 <0.05 且对超参数完全不敏感;把同一模型放到 512 输入上分数跳升。
解决

  1. 简单方法:分割输入 ≥512×512(官方掩码为原图分辨率,保持最近邻缩放)。
  2. 进阶方法:FOV 圆形区域裁剪后再缩放(等效保留更多有效像素),或滑窗推理保持近原生分辨率、overlap 合并概率图。
  3. SOTA 方法:多尺度双分支(低分辨率全图分支管全局上下文 + 高分辨率 patch 分支管微病灶),预测时融合两路输出。
    参考https://idrid.grand-challenge.org/Data(分辨率与尺寸规格);PaI-Net 等后续论文的 320-1280 分辨率消融

⚠️ 坑点 5:疾病富集的 516 张 ≠ 筛查人群,跨库部署性能暴跌(分类:偏倚陷阱)

问题:516 张是从数千次检查中精选的「合理疾病分层混合」,Grade 0 仅约 1/3;真实筛查人群(EyePACS、APTOS)正常占绝对多数且设备异构。在 IDRiD 上 accuracy 0.8 的模型,直接上线筛查会因先验失配而大量假阳性/假阴性。
症状:IDRiD 内部交叉验证指标良好,EyePACS/APTOS 外部测试 AUROC 掉 10 个点以上、specificity 崩塌;临床上「转诊率」远超预算。
解决

  1. 简单方法:部署前用目标人群先验重校准(Platt/温度缩放 + 先验校正)。
  2. 进阶方法:训练时把 IDRiD 与筛查分布数据混合并按采样权重对齐目标先验;报告按 grade 分层的 sensitivity/specificity 而非 accuracy。
  3. SOTA 方法:以 IDRiD 的像素掩码做可解释性对齐、以大规模筛查库做分布适配(两库各取所长),参考 Zhou et al. TMI 2021 的迁移协议显式度量退化。
    参考:Porwal et al., MedIA 2020(精选过程原文);https://www.arxiv-vanity.com/papers/2008.05731/(ExplAIn:OPHDIAT 训练、IDRiD 零训练评估的跨库设计)

⚠️ 坑点 6:官方 test 标签已公开,把 103 张测试图当验证集反复调参(分类:评估误用)

问题:IEEE DataPort 版本附带了 IDRiD_DiseaseGrading_TestingLabels.csv。挑战赛时代 test 隐藏、排行榜可比;现在任何人都能在 test 上迭代,文献里「IDRiD test accuracy」的分数通胀已不可逆。
症状:你的 test 分数总比论文低——因为人家(无意或有意)在 test 上调过;或者反之,自己复现时 test 越跑越高、新方法优势消失。
解决

  1. 简单方法:硬纪律——test 只在最终跑一次,代码里用环境变量锁住 test 读取。
  2. 进阶方法:train 内分层五折 CV 做全部决策,报告 CV 均值±标准差 + test 单点。
  3. SOTA 方法:将 Messidor-2 或 E-Ophtha 设为真正留出的外部集,IDRiD test 降级为「内部基准」,与 TMI 2021 迁移基准对齐后比较。
    参考https://ieee-dataport.org/open-access/indian-diabetic-retinopathy-image-dataset-idrid(test CSV 分发);Zhou et al., IEEE TMI 2021

⚠️ 坑点 7:Risk of DME 实为 0-2 三级,被大量论文误写为 0-3 甚至四级(分类:标签理解)

问题:官方 CSV 列名是「Risk of DME」,取值 0(无)/1(非中心累及)/2(中心累及),定义来自 Messidor 的中心渗出规则;不少论文把它写成 0-3 或与 ICDR 的 DME 分级混淆,还有人误以为它等价于 OCT 的黄斑厚度分级。
症状:分类头输出 4 个 logit 但标签里永远不出现 3;与 Messidor/其他库的 DME 结论互相矛盾;审稿人指出 DME 定义不符。
解决

  1. 简单方法:加载 CSV 后立即断言 set(df["Risk of DME"]) ⊆ {0,1,2},输出 3 类。
  2. 进阶方法:在数据卡/论文里明写标签定义链:眼底彩照 → 黄斑中心区硬性渗出 → 风险三级,并声明与 OCT-DME 不可比。
  3. SOTA 方法:若研究需要真正 DME 形态学标签,改用带 OCT 的队列,IDRiD 只承担「彩照可推断部分」的评测。
    参考https://www.mdpi.com/2306-5729/3/3/25(Figure 3 列定义与 0-2 范围原文)

⚠️ 坑点 8:54 张训练图的过拟合——获胜方案靠外部数据、增强与集成(分类:偏倚陷阱)

问题:分割子集训练集只有 54 张图。ImageNet 预训练大模型在全图上微调,验证 F-score 会在几个 epoch 内见顶回落;用 27 张测试图反复早停等于间接泄漏。
症状:训练 Dice 一路涨到 0.9、留出集 Dice 卡在 0.3-0.5 不动;不同随机种子间分数方差巨大。
解决

  1. 简单方法:强几何/色彩增强(翻转、旋转、HSV 抖动)+ 小学习率 + 早年停。
  2. 进阶方法:patch 化扩充有效样本量(见坑点 3),并先用 EyePACS 等大库做自监督/有监督预训练再迁移。
  3. SOTA 方法:多模型集成 + 每病灶类独立模型(挑战赛冠军 VRT 的路线:外部数据预训练 + 集成 + 病灶特化),或用 Refined IDRiD 的复核标注降低标签噪声方差。
    参考:Porwal et al., MedIA 2020(Table 6/8:获胜方案增强与集成清单);https://arxiv.org/pdf/2007.13854

§6.6 数据增强

增强方式 状态 说明
水平/垂直翻转 ✅ 安全 眼底无左右病理方向约束(注意左右眼标识与病理无耦合)
旋转 ±30°、随机缩放 0.8-1.2 ✅ 安全 挑战赛获胜方案标配
亮度/对比度抖动、CLAHE 幅度抖动 ✅ 安全 模拟拍摄光照差异;幅度过大易毁 MA 边界
弹性形变 ⚠️ 谨慎 分割可小幅使用,分级任务慎用
随机裁黑边再 resize ✅ 安全 等效 FOV 对齐,推荐
随机灰度化 ❌ 危险 渗出(黄色)与出血(暗红)的色度即诊断信息
大角度色调旋转(hue 全程) ❌ 危险 同上,会把 EX 变成 HE 的颜色
生成式合成病灶贴图 ⚠️ 谨慎 有文献支持(合成渗出/出血贴健康底图),须验证不破坏解剖一致性

§6.7 模型推荐

任务 推荐模型 起步配置 备注
四类病灶分割 U-Net(ResNet34 骨干)/ Attention U-Net 输入 512,BCE+Dice,pos_weight≈20 MA 单独可再用 64-128 patch 模型
DR 分级 EfficientNet-B0/B3、ResNet50 输入 384,加权 CE 或 ordinal loss 挑战赛冠军系为集成方案
DME 风险 与分级共享骨干多任务头 双头输出 5+3 类 注意 DME 仅 3 类
OD/中心凹定位 轻量热图回归(如 HRNet 小型化) 输出 2 通道热图取峰 评测用欧氏距离

§6.8 硬件需求

场景 GPU 显存 单 epoch 参考时长 说明
分级 384² / batch 16 ≥8 GB 分钟级(413 张) 消费级显卡即可
分割 512² / batch 4 ≥11 GB 分钟级(54 张) 推荐 batch ≥4 保证 BN 稳定
分割 1024² 滑窗 ≥24 GB 十分钟级 MA 高分辨率路线
Kaggle/Colab 免费档 15-16 GB 分割 512² 需开 AMP 混合精度

§6.9 评估指标代码

# 分割:挑战赛官方口径是逐病灶类的像素级 F-score(Dice);
# 分级:挑战赛 SC2 口径是 DR 与 DME 同时正确的 accuracy。
import numpy as np
import torch

def dice_per_class(pred: torch.Tensor, target: torch.Tensor, eps: float = 1e-7) -> torch.Tensor:
    """pred/target: (B, C, H, W) 概率/二值张量,返回每类 Dice。"""
    pred, target = pred.bool(), target.bool()
    tp = (pred & target).sum(dim=(0, 2, 3)).float()
    fp = (pred & ~target).sum(dim=(0, 2, 3)).float()
    fn = (~pred & target).sum(dim=(0, 2, 3)).float()
    return (2 * tp + eps) / (2 * tp + fp + fn + eps)

def challenge_grading_acc(dr_pred, dme_pred, dr_true, dme_true) -> float:
    """ISBI 2018 SC2 口径:一张图 DR 与 DME 都判对才计 1。"""
    both = ((dr_pred == dr_true) & (dme_pred == dme_true)).float()
    return both.mean().item()

def od_localization_dist(pred_xy, true_xy) -> float:
    """SC3 口径:中心点欧氏距离(像素)。"""
    return float(np.linalg.norm(np.array(pred_xy) - np.array(true_xy)))

§6.10 MLOps 笔记

  • 数据版本:IEEE DataPort 无语义版本号,以页面更新日期(2025-06-17)+ 下载日期登记你的 DVC/LakeFS 元数据;镜像渠道(Kaggle)须记录 dataset slug 与版本 hash。
  • 随机性控制:54/27 张规模下,种子方差可淹没方法差异——所有分割实验至少跑 3 个种子报均值±标准差。
  • 评估冻结:把「test 只读一次」写进 CI(读取 test 目录的代码路径加 lint 断言),防团队级泄漏(坑点 6)。
  • 标签语义文档化:DME 0-2 与 ICDR 0-4 的定义抄录进模型卡,避免下游误解(坑点 7)。
  • 外部监控:部署后按「转诊率」「图像质量拒绝率」监控先验漂移,IDRiD 富集先验与线上先验的差异是漂移主源(坑点 5)。
  • 预处理可复现:CLAHE/FOV 裁剪的参数(tile 8×8、clip 2.0)写入配置文件随模型归档——同一模型配不同预处理在 IDRiD 上可差出数个 F-score 点。
  • 实验对照表:记录输入分辨率、是否 patch、损失权重、外部预训练源四项;MedIA 2020 论文 Table 6 证明这四项是当年队伍间分数差异的主因。
  • 镜像策略:生产管线只依赖官方 IEEE DataPort 渠道,Kaggle/HF 镜像仅限开发环境;镜像目录名差异(URL 转义空格)要在路径解析层归一。

§6.11 从 IDRiD 出发的进阶路线

  1. 小样本分割 → 半监督:54 张训练图是做半监督/自监督对比(Mean Teacher、FixMatch、RETFound 式自监督预训练)的理想沙盒——标签昂贵但规模小,方法差异极易显影。
  2. 像素监督 → 弱监督:用 81 张掩码监督的模型去伪标注 EyePACS,再回来验证弱监督上限——「像素级小库 + 图像级大库」是 DR 文献的经典组合。
  3. 单任务 → 多任务:分级 + 分割 + 定位三头共享骨干,用 IDRiD 三个子集同时监督,是可解释性研究的自然延伸。
  4. IDRiD → DeepDRiD/RFMiD:同团队续作提供质量估计与多病种扩展,构成从专病基准到多病种系统的成长路径。

§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解措施
采集中心偏倚 单一诊所(Nanded)、单一相机(Kowa VX-10α) 外部验证(Messidor-2/E-Ophtha);避免跨设备直接部署
疾病富集/流行率偏倚 专家精选的分层混合,Grade 0 仅约 1/3,与筛查人群(正常占多数)相反 先验重校准;分级报告 sensitivity/specificity 而非 accuracy
标签量偏倚 像素标注仅覆盖 81/516 张;SE 仅 40 张 分割结论限定在「有病灶人群」;慎与全图像级结论混推
类别不平衡 DME 中心累及 243/516;DR Grade 1 仅 25/516 加权损失、分层采样、per-class 指标
注释者偏倚 像素标注为单人初标 + 双专家复核,无一致性定量公布 用 Refined IDRiD 的复核标注交叉校验
分辨率/压缩偏倚 JPG 约 800 KB/张,微小 MA 边界受压缩伪影影响 低-中 预处理不引入二次压缩;报告 MA 指标时声明分辨率管线

§7.2 标注质量

三层标注流程明确(初标 + 双专家共识 / 双人平均 + 专家验证),但官方未公布标注者间一致性统计(Dice/kappa),这是公认的信息缺口。间接证据:挑战赛 MA 分割 F-score 上限约 0.50,后续论文普遍将 MA 的「标注边界模糊 + 微小尺寸」列为天花板因素。HE 缺 1 张掩码(IDRiD_43)、SE 覆盖 49.4% 均与「无病灶即无掩码」的约定一致,但该约定官方文档未明示(坑点 2、§4.5)。2026 年 Refined IDRiD 对 81 张图做了专家复核与修订并公布修订日志,可作为原标注的质检参照。

标注维度 已知信息 质量信号 缓解动作
病灶轮廓精度 ADCIS 勾画 + 双专家共识 MA F-score 天花板约 0.50 后处理连通域过滤;容忍边界 ±1 像素级抖动
分级可重复性 临床专家判读 未公布 kappa 引用 ICDR 量表的观察者间变异文献作先验
解剖坐标 双人平均 + 专家验证 挑战赛 OD 定位误差 21 px 量级 用热图回归的软标签降低尖峰敏感
掩码完整性 SE 40/81、HE 80/81 与「无病灶即无掩码」一致 §4.5 的管线断言

§7.3 泛化性

部署场景 失效风险 证据
印度以外人群筛查 高:人种/设备/视野协议全部改变 数据集为单中心印度人群;跨库迁移基准(TMI 2021)显示普遍性能退化
大规模真实筛查(正常占多数) 高:先验失配导致假阳性泛滥 IDRiD 富集分布 vs EyePACS/APTOS 筛查分布(§4.2 注、坑点 5)
不同相机/散瞳状态 中-高:色彩响应与病灶对比度改变 全集单一 Kowa 相机,无设备方差可供学习
非 50° 视野或非黄斑中心图 中:解剖结构位置先验失效 官方协议统一 50° 黄斑中心
与 OCT 联合的 DME 判定 高:IDRiD DME 标签为彩照间接征象 标签定义链(坑点 7)
作为独立测试集(零训练评估) 低-中:合理的既定用途 ExplAIn 等「外部评测」用法(§7.8)

§7.4 伦理

数据论文记载:已获受检者知情同意,按当地伦理委员会与临床实践规范处理隐私,并获 SGGS IE&T Nanded 本地研究伦理委员会批准发布。图像以序列号重编号分发,不携带患者元数据(年龄、性别、日期均未发布)。CC BY 4.0 允许商业使用,但使用中仍须署名并引用数据论文与(如适用)挑战赛论文。

§7.5 公平性

IDRiD 是首个代表印度人群的公开眼底数据集,在「被代表性不足人群」维度有历史贡献。但公平性分析受限于官方未发布人口学元数据:无法按性别、年龄、社会经济分层评估模型性能。使用者在公平性审计中只能报告「数据来源群体」层面的事实(印度单一诊所),任何更细粒度的结论都缺乏数据支撑——规划前瞻采集时应补齐人口学标注。实践建议:涉及多人群的分级研究,把 IDRiD 明确标注为「印度单中心源域」,与多人群库(如 EyePACS 的美国多族裔混合人群)并列报告性能差距,而不是把 IDRiD 当作「通用基准」。

§7.6 数据漂移

数据集内部无时序结构(无检查日期),无法测度历史漂移;静态漂移风险全部来自「IDRiD 分布 → 部署分布」的跨库迁移:设备、人群、流行率、视野协议四类协变量同时变化。监控建议:上线后跟踪输入图像的 FOV 直径分布、RGB 均值(色温代理)与预测分级直方图,三者任一显著偏移即触发重校准流程。

漂移维度 IDRiD 内部表现 部署后典型漂移方向 监控信号
设备/色彩 单一 Kowa VX-10α 多相机色温与对比度差异 RGB 均值、G/R 通道比
疾病先验 富集(Grade 0 约 1/3) 筛查人群正常占 70%+ 预测分级直方图、转诊率
图像质量 专家精选合格 现场图有模糊/欠曝/小瞳孔 质量过滤器拒绝率
视野协议 统一 50° 黄斑中心 45°/60° 与不同中心位 FOV 圆直径分布

§7.7 DAIMS 数据集评估

# 检查项 状态 说明
1 宽格式数据 CSV 每行一图,三列语义清晰
2 唯一标识 ⚠️ 图像名全局唯一,但分割(01-81)与分级(001-516)两套编号无官方映射
3 特殊字符 文件名/表头为纯 ASCII(目录名含空格与点号,代码需原样引用)
4 重复行 官方专家确认无重复图像
5 缺失编码 标签 CSV 无缺失;掩码目录缺文件 = 无该类病灶
6 标签标识 列名 Image name / Retinopathy grade / Risk of DME 直接可读
7 罕见类分组 ⚠️ DR Grade 1 仅 25/516;SE 病灶图 40/81,训练需显式处理
8 偏倚评估 富集分布、单中心等偏倚在结果论文与社区中有系统讨论
9 数据字典 MDPI 数据论文 Table 2 完整列出内容、数量与格式
10 信息性缺失解释 ⚠️ 「无掩码 = 无病灶」约定未写入官方文档;HE 80/81 未逐条说明
11 设备记录 相机型号、视野、光源、散瞳药物与分辨率全部记录
12 共线性 图像级两标签无共线性问题(非表格特征建模场景)
13 编码映射 ⚠️ ICDR 0-4 有标准可依;DME 与 ICDR-DME/SNOMED 的映射官方未提供
14 时间戳处理 非时序数据;采集期 2009-2017 已记录(无逐图日期可接受)
15 划分建议 官方 413/103 与 54/27 划分明确且分层,直接可用
16 泄漏讨论 ⚠️ 患者 ID 未发布,同一患者多图风险官方未讨论,需自担
17 标签分布 挑战赛论文 Table 4 公布 DR/DME 逐级 train/test 分布
18 测量偏倚 ⚠️ 单相机单协议消除设备方差的同时也屏蔽了设备鲁棒性学习
19 外部验证建议 跨库迁移有成熟协议(TMI 2021)与多个示范用例
20 版本记录 ⚠️ 无语义版本号;IEEE DataPort 仅以页面更新日期区分
21 预处理脚本 ⚠️ 官方零脚本;社区有 torch-em/Kaggle notebook 可代偿
22 合规要求 CC BY 4.0 一步到位,署名即可(含商用)
23 多模态对齐 ⚠️ 三类标注(掩码/分级/坐标)分布于不同子集,跨子集对齐需自行重建
24 去标识化 图像重编号、无患者元数据分发、伦理批准齐备

DAIMS 评分:19.5 / 24

评分解读优秀——规范维度(字典、分布、划分、合规、去标识化)近乎满分,反映其「为基准而生」的设计初衷;扣分集中在结构衔接层(编号体系分裂、标注映射缺失、无患者元数据),以及官方未提供预处理工程支撑。这些缺口社区已有代偿方案(Refined IDRiD、torch-em),属于「已知且可修」的类型。

对你意味着什么:①开箱即可跑通分级与分割两个官方任务,不必担心标签合规与划分争议——直接用官方 split 报基准;②动手前先做三件事:按 §4.5 建立「掩码缺失 = 无病灶」的自检、写死 DME ∈ {0,1,2} 的断言、把 81↔516 的内容对齐表做成项目资产(或直接换 Refined IDRiD);③任何准备部署的模型,把「IDRiD 富集先验 → 目标人群先验」的重校准列为上线前的固定步骤;④引用时同时给数据论文(Data 2018)与挑战赛论文(MedIA 2020)两条引用,许可义务即告满足。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
E-Ophtha / Messidor(跨库迁移基准) 法国 ADCIS / 公共 病灶分割与分级迁移性 按 TMI 2021 协议报告 F-score/AUC 普遍下降 Zhou et al.(IEEE TMI 2021)以 IDRiD 为锚点量化跨库迁移损失,提供可复现协议
IDRiD 作为零训练外部测试集 Nanded 诊所 彩照 DME/DR 判别(OPHDIAT 训练 → IDRiD 103 张评估) 图像级与像素级双口径 下降(未在源域微调) ExplAIn(arXiv 2008.05731)示范「 IDRiD 只评测、不训练」的独立评估用法
EyePACS 预训练 → IDRiD 微调 Kaggle 社区 分割小样本迁移 挑战赛与后续论文 F-score 相对纯 IDRiD 训练提升 MedIA 2020 Table 8:多支优胜队伍明确使用外部公开数据预训练
Refined IDRiD 复核标注 Prince of Songkla University 等 像素标注质量校验 修订日志 + 一致性评分 Data 2026:对 81 张原掩码做专家复核修订,公布逐图变更元数据

注:跨库数字不可直接比较——各工作的输入分辨率、ROI 处理、评测阈值与划分均不同;引用任何单一数字前请回读其协议章节。


§8 基准性能与生态

§8.1 排行榜(ISBI 2018 挑战赛官方结果)

Sub-challenge 1 病灶分割(在线赛,逐病灶类像素级 F-score)

病灶类 最佳 F-score 团队 关键技术
MA 微动脉瘤 0.5017 iFLYTEK-MIG(科大讯飞) 多尺度网络 + patch 训练
HE 出血 0.6804 VRT(VUNO Inc.) 集成模型 + 外部数据预训练
SE 软性渗出 0.6995 VRT(VUNO Inc.) 同上
EX 硬性渗出 0.885 PATech(平安科技) 检测-分割混合策略

(来源:官方 Leaderboard;完整引用:Porwal P, Pachade S, Kokare M, et al. IDRiD: Diabetic Retinopathy – Segmentation and Grading Challenge. Medical Image Analysis, 2020, 59: 101561. DOI: 10.1016/j.media.2019.101561)

Sub-challenge 2 疾病分级(现场赛,DR+DME 同时正确率):前三名依次为 LzyUNCC(UNC Charlotte)、VRT(VUNO)、Mammoth;评测口径要求一张图的 DR 与 DME 双双判对方计正确,因此分数系统性低于单任务 accuracy。

Sub-challenge 3 定位与视盘分割(现场赛):OD 检测欧氏距离最佳 21.072 px(DeepDR)、中心凹 64.492 px(DeepDR);OD 分割 Jaccard 最佳 0.9338(ZJU-Bll-SGEX),第二名 VRT 0.9305。

⚠️ 数值不可直接比较:分割四类的 F-score 由四类各自独立排名(同一团队未必四类都强);现场赛与在线赛口径不同;后续论文常用改动的分辨率与阈值,与挑战赛数字不可混表。

§8.2 SOTA 总结与选型建议

分割方向:MA 是分水岭——0.50 的 F-score 十年未被大幅刷新(微小病灶 + 标注模糊的结构性上限),EX 可达 0.88+;做方法研究建议按「EX/HE 先通管线、MA 再攻坚」排序。分级方向:挑战赛后社区已转向「大规模预训练 + IDRiD 小集微调」范式,单模型 384² EfficientNet 即可达到可用水平,集成主要收益在重度类别。定位方向:OD 分割已近饱和(Jaccard 0.93+),中心凹定位仍值得做(挑战赛最佳欧氏距离 64 px 量级)。

按研究目标选型:

你的目标 建议起点 参照分数 提醒
分割方法论文(投稿) U-Net/nnU-Net 类 + per-class F-score MA≈0.50、EX≈0.88(挑战赛口径) 与挑战赛同分辨率同阈值才可比
分割工程验证 torch-em 基线跑通后换骨干 自建五折 CV 别拿 test 调参(坑点 6)
分级模型(对标文献) EfficientNet + QWK 报告 双任务联合 accuracy 口径 需注明 accuracy 定义(DR+DME 双对)
可解释性研究 分割头 + Grad-CAM 与掩码比对 IoU 类自建指标 81 张掩码只覆盖有病灶人群
OD/中心凹定位 热图回归 ED 21/64 px(挑战赛) 注意坐标随 FOV 裁剪偏移

§8.3 评测协议

分割:输出与原图同分辨率的二值概率图,阈值 0.5(或按 PR 曲线选点),逐病灶类计算像素级 F-score,54 张训练/27 张测试,禁止使用测试掩码调参(现已公开,见坑点 6)。分级:413/103 固定划分,报告总体 accuracy、按 grade 的混淆矩阵与 quadratic weighted kappa(社区常用补充口径)。定位:预测中心点与真值欧氏距离(px);OD 分割报告 Jaccard。

任务 主指标 辅助指标 测试集 提交/报告口径
病灶分割(4 类) 逐类像素 F-score AUC、AP、IoU 27 张 每类独立排名,禁 test 调参
DR+DME 分级 DR 与 DME 同时正确 accuracy QWK、混淆矩阵 103 张 双任务联合口径
OD/中心凹定位 中心欧氏距离(px) 成功率 103 张 现场赛口径
OD 分割 Jaccard Dice 27 张 与 SC1 协议一致
数据集 规模 与 IDRiD 关系
EyePACS(Kaggle DR 2015) 88,702 张 大规模预训练源;IDRiD 常为其外部测试集
APTOS 2019 3,662 张 同为印度人群但真实筛查分布,泛化对照
Messidor-2 1,748 张 法国人群分级基准,跨库验证标配
E-Ophtha 463 张 MA/EX 像素掩码,分割跨库验证首选
DeepDRiD(Patterns 2022) 1,152 张 同团队续作挑战赛,增加图像质量估计
RFMiD(Data 2021) 3,200 张 同团队多病种扩展(46 类)
Refined IDRiD(Data 2026) 81 张 本数据集的专家复核增强版

§8.5 关键论文 Top 7

  1. Porwal P, Pachade S, Kamble R, et al. Indian Diabetic Retinopathy Image Dataset (IDRiD): A Database for Diabetic Retinopathy Screening Research. Data, 2018, 3(3): 25. DOI: 10.3390/data3030025 —— 数据论文,全部规格与标注协议的原始出处。
  2. Porwal P, Pachade S, Kokare M, et al. IDRiD: Diabetic Retinopathy – Segmentation and Grading Challenge. Medical Image Analysis, 2020, 59: 101561. DOI: 10.1016/j.media.2019.101561 —— 挑战赛结果论文,495 注册/148 队伍、全部基准数字与获胜方案构成。
  3. Zhou Y, Wang B, Huang L, et al. A Benchmark for Studying Diabetic Retinopathy: Segmentation, Grading, and Transferability. IEEE Transactions on Medical Imaging, 2021, 40(3): 818-828. DOI: 10.1109/TMI.2020.3037771 —— 把分割/分级/迁移性统一成可复现基准。
  4. Son J, et al.(VRT 团队)及各优胜队伍技术报告,见 MedIA 2020 Table 8 —— 集成 + 外部数据 + 病灶特化的工程范式。
  5. Chankhachon S, et al. Refined IDRiD: An Enhanced Dataset for Diabetic Retinopathy Segmentation with Expert-Validated Annotations and Comprehensive Anatomical Context. Data, 2026, 11(2): 30 —— 对 81 张掩码的专家复核修订与 12 类统一标注。
  6. Liu R, Wang X, Wu Q, et al. DeepDRiD: Diabetic Retinopathy – Grading and Image Quality Estimation Challenge. Patterns, 2022, 3(6): 100512. DOI: 10.1016/j.patter.2022.100512 —— 同团队后续挑战赛,把质量估计纳入评测。
  7. Pachade S, Porwal P, Thulkar D, et al. Retinal Fundus Multi-Disease Image Dataset (RFMiD). Data, 2021, 6(2): 14. DOI: 10.3390/data6020014 —— 从 DR 专病扩展到多病种的姊妹数据集。

§8.6 社区活跃度

挑战赛论文 Scopus 被引 154+(截至 2026-09),数据论文与挑战赛论文构成 IDRiD 的双引用轴;IEEE DataPort 页面记录超 13.7 万次下载(截至 2025-06 页面更新)。Kaggle 存在多个高下载量镜像与 notebook(grading 子集镜像 677+ 下载),HuggingFace、torch-em(Constantin Pape)等生态提供一行加载。病灶分割方向每年仍有以 IDRiD 为默认评测集的新论文,分级方向则更多将其作为外部验证集使用。

活跃度的三个信号:①引用持续——2021 年 TMI 迁移基准、2023 年 RETFound(Nature)等后续工作仍把 IDRiD 纳入评测矩阵;②衍生数据集——Refined IDRiD(2026)直接在原掩码上做质检修订,说明社区仍在对标注质量做增量投入;③教学渗透——Kaggle notebook 与课程项目大量使用其 grading 子集作为入门实验。

§8.7 生态快照

资源 类型 链接 状态(截至 2026-09) 推荐理由
官方挑战赛站点 文档/排行榜 https://idrid.grand-challenge.org/ 持续在线 规格、协议与官方分数的权威出处
IEEE DataPort 官方托管 https://ieee-dataport.org/open-access/indian-diabetic-retinopathy-image-dataset-idrid 2025-06-17 更新 CC BY 4.0 原版下载
torch-em idrid 模块 加载代码 https://constantinpape.github.io/torch-em/torch_em/data/datasets/medical/idrid.html 维护中 分割任务一行加载(走 Kaggle 镜像)
HuggingFace MedOtter/IDRiD 数据集镜像 https://huggingface.co/datasets/MedOtter/IDRiD 81 行 parquet 分割子集快速实验
Refined IDRiD 增强数据集 https://zenodo.org/records/17615903 CC BY 4.0 复核掩码 + 12 类统一标注
Kaggle grading 镜像 数据集镜像 kaggle.com/datasets/abdullahshafi315/ 212.26 MB 分级任务免申请(注意镜像许让与官方 CC BY 4.0 有差异,正式引用仍走官方)

§9 相关资源与引用

§9.1 官方资源

§9.1b 社区工具与教程

使用任何社区工具/镜像时,最终实验仍建议以官方 IEEE DataPort 数据复跑一次并登记版本,避免镜像差异混入结果。

§9.2 BibTeX 引用

@article{porwal2018idrid,
  title   = {Indian Diabetic Retinopathy Image Dataset (IDRiD): A Database for Diabetic
             Retinopathy Screening Research},
  author  = {Porwal, Prasanna and Pachade, Samiksha and Kamble, Ravi and Kokare, Manesh
             and Deshmukh, Girish and Sahasrabuddhe, Vivek and Meriaudeau, Fabrice},
  journal = {Data},
  volume  = {3},
  number  = {3},
  pages   = {25},
  year    = {2018},
  doi     = {10.3390/data3030025}
}

@article{porwal2020idrid,
  title   = {IDRiD: Diabetic Retinopathy - Segmentation and Grading Challenge},
  author  = {Porwal, Prasanna and Pachade, Samiksha and Kokare, Manesh and Deshmukh, Girish
             and Son, Jaemin and Bae, Woong and Liu, Lihong and Wang, Jianzong and Liu, Xinhui
             and Gao, Liangxin and Wu, Tianbo and Xiao, Jing and Wang, Fengyan and Yin, Baocai
             and Wang, Yunzhi and Danala, Gopichandh and He, Linsheng and Choi, Yoon Ho
             and Lee, Yeong Chan and Jung, Sang Hyuk and Li, Zhongyu and Sui, Xiaodan
             and Wu, Junyan and Li, Xiaolong and Zhou, Ting and Toth, Janos and Baran, Agnes
             and Kori, Avinash and Chennamsetty, Sai Saketh and Safwan, Mohammed and Alex, Varghese
             and Lyu, Xingzheng and Cheng, Li and Chu, Qinhao and Li, Pengcheng and Ji, Xin
             and Zhang, Sanyuan and Shen, Yaxin and Dai, Ling and Saha, Oindrila
             and Sathish, Rachana and Melo, Tania and Araujo, Teresa and Harangi, Balazs
             and Sheng, Bin and Fang, Ruogu and Sheet, Debdoot and Hajdu, Andras
             and Zheng, Yuanjie and Mendonca, Ana Maria and Zhang, Shaoting and Campilho, Aurelio
             and Zheng, Bin and Shen, Dinggang and Giancardo, Luca and Quellec, Gwenole
             and Meriaudeau, Fabrice},
  journal = {Medical Image Analysis},
  volume  = {59},
  pages   = {101561},
  year    = {2020},
  doi     = {10.1016/j.media.2019.101561}
}

§9.3 引用指南

学术使用最低要求:同时引用数据论文(porwal2018idrid)与挑战赛论文(porwal2020idrid),并在方法章节注明数据获取渠道(IEEE DataPort,CC BY 4.0)与所用的划分(官方 413/103 与 54/27)。若使用了 Refined IDRiD 或第三方镜像的预处理版本,须额外引用对应来源并声明与官方版本的差异。

不同使用场景的引用清单:

使用场景 必引 建议加引
使用原始图像与任一标注 porwal2018idrid + porwal2020idrid
仅分级任务 porwal2018idrid porwal2020idrid(划分依据)
仅分割任务 porwal2018idrid + porwal2020idrid 挑战赛获胜方案论文
使用 Refined IDRiD 原两条 + Refined IDRiD(Data 2026)
使用 Kaggle/HF 镜像 原两条 + 镜像版本说明 声明与官方版本的差异
OD/中心凹定位 原两条 挑战赛 SC3 结果章节

§10 AI 使用声明卡

§10.1 AI 模型列表

环节 模型/工具 用途
内容起草 大语言模型(千方病案医学编辑部部署) 基于 FACTS 事实清单起草本条目
事实核查 大语言模型 + 检索工具 对照官方页面与论文核验数字
结构校验 check_md.py(规则脚本) frontmatter、章节、纯净度自动检查

§10.2 AI 参与范围

AI 完成了资料检索汇总、初稿撰写与格式自检;全部医学结论、编码映射、数字与坑点均锚定 §10.3 列出的公开来源,由人工逐项复核后定稿。页面中的建议(预处理参数、模型配置)是社区公开实践的整理,非 AI 独立实验结论。

§10.3 输入来源列表

  1. Porwal P, et al. Indian Diabetic Retinopathy Image Dataset (IDRiD): A Database for Diabetic Retinopathy Screening Research. Data, 2018, 3(3): 25. DOI: 10.3390/data3030025
  2. Porwal P, et al. IDRiD: Diabetic Retinopathy – Segmentation and Grading Challenge. Medical Image Analysis, 2020, 59: 101561. DOI: 10.1016/j.media.2019.101561
  3. IDRiD 官方挑战赛站点 Data 页(相机规格、逐类掩码计数、许可)。https://idrid.grand-challenge.org/Data
  4. IDRiD 官方 Leaderboard(三个子挑战赛全部官方分数)。https://idrid.grand-challenge.org/Leaderboard/
  5. IEEE DataPort 数据页(DOI 10.21227/H25W98、下载统计、格式说明)。https://ieee-dataport.org/open-access/indian-diabetic-retinopathy-image-dataset-idrid
  6. ISBI 2018 官方挑战赛专页(挑战赛时间线)。https://biomedicalimaging.org/2018?p=154
  7. torch-em 文档 idrid 模块(Kaggle 镜像路径与目录结构)。https://constantinpape.github.io/torch-em/torch_em/data/datasets/medical/idrid.html
  8. HuggingFace MedOtter/IDRiD(81 张分割子集字段与逐图病灶列表)。https://huggingface.co/datasets/MedOtter/IDRiD
  9. Awesome-Medical-Dataset IDRID 条目(作者机构、文件结构)。https://github.com/CHY-coder/Awesome-Medical-Dataset/blob/main/resources/IDRID.md
  10. Xiao Q, et al. Improving Lesion Segmentation for Diabetic Retinopathy using Adversarial Learning. arXiv:2007.13854(54/27 划分与逐类训练/测试计数)。https://arxiv.org/pdf/2007.13854
  11. Beauchamp S, et al. ExplAIn: Explanatory Artificial Intelligence for Diabetic Retinopathy Diagnosis. arXiv:2008.05731(IDRiD 外部评估用法)。https://www.arxiv-vanity.com/papers/2008.05731/
  12. 基于跨层双线性池化的糖尿病视网膜病变分级算法研究. 中国循证医学杂志, 2021, DOI: 10.7507/1001-5515.202104038(train/test 逐级分布中文来源)。https://www.cjebm.com/article/10.7507/1001-5515.202104038
  13. Abdelmaksoud E, et al. Diabetic retinopathy grading system based on transfer learning. International Journal of Advanced Computer Research, 2021(train 逐级分布第二来源)。https://www.accentsjournals.org/PaperDirectory/Journal/IJACR/2021/1/1.pdf
  14. Chankhachon S, et al. Refined IDRiD. Data, 2026, 11(2): 30(复核标注、Zenodo 17615903)。https://www.mdpi.com/2306-5729/11/2/30
  15. Zhou Y, et al. A Benchmark for Studying Diabetic Retinopathy: Segmentation, Grading, and Transferability. IEEE TMI, 2021, 40(3): 818-828(迁移基准协议)。
  16. Liu R, et al. DeepDRiD: Diabetic Retinopathy – Grading and Image Quality Estimation Challenge. Patterns, 2022, 3(6): 100512(同团队续作)。
  17. Kaggle 镜像页 abdullahshafi315/indian-diabetic-retinopathy-image-datasetidrid(212.26 MB、518 文件、镜像许可说明)。https://www.kaggle.com/datasets/abdullahshafi315/indian-diabetic-retinopathy-image-datasetidrid

§10.4 人工校验记录

内容模块 审核者 审核方式 审核状态
规模数字与划分(516/413/103/81/54/27) 千方病案医学编辑部 对照官方站点、MDPI 数据论文与 MedIA 2020 三源交叉 ✅ 已通过
标签分布表(DR/DME 逐级) 千方病案医学编辑部 MedIA 2020 Table 4 + 两篇独立论文交叉验证 ✅ 已通过
排行榜数字与团队名 千方病案医学编辑部 官方 Leaderboard 页面逐项核对 ✅ 已通过
ICD-11/SNOMED CT 映射 千方病案医学编辑部 与 ICD-11/SNOMED 概念核对并加注声明 ✅ 已通过
坑点 1-8 可操作性 医疗 AI 数据工程师 对照社区代码与镜像数据实证 ✅ 已通过
代码可运行性(§6.1/6.3/6.4/6.9) 医疗 AI 数据工程师 依赖目录与官方 ZIP 结构逐行核对 ✅ 已通过

§10.5 AI 生成章节标注

本条目全部章节由 AI 起草、人工复核定稿:§1 概览、§3 规格、§4 数据结构、§6 AI 就绪指南(含坑点)与 §8 生态为 AI 整理撰写;§2 医学背景、§7 质量评估中的医学判断由人工编辑主导核定;固定模板文本(§0 免责声明、DAIMS 框架、§10 声明卡)来自编辑部规范。

AI 起草内容的锚定规则:全部规模数字、日期、分数与机构名直接取自 §10.3 的 17 个来源并在 FACTS 事实清单留痕;两处标注「推断/通义」的内容(ICDR 4-2-1 规则通义表、标注成本参照)明确标记为领域常识整理而非官方发布;未能在公开来源核实的字段一律省略(如患者人数、逐图采集日期、标注者一致性 kappa)。

§10.6 最后人工审核

最后人工审核日期:2026-09-05

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

返回 AI-Ready 数据集