信息速览

SUN Database — 昭和大学结肠镜视频数据库 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | 昭和大学结肠镜视频数据库(SUN Database) |
| 英文全称 | SUN Colonoscopy Video Database(Showa University and Nagoya University) |
| 别名/简称 | SUN Database;SUN 结肠镜视频数据库。⚠️ 与纽约大学发布的 SUN Scene UNderstanding 场景识别图像数据集完全无关,检索时请勿混淆 |
| 疾病分类(ICD-11) | DB35 大肠息肉(含腺瘤与锯齿状病变)/ 2B91 结直肠恶性肿瘤(浸润性癌终点,详见 §2.1) |
| SNOMED CT | 72951001 Polyp of colon / 44441009 Adenoma of colon / 363406005 Malignant tumour of colon(详见 §2.1b) |
| 数据模态 | 高清结肠镜视频序列(HDTV 白光成像,约 30 fps) |
| AI 任务类型 | 息肉检测(CADe 边界框目标检测)、帧级二分类、息肉级检出评估、结肠镜视频时序理解 |
| 样本总数 | 113 段视频 / 发布版 158,690 帧(49,136 息肉帧 + 109,554 非息肉帧;另有论文口径 152,560 帧,详见 §3.2) |
| 数据大小 | 官方未公布确切下载体积;内容为 158,690 张 1,240×1,080 JPEG 图像及同名 TXT 标注文件(详见 §3.4) |
| 数据格式 | JPEG 图像 + 每图一个 TXT 标注文件(角点绝对坐标) |
| 许可证 | 自定义非商业研究/教育许可(知识产权归昭和大学北横滨医院与名古屋大学 Mori 研究室) |
| 访问级别 | 申请审核(经官网联系 Mori 研究室,无公开直链) |
| DUO 标签 | NPUNCU |
| 语言 | 日语临床环境;标注文件与官方文档为英文格式说明 |
| 首发日期 | 2020-10-07 |
| 最后更新 | 2022-10-08(增补最新获批模型性能;2022-07-11 曾修订息肉位置表) |
| 发布机构 | 昭和大学北横滨医院消化疾病中心 & 名古屋大学研究生院信息学研究科 Mori 研究室 |
| 官方主页 | sundatabase.org |
| 下载地址 | sundatabase.org(联系申请获取) |
| DOI | 10.1016/j.gie.2020.07.060(配套论文;数据集本身未单独注册 DOI) |
| 引用次数 | 285+(Google Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐(3/5)— 标注格式简单统一、病理金标准完备、官方基准清晰;扣分项:无官方训练/测试划分、无预处理脚本、角点 TXT 需转换为框架格式、三套帧数口径并存 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、结直肠息肉临床背景与筛查任务定义、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(逐帧 TXT 标注解析、视频-帧两级主键)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与昭和大学、名古屋大学、Cybernet Systems 无任何商业利益关联。本页面不销售 SUN Database 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述任何机构的资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。SUN Database 知识产权归昭和大学北横滨医院与名古屋大学 Mori 研究室所有,仅限非商业研究/教育用途,须经官网申请获取;商业用途(含衍生数据)须事先联系 Mori 研究室获得书面许可。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? SUN Database 是日本昭和大学北横滨医院消化疾病中心与名古屋大学 Mori 研究室在 2020 年 10 月联合发布的公开结肠镜视频数据库。它的名字 SUN 取自两家机构的英文首字母(Showa University and Nagoya University),与计算机视觉领域那套著名的 SUN 场景识别数据集(Scene UNderstanding)毫无关系。库内收录 113 段真实结肠镜检查的高清视频帧:100 段各含 1 个经病理确诊的息肉,13 段为完全阴性的对照片段,发布版合计 158,690 帧,每一帧都带有内镜专家绘制的边界框标注。
为什么重要? 在 SUN 之前,绝大多数公开息肉数据集都是静态图片(如 Kvasir 系、CVC 系),而真实肠镜检查是连续视频流,息肉会在视野中停留成百上千帧。SUN 提供了高清视频粒度、逐帧框标注与病理金标准三者的组合,并直接服务于一个已经获得日本监管批准的临床 CADe 系统(EndoBRAIN-EYE,2022 年 7 月获批)的公开验证——这让 SUN 成为少数"从数据集到获批器械"闭环可追溯的医学影像基准。
我能用它做什么? 你可以用它做:结肠镜息肉检测算法(CADe)的标准化评测(官方给出帧级与息肉级双协议基准);时序模型(3D-CNN、视频分割)的训练与验证;AI 辅助肠镜教学;以及新算法与已获批系统之间的参照对比。注意它不适合做病理亚型分类(类别极不均衡),也不能替代多中心泛化性评估。
§1.1 技术摘要
SUN Database 的构建流程如下(依据Misawa et al. 2021 主论文与官网):研究团队于 2018 年 10 月至 2019 年 1 月在昭和大学北横滨医院连续采集高清(HDTV)白光结肠镜检查视频,共筛得 1,405 段视频,其中 797 段含至少 1 个息肉;从中随机抽取 100 段各含 1 个独立息肉的视频,再随机抽取 13 段无息肉阴性视频,构成发布数据库。所有帧由 3 名研究助理逐帧标注边界框,再经多轮内镜专家裁定(adjudication)质检;100 个息肉均以病理组织学诊断为金标准。官方基准系统 EndoBRAIN-EYE(YOLOv3 + Adam 优化)在 5 个日本中心 56,668 帧独立图像上训练,在 SUN 上取得帧级灵敏度 90.5%(95%CI 90.2–90.7)、特异度 93.7%(95%CI 93.5–93.8)、息肉级灵敏度 98.0%(98/100,95%CI 93.0–99.8)。数据以 JPEG 图像 + 每图一个 TXT 角点坐标文件的形式发布,经官网申请后可用于非商业研究/教育用途。
§1.2 战略价值
维度一:监管级基准的可追溯性。 多数公开医学影像数据集与真实获批器械之间没有直接谱系关系,而 SUN Database 的官方基准系统 EndoBRAIN-EYE 即为 Cybernet 公司商品化的 CADe 产品,其训练与验证路线完整发表于Gastrointestinal Endoscopy,并于 2022 年 7 月获得日本监管批准。这意味着:任何新算法在 SUN 上与官方数字对比时,参照系不是一个纸面模型,而是一台已在临床部署的器械。对算法开发者而言,这种"数据集 → 论文 → 获批器械"的完整溯源链在同类数据集中极为罕见,也为监管科学(SaMD 证据链)研究提供了真实样本。
维度二:视频粒度 + 病理金标准的稀缺组合。 第三方综述将 SUN 与同类视频级数据集并列比较:LDPolypVideo 提供 160 段标注视频/40,266 帧但无病理金标准;PICCOLO 仅有 3,433 张静态图;ASU-Mayo 未公开。SUN 的 158,690 帧规模、每视频单息肉的清晰结构、以及 100 个息肉全部具备病理分型(腺瘤/锯齿状病变/癌),使其成为进行"检测性能 vs 病理亚型"分析的首选公开载体。其姊妹数据集 SUN-SEG 进一步补齐了分割级标注(mask/boundary/scribble/polygon/视觉属性 5 层),形成检测 + 分割双生态。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态/任务 | 标注类型 | 病理金标准 | 与 SUN 的差异 |
|---|---|---|---|---|---|
| SUN Database | 113 段视频 / 158,690 帧 | 结肠镜视频 / 检测 | 逐帧边界框 | ✅ 100 息肉全部病理分型 | 本体 |
| SUN-SEG(姊妹) | 1,106 段视频 / 158,690 帧 | 结肠镜视频 / 分割 | mask、boundary、scribble、polygon、5 类视觉属性 | 沿用 SUN 病理 | 从 SUN 人工修剪重构,面向 VPS 任务(Ji et al. 2022) |
| LDPolypVideo | 160 段视频 / 40,266 帧 | 肠镜视频 / 分割 | 逐帧 mask | ❌ | 规模约为 SUN 的 1/4,无病理分型(同上综述) |
| PICCOLO | 3,433 张图 / 76 个病变 | 静态图 / 检测 | 息肉 mask | 部分 | 无视频时序信息(同上综述) |
| ASU-Mayo | 19,400 帧 | 肠镜视频 / 分割 | 逐帧 mask | ❌ | 未公开获取(同上综述) |
§1.4 版本时间轴
| 日期 | 事件 | 说明 |
|---|---|---|
| 2020-10-07 | SUN Database 正式发布 | 配套论文投稿 Gastrointestinal Endoscopy(官网) |
| 2022-05-11 | 姊妹数据集 SUN-SEG-Rejected-Labels 发布 | 提供被拒绝标注样本,用于标签噪声研究(VPS 仓库) |
| 2022-07-11 | 官网修订息肉位置表(Table 2) | 修正部分息肉的解剖位置标注(AMED 8K 页面) |
| 2022-07 | 基准系统 EndoBRAIN-EYE 获日本监管批准 | 获批版模型在 SUN 上重测的性能随后公布(官网) |
| 2022-10-08 | 官网增补最新获批模型性能 | 新增帧级灵敏度 91.5%、特异度 98.2% 的获批版数字(AMED 8K 页面) |
时间轴的阅读要点:SUN 原库本身自 2020 年首发后未发布新版本的数据体,两次官网更新(2022-07 修订位置表、2022-10 增补性能)都是对元数据与基准页面的修订;2022 年生态的主要扩充发生在姊妹数据集一侧(SUN-SEG 与 Rejected-Labels)。因此引用时"版本"应以官网页面修订日期为准,而数据包内容以你实际获得的发布物为准(与坑点 1 的口径纪律一致)。
§1.5 典型应用场景
- CADe 算法标准化评测:在官方协议(帧级 IoU ≥ 0.3 + 息肉级命中)下与 EndoBRAIN-EYE 的 90.5%/93.7%/98.0% 三项数字直接对照(详见 §8.3)。
- 时序与视频模型研究:利用同一息肉连续数百帧的长时序结构,开发或验证 3D-CNN、视频目标分割(结合 SUN-SEG)等时序模型。
- 检测性能-病理亚型分析:将帧级/息肉级检出结果与 100 个息肉的病理分型(增生性、SSL、腺瘤、TSA、高级别、浸润癌)关联,评估 AI 对不同风险层级病变的敏感性。
- AI 辅助内镜教学:113 段含专家标注与阴性对照的真实视频片段,可用于住校医师的息肉识别训练材料(非商业教育用途内)。
- 域适应与泛化性研究:作为日本单中心高清白光域的源域或目标域,测试算法跨中心、跨设备的漂移(参考 §7.8 外部验证矩阵)。
§2 医学背景
§2.1 ICD-11 编码映射
SUN 的 100 个息肉均以病理组织学诊断为金标准,覆盖 WHO 结直肠息肉分类中的增生性/锯齿状与腺瘤-癌序列两大通路。ICD-11 对息肉采用"基础条目 + 形态学后组配"的簇编码策略,因此逐病变精确编码需要形态学修饰词;下表给出数据集病理分组到 ICD-11 的锚点映射。
| 病理分组(病变数) | ICD-11 锚点编码 | 中文名称 | 映射说明 |
|---|---|---|---|
| 增生性息肉(7) | DB35 | 大肠息肉 | 锯齿状通路良性病变,ICD-11 息肉基础条目配形态学轴组配 |
| 无蒂锯齿状病变 SSL(4) | DB35 | 大肠息肉 | 2019 年后 WHO 命名由"无蒂锯齿状腺瘤"改为"病变" |
| 低级别腺瘤(82) | DB35 | 大肠息肉 | 腺瘤性通路主体,管状/绒毛状形态需后组配修饰 |
| 传统锯齿状腺瘤 TSA(2) | DB35 | 大肠息肉 | 罕见锯齿状亚型,兼具两种通路特征 |
| 高级别腺瘤(4) | DB35 | 大肠息肉 | 上皮内瘤变程度进入高级别,临床管理升级 |
| 浸润性癌(1) | 2B91 | 结直肠恶性肿瘤 | 恶性终点,癌变突破黏膜肌层 |
(ICD-11 码沿用公开疾病映射库对 Colon polyp 的 DB35 记录与 ICD-10 K63.5 对照口径;恶性终点取 2B91 结直肠恶性肿瘤锚点。ICD-11 对息肉采用"基础条目+后组配"的簇编码策略,逐病变编码需病理形态学修饰词。)
§2.1b SNOMED CT 映射
| 病理分组 | SNOMED CT | 首选术语 | 映射说明 |
|---|---|---|---|
| 息肉(总类) | 72951001 | Polyp of colon | 数据集主体病变的上位概念 |
| 增生性息肉 | 1344661002 | Hyperplastic polyp of colon | 锯齿状通路良性亚型 |
| 无蒂锯齿状病变 | 443157008 | Sessile serrated adenoma | SNOMED 沿用"腺瘤"旧称,与 WHO 新命名 SSL 对应 |
| 腺瘤(低级别/高级别) | 44441009 | Adenoma of colon | 腺瘤性通路主体概念,分级靠后组配 |
| 传统锯齿状腺瘤 | —(归入 72951001 息肉锚点) | Traditional serrated adenoma | 建议以形态学轴组配表达 |
| 浸润性癌 | 363406005 | Malignant tumour of colon | 恶性终点编码锚点 |
§2.2 疾病简介与流行病学背景
结直肠癌是全球范围内最常见的恶性肿瘤之一,也是少数可以通过筛查显著降低发病与死亡率的癌种。"腺瘤-癌序列"模型指出,大多数结直肠癌经由腺瘤性息肉逐步演进而来,这一演进窗口常以年计,为内镜下"发现并切除息肉"提供了干预机会。因此,结肠镜检查的质量核心指标之一是腺瘤检出率(ADR)——大量研究证实 ADR 与间期癌(检查间隔内发生的癌)风险显著负相关,而相当比例的腺瘤会在常规肠镜中被漏检,这正是 Misawa 等人在主论文中提出 AI 辅助检测(CADe)的动机:通过实时框选提示,降低腺瘤漏诊的可能性。
息肉的内镜形态直接影响检测难度:隆起型(Ip/Is)边界清晰、易于识别;平坦型(IIa/IIb/IIc)与黏膜颜色接近,是漏检高发人群。SUN 中平坦病变占 34%(34/100),微小息肉(≤5 mm)占 60%(60/100),这一构成使其对"小而平"的检测能力评估具有真实压力测试价值。病理亚型方面,增生性息肉与 SSL 属锯齿状通路,腺瘤与癌属腺瘤性通路,两类通路的检出与切除策略不同,也使得"检出"与"分型"成为两个难度完全不同的任务(详见 §6.5 坑点 7)。
SUN 的 100 个息肉在这两条癌变通路上的分布如下,理解通路背景有助于解读 §8.1 的分层灵敏度数字:
| 癌变通路 | SUN 中的分组 | 数量合计 | 临床意义 |
|---|---|---|---|
| 腺瘤性通路(经典) | 低级别腺瘤、高级别腺瘤、浸润性癌 | 82 + 4 + 1 = 87 | 息肉-腺瘤-癌的逐步演进,切除即阻断;CADe 检出该组收益最大 |
| 锯齿状通路 | 增生性息肉、SSL、TSA | 7 + 4 + 2 = 13 | 右半结肠扁平锯齿状病变易漏检,是间期癌的重要来源 |
注:通路归类用于辅助理解;SSL 的命名与分类在不同指南版本间存在演变(WHO 2019 起"无蒂锯齿状腺瘤"更名为"无蒂锯齿状病变"),SUN 官网沿用其采集时期的病理术语。
§2.3 临床任务定义
| 任务类型 | 定义 | 在 SUN 中的实现 | 临床对应指标 |
|---|---|---|---|
| 息肉检测(CADe) | 在每一帧中标出息肉所在位置(边界框),不判断性质 | 逐帧边界框 + class_id 二分类(0=息肉帧/1=非息肉帧) | 帧级灵敏度/特异度、息肉级检出率 |
| 帧级二分类 | 判断当前帧是否包含息肉 | 阴性视频 13 段 + 阳性视频非息肉帧提供负样本 | 灵敏度/特异度(帧级口径) |
| 息肉级检出 | 一段视频中的息肉是否至少被一帧命中 | 100 个独立息肉逐一判定(命中即 TP) | 息肉级灵敏度(98/100 = 98.0%) |
| 病理关联分析 | 将检出结果与病理亚型对照 | 100 息肉均具病理分型 | 分亚型灵敏度(微小/隆起/平坦) |
注:SUN 不包含 NBI(窄带成像)等电子染色模式,也不包含切除后的离体图像;它模拟的是"白光检查中实时发现息肉"这一 CADe 核心场景,而非 CADx(性质诊断)场景。
SUN 官网公布的形态二分类(隆起/平坦)对应内镜 Paris 分型的粗粒度聚合,对照关系与官方分层灵敏度如下(灵敏度数字来自MDPI Diagnostics 2022对官方结果的转述):
| SUN 形态组 | 数量 | 大致对应 Paris 分型 | 息肉级灵敏度(官方基准) | 检测难度来源 |
|---|---|---|---|---|
| 微小(diminutive) | 60(≤5 mm) | 0-Is/IIa 小型 | 98.3% | 目标极小,但对比度尚可 |
| 隆起(protruded) | 66(与微小组有交叉计数口径) | Ip/Is | 98.5% | 边界清晰,最容易 |
| 平坦(flat) | 34 | IIa/IIb/IIc | 97.0% | 与黏膜色差小、边界模糊 |
(官网按大小与形态各公布一套分布,二者属于不同维度的属性标注,数量口径不互斥;引用时须分别注明维度。)
§2.4 患者人群画像
| 维度 | 内容 |
|---|---|
| 来源机构 | 昭和大学北横滨医院消化疾病中心(日本横滨市,单中心) |
| 采集时间 | 2018-10 至 2019-01,连续采集(consecutive,非挑选) |
| 样本量 | 99 名患者 / 100 个独立息肉 / 113 段视频(100 阳性 + 13 阴性) |
| 性别构成 | 男 71(71.7%)/ 女 28(28.3%) |
| 年龄 | 中位 69 岁(IQR 58–74) |
| 种族/ ethnicity | 未公布(日本单中心,推断以日本人群为主) |
| 就医类型 | 因结肠镜检查采集;筛查/监测/诊断细分未公布 |
| 排除情况 | 发布版删除了 CADe 系统判定为"不合适(inappropriate)"的帧(如模糊、快速甩动帧) |
§2.5 临床价值定位
对 CADe 开发者,SUN 的价值在于提供了一个"已获批系统公开成绩单":EndoBRAIN-EYE 在 SUN 上的帧级灵敏度 90.5%/特异度 93.7% 与息肉级 98.0%(98/100)构成可对标的监管级锚点,且 2022 年 7 月获批版本又公布了重测数字(91.5%/98.2%),展示了一个真实 CADe 产品从论文到获批的性能演进。对临床研究者,100 个息肉的病理分型(含 1 例浸润性癌、4 例高级别腺瘤)允许将 AI 检出率与病变风险层级交叉分析,回答"AI 是否更容易漏掉高危病变"这类问题。对教学场景,阳性与阴性视频对、专家边界框与病理结论三位一体,是难得的完整教学闭环素材。需要强调:SUN 单中心、白光、日本人群的构成,使其结论不能直接外推至其他设备、染色模式或人群(详见 §7.3)。
§2.6 金标准参考表
| 划分维度 | 标注方式 | 标注者 | 性质 |
|---|---|---|---|
| 帧级边界框 | 每帧以矩形框标出息肉位置,同时给出帧级类别(息肉/非息肉) | 3 名研究助理初标 + 多轮内镜专家裁定(论文全文) | 参照标准(reference standard) |
| 息肉级身份 | 每段阳性视频恰含 1 个独立息肉,不跨视频重复 | 研究团队设计(随机抽取 100 视频/100 息肉) | 结构化金标准 |
| 病理分型 | 内镜下切除后组织病理学诊断(增生性/SSL/腺瘤/TSA/高级别/浸润癌) | 病理医师(机构常规临床病理流程) | 组织学金标准 |
| 病变属性 | 大小(中位 5 mm,IQR 3–7)、形态(隆起 66/平坦 34)、部位(右半 47/左半 44/直肠 8) | 内镜医师测量与记录(官网修订版 Table 2) | 临床属性标注 |
§3 数据集规格
§3.0 版本抉择矩阵
SUN 生态存在"原始库 + 两个姊妹发布物",请按需求选择:
| 你的需求 | 推荐版本 | 规模 | 理由 |
|---|---|---|---|
| 复现/对标官方 CADe 检测基准(帧级/息肉级) | SUN Database 原版(发布版口径) | 113 视频 / 158,690 帧 | 官方 EndoBRAIN-EYE 数字直接基于此库(官网) |
| 视频息肉分割(VPS)/属性研究 | SUN-SEG(VPS 仓库) | 1,106 视频 / 158,690 帧 | 提供 mask/boundary/scribble/polygon/属性 5 层标注 |
| 标签噪声/标注可靠性研究 | SUN-SEG-Rejected-Labels | 被拒绝标注子集 | 2022-05-11 发布,专供拒绝式标签研究 |
| 病理亚型关联分析 | SUN Database 原版 | 100 息肉病理分型 | SUN-SEG 不含新的病理信息 |
| 静态图像检测快速实验 | SUN 帧级数据即可 | 158,690 张 JPEG | 帧即图像,无需视频解码 |
§3.1 模态详情
SUN Database 的唯一模态是高清结肠镜视频序列。原始视频以 HDTV(高清电视)规格的白光结肠镜采集,发布形式为逐帧展开的 JPEG 图像(分辨率 1,240×1,080,约 8:7 的非标准宽高比)及同名 TXT 标注。视频帧率未在官方文档中明示,但据官网公布的阴性视频元数据(如 ID2 号视频 10,073 帧/335.8 秒)推算约为 30 fps。数据集仅包含白光成像(WLI),不包含 NBI、BLI 等电子染色变体,也不包含色素内镜;这一"纯白光"特性与实时 CADe 的临床工作流一致,但意味着在染色模式下训练的模型无法直接迁移(DeepDyve 论文转述)。每段阳性视频恰含 1 个独立息肉,13 段阴性视频时长 85.6–511.4 秒(2,568–17,046 帧不等),构成完整的阴性对照。
与静态图数据集相比,SUN 的"视频发布为逐帧图像"形式带来三点结构差异,使用前须建立正确预期:
| 维度 | 静态图数据集(如 PICCOLO/Kvasir 系) | SUN Database | 对使用者的含义 |
|---|---|---|---|
| 样本独立性 | 图像间近似独立抽样 | 同一息肉连续数百帧高度自相关 | 必须按视频分组划分(坑点 4) |
| 时间维度 | 无 | 有(检查过程、退镜方向、镜头运动) | 可做时序建模;帧乱序增强危险(§6.6) |
| 存储形式 | 单文件数据集常见 | 数十万个独立 JPEG + TXT 小文件 | 需 manifest/打包优化 IO(坑点 3) |
§3.2 子集样本数与口径对照
SUN 存在三套并存的帧数口径,是使用该数据集的第一注意事项(详细成因与对策见 §6.5 坑点 1 与坑点 6):
| 口径 | 来源 | 视频数 | 总帧数 | 息肉帧 | 非息肉帧 |
|---|---|---|---|---|---|
| 论文原始分析 | Misawa et al. 2021 | 113(100+13) | 152,560 | 49,799 | 102,761 |
| 官网发布版 | sundatabase.org | 113(100+13) | 158,690 | 49,136 | 109,554 |
| 第三方综述转述 | Frontiers in AI 2026 | 113(100+13) | — | 49,136 | 109,554 |
| 德国团队转述 | PMID 36826945 | — | 157,882 | — | — |
口径差异的官方解释:论文统计的是验证库构建时的原始帧数,而发布版删除了 CADe 系统判定为"不合适"的帧(官网注释),因此发布版反而比论文多出非息肉帧(102,761 → 109,554)——这提示删除主要发生在阳性视频的息肉帧与非息肉帧的不同子集上。第三方转述数字(157,882)成因未明,仅供交叉参考。建议以你实际解压得到的帧数为准,并在实验报告中显式声明口径。
| 子集 | 视频数 | 帧数(发布版) | 内容 |
|---|---|---|---|
| 阳性(含息肉) | 100 | 49,136(息肉帧) | 每段恰含 1 个独立息肉,息肉在视野内通常连续出现数百帧 |
| 阴性(无息肉) | 13 | 109,554 | 85.6–511.4 秒不等(2,568–17,046 帧/段),正常黏膜与退镜过程 |
§3.3 数据格式
| 组成 | 格式 | 说明 |
|---|---|---|
| 图像 | JPEG | 1,240×1,080 像素,HDTV 白光帧 |
| 标注 | TXT(每图一个) | 行格式 Filename min_X,min_Y,max_X,max_Y,class_id,一行一框;class_id 0=息肉帧、1=非息肉帧(注意与常见 0=背景惯例相反) |
| 坐标系 | 绝对角点坐标 | min/max 两个角点,像素单位,非 xywh、非归一化 |
| 元数据 | 官网 HTML 表格 | 患者统计、息肉属性(大小/形态/部位/病理)、阴性视频帧数与时长均在官网页面公布,未随包附带机器可读 CSV |
§3.4 存储大小
官方渠道(官网与论文)未公布发布包的确切磁盘体积,本页不作估算数字。数据构成的确定性信息为:158,690 张 1,240×1,080 分辨率的 JPEG 图像 + 数量相当的 TXT 标注文件(每图一个)+ 官网 HTML 元数据表。按同分辨率内窥镜 JPEG 的常规码率量级,解压后位于数十 GB 区间;申请时可直接向 Mori 研究室确认确切体积与分发方式(分卷压缩/硬盘邮寄等)。
§3.5 标注方式
| 标注对象 | 方式 | 说明 |
|---|---|---|
| 帧级边界框 | 人工标注 | 每帧一个矩形框(阳性帧),由研究助理以图形工具绘制,输出绝对角点坐标 |
| 帧级类别 | 人工标注 | 0=息肉帧/1=非息肉帧,直接写入标注行尾 |
| 质量控制 | 多轮专家裁定 | 3 名研究助理初标 → 昭和大学专家内镜医师多轮 adjudication(论文) |
| 病理分型 | 临床病理诊断 | 内镜切除后常规组织病理学流程,非研究性二次阅片 |
§3.6 标注者资质与一致性
帧级标注由 3 名研究助理完成,最终标签经昭和大学专家内镜医师多轮裁定;专家团队以工藤信荣(Shin-ei Kudo,昭和大学北横滨医院消化疾病中心主任、国际知名结肠镜专家)为核心。官方文档未公布标注者间一致性系数(如 Cohen’s kappa 或 IoU 一致性),这是该数据集文档的一项缺口——使用者若对边界框精度敏感(如小息肉回归任务),建议抽样 50–100 帧自行复测框一致性。病理诊断来自机构常规临床病理报告,未公布中央病理复审信息。
§3.7 采集周期
2018 年 10 月至 2019 年 1 月,共 4 个月,连续采集(consecutive sampling)。1,405 段视频构成验证库候选池,其中 797 段含至少 1 个息肉;最终随机抽取 100 段阳性(各含 1 个独立息肉)与 13 段阴性。连续采集 + 随机抽取的设计避免了"挑好病例"的选择偏倚,这是 SUN 相对于许多整理式(curated)数据集的方法学优势(主论文摘要)。
§3.8 地域覆盖
单中心:日本横滨市,昭和大学北横滨医院。无多中心数据;患者人群为日本就诊人群(性别比男 71/女 28,中位 69 岁)。使用时须将"日本单中心白光高清"作为域边界条件(详见 §7.1 偏倚表与 §7.3 泛化性表)。
§3.9 设备规格
| 项目 | 规格 |
|---|---|
| 内镜类型 | HDTV 白光结肠镜(具体厂商/型号官方未公布) |
| 成像模式 | 白光成像(WLI),无 NBI/BLI/色素内镜 |
| 图像分辨率 | 1,240×1,080(约 8:7,非标准 16:9) |
| 帧率 | 约 30 fps(据官网阴性视频元数据推算,官方未明示) |
| 输出形式 | 逐帧 JPEG(无原始视频文件) |
§3.10 深度溯源链
| 环节 | 主体 | 说明 |
|---|---|---|
| 临床采集 | 昭和大学北横滨医院消化疾病中心 | 2018-10 至 2019-01 连续采集, Misawa、Kudo 团队 |
| 数据库构建 | 名古屋大学研究生院信息学研究科 Mori 研究室(森健作) | 标注流程组织与数据库工程 |
| 资助 | AMED"新医疗器械开发/8K 高清医学影像数据"项目;JSPS KAKENHI 19K17504 | 主论文致谢与资助声明(DOI 页) |
| 专利 | JP 6059271、JP 6580446 | 授权给 Cybernet Systems 与昭和大学 |
| 产品化 | EndoBRAIN-EYE(Cybernet Systems) | 基于该技术路线的 CADe 系统,2022-07 获日本监管批准(官网) |
| 注册 | UMIN 000037064 | 论文对应的临床试验注册号 |
§4 数据结构
§4.0 目录树
以下为按官方发布格式(JPEG + 每图一个同名 TXT)还原的示意目录结构(实际子目录命名以官方发布包为准):
SUN_database/ # 解压后根目录(示意)
├── polyp/ # 息肉帧图像(发布版 49,136 帧)
│ ├── ID001_000001.jpg # 视频帧(JPEG,1,240×1,080)
│ ├── ID001_000001.txt # 同名标注文件,一行一框
│ ├── ID001_000002.jpg
│ ├── ID001_000002.txt
│ ├── ...
│ └── ID100_00XXXX.txt
├── normal/ # 非息肉帧图像(发布版 109,554 帧)
│ ├── ID101_000001.jpg # 13 段阴性视频逐帧展开
│ ├── ID101_000001.txt
│ └── ...
└── (官网 HTML 元数据表) # 患者统计/息肉属性表见官网页面
单个标注文件的内容示例(一行一框,class_id 0=息肉帧、1=非息肉帧):
ID001_000001.jpg 213,412,588,731,0
§4.1 DAIMS 字段字典
以"一帧一条记录"的宽格式视角,SUN 的全部字段如下(image 级 4 字段来自标注文件;lesion 级 6 字段来自官网元数据表,按阳性视频聚合):
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| image_file | string | JPEG 图像文件名 | ID001_000001.jpg | 样本主键,拼接 data_root 读取 | 无 | 无缺失 | 正则 ID\d+_.*\.jpg |
| class_id | int | 帧级类别 | 0 | 监督信号;0=息肉帧、1=非息肉帧(反惯例) | 标注裁定后无 | 无缺失 | |
| min_X / min_Y | int | 边界框左上角点(像素) | 213 / 412 | 检测框回归目标 | 专家裁定后框级抖动未量化 | 非息肉帧无框(结构性缺失,非缺失值) | [0, 1240) / [0, 1080) |
| max_X / max_Y | int | 边界框右下角点(像素) | 588 / 731 | 同上 | 同上 | 同上 | [0, 1240) / [0, 1080) |
| video_id | string | 源视频编号(从文件名解析) | ID001 | 分组划分防泄漏的关键(§5.3) | 无 | 无缺失 | ID001–ID113(示意) |
| pathology | string | 息肉病理分型(官网 Table) | 低级别腺瘤 | 分亚型性能分析 | 机构常规病理流程 | 阴性视频无(结构性) | 6 类,见 §4.2 |
| lesion_size_mm | int | 息肉大小(mm) | 5 | 小息肉分层评估 | 内镜估测,非离体实测 | 阴性视频无 | IQR 3–7 |
| morphology | string | 形态(隆起/平坦) | 平坦 | 难例分层(平坦 34%) | Paris 分型粒度未公布 | 阴性视频无 | |
| location | string | 解剖部位 | 右半结肠 | 部位分层分析 | 2022-07-11 官网曾修订此表 | 1 个病变部位未见公布 |
§4.2 标签分布
帧级标签(发布版口径,官网):
| 帧级类别 | 帧数 | 占比 |
|---|---|---|
| 息肉帧(class_id=0) | 49,136 | 31.0% |
| 非息肉帧(class_id=1) | 109,554 | 69.0% |
| 合计 | 158,690 | 100% |
病变级病理分布(100 个息肉,全部病理确诊):
| 病理分组 | 数量 | 占比 |
|---|---|---|
| 低级别腺瘤 | 82 | 82% |
| 增生性息肉 | 7 | 7% |
| 无蒂锯齿状病变(SSL) | 4 | 4% |
| 高级别腺瘤 | 4 | 4% |
| 传统锯齿状腺瘤(TSA) | 2 | 2% |
| 浸润性癌 | 1 | 1% |
病变级属性分布:微小息肉(≤5 mm)60/100;中位大小 5 mm(IQR 3–7);隆起 66 / 平坦 34;部位右半结肠 47 / 左半结肠 44 / 直肠 8(官网 Table,2022-07-11 修订版)。
§4.3 关键统计
| 统计项 | 数值 | 来源 |
|---|---|---|
| 阴性视频时长范围 | 85.6–511.4 秒(2,568–17,046 帧/段) | 官网 |
| 示例:ID2 阴性视频 | 10,073 帧 / 335.8 秒(约 30 fps) | 官网 |
| 阳性视频帧数(官方评估分母) | 48,344 帧(TP 44,902 / FN 3,964 / FP 156 / 不可分析 132) | 官网 |
| 阴性视频帧数(官方评估分母) | 109,516 帧(FP 1,696 / TN 90,068 / 不可分析 17,752) | 官网 |
| 训练集(官方基准,与 SUN 独立) | 5 个日本中心、3,106 例结肠镜、56,668 帧(训练 51,899 + 调优 4,769) | 论文 |
| 患者统计 | 99 名:男 71 / 女 28,中位 69 岁(IQR 58–74) | 官网 |
官方基准在 SUN 上的完整评估明细(官网公布,可作为复现时的对账表):
| 评估子集 | 帧数 | TP | FN | FP | TN | 不可分析 | 导出指标 |
|---|---|---|---|---|---|---|---|
| 阳性视频 | 48,344 | 44,902 | 3,964 | 156 | — | 132 | 见下方口径说明 |
| 阴性视频 | 109,516 | — | — | 1,696 | 90,068 | 17,752 | 特异度 98.2%(90,068/91,764,获批版口径) |
注意:上表为官网公布的计数明细;其中特异度一行与官网获批版公布的分母(91,764)一致。这些计数与论文摘要的 90.5%/93.7%、获批版的 91.5% 属于不同批次/口径的评估(详见坑点 1 与坑点 6),官网未逐一说明各计数间的分母调和关系。表中"—“表示该子集不产生该类事件。任何复现都应以你手头发布包的实测分母重建此表后再比较指标,禁止把不同行的计数混算出一个"新指标”。
§4.4 数据层级
患者(Patient,n=99)
└── 结肠镜检查(Examination,2018-10 至 2019-01 连续采集)
└── 视频(Video,n=113:阳性 100 + 阴性 13)
└── 帧(Frame,n=158,690 发布版)
└── 边界框(BoundingBox,阳性帧每帧 1 框)
病变(Lesion,n=100,病理金标准) ←—— 1:1 绑定阳性视频
层级关系的关键设计:每段阳性视频恰含 1 个独立息肉(video ↔ lesion 1:1),因此"按视频划分"与"按息肉划分"在本数据集中等价,这是防泄漏划分的天然分组键(§5.3)。帧与帧之间高度自相关:同一息肉可在视野内停留数百帧,相邻帧几乎像素级相似。
§4.5 缺失值与信息性缺失
| 情形 | 编码/表现 | 处理建议 |
|---|---|---|
| 非息肉帧无边界框 | 标注文件无坐标行(或仅有类别行) | 结构性缺失:帧级分类任务正常使用,检测任务忽略 |
| "不合适"帧被发布版剔除 | 分母与论文不一致(§3.2) | 视为官方版本策略,勿自行"还原" |
| 官方评估中的"不可分析"帧 | 阳性 132 帧 / 阴性 17,752 帧未计入 TP/TN 统计 | 复现时显式声明不可分析帧的处理策略(坑点 6) |
| 阴性视频无病理/属性字段 | 官网元数据表不适用 | 结构性缺失,勿填 0 |
| 部位信息未见 1 个病变 | 官网部位合计 47+44+8=99(100 病变) | 分析部位分层时注明 |
| 帧级时间戳 | 未提供逐帧时间戳,仅有视频级时长 | 时序建模按帧序号(文件名内序号)重建时间轴 |
§5 数据划分与使用建议
§5.1 官方划分
SUN 不提供官方训练/测试划分——113 段视频整体就是一个验证库(validation database)。官方基准系统 EndoBRAIN-EYE 的训练集(5 个日本中心、3,106 例、56,668 帧独立图像)与 SUN 完全独立采集,因此"官方协议"的含义是:在独立的训练数据上训练模型,然后在 SUN 全库上做纯测试评估(帧级 + 息肉级)。换言之,SUN 的定位从头就是外部测试集,而非训练集。
§5.2 社区惯例划分
当研究者希望在 SUN 上训练自己的模型(而非仅做测试)时,社区通行做法有二(参考 Bernal et al. 2022 的处理):
- 按视频分组划分:将 113 段视频按约 70/15/15 或 80/20 分为训练/验证(/测试),保证同一视频的全部帧只出现在一侧。100 个阳性视频与 13 个阴性视频应分层,保持阴性比例。
- 交叉验证:以视频(等价于息肉)为组的 5 折 GroupKFold,阳性/阴性分层抽样,报告 5 折均值±标准差。
分层分组 5 折划分的最小实现(group=video_id,阳性/阴性分别分桶再拼合):
# sun_split.py —— 按视频(=息肉)分组的分层 5 折划分
from sklearn.model_selection import GroupKFold
def make_folds(video_ids, labels, n_splits=5):
"""video_ids: 视频编号列表;labels: 同序(1=阳性视频/0=阴性视频)。
阳性/阴性各自独立分桶再拼合,保持每折两类比例。"""
folds = {k: [] for k in range(n_splits)}
for cls in (1, 0):
sub = [v for v, y in zip(video_ids, labels) if y == cls]
gkf = GroupKFold(n_splits=n_splits)
for fold, (_, val_idx) in enumerate(gkf.split(sub, groups=sub)):
folds[fold] += [sub[i] for i in val_idx]
return folds # 每折返回"验证集"video_id 列表
if __name__ == "__main__":
ids = [f"P{i:03d}" for i in range(100)] + [f"N{i:02d}" for i in range(13)]
y = [1] * 100 + [0] * 13
folds = make_folds(ids, y)
for k in sorted(folds):
pos = sum(1 for v in folds[k] if v.startswith("P"))
print(f"fold {k}: val_videos={len(folds[k])} (positive={pos})")
# 训练集 = 全部 video_ids 减去本折验证集;将折表落盘供训练脚本读取
§5.3 泄漏风险 ⭐
这是 SUN 最致命的误用点(详见 §6.5 坑点 4):同一息肉连续数百帧几乎相同,若按帧随机划分训练/测试,测试帧的"孪生帧"就在训练集里,帧级指标会虚高至接近饱和,完全失去泛化意义。三条纪律:
- 划分单位必须是视频/息肉,永远不能是帧;
- 报告结果时必须写明划分单位与分组键(video_id);
- 与官方数字对比时,官方是"完全独立训练 + SUN 纯测试",你的"SUN 内部划分"数字与之不可比,须分开陈述。
§5.4 交叉验证与外部验证建议
- 内部交叉验证:GroupKFold(group=video_id,分层按阳性/阴性),适用于超参选择与模型比较;
- 外部验证:首选 SUN-SEG(同源重构、分割标注,用于时序分割任务对照);跨机构验证建议接入 LDPolypVideo(公开视频集)或机构自有的其他中心数据;跨模态(NBI/BLI)验证 SUN 无法提供,须外接数据;
- 协议对齐:外部验证时保持 IoU 阈值、分母口径与内部评估一致并声明(坑点 5、6)。
§5.5 与官方基准对比的使用姿势
| 你的情况 | 正确姿势 |
|---|---|
| 训练数据来自其他中心 | 在 SUN 全库测试,直接与官方 90.5%/93.7%/98.0% 对照(注明口径) |
| 训练数据含 SUN 划分出的训练折 | 只能引用"SUN 内部划分"数字,禁止与官方数字并排比较 |
| 想复现论文指标 | 使用论文口径 152,560 帧的分母结构须先确认可还原性;否则以发布版实测分母为准并声明(坑点 1、6) |
§6 AI 就绪指南 ⭐
§6.0 云端快速启动
SUN 为申请制数据集,无法一键从公开桶拉取,因此云端启动的第一步是把申请获得的发布包上传到你的计算环境(Colab/Kaggle 均可,数十 GB 体量建议使用 Kaggle Dataset 私有挂载或云盘对象存储)。拿到数据后,先跑通 §6.1 的最小读取,再进入 §6.3 的格式转换。注意 Colab 免费版内存与磁盘有限,建议仅挂载阳性子集先调试代码。
§6.1 快速上手
下面的最小代码假设:你已把官方发布包解压到 data_root(下例按 §4.0 示意结构,包含 polyp/ 与 normal/ 两个子目录);data_root 的拼接关系为 data_root / 子目录 / 文件名;最小可用子集是任意一对 *.jpg + 同名 *.txt。
# 期望目录结构(示意,以官方发布包为准):
# data_root/
# ├── polyp/ # 息肉帧:ID001_000001.jpg + ID001_000001.txt(class_id=0)
# └── normal/ # 非息肉帧:ID101_000001.jpg + ID101_000001.txt(class_id=1)
# data_root 拼接关系:data_root / subdir / image_file,标注文件与图像同名同目录
# 最小可用子集:任意一对同名的 .jpg/.txt
import cv2
import pathlib
def parse_sun_label(txt_path):
"""解析 SUN 标注行:'Filename min_X,min_Y,max_X,max_Y,class_id'
兼容两种分隔风格(文件名后空格 + 逗号坐标;或全行逗号分隔)。"""
records = []
for line in txt_path.read_text().splitlines():
line = line.strip()
if not line:
continue
if " " in line: # 形如 "ID001_000001.jpg 213,412,588,731,0"
fname, coord_str = line.split(" ", 1)
nums = [float(v) for v in coord_str.split(",")]
else: # 形如 "ID001_000001.jpg,213,412,588,731,0"
parts = line.split(",")
fname, nums = parts[0], [float(v) for v in parts[1:]]
min_x, min_y, max_x, max_y, cls = nums
records.append(dict(file=fname,
xyxy=[min_x, min_y, max_x, max_y],
cls=int(cls))) # class_id: 0=息肉帧, 1=非息肉帧(反惯例!)
return records
data_root = pathlib.Path("/data/sun-database")
img_path = next((data_root / "polyp").glob("*.jpg"))
frame = cv2.cvtColor(cv2.imread(str(img_path)), cv2.COLOR_BGR2RGB)
boxes = parse_sun_label(img_path.with_suffix(".txt"))
print(frame.shape) # 期望 (1080, 1240, 3) —— 非标准宽高比,勿直接 resize(坑点 8)
print(boxes) # 检查 class_id 是否为 0(息肉帧)
§6.2 数据获取
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1 | 访问官网 | 阅读许可条款与使用说明 |
| 2 | 通过页面提供的联系方式向 Mori 研究室发出申请 | 注明机构、研究者、用途(非商业研究/教育) |
| 3 | 获批后获取下载凭证/分发介质 | 无公开直链,分发方式由实验室安排 |
| 4 | 核对包内文件与官网公布数字 | 帧数应为你的实测口径(坑点 1);检查 JPEG/TXT 一一对应 |
| 5 | 商业用途另行联系 | 商业许可(含衍生数据)须 Mori 研究室书面同意 |
申请邮件要点模板(请替换方括号外的实际信息前先确认官网最新要求):
Subject: Request for access to the SUN Colonoscopy Video Database
- Institution / Department: [your institution]
- Principal investigator: [name, affiliation]
- Intended use: non-commercial academic research on polyp detection
(research plan in 2-3 sentences; no commercial use, no redistribution)
- Contact email: [email]
§6.3 预处理全流程
推荐流水线:解析 TXT → 转换为目标框架格式(COCO/YOLO)→ 按 video_id 建立分组索引 → 可选:息肉裁剪帧用于分类实验。关键原则:转换是一次性的离线步骤,转换脚本要把 class_id 语义、角点坐标、分组键三件事全部固化。
<details>
<summary>完整转换脚本(TXT → COCO JSON + YOLO txt,点击展开)</summary>
# sun_convert.py —— 将 SUN 角点 TXT 转为 COCO 与 YOLO 两种格式
# 输入:data_root(含 polyp/ 与 normal/);输出:output_root/
import json
import pathlib
from collections import defaultdict
W, H = 1240, 1080 # SUN 原生分辨率
LABEL_MAP = {0: 1, 1: 0} # SUN 0=息肉/1=非息肉 → 框架惯例 0=背景/1=息肉
# 注意:非息肉帧没有框,因此只有 class_id=0 的行产出 YOLO 框
def parse_line(line):
if " " in line:
fname, coord = line.split(" ", 1)
nums = [float(v) for v in coord.split(",")]
else:
parts = line.split(",")
fname, nums = parts[0], [float(v) for v in parts[1:]]
return fname, nums # min_x, min_y, max_x, max_y, cls
def build_index(data_root):
"""按 video_id(文件名前缀 IDxxx)聚合全部帧记录"""
index = defaultdict(list)
for sub in ["polyp", "normal"]:
for txt in sorted((data_root / sub).glob("*.txt")):
for line in txt.read_text().splitlines():
if not line.strip():
continue
fname, nums = parse_line(line)
vid = fname.split("_")[0] # ID001_000001.jpg -> ID001
index[vid].append(dict(sub=sub, fname=fname, nums=nums))
return index
def to_coco(index, out_json):
images, annotations, ann_id = [], [], 0
for img_id, (vid, recs) in enumerate(index.items(), 1):
for rec in recs:
images.append(dict(id=img_id, file_name=f"{rec['sub']}/{rec['fname']}",
width=W, height=H, video_id=vid))
if rec["nums"][4] == 0: # 仅息肉帧有框
min_x, min_y, max_x, max_y = rec["nums"][:4]
annotations.append(dict(
id=ann_id, image_id=img_id, category_id=LABEL_MAP[0],
bbox=[min_x, min_y, max_x - min_x, max_y - min_y],
area=(max_x - min_x) * (max_y - min_y), iscrowd=0))
ann_id += 1
coco = dict(images=images, annotations=annotations,
categories=[dict(id=1, name="polyp")])
pathlib.Path(out_json).write_text(json.dumps(coco))
def to_yolo(index, out_root):
out = pathlib.Path(out_root / "labels"); out.mkdir(parents=True, exist_ok=True)
for recs in index.values():
for rec in recs:
stem = pathlib.Path(rec["fname"]).stem
lines = []
if rec["nums"][4] == 0: # 息肉帧 → 1 条 YOLO 框
min_x, min_y, max_x, max_y, _ = rec["nums"]
cx, cy = (min_x + max_x) / 2 / W, (min_y + max_y) / 2 / H
bw, bh = (max_x - min_x) / W, (max_y - min_y) / H
lines.append(f"0 {cx:.6f} {cy:.6f} {bw:.6f} {bh:.6f}")
(out / f"{stem}.txt").write_text("\n".join(lines))
if __name__ == "__main__":
root = pathlib.Path("/data/sun-database")
idx = build_index(root)
print(f"videos: {len(idx)}") # 期望 113(示意 ID 数以发布包为准)
to_coco(idx, "/data/sun-coco/annotations.json")
to_yolo(idx, "/data/sun-yolo/")
</details>
清洗与标准化要点:
- 核实一一对应:遍历 JPEG 与 TXT 集合,报告缺标注定图与空标注文件,形成数据清单(manifest);
- 统一 class 语义:所有下游代码只允许出现
POLYP=1(转换后)这一种语义,SUN 原始 0/1 语义被隔离在转换脚本内(坑点 2); - 不要全局 shuffle 帧:转换产物保留 video_id,任何划分脚本只能消费 video_id(坑点 4);
- 分辨率保持:1,240×1,080 先落盘为原生比例,训练时的缩放交给 dataloader 的 letterbox(坑点 8)。
转换完成后跑一遍抽查脚本,确认 class 语义、坐标范围、一一对应三件事没有翻车:
# sun_sanity.py —— 转换产物抽查(断言式自检)
import json
import pathlib
import numpy as np
W, H = 1240, 1080
def sanity(coco_json, data_root):
coco = json.loads(pathlib.Path(coco_json).read_text())
cat_ids = {c["id"] for c in coco["categories"]}
assert cat_ids == {1}, "类别表应恰好只有 polyp=1(SUN 的 0/1 已被隔离)"
for ann in coco["annotations"][:1000]: # 抽前 1,000 条框
x, y, w, h = ann["bbox"]
assert 0 <= x and 0 <= y and x + w <= W and y + h <= H, f"框越界: {ann['bbox']}"
assert w > 0 and h > 0, "存在零面积框"
files = [img["file_name"] for img in coco["images"]][:200]
for rel in files: # 抽 200 张图确认存在
assert (pathlib.Path(data_root) / rel).exists(), f"缺图: {rel}"
sizes = [ann["bbox"][2] * ann["bbox"][3] for ann in coco["annotations"]]
print(f"boxes={len(sizes)} median_area={np.median(sizes):.0f}px "
f"images={len(coco['images'])}")
# 直观对账:中位框面积应与"中位 5 mm 息肉在 1,240×1,080 视野中的占比"量级相容
if __name__ == "__main__":
sanity("/data/sun-coco/annotations.json", "/data/sun-database")
§6.4 PyTorch DataLoader
# sun_dataset.py —— 检测任务的完整 Dataset(角点 TXT 直接读取版)
import cv2
import pathlib
import numpy as np
import torch
from torch.utils.data import Dataset, DataLoader
class SUNDetectionDataset(Dataset):
"""逐帧检测数据集。split 由 video_id 列表驱动,保证按视频划分(防泄漏)。
返回:image (3,H,W) 原生比例 letterbox 到 max_side;boxes (N,5) [cx,cy,w,h]@原尺度。"""
def __init__(self, data_root, video_ids, img_size=1216, letterbox=True):
self.root = pathlib.Path(data_root)
self.img_size = img_size
self.letterbox = letterbox
self.items = []
for sub in ["polyp", "normal"]:
for jpg in sorted((self.root / sub).glob("*.jpg")):
vid = jpg.name.split("_")[0]
if vid in video_ids: # 只纳入本 split 的视频
self.items.append(jpg)
def __len__(self):
return len(self.items)
def _load_boxes(self, jpg_path):
txt = jpg_path.with_suffix(".txt")
boxes = []
for line in txt.read_text().splitlines():
if not line.strip():
continue
coord_str = line.split(" ", 1)[1] if " " in line else ",".join(line.split(",")[1:])
nums = [float(v) for v in coord_str.split(",")]
if int(nums[4]) == 0: # SUN: 0=息肉帧才有框
boxes.append(nums[:4]) # 绝对角点 xyxy
return np.array(boxes, dtype=np.float32).reshape(-1, 4)
def __getitem__(self, idx):
jpg = self.items[idx]
img = cv2.cvtColor(cv2.imread(str(jpg)), cv2.COLOR_BGR2RGB)
boxes = self._load_boxes(jpg)
if self.letterbox: # 保持纵横比(坑点 8)
scale = self.img_size / max(img.shape[:2])
nh, nw = round(img.shape[0] * scale), round(img.shape[1] * scale)
img = cv2.resize(img, (nw, nh), interpolation=cv2.INTER_LINEAR)
canvas = np.full((self.img_size, self.img_size, 3), 114, dtype=np.uint8)
pad_h, pad_w = (self.img_size - nh) // 2, (self.img_size - nw) // 2
canvas[pad_h:pad_h + nh, pad_w:pad_w + nw] = img
img = canvas
if len(boxes):
boxes[:, [0, 2]] = boxes[:, [0, 2]] * scale + pad_w
boxes[:, [1, 3]] = boxes[:, [1, 3]] * scale + pad_h
img_t = torch.from_numpy(img).permute(2, 0, 1).float() / 255.0
box_t = torch.from_numpy(boxes) # 原生像素坐标
return img_t, box_t, jpg.name
def collate(batch): # 变长框数的手写 collate
imgs = torch.stack([b[0] for b in batch])
return imgs, [b[1] for b in batch], [b[2] for b in batch]
# 按 video_id 分组划分(示意:113 组视频按 70/15/15 划分;实际 ID 列表从 manifest 读入)
all_video_ids = [f"ID{i:03d}" for i in range(1, 114)] # 以发布包实际 ID 为准
pos = all_video_ids[:100]; neg = all_video_ids[100:]
train_ids = pos[:70] + neg[:9]; val_ids = pos[70:85] + neg[9:11]; test_ids = pos[85:] + neg[11:]
train_loader = DataLoader(SUNDetectionDataset("/data/sun-database", train_ids),
batch_size=8, shuffle=True, num_workers=4,
collate_fn=collate, pin_memory=True)
val_loader = DataLoader(SUNDetectionDataset("/data/sun-database", val_ids),
batch_size=8, shuffle=False, num_workers=4, collate_fn=collate)
§6.5 坑点 8 个 ⭐
⚠️ 坑点 1:三套帧数口径并存,分母先于指标(分类:评估误用)
问题:论文报告 152,560 帧(49,799 息肉帧 + 102,761 非息肉帧),官网发布版为 158,690 帧(49,136 + 109,554),另有第三方论文转述 157,882 帧。同一数据集三个总数,且官网明确注释发布时删除了 CADe 系统判定为"不合适"的帧。
症状:复现论文帧级灵敏度时分母对不上;自己的模型报数与文献不可比;审稿人质询"你用的到底是哪个版本的 SUN"。
解决:
- 简单方法:动笔前先在实验记录中固定口径——声明"使用 2022-10-08 发布版,实测帧数 X",并附解压统计命令输出。
- 进阶方法:写脚本统计解压后实际帧数与正/负帧数(
find data_root -name '*.jpg' | wc -l按子目录计数),把实测值写入论文表格的"数据"行,替代引用任何二手数字。- SOTA 方法:将论文口径视为"原始设计规模"、发布版视为"可用规模",在论文的 implementation details 中同时给出两个数字及官网删帧注释链接,彻底杜绝歧义。
参考:官网注释、Misawa et al. 2021、Bernal et al. 2022
⚠️ 坑点 2:class_id 语义与 CV 惯例相反(分类:标签理解)
问题:SUN 标注行
class_id定义为 0=息肉帧、1=非息肉帧,与计算机视觉惯用的 0=背景/负类恰好相反。
症状:接入 YOLO/MMDetection 等默认0=第一前景类框架后,要么报类别数错误,要么训练出的"检测器"把黏膜背景当息肉(指标接近随机);混淆矩阵对角线翻转但不易察觉。
解决:
- 简单方法:读取时显式映射
POLYP_CLASS = 0,并转换为框架惯例(0=背景无框,1=息肉有框),见 §6.3 的LABEL_MAP。- 进阶方法:在转换脚本中加入断言与抽检——随机抽 20 张 class_id=0 的帧人工目检确有息肉框,抽 class_id=1 的帧确认来自阴性视频。
- SOTA 方法:把语义映射写进数据卡(data card)与 CI 单元测试,任何 PR 修改解析逻辑都会触发抽检样例回放。
参考:官网标注格式说明
⚠️ 坑点 3:每帧一个 TXT + 绝对角点坐标(分类:预处理陷阱)
问题:标注以"一图一 TXT"的松散文件组织,行格式
Filename min_X,min_Y,max_X,max_Y,class_id,坐标为像素级左上/右下角点——既不是 YOLO 的归一化中心点格式,也不是 COCO 的单 JSON 结构;15 万余个小文件对分布式存储与 dataloader 都不友好。
症状:按归一化格式解析坐标后框整体缩水到左上角;glob("*.txt")遍历数十万小文件使数据加载 IO 成为瓶颈。
解决:
- 简单方法:一次性离线转换为 COCO JSON 或 YOLO 目录结构(§6.3 脚本),原始包只读保存。
- 进阶方法:转换时同时产出
manifest.parquet(frame_id、video_id、class、坐标),后续一切划分/统计基于 manifest,避免反复扫盘。- SOTA 方法:将帧+标注打包为 WebDataset/LMDB 分片(按 video_id 分片),随机访问与流式训练两不误。
参考:官网标注格式说明
⚠️ 坑点 4:按帧随机划分 = 数据泄漏(分类:数据泄漏)
问题:同一息肉在视野内连续停留数百帧,相邻帧近乎像素级相同;100 段阳性视频各含且仅含 1 个独立息肉。若按帧随机划分训练/测试,测试帧的近重复帧就躺在训练集里。
症状:帧级验证集准确率/灵敏度虚高至 99%+,模型上线或换数据后性能断崖;时序模型(LSTM/3D-CNN)在"见过"的息肉上表现完美。
解决:
- 简单方法:按 video_id 分组划分(如 70/15/15 视频,阳性/阴性分层),见 §6.4 示例。
- 进阶方法:
sklearn.model_selection.GroupKFold,groups=video_id;由于 video ↔ 息肉 1:1,分组等价于按病变划分,报告 5 折均值与标准差。- SOTA 方法:在分组划分基础上再加时序缓冲(同一视频内训练/验证帧之间留出间隔),并对报告指标强制附"划分单位:视频(息肉)"声明;泛化性结论以独立中心数据为准。
参考:Bernal et al. 2022
⚠️ 坑点 5:官方 IoU 阈值是 0.3,且指标多口径(分类:评估误用)
问题:官方 TP 判定用预测框与真值框 IoU ≥ 0.3(非常用的 0.5);同时存在帧级、病变级、息肉级三种口径(per-frame / per-lesion / per-polyp)。
症状:用 0.5 IoU 自评的模型"看起来"远差于官方数字,误判为模型缺陷;跨论文比较灵敏度时发现数值系统性不可比。
解决:
- 简单方法:复现官方协议——IoU 0.3、帧级灵敏度/特异度、息肉级命中(息肉在任一帧被命中即计入分子)。
- 进阶方法:同时报告 IoU 0.3/0.5 两条灵敏度曲线与三种口径,用表格并列,注明协议出处。
- SOTA 方法:在论文中给出官方协议与自定义协议的换算表(同一模型两种口径的数字),并公开评估脚本。
参考:官网评估说明、Misawa et al. 2021
⚠️ 坑点 6:发布版删帧导致评估分母漂移(分类:评估误用)
问题:官网注明发布版删除了 CADe 判定为"不合适"的帧,因此帧级指标的分母与论文不同;官方公布的两版数字中分母本身也不一致(如最新获批版帧级灵敏度分母 48,212、特异度分母 91,764,而 TP/TN 明细合计为 48,344/109,516),另有 132 阳性帧与 17,752 阴性帧标记为"不可分析"。
症状:同一模型同一数据集算出 90.5%/91.5% 两套帧级灵敏度;不清楚"不可分析帧"应排除还是计为错误。
解决:
- 简单方法:固定以你实测的分母为准,在结果表加注"分母:实测 X 帧(发布版,删帧后)"。
- 进阶方法:明确不可分析帧策略(推荐排除法,与官网一致),并在脚手架中以独立字段记录每帧的可分析性,两种策略各报一版。
- SOTA 方法:随论文发布逐帧评估明细(每帧 TP/FP/FN/TN/不可分析五态),使任何分母差异可审计。
参考:官网、AMED 8K 更新页
⚠️ 坑点 7:病理类别极端不均衡,"检测"与"分型"不可混做(分类:偏倚陷阱)
问题:100 个息肉中低级别腺瘤 82 个,而 SSL 仅 4、TSA 2、高级别腺瘤 4、浸润性癌 1;平坦病变占 34%。数据量决定了检测任务可行、病理多分类任务不可行。
症状:病理亚型分类模型在稀有类上 F1 为 0;平坦病变检出率显著低于隆起型却不被报告;把"息肉级 98.0% 灵敏度"误读为"对癌同样 98%"(本库仅 1 例癌)。
解决:
- 简单方法:只做检测/检出任务;病理仅用于分层报告(按形态:diminutive 98.3%、protruded 98.5%、flat 97.0%),不做稀有类训练。
- 进阶方法:稀有类合并为"锯齿状病变组/腺瘤组/癌组"三层报告,并附精确二项置信区间;对平坦型单列灵敏度。
- SOTA 方法:病理分型研究改用大样本病理数据集(如 MHIST 等组织学资源),SUN 只提供内镜检出侧的证据;或引入自监督预训练缓解稀有类信息不足。
参考:官网病理表、MDPI Diagnostics 2022
⚠️ 坑点 8:1,240×1,080 非标准宽高比,直接 resize 会形变(分类:预处理陷阱)
问题:SUN 帧分辨率 1,240×1,080(约 8:7),既非 16:9 也非常见网络输入比例;直接
resize((416, 416))或resize((224, 224))会引入非线性形变,小息肉(中位 5 mm,≤5 mm 占 60%)的纵横比与相对尺寸失真。
症状:验证集上小息肉召回系统性偏低;训练/推理分辨率不一致时框与内容错位;把 COCO 预训练模型的 anchor 先验直接搬来效果差。
解决:
- 简单方法:letterbox 填充保持纵横比(§6.4 代码已实现),边界框同步平移缩放。
- 进阶方法:输入尺寸取原生比例的倍数(如 1,248×1,088),减少 padding 浪费;多尺度训练覆盖 ±20% 尺度抖动。
- SOTA 方法:训练时随机纵横比抖动增强 + 推理按原生比例分桶(bucketing)批处理;anchor-based 模型按本库框统计重聚类 anchor。
参考:PMID 36826945(分辨率转述)
§6.6 数据增强安全清单
| 类别 | 操作 | 说明 |
|---|---|---|
| ✅ 安全 | 水平/垂直翻转、亮度/对比度抖动、轻微高斯噪声、模糊模拟 | 内镜图像无"上下反正"语义;模拟镜面反光与对焦波动 |
| ✅ 安全 | 随机缩放裁剪(保持框内息肉完整)、mosaic/cutmix(按框裁剪拼接) | 提升小目标多样性;注意拼接后框同步变换 |
| ✅ 安全 | 随机纵横比抖动(±10–20%) | 缓解非标准分辨率的尺度偏置(坑点 8) |
| ❌ 危险 | 大角度旋转(>30°)+ 非等比拉伸 | 破坏肠道管腔的自然方向性;非等比拉伸叠加形变偏置 |
| ❌ 危险 | 强色调变换(色相大范围偏移、色调分离) | 息肉与黏膜的色差是关键判别特征,白光成像下色相恒定 |
| ❌ 危险 | 时序帧乱序/跨视频抽帧拼接(时序模型) | 破坏退镜方向与运动连续性;跨视频拼接即变相泄漏 |
§6.7 模型推荐
| 模型家族 | 适用任务 | 推荐理由 | 起点配置 |
|---|---|---|---|
| YOLOv3 / YOLOv8 | 帧级息肉检测 | 官方基准即 YOLOv3;实时 30 FPS 符合 CADe 部署场景 | 输入 1,248×1,088 letterbox;IoU 0.3 评测 |
| Faster R-CNN / DETR 系 | 高精度检测、框回归研究 | 两阶段/查询式结构对小息肉回归更稳 | ImageNet/COCO 预训练 + 微调 |
| 3D-CNN / 时序 Transformer | 视频级检测、假阳性抑制 | SUN 长时序结构适合运动线索学习(早期 3D-CNN 已验证可行性) | 输入片段 16–32 帧,按视频分组 |
| 视频分割(SUN-SEG 基线) | 分割/边界 | PNS+ 在 SUN-SEG 170 fps,配套 13 个对比模型 | 直接采用 VPS 仓库基线 |
§6.8 硬件需求
| 场景 | GPU 显存 | 内存 | 磁盘 | 说明 |
|---|---|---|---|---|
| 数据转换与统计 | 无 | 16 GB | ≥100 GB | 解压 + manifest 构建,CPU 即可 |
| 单卡检测微调(batch 8,1,248×1,088) | 16–24 GB(RTX 4090/A5000 级) | 32 GB | 200 GB | YOLOv8/Faster R-CNN 常规配置 |
| 视频模型(3D-CNN/Transformer) | ≥24 GB(A100 级更佳) | 64 GB | 300 GB | 片段采样带来的 IO 与显存开销 |
| 全量基准复现 + 多折交叉验证 | 单卡 24 GB × 时长换算 | 64 GB | 500 GB | 5 折 × 113 视频全库评估 |
§6.9 评估指标代码
# sun_eval.py —— 官方协议复现:帧级灵敏度/特异度(IoU>=0.3)+ 息肉级命中
import numpy as np
IOU_THRESH = 0.3 # 官方 TP 判定阈值(非惯用 0.5,见坑点 5)
def iou(a, b):
ax1, ay1, ax2, ay2 = a; bx1, by1, bx2, by2 = b
iw = max(0.0, min(ax2, bx2) - max(ax1, bx1))
ih = max(0.0, min(ay2, by2) - max(ay1, by1))
inter = iw * ih
union = (ax2 - ax1) * (ay2 - ay1) + (bx2 - bx1) * (by2 - by1) - inter
return inter / union if union > 0 else 0.0
def evaluate(frames):
"""frames: list of dict(video_id, gt_cls, gt_box, pred_cls, pred_box)
gt_cls/pred_cls ∈ {0:息肉帧, 1:非息肉帧}(SUN 原始语义)"""
tp = fn = fp = tn = 0
polyp_hits = {} # video_id -> 是否至少一帧命中
for f in frames:
hit = False
if f["gt_cls"] == 0: # 息肉帧
if f["pred_cls"] == 0 and iou(f["pred_box"], f["gt_box"]) >= IOU_THRESH:
tp += 1; hit = True
else:
fn += 1
else: # 非息肉帧
if f["pred_cls"] == 0:
fp += 1 # 非息肉帧被预测为息肉帧 → FP
else:
tn += 1
polyp_hits.setdefault(f["video_id"], False)
polyp_hits[f["video_id"]] = polyp_hits[f["video_id"]] or hit
sens = tp / (tp + fn) if tp + fn else float("nan")
spec = tn / (tn + fp) if tn + fp else float("nan")
polyp_sens = sum(polyp_hits.values()) / len(polyp_hits) if polyp_hits else float("nan")
return dict(frame_sens=sens, frame_spec=spec,
polyp_sens=f"{polyp_sens:.3f} ({int(sum(polyp_hits.values()))}/{len(polyp_hits)})")
(对照官方成绩:论文版帧级 90.5%/93.7%、息肉级 98/100;最新获批版 91.5%/98.2%。你的复现应落在同一量级,且必须注明分母口径——坑点 1/6。)
§6.10 MLOps 笔记
- 数据版本化:发布包不可变,直接以 SHA256 记录入数据版本控制(DVC/git-lfs 元数据);"删帧口径"作为 dataset card 字段固化。
- 划分即代码:video_id 划分列表提交进仓库,训练脚本只接受划分文件,禁止运行时随机划分(坑点 4 的工程保险)。
- 口径审计:评估脚本输出必须包含分母(正/负/不可分析帧数),CI 中与上一版 diff,任何分母漂移都会触发告警(坑点 1/6)。
- 监控对齐:若模型部署为实时 CADe,监控线上帧率(官方系统 30 FPS 量级)与帧级灵敏度漂移,警惕内镜设备换代导致的域漂移(§7.6)。
- 合规留痕:许可为申请制非商业,部署/再分发前复核 Mori 研究室授权范围,商业用途须书面许可。
- 复现档案:每个实验版本归档三件套——manifest(逐帧清单)、folds(划分表)、eval_detail(逐帧五态评估明细),三者齐备才能让任何后来者重算你的每一个指标(对应坑点 1/4/6 的工程闭环)。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解建议 |
|---|---|---|---|
| 单中心偏倚 | 全部数据来自昭和大学北横滨医院单一团队与设备链 | 高 | 外部验证(§7.8);跨中心训练数据补充 |
| 同域训练优势 | 官方基准训练集虽无患者重叠,但含 SUN 同院同域图像(Bernal et al. 2022 指出),官方数字存在同域优势 | 高 | 与官方对比时明确声明该差异;外部模型勿直接对标 |
| 长场景偏置 | 息肉停留视野可达数百帧、阴性片段亦长,帧级指标对时序长度敏感 | 中 | 时序模型输入长度按视频长度分布校准 |
| 病理不均衡 | 82/100 为低级别腺瘤,SSL 4、TSA 2、癌 1 | 高 | 检测任务为主;病理分层仅作描述统计(坑点 7) |
| 删帧选择偏倚 | 发布版剔除 CADe 判定"不合适"帧,帧分布与原始检查流不同 | 中 | 报告实测分母;勿跨口径比较(坑点 1/6) |
| 模态单一 | 仅白光 WLI,无 NBI/BLI/色素内镜 | 中 | 染色模式研究外接数据 |
| 人群局限 | 日本单中心、男 71/女 28、中位 69 岁 | 中 | 跨人群泛化研究需外部队列 |
§7.2 标注质量
SUN 的标注流程(3 名研究助理初标 + 专家多轮裁定)在同类数据集中属于较高规格,且 100 个息肉的病理金标准独立于图像标注,形成"图像标签"与"病变标签"双层参照。但官方未公布:标注者间一致性(kappa/IoU)、专家裁定轮次细节、边界框的抖动幅度、病理判读是否中央复审。基于官网与论文披露信息的标注质量评级:流程可信、量化透明度不足。对框精度敏感的任务(微小息肉回归、边界敏感分割),建议抽样复测(§3.6)。
| 标注维度 | 官方披露程度 | 质量评级 | 对使用者的建议 |
|---|---|---|---|
| 帧级类别(息肉/非息肉) | 双人以上流程 + 专家裁定,语义文档明确 | 高 | 可直接作为监督信号 |
| 边界框精度 | 流程披露,但无 IoU/kappa 量化 | 中 | 小息肉/分割任务前抽样复测 50–100 帧 |
| 息肉身份(1 视频 = 1 息肉) | 数据集结构保证,无需推断 | 高 | 直接作为防泄漏分组键 |
| 病理分型 | 机构常规病理流程,无中央复审声明 | 中 | 仅作分层描述统计,勿作分型训练标签 |
| 病变属性(大小/形态/部位) | 官网公布,2022-07-11 修订过位置表 | 中 | 引用时注明使用修订版;部位合计 99/100 见 §4.5 |
§7.3 泛化性评估
| 目标场景 | 失效风险 | 证据/机制 |
|---|---|---|
| 其他中心(不同内镜团队) | 高 | 单中心训练的检测器普遍存在中心域漂移;Bernal et al. 2022 专门讨论 SUN 的同域优势问题 |
| 不同厂商设备/染色模式 | 高 | 仅 WLI、设备型号未公布;NBI 下黏膜血管形态完全不同 |
| 不同人群(年龄/性别/种族) | 中 | 单中心 99 人构成;病变谱(腺瘤为主)与筛查人群接近但非普适 |
| 时序模型跨视频长度 | 中 | 阴性片段 85.6–511.4 秒跨度大,固定长度窗口可能截断或稀释信号 |
| 病理分型外推 | 极高 | 稀有类样本量不足以支撑任何分型结论(坑点 7) |
§7.4 伦理与合规
数据采集对应临床试验注册 UMIN 000037064;发布经昭和大学北横滨医院与名古屋大学 Mori 研究室作为权利主体授权,仅限非商业研究/教育用途,图像与标注允许编辑/加工,商业用途(含衍生数据)须联系 Mori 研究室获得许可(官网条款)。内窥镜帧不包含面部与身份标识,患者人口学信息仅以聚合统计形式(99 人、性别、年龄中位数)公布。技术路线相关专利(JP 6059271、JP 6580446)授权给 Cybernet Systems 与昭和大学,使用数据集开展研究一般不触及专利实施,但产品化前应另行评估。使用者在论文中应引用主论文并遵守官网引用要求。
§7.5 公平性
数据集未公布患者的种族、社会经济状态与就诊途径,公平性审计只能达到"已知未知"层面:性别构成男:女约 2.5:1、中位 69 岁,提示老年男性为主,女性与年轻患者的病变谱代表性有限;单中心日本人群使肤色/种族维度的公平性评估不可行。若模型目标人群不同,应在自有数据上做亚组分析,而非借 SUN 外推。
§7.6 数据漂移
SUN 采集于 2018-10 至 2019-01 的单一时间窗,本身无纵向漂移维度;真正的漂移风险在部署侧:内镜设备世代更替(HDTV → 4K/8K,AMED 项目本身即面向 8K)、染色模式普及、肠道准备质量变化、检查流程(AI 提示介入后的行为改变)都会使线上分布偏离 SUN 的白光 HDTV 域。建议以 SUN 为"锚定基准"定期重测,监控帧级灵敏度与假阳性率的漂移曲线(§6.10)。
§7.7 DAIMS 数据质量评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 一帧一记录可平铺(图 4 字段 + 病变 6 字段,§4.1) |
| 2 | 唯一标识 | ✅ | 文件名即帧主键;video_id 可解析 |
| 3 | 特殊字符 | ✅ | 纯 ASCII 文件名与坐标,无转义风险 |
| 4 | 重复行 | ⚠️ | 文件级无重复,但时序相邻帧内容级高度重复,需按 video_id 分组处理 |
| 5 | 缺失编码 | ✅ | 无标注文件缺失的结构性风险;缺失均有明确结构性成因(§4.5) |
| 6 | 标签标识 | ✅ | class_id 显式给出(语义反惯例但文档明确) |
| 7 | 罕见类分组 | ⚠️ | 病理稀有类(SSL 4/TSA 2/癌 1)须分组或仅描述 |
| 8 | 偏倚评估 | ⚠️ | 官方未发布偏倚分析;单中心/同域优势由第三方指出 |
| 9 | 数据字典 | ✅ | 标注行格式官网明确(字段、分隔、语义齐全) |
| 10 | 信息性缺失解释 | ✅ | "不合适帧被删"官方注释直接解释分母差异 |
| 11 | 设备记录 | ⚠️ | HDTV/WLI/分辨率已知,厂商与型号未公布 |
| 12 | 共线性 | ✅ | 坐标 4 字段相互独立,无共线性隐患 |
| 13 | 编码映射 | ✅ | ICD-11 DB35/2B91 与 SNOMED 映射齐备(§2.1/§2.1b) |
| 14 | 时间戳处理 | ⚠️ | 无逐帧时间戳,仅视频级时长,帧率靠推算 |
| 15 | 划分建议 | ✅ | 本页 §5 给出按视频/息肉分组的完整方案 |
| 16 | 泄漏讨论 | ✅ | 帧级泄漏风险与对策成体系(§5.3、坑点 4) |
| 17 | 标签分布 | ✅ | 帧级/病变级分布完整(§4.2) |
| 18 | 测量偏倚 | ⚠️ | 息肉大小为内镜估测非离体实测;同域训练优势未官方声明 |
| 19 | 外部验证建议 | ✅ | §7.8 矩阵给出可执行路径 |
| 20 | 版本记录 | ✅ | 2020 首发 → 2022-07 修订 Table 2 → 2022-10 增补性能,官网可查 |
| 21 | 预处理脚本 | ❌ | 官方未提供转换脚本;本页 §6.3 提供社区实现 |
| 22 | 合规要求 | ✅ | 许可、申请流程、商业边界官网明确 |
| 23 | 多模态对齐 | ✅ | 图像-标注同名一一对应,无跨模态对齐问题 |
| 24 | 去标识化 | ⚠️ | 内镜帧天然无面部/ID,人口学仅聚合公布,但官方未说明脱敏流程细节 |
DAIMS 评分:19.5 / 24(✅ 16 项 × 1.0 + ⚠️ 7 项 × 0.5 + ❌ 1 项 × 0)
评分解读:19.5 分落在"结构可信、文档良好,但存在关键工程缺口"区间。SUN 的强项在标识体系(文件名主键)、标签语义透明(尽管反惯例但文档明确)、版本记录与合规条款——这些是"官方认真维护"的信号。扣分集中在三点:无官方预处理脚本(唯一 ❌)、时序冗余与稀有类带来的两个结构性 ⚠️、以及设备/时间戳/标注一致性的记录缺口。整体属于"拿来即可做检测基准,但直接投入生产训练前必须自建数据管线"的类型。
对你意味着什么:① 第一周做三件事——申请数据、跑通 §6.1/§6.3 转换脚本、固化 manifest(含 video_id),这三件事直接抵消唯一的 ❌;② 任何实验前先写死"按视频划分 + 官方 IoU 0.3 协议 + 实测分母"三行声明,可避开本数据集 80% 的已发布误用;③ 若你的终点是病理相关结论,把 SUN 定位为"检出证据",分型证据请外接大样本病理资源;④ 部署前以 §7.8 矩阵选择至少一个外部域做验证,SUN 单中心身份决定了它只能证明"能做对",不能证明"到处都对"。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| SUN 全库(相对其 5 中心训练集的外部测试) | 昭和大学北横滨医院(测试)/ 5 日本中心(训练) | CADe 检测 | 帧级 90.5%/93.7%,息肉级 98.0%(98/100) | —(官方主结果) | 训练与测试域部分同院(无患者重叠),存在同域优势(Misawa 2021;Bernal 2022) |
| 获批版 EndoBRAIN-EYE 重测 | Cybernet(2022-07 监管批准后) | CADe 检测 | 帧级 91.5%(44,092/48,212)、特异度 98.2%(90,068/91,764)、息肉级 98.0% | 相对论文版帧级灵敏度 +1.0 个百分点、特异度 +4.5 个百分点 | 产品迭代主要收益在特异度(假阳性下降)(官网) |
| SUN-SEG 基准 | 名古屋大学/南开等(Ji et al. 2022) | 视频息肉分割 | PNS+ 实时 170 fps,13 个分割模型系统对比 | SUN 原库标注(框)→ SUN-SEG 重构标注(mask 等 5 层) | 同源数据的分割形态研究已形成独立基准生态 |
§8 基准性能与生态
§8.1 排行榜
SUN 无第三方维护的公开排行榜;可比数字均来自官方渠道与少数同行评审论文,协议差异导致数值不可直接比较(IoU 0.3 vs 0.5、帧级 vs 息肉级、删帧口径):
| 排名 | 模型 | 帧级灵敏度 | 帧级特异度 | 息肉级灵敏度 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|---|---|
| 1 | EndoBRAIN-EYE(2022 获批版重测) | 91.5%(44,092/48,212) | 98.2%(90,068/91,764) | 98.0% | 2022 | YOLOv3 + Adam,获批版迭代 | Misawa et al., 2021, Gastrointest Endosc(重测数字见官网). DOI 10.1016/j.gie.2020.07.060 | 非开源(商品化) |
| 2 | EndoBRAIN-EYE(论文版) | 90.5%(95%CI 90.2–90.7) | 93.7%(95%CI 93.5–93.8) | 98.0%(95%CI 93.0–99.8;98/100) | 2021 | YOLOv3,5 中心 56,668 帧训练 | Misawa M, et al., 2021, Gastrointest Endosc, 93(4):960-967.e3. DOI 10.1016/j.gie.2020.07.060 | 非开源(商品化) |
| 3 | YOLOv3 实时系统(第三方转述) | — | — | F1 97.05%(转述口径) | 2023 | YOLOv3,30 FPS 实时 | 转述见 PMID 36826945(协议未详,仅供参考) | — |
§8.2 SOTA 总结与选型建议
官方基准(EndoBRAIN-EYE)在帧级灵敏度 90.5% 附近、特异度 93.7–98.2% 区间、息肉级 98% 的位置划定了"监管获批水准线"。选型建议:追求复现官方协议,直接从 YOLOv3/YOLOv8 + letterbox + IoU 0.3 评测起步;研究假阳性抑制,优先利用 SUN 的长阴性片段(13 段视频近 11 万帧负样本)与时序模型;追求分割形态,转入 SUN-SEG 生态使用 PNS+ 基线。任何"超越官方"的声明都应先回答三个口径问题:训练数据是否独立、分母是否实测、IoU 阈值是否一致。
§8.3 评测协议
官方协议要点(官网 + 主论文):① TP 判定 IoU ≥ 0.3;② 帧级灵敏度 = TP/(TP+FN)、特异度 = TN/(TN+FP),分母为发布版实测帧数;③ 息肉级以"该息肉所在视频至少一帧命中"计;④ 附 95%CI(论文版);⑤ 不可分析帧不计入分母(阳性 132 帧/阴性 17,752 帧)。复现时建议同时报告:分母明细、IoU 0.3/0.5 双曲线、息肉级分子分母(如 98/100)。
§8.4 相关数据集
| 数据集 | 关系 | 规模 | 标注 | 获取 |
|---|---|---|---|---|
| SUN-SEG | 姊妹(从 SUN 修剪重构) | 1,106 视频 / 158,690 帧 | mask/boundary/scribble/polygon/属性 | VPS 仓库邮件申请 |
| SUN-SEG-Rejected-Labels | 姊妹(标签噪声) | 被拒绝标注子集 | 拒绝式标签 | 同上(2022-05-11 发布) |
| LDPolypVideo | 同任务替代 | 160 视频 / 40,266 帧 | 逐帧 mask | 公开 |
| PICCOLO | 静态图对照 | 3,433 图 / 76 病变 | 息肉 mask | 申请 |
| ASU-Mayo | 视频分割对照 | 19,400 帧 | 逐帧 mask | 未公开 |
| (汇总来源:Frontiers in AI 2026 综述) |
§8.5 关键论文 Top 7
- Misawa M, Kudo S-e, Mori Y, Hotta K, Ohtsuka K, Matsuda T, Saito S, Kudo T, Baba T, Ishida F, Itoh H, Oda M, Mori K. Development of a computer-aided detection system for colonoscopy and a publicly accessible large colonoscopy video database (with video). Gastrointest Endosc. 2021;93(4):960-967.e3. DOI 10.1016/j.gie.2020.07.060 — SUN 数据库与官方基准的奠基论文(数据库构建协议 + EndoBRAIN-EYE 全部主结果)。
- Ji G-P, Xiao G, Chou Y-C, Fan D-P, Zhao K, Chen G, Van Gool L. Video Polyp Segmentation: A Deep Learning Perspective. Machine Intelligence Research. 2022;19(6):531-549. DOI 10.1007/s11633-022-1371-y(arXiv:2203.14291) — 提出 SUN-SEG 姊妹数据集与 PNS+ 基线(170 fps),把 SUN 生态扩展到视频分割。
- Bernal J, et al. 2022. Medical Image Analysis(ScienceDirect PII S1361841522002535) — hybrid 2D/3D CNN 在 SUN 上的外部测试;系统指出官方训练集的同域优势与数值不可直接比较问题。
- 第三方对比研究. Diagnostics. 2022;12(4):927(MDPI) — 汇总 SUN 上按形态分层的息肉级灵敏度(diminutive 98.3%/protruded 98.5%/flat 97.0%)等跨系统对比。
- 德国团队转述研究(PMID 36826945, 2023) — 将 SUN 记为 157,882 张 1,240×1,080 图像的第三方口径样本,同时报告 YOLOv3 系统 30 FPS/F1 97.05% 的转述性能。
- 早期 3D-CNN 可行性研究(Misawa 团队,转述见 PMC8704267) — 546 个短视频(155 阳性 + 391 阴性)上帧级 90.0%/特异度 63.3%/准确率 76.5%,验证时序路线的早期可行性。
- 视频息肉分割综述(Frontiers in Artificial Intelligence, 2026, DOI 10.3389/frai.2026.1786679) — 将 SUN 置于视频级数据集谱系(vs LDPolypVideo/PICCOLO/ASU-Mayo)的第三方横向定位。
§8.6 社区活跃度
主论文 Google Scholar 引用 285+(截至 2026-09,Google Scholar),在结肠镜视频类数据集中属于中高热度;生态的主要活动集中在 SUN-SEG 一侧:VPS 官方仓库持续维护并曾在 2022-05 增补 Rejected-Labels;第三方收录包括 Awesome-Medical-Dataset 条目。SUN 原库无公开 issue 系统与用户群组,技术疑问需通过官网联系 Mori 研究室。
对使用者的两点提示:其一,SUN 的引用热度集中在 2021-2023(CADe 验证高峰),后续时序/分割工作更多落在 SUN-SEG,检索相关实现时两个名字都应覆盖;其二,由于官网是唯一的官方答疑渠道,申请、格式、许可三类问题没有社区 wiki 可依赖,本页 §9.4 的速查表可作为第一道缓冲,但结论仍以官网与实验室回复为准。
§8.7 生态快照
| 资源 | 类型 | 链接 | 推荐理由 |
|---|---|---|---|
| 官方主页(含标注格式、患者统计、基准数字) | 数据与文档 | sundatabase.org | 一手信息源,申请入口 |
| AMED 8K 项目页(修订与获批模型性能) | 数据与文档 | amed8k.sundatabase.org | 2022 年两次更新的官方记录 |
| VPS 官方仓库(SUN-SEG) | 代码+数据 | github.com/GewelsJI/VPS | 分割基线、13 个对比模型、Rejected-Labels |
| 主论文(GIE 2021) | 论文 | DOI 10.1016/j.gie.2020.07.060 | 全部方法学与基准数字出处 |
| 临床试验注册 | 注册 | UMIN 000037064 | 采集协议的注册记录 |
| 第三方数据集收录 | 索引 | Awesome-Medical-Dataset | 快速导航与关联数据集发现 |
§9 相关资源与引用
§9.1 官方资源
- SUN Database 官方主页(许可、申请、标注格式、患者与病变统计、基准性能):sundatabase.org
- AMED 8K 项目页面(2022-07-11 Table 2 修订、2022-10-08 获批模型性能增补):amed8k.sundatabase.org
- 主论文全文(Gastrointestinal Endoscopy 2021;93(4):960-967.e3):DOI 10.1016/j.gie.2020.07.060
- 临床试验注册:UMIN 000037064
- SUN-SEG 基准与代码:github.com/GewelsJI/VPS
- 资助信息:AMED"新医疗器械开发/8K 高清医学影像数据"项目;JSPS KAKENHI 19K17504
§9.2 BibTeX 引用块
@article{misawa2021development,
title = {Development of a computer-aided detection system for colonoscopy
and a publicly accessible large colonoscopy video database (with video)},
author = {Misawa, Masashi and Kudo, Shin-ei and Mori, Yuichi and Hotta, Kinichi
and Ohtsuka, Kazuo and Matsuda, Takahisa and Saito, Shoichi and Kudo, Toyoki
and Baba, Toshiyuki and Ishida, Fumio and Itoh, Hayato and Oda, Masahiro
and Mori, Kensaku},
journal = {Gastrointestinal Endoscopy},
volume = {93},
number = {4},
pages = {960-967.e3},
year = {2021},
doi = {10.1016/j.gie.2020.07.060}
}
@article{ji2022vps,
title = {Video Polyp Segmentation: A Deep Learning Perspective},
author = {Ji, Ge-Peng and Xiao, Guobao and Chou, Yu-Cheng and Fan, Deng-Ping
and Zhao, Kai and Chen, Geng and Van Gool, Luc},
journal = {Machine Intelligence Research},
volume = {19},
number = {6},
pages = {531-549},
year = {2022},
doi = {10.1007/s11633-022-1371-y},
note = {Introduces the SUN-SEG benchmark derived from the SUN Database; arXiv:2203.14291}
}
§9.3 引用指南
使用 SUN Database 时:① 在正文中引用主论文(misawa2021development)并注明官网地址;② 若同时使用了 SUN-SEG 或其标注,追加 ji2022vps;③ 报告性能时附协议三要素(划分单位、IoU 阈值、分母口径);④ 数据获取与许可问题以官网联系方式向 Mori 研究室确认,本页信息截至 2026-09,之后条款若有更新以官网为准。
§9.4 高频问题速查
| 问题 | 简答 | 详见 |
|---|---|---|
| SUN Database 与 SUN Scene UNderstanding 数据集是什么关系? | 没有任何关系。本库的 SUN = Showa University and Nagoya University,是结肠镜视频库;Scene UNderstanding 是纽约大学发布的场景识别图像集 | §1.0 |
| 我应该引用哪个帧数:152,560 还是 158,690? | 都"对":前者是论文原始分析口径,后者是官网发布版口径(删帧后)。报数以你实测解压结果为准并声明口径 | §3.2、坑点 1 |
| 可以在 SUN 上训练模型吗? | 可以,但必须按视频/息肉分组划分;官方基准的含义是"独立训练 + SUN 纯测试",内部划分的数字与官方不可比 | §5.1–§5.3 |
| 为什么我的帧级灵敏度远低于官方 90.5%? | 先检查三点:IoU 阈值是否用了 0.5(官方 0.3)、分母是否与官网一致、class_id 语义是否翻转 | 坑点 2、坑点 5 |
| 能用它做病理分类(腺瘤 vs 锯齿状 vs 癌)吗? | 不建议:SSL 4、TSA 2、癌 1 的样本量不足以训练;病理信息只用于分层描述 | 坑点 7 |
| 有 NBI 版本吗? | 没有。全库仅白光成像(WLI) | §3.1 |
| 商业使用或产品化需要什么? | 须经 Mori 研究室书面许可;相关专利 JP 6059271、JP 6580446 授权给 Cybernet Systems 与昭和大学 | §3.10、§7.4 |
§10 AI 使用声明卡
§10.1 本页面使用的 AI 模型列表
- 千方自研医学文档生成模型(结构化写作与格式统一)
- 通用大语言模型(信息汇总与多语言资料整理)
- 代码生成模型(§6 代码示例编写与静态检查)
§10.2 AI 参与范围
AI 辅助完成了:多轮检索结果的汇总归纳、初稿撰写、代码示例编写与格式统一。AI 未独立完成:事实裁定(全部规模数字、基准数字、日期均要求检索来源支撑)、ICD-11/SNOMED 编码核对、医学结论表述的最终把关。以下环节由人工完成并负责:数据字典逐列核对、坑点与官网/论文原文的一致性核验、医学编码的权威来源比对。
§10.3 输入来源列表
- Misawa M, Kudo S-e, Mori Y, et al. Development of a computer-aided detection system for colonoscopy and a publicly accessible large colonoscopy video database (with video). Gastrointest Endosc. 2021;93(4):960-967.e3. DOI 10.1016/j.gie.2020.07.060(PMID 32745531)
- SUN Database 官方主页(标注格式、患者/病变统计、许可条款):sundatabase.org
- AMED 8K 项目页面(2022 年两次修订记录):amed8k.sundatabase.org
- Ji G-P, Xiao G, Chou Y-C, Fan D-P, Zhao K, Chen G, Van Gool L. Video Polyp Segmentation: A Deep Learning Perspective. Mach Intell Res. 2022;19(6):531-549. DOI 10.1007/s11633-022-1371-y;arXiv:2203.14291
- Bernal J, et al. Medical Image Analysis(2022,hybrid 2D/3D CNN 外部测试):ScienceDirect
- Diagnostics. 2022;12(4):927(形态分层灵敏度转述):MDPI
- 德国团队论文(157,882 张/1,240×1,080 转述):PMID 36826945
- 视频息肉分割综述与数据集谱系:Frontiers in Artificial Intelligence, 2026
- 主论文 ScienceDirect 文章页(训练集与标注流程细节):S0016510720347817
- 早期 3D-CNN 系统转述(546 短视频,90.0%/63.3%/76.5%):PMC8704267
- WLI 单模态佐证(无 NBI 变体):DeepDyve 转述
- SUN-SEG 代码与 Rejected-Labels:github.com/GewelsJI/VPS
- 第三方数据集收录条目:Awesome-Medical-Dataset
- 临床试验注册:UMIN 000037064(主论文注册号)
- 资助与专利声明:AMED 8K 项目、JSPS KAKENHI 19K17504、专利 JP 6059271/JP 6580446(主论文声明)
- MedGen/公开疾病映射库(ICD-11 DB35、SNOMED 72951001/44441009/363406005 等编码对照)
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11/SNOMED 映射、临床任务) | 千方病案医学编辑部 | 对照 MedGen/ICD-11 公开映射与同门已发布条目逐条核对 | ✅ 已通过/已验证 |
| §3 数据集规格(三套帧数口径、格式、溯源链) | 千方病案医学编辑部 | 与官网 HTML 原文及主论文摘要逐数核对 | ✅ 已通过/已验证 |
| §4 数据结构与 DAIMS 字段字典 | 千方病案医学编辑部 | 对照官网标注行格式与公布统计逐列核对 | ✅ 已通过/已验证 |
| §5-§6 划分策略、代码与坑点 | 千方病案医学编辑部 | 对照论文 limitations 与官网注释逐条溯源 | ✅ 已通过/已验证 |
| §7-§8 质量评估与基准数字 | 千方病案医学编辑部 | 基准数字与官网/论文原文逐一比对(含 95%CI) | ✅ 已通过/已验证 |
| §9-§10 引用与声明卡 | 千方病案医学编辑部 | BibTeX 字段与 PubMed/Google Scholar 条目核对 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
全部章节由 AI 起草初稿并完成格式统一;事实性内容(§1.1、§2、§3、§4.1-§4.5、§8.1、§8.5、§10.3)的每一处数字均绑定检索来源并经人工核验;观点性内容(§1.2 战略价值、§7.7 评分解读、§8.2 选型建议)为编辑部分析,供参考。
§10.6 最后人工审核
最后人工审核日期:2026-09-05
页面状态:published(全部内容已完成审核并发布)
