LDPolypVideo — 大规模结肠镜视频息肉检测数据集 AI-Ready Wikipedia | 千方病案医数集

263 段结肠镜视频、40,266 帧圆形标注、200 个息肉的视频息肉检测基准

来源 中国科学技术大学 & 安徽医科大学第一附属医院 url: https://github.com/dashishi/LDPolypVideo-Benchmark发布时间: 2026-09-08最后更新: 2026-09-08 阅读 4

信息速览

数据集名称LDPolypVideo — 大规模结肠镜视频息肉检测数据集 AI-Ready Wikipedia | 千方病案医数集
数据类型160 段标注视频,40,266 帧标注帧,200 个息肉,103 段未标注视频,560×480 帧图像,免费学术获取
规模未披露——患者元数据已全部移除,仅提供视频与帧
接入方式中国科学技术大学 & 安徽医科大学第一附属医院 url: https://github.com/dashishi/LDPolypVideo-Benchmark
AI 就绪度

数据集封面

LDPolypVideo — 大规模结肠镜视频息肉检测 AI-Ready Wikipedia


INFOBOX

字段 内容
数据集名称 LDPolypVideo
英文全称 LDPolypVideo Benchmark: A Large-Scale Colonoscopy Video Dataset of Diverse Polyps
别名/简称 LDPolypVideo-Benchmark、LDPolyVideo(官方 README 拼写变体)
疾病分类(ICD-11) 2E90 结肠息肉(Polyp of colon)/ 2B80 结直肠恶性肿瘤(筛查终极目标疾病)
SNOMED CT 72951001 Polyp of colon / 68496003 Polyp / 73761001 Colonoscopy(详见 §2.2)
数据模态 影像(白光结肠镜视频 + 抽帧图像:768×576 存储视频 / 560×480 标注帧)
AI 任务类型 视频息肉检测(圆形标注→边界框目标检测)、时序目标检测、自监督/半监督预训练
样本总数 263 段视频(160 标注 + 103 未标注)/ 40,266 标注帧(33,884 息肉帧 + 6,382 非息肉帧)/ 200 个息肉
数据大小 官方以云盘 Part-1 / Part-2 双包发布,未公布精确字节数(获取方式见 §6.2)
数据格式 视频文件(768×576)+ 抽帧图像(560×480)+ 圆形标注坐标文件
许可证 未附标准许可证文本:学术免费使用,使用时引用 MICCAI 2021 原始论文
访问级别 开放(官方云盘直链下载,无需注册或申请审核)
DUO 标签 GRU, NRES(数据集无正式 DUO 声明,按免费学术使用惯例类比标注)
语言 英文(文档与标注说明;影像内容无语言依赖)
首发日期 2021-09-27(MICCAI 2021 论文见刊日)
最后更新 2021-10-01(GitHub 仓库最后一次文件上传)
发布机构 中国科学技术大学(类脑智能技术及应用国家工程实验室)& 安徽医科大学第一附属医院
官方主页 github.com/dashishi/LDPolypVideo-Benchmark
下载地址 百度网盘(提取码 ustc)/ Google Drive Part-1、Part-2(链接见 §6.2)
DOI 10.1007/978-3-030-87240-3_37
引用次数 92+(Springer 计量,截至 2026-09;另有 10k+ 全文访问)
AI 就绪度评分 ⭐⭐⭐(3/5)— 有官方视频级 train/test 划分与结构化标注,但无预处理脚本、无数据加载器,需自行完成视频解码、抽帧与圆形标注→边界框转换
页面状态 published

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

医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11/SNOMED CT 映射、腺瘤-癌序列与 CADe 临床任务定义、金标准标注流程描述)、§7 偏倚分析。

数据工程审核者:千方病案医学编辑部交叉审核:医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略(视频级防泄漏)、§6 预处理 Pipeline(视频解码/抽帧/标注转换)和坑点。

审核日期:2026-09-05

审核方式:交叉审核

利益冲突声明:千方病案医数集与中国科学技术大学、安徽医科大学第一附属医院无任何商业利益关联。本页面不销售 LDPolypVideo 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。

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

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

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。LDPolypVideo 未附标准许可证文本,学术使用时应引用 MICCAI 2021 原始论文并遵守发布方的使用惯例。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。


§1 数据集概览

§1.0 📌 30 秒速览

这是什么? LDPolypVideo 是一个大规模结肠镜视频数据库,2021 年 9 月在 MICCAI 2021 发表,由中国科学技术大学与安徽医科大学第一附属医院联合制作。它包含 160 段带息肉标注的结肠镜视频(共 40,266 帧、200 个不同息肉),以及 103 段仅有"是否含息肉"视频级标签的未标注视频(共 861,400 帧)。与 CVC-ClinicDB 这类静态图数据集不同,它保留了息肉从进入视野到离开视野的完整动态过程——包括真实检查中的运动模糊、镜面反光和气泡。

为什么重要? 息肉漏检是结直肠癌筛查失败的主要原因,而临床中息肉一闪而过、形态多变。静态图数据集无法反映这种动态复杂性:在 LDPolypVideo 上,原始论文测得 4 种当时最先进检测方法的召回率平均下降 26%、精确率平均下降 15%。它迫使研究者直面"视频里检测息肉"这一真实难题,成为视频息肉检测(Video Polyp Detection)方向的标准基准之一。

我能用它做什么? 训练和评测视频息肉检测模型(引用圆形标注转边界框)、在 103 段未标注视频上做自监督/半监督预训练(内镜视频基础模型 Endo-FM 就用它预训练过)、评估 CADe 系统在运动模糊与反光下的鲁棒性。如果你需要像素级分割掩膜或病理分型标签,请改用 CVC-ClinicDB 或 PICCOLO——本数据集不提供这些。

§1.1 技术摘要

LDPolypVideo 的构建流程为:从合肥某公立医院的常规结肠镜检查中收集视频,由临床医师挑选含息肉片段;去除所有患者相关元数据后,将视频以 768×576 分辨率存储,抽帧并裁剪黑边后统一缩放至 560×480;团队设计了基于目标跟踪的智能标注工具——人工只标注首帧,跟踪算法自动传播到后续帧再人工校正,从而以较低成本完成 40,266 帧的连续标注(MICCAI 2021 论文)。标注形式为圆形标注(圆心 + 半径定位息肉),覆盖 200 个息肉。官方按视频级划分 train(100 段)/test(60 段)。原始论文在数据集上评测了多种 SOTA 目标检测方法,发现性能大幅下降,以此论证数据集对推动视频息肉检测研究的价值(arXiv 综述)。

§1.2 战略价值

维度一:从静态帧到真实视频的范式补位。 2021 年之前,息肉检测社区的主力数据集(CVC-ClinicDB 612 帧、Kvasir-SEG 1,000 帧、CVC-ClinicVideoDB 11,954 帧)要么是静态图,要么视频规模过小。LDPolypVideo 以 40,266 标注帧、200 个息肉的规模(帧数约为 CVC-ClinicVideoDB 的 4 倍、息肉数为其 11 倍以上)第一次让"视频息肉检测"有了像样的训练场,直接催生了 STFT、YONA、AVPDN 等一系列时序检测方法(SOTA2 榜单)。

维度二:未标注视频红利。 103 段、861,400 帧的未标注部分虽然只有视频级标签,却是公开内镜领域少有的大体量视频语料。Endo-FM(MICCAI 2023 内镜视频基础模型)与 FPSiam(Scientific Reports 2023 自监督研究)都将其纳入预训练语料,验证了其在表征学习中的价值(Endo-FMFPSiam)。对资源有限的研究者,这是进入"内镜视频自监督"赛道门槛最低的入口之一。

维度三:真实伪影的鲁棒性试金石。 运动模糊、镜面反光、气泡、暗区——这些让静态图方法失效的元素在 LDPolypVideo 中自然存在而非人工合成。将静态图上接近饱和的模型(如 Kvasir-SEG 上 F1 > 0.9 的分割网络)迁移到本数据集,F1 普遍跌至 0.55-0.63 区间,落差本身就是研究信号(见 §8.1 排行榜)。

维度四:标注效率的方法论样本。 40,266 帧的连续标注靠"人工首帧 + 跟踪传播 + 人工校正"完成,这是医学视频标注的经典 human-in-the-loop 范式。对计划自建视频标注的团队,该数据集的标注密度(每息肉约 169 帧)可作为标注成本预算与工具选型的参照系;其圆形标注的取舍(效率 vs 边界精度)也给出了一个可引用的先例(MICCAI 2021)。

§1.3 同类数据集横向对比

数据集 年份 视频数 帧数 息肉数 标注形式 分辨率 差异化定位
LDPolypVideo 2021 160 标注 + 103 未标注 40,266 标注帧(+861,400 未标注帧) 200 圆形标注(跟踪辅助) 视频 768×576 / 帧 560×480 大规模视频检测基准 + 未标注预训练语料
CVC-ClinicVideoDB 2015 40 11,954(6,949 含息肉) 约 18 像素掩膜 384×288 最早的公开视频检测集,规模小
SUN Database 2021 113(100 阳 + 13 阴) 158,690(49,136 息肉帧) 100 边界框 + 病理分型 1,240×1,080 带组织学标签(腺瘤/锯齿状/癌等六类)
KUMC 2021 80 片段 37,899 80 边界框 + 腺瘤/增生分类 混合分辨率 腺瘤 vs 增生性分类检测
REAL-Colon 2024 60 2,757,723(全程连续) 131 逐帧标注 + 尺寸 1,920×1,080 全程无剪辑、多中心、最大原始体量
Kvasir-SEG(静态对照) 2020 1,000 1,000 像素掩膜 720-1,920 静态分割金标准,与视频集不可直接比较

对比来源:Frontiers in AI 2026 综述PMC11324571sing-group 数据集索引

§1.4 版本时间轴

时间 事件 说明
2021-09-01 MICCAI 2021 论文录用公开 MICCAI open access 页
2021-09-27 论文正式见刊(LNCS 12905, pp. 387-396) DOI 10.1007/978-3-030-87240-3_37
2021-10-01 GitHub 仓库最后一次文件上传 数据以云盘链接分发,仓库本体仅含 README 与示例图
至今(截至 2026-09) 无正式版本更新 社区通过论文各自定义划分,跨论文结果不可直接比较(见坑点 2)

LDPolypVideo 为单版本数据集,不存在 v1/v2 演进。使用时无需做版本抉择,但需注意云盘内容与 README 描述的一致性依赖社区核对。

§1.5 典型应用场景

  1. 视频息肉检测基准评测:使用官方 train(100 段视频)/test(60 段视频)划分,报告 Precision/Recall/F1,与 YONA、STFT、CenterNet 等已发表结果对比(§8.1)。
  2. 自监督/半监督预训练:将 103 段未标注视频(861,400 帧)作为预训练语料,再在标注子集上微调——FPSiam 与 Endo-FM 的既定用法。
  3. CADe 系统鲁棒性压力测试:在运动模糊、反光、气泡密集片段上评估检测召回衰减,量化产品在真实肠道环境中的失效模式。
  4. 时序信息融合研究:研究"多少时序上下文最优"——YONA 证明仅 1 个相邻参考帧即可超越多帧聚合方法(F1 62.3,FPS 46.3),是该方向的代表性结论。
  5. 教学与复现实验:规模适中、免费获取、结构简单,适合作为医学视频目标检测课程的设计作业数据集。

§2 医学背景

§2.1 ICD-11 疾病分类锚定

临床概念 ICD-11 编码 中文名称 与本数据集的关系
结肠息肉 2E90 结肠息肉(Polyp of colon) 数据集的标注对象——40,266 帧圆形标注定位的即此类病灶
结直肠恶性肿瘤 2B80-2B8Z 结肠/直肠/肛管恶性肿瘤 筛查的终极目标疾病——实时息肉检测的价值在于阻断腺瘤-癌序列
结直肠良性肿瘤 2E86-2E8Z 结直肠良性肿瘤(含腺瘤) 息肉的主要病理类型(腺瘤性息肉为癌前病变),本数据集不区分

重要边界:LDPolypVideo 的圆形标注不区分息肉病理类型(腺瘤 / 增生性 / 炎性 / 锯齿状),没有良恶性标签,也没有大小与 Paris 分型。它回答的问题是"息肉此刻在哪里",而非"这个息肉是什么、要不要切"——后者需要 SUN(六类组织学标签)或 PICCOLO(病理分层)这类数据集。

§2.2 SNOMED CT 映射

临床场景 ICD-11 ICD-10 桥接 SNOMED CT SNOMED CT 术语
结肠息肉 2E90 K63.5 72951001 Polyp of colon (disorder)
息肉(通用形态学) K63.5 68496003 Polyp (morphologic abnormality)
结肠恶性肿瘤 2B80 C18 363406005 Malignant tumor of colon (disorder)
结肠腺瘤性息肉 D12.6 92142004 Adenomatous polyp of colon (disorder)
结肠镜检查 5AJD.00 0DJD8ZZ 73761001 Colonoscopy (procedure)
息肉切除术 5AJE 0DTN0ZZ 274025005 Colonic polypectomy (procedure)

§2.3 疾病简介与流行病学

结直肠癌(CRC)是全球第三常见恶性肿瘤与第二大癌症死亡原因,2022 年全球新发约 190 万例、死亡约 90 万例(GLOBOCAN 2022)。绝大多数 CRC 遵循"腺瘤-癌"序列:腺瘤性息肉经过 5-15 年逐步癌变,这为筛查性息肉切除提供了黄金窗口——切除腺瘤可使 CRC 发病率下降 76%-90%(NBI 研究队列等长期随访证据)。中国情况尤为严峻:发病与死亡均居恶性肿瘤前列,且发病年龄前移,50 岁以上人群肠镜筛查渗透率仍远低于欧美。

息肉的检出率(ADR,腺瘤检出率)与内镜医师经验强相关,区间波动可达 2-3 倍,漏检主要发生在:肠壁皱襞后方、退镜过快导致的短时暴露、以及息肉在视野边缘"进出画面"的瞬间。这正是 LDPolypVideo 数据设计的靶点——记录息肉进出视野的完整过程,让算法学会在动态、模糊、反光的条件下不放过任何一帧线索。

§2.4 临床任务定义

本数据集对应的核心临床任务是 CADe(Computer-Aided Detection,计算机辅助检测)

  • 筛查场景:无症状/症状人群的结肠镜筛查中实时提示息肉位置,目标是将医师 ADR 提升到基线以上。代表性产品形态是 “Detect & Flag”——检测到疑似息肉后在显示器上框选提示,不做良恶性判断。
  • 时效约束:息肉暴露窗口可能只有数十帧(1-2 秒),CADe 系统需在 ≥25 FPS 下运行才能赶上退镜速度;这也是 §8.1 排行榜同时报告 FPS 的原因。
  • 评估终点:临床终点是"按患者计的漏检率下降";数据集层面以帧级 Precision/Recall/F1 近似,二者的差距见坑点 7 与坑点 8。
  • 不属于本数据集的任务:息肉分型(NICE/JNET 需窄带成像与血管纹理)、浸润深度判断、以及像素级边界勾画(需要分割掩膜数据集)。

§2.5 患者人群

属性 描述 说明
来源机构 安徽医科大学第一附属医院(合肥,公立三甲医院) 临床合作方为论文第 4、5 作者所在单位
采集情境 常规(非研究性)结肠镜检查 综述转述:“clinical colonoscopy videos were gathered from normal clinical findings at a public hospital”
年龄分布 未披露 患者元数据已全部移除
性别分布 未披露 同上
种族构成 以中国汉族人群为主(合理推断,未正式披露) 单中心中国医院来源
就医类型 门诊筛查 + 住院检查混合 未按就医类型分层披露
视频-检查对应关系 未披露 160 段标注视频与检查次数的映射已不可重建(见坑点 7)

对人群解读的总体建议:把本数据集的人群画像理解为"中国三甲医院结肠镜检查人群的一个未分层切片"。所有需要人群分层的分析(年龄特异性敏感度、性别差异、适应证构成)在本数据集上均不可执行——这既是隐私保护的结果,也是使用前必须写进研究局限的事实。

§2.6 临床价值

对设备研发方,LDPolypVideo 提供了静态图无法替代的动态失效模式库:运动模糊帧、反光帧、气泡遮挡帧的检测衰减可以直接量化,这是 NMPA/FDA 审评中"真实使用条件下的性能"论证的常用证据来源。对医院信息科与内镜中心,基于该数据集训练的模型可作为院内 CADe 选型的初筛参考——但必须在与本院人群匹配的前瞻性数据上复测。对学术研究者,它是视频时序建模、半监督学习、域自适应三个方向的公共竞技场:Endo-FM 证明预训练特征可跨机构迁移,FPSiam 证明自监督可在无标注视频上学到可迁移表征。

§2.7 金标准与标注协议

维度 描述
划分 官方按视频级划分:train 100 段 / test 60 段(无验证集)
标注方式 人工 + 目标跟踪辅助:首帧人工定位,跟踪算法传播至后续帧,人工校正;标注为圆形(圆心 + 半径)
标注者资质 临床医师(论文合作方医院消化内镜医师)选择含息肉片段并参与标注;具体人数与年资未披露
一致性度量 未公布(无 IAA/κ 系数)
标注性质 定位金标准(描述"息肉在哪里"),非组织学金标准——无病理确认标签
覆盖范围 息肉进出视野完整生命周期;含运动模糊、镜面反光、气泡等真实伪影

§3 数据集规格

§3.0 版本抉择矩阵

LDPolypVideo 为单版本发布,但标注子集与未标注子集服务不同目标,按需求取用:

你的需求 推荐取用部分 体量 理由
训练/评测视频息肉检测器 160 段标注视频(40,266 帧) 官方 train/test 划分现成 有逐帧圆形标注,直接转 bbox 训练
自监督/半监督预训练 103 段未标注视频(861,400 帧) 仅视频级标签 Endo-FM、FPSiam 的既定用法
鲁棒性压力测试 标注集中运动模糊/反光密集片段 需自行筛选 无伪影类型标签,按帧视觉特征自行分桶
快速原型验证 仅 train 子集(100 段、24,789 帧) 约 60% 标注体量 30 分钟内可跑通训练循环
像素级分割研究 改用 CVC-ClinicDB / SUN-SEG 本数据集无分割掩膜

§3.1 模态详情

  • 结肠镜视频:160 段标注 + 103 段未标注,存储分辨率 768×576(sing-group 数据集索引),来源于常规白光结肠镜检查。
  • 抽帧图像:标注帧裁剪黑边后统一缩放至 560×480。社区工作(FPSiam、AVPDN)均按此分辨率载入;训练时普遍再随机裁剪/缩放至 512×512(YONA 设置)。
  • 标注:圆形标注(circular annotation)——以圆心坐标与半径定位息肉。arXiv 综述明确称其为 “circular annotations”,社区普遍将其转换为外接矩形(bbox)后做目标检测(arXiv 2203.14291)。
  • 视频级标签:103 段未标注视频各带一个"是否含息肉"的二值标签(42 阳性 / 61 阴性)。

§3.2 按子集样本数明细

子集 视频数 帧数 息肉帧 非息肉帧 息肉数 标注级别
标注 · 官方 train 100 24,789 20,942 3,847 帧级圆形标注
标注 · 官方 test 60 15,397 12,933 2,464 帧级圆形标注
标注 · 合计 160 40,266 33,884 6,382 200 帧级圆形标注
未标注 · 息肉视频 42 371,400 仅视频级阳性标签
未标注 · 非息肉视频 61 490,000 仅视频级阴性标签
未标注 · 合计 103 861,400 仅视频级标签

来源:官方 GitHub README(标注子集总量)、FPSiam(Scientific Reports 2023,train/test 拆分明细)、Frontiers 综述(未标注子集 42/61 拆分)。注:train/test 息肉帧拆分(20,942/12,933)为 YONA 论文复述口径,与 33,884 总量吻合(差 9 帧来自各论文统计时点差异)。

数字口径速查卡(写作/审稿时防"数字打架"):

你想说的数字 正确口径 常见错误
视频总数 263 段(160 标注 + 103 未标注) 只说 160(漏未标注)或编造"206"
标注帧 40,266(息肉 33,884 + 非息肉 6,382) 把 861,400(未标注域)误当标注帧
息肉实例 200 个("圆标注"计数) 与 Kvasir-SEG 的 1,000 张图混淆
train/test 100/60 视频;全帧口径 24,789/15,397 与 YONA 息肉帧口径 20,942/12,933 混用
分辨率 视频 768×576、帧 560×480 编造"1920×1080"(这是 REAL-Colon)
引用 92+(Springer,截至 2026-09) 引用"Google Scholar 数字"而无法溯源

§3.3 数据格式

内容 格式 说明
视频 常见容器(MP4/AVI 类) 768×576 存储分辨率,云盘分发
标注帧 图像文件(JPG/PNG) 560×480,去黑边后缩放
标注文件 坐标文本(圆心 + 半径) 需自行解析并转换为 bbox(转换代码见 §6.3)
视频级标签 二值标签(阳性/阴性) 103 段未标注视频
文档 README(GitHub) 仅示例图与下载链接,无字段级数据字典

官方未提供统一的标注 schema 文档;具体文件组织以实际下载为准,§4.0 给出社区复现的典型结构。

§3.4 存储大小

官方以百度网盘与 Google Drive 双渠道分发,未公布精确字节数,下载页分 Part-1 / Part-2 两个分包。按帧数与分辨率估算(861,400 帧未标注 + 40,266 帧标注 + 视频原文件),解压后体量为数十 GB 量级——请在云盘中转时预留 ≥100 GB 磁盘空间。下载后第一件事是记录各分包的文件数与校验和(官方未提供 sha256)。

§3.5 标注方式

人工与算法混合(human-in-the-loop):临床医师在视频中选定含息肉片段并标注首帧,团队自研的基于目标跟踪的智能标注工具将标注传播到后续帧,再由人工逐段校正。这一设计的动机是效率——40,266 帧若逐帧人工标注成本过高。代价是标注质量继承跟踪误差:快速运动、模糊帧上圆形边界可能滞后于息肉真实位置(详见坑点 4)。

§3.6 标注者资质与一致性

标注由论文临床合作方(安徽医科大学第一附属医院)的内镜医师参与完成,医师负责片段筛选与标注校正。论文与 README 均未披露:标注者人数、年资、双人独立标注比例、以及一致性系数(IAA)。这是使用时需要自行承担的不确定性——在标注敏感型应用(如边界精调)中建议先在小样本上人工复核(见 §7.2)。

§3.7 采集周期

官方未披露视频采集的起止年份。数据集于 2021-09 随论文发布,采集应在此之前数年内完成。论文未说明采集是否跨多个年度,也无法排除部分视频来自同一批检查的可能性(元数据已移除)。

§3.8 地域覆盖

单一中心:中国安徽省合肥市(安徽医科大学第一附属医院)。无多中心分层,无地域多样性设计。

§3.9 设备规格

官方未披露内镜主机与镜体型号。可确认的规格约束:存储分辨率 768×576(低于现代内镜的 1,920×1,080 原生输出,说明发布时经过下采样或录制设备即为标清),帧图像统一 560×480。使用现代高清内镜视频训练的模型迁移到本数据集时存在分辨率域差(见 §7.6)。

§3.10 深度溯源链

环节 记录 可追溯性
原始采集 合肥某公立医院常规结肠镜检查(论文转述) 机构可溯(安徽医科大学第一附属医院),检查记录不可溯
片段筛选 临床医师挑选含息肉片段 标准未公开(阳性片段入选标准未披露)
隐私处理 移除所有患者相关元数据 声明于综述转述;无单独 de-identification 文档
存储转码 768×576 视频 → 去黑边 → 560×480 帧 参数可从数据本身核验,转码工具未披露
标注 跟踪辅助人工圆形标注 工具为团队自研,未开源;标注文件可直接核验
发布 GitHub(README + 示例)+ 百度网盘/Google Drive(数据) DOI 指向论文,数据无版本化归档

§4 数据结构

§4.0 目录树预览

官方未随仓库发布数据字典,以下为按官方描述与社区工作(FPSiam、AVPDN 的加载脚本)整理的典型组织结构。实际下载后请先以 ls 核对:

data_root/                          # ← 你的 data_root 指向这里
├── annotated/                      # 160 段标注视频
│   ├── videos/                     # 原始视频文件(768×576)
│   │   ├── video_0001.mp4
│   │   ├── ...
│   │   └── video_0160.mp4
│   ├── frames/                     # 抽帧图像(560×480)
│   │   ├── video_0001/
│   │   │   ├── 00001.jpg
│   │   │   ├── 00002.jpg           # 含息肉帧与少量非息肉帧混合
│   │   │   └── ...
│   │   └── video_0160/
│   └── annotations/                # 圆形标注坐标文件(每帧一份或按视频汇总)
│       ├── video_0001/             # 每行一条:圆心 x, 圆心 y, 半径(或等价 bbox)
│       │   ├── 00001.txt
│       │   └── ...
│       └── video_0160/
├── train_list.txt                  # 官方 train:100 段视频 ID(按视频划分)
├── test_list.txt                   # 官方 test:60 段视频 ID(按视频划分)
└── unlabeled/                      # 103 段未标注视频(仅视频级标签)
    ├── videos/
    │   ├── polyp/                  # 42 段阳性视频(371,400 帧)
    │   └── non_polyp/              # 61 段阴性视频(490,000 帧)
    └── video_labels.txt            # 视频级二值标签

⚠️ 上述文件名为示意;云盘内的真实命名可能不同。核心不变量是:160 段标注视频 ↔ 40,266 帧 ↔ 圆形标注103 段未标注视频 ↔ 861,400 帧 ↔ 视频级标签

§4.1 DAIMS 字段字典

字段 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
video_id string 视频唯一标识(云盘内目录/文件名) video_0037 划分与分组键(视频级防泄漏) 命名在各分包间可能不一致 无缺失 官方 160+103 段
frame_id / 帧序号 integer 帧在视频内的顺序号 00001 恢复时序、构造相邻帧对 抽帧可能非严格等间隔 无缺失 每视频 1 到 N 帧
annotation(圆心 x, y) float ×2 圆形标注圆心像素坐标 (287.5, 240.0) 转 bbox 中心 模糊帧上圆心滞后于真实位置 空文件 = 该帧无息肉 [0, 560) × [0, 480)
annotation(半径 r) float 圆形标注半径(像素) 46.2 转 bbox 宽高(2r×2r) 圆对非圆形息肉是近似 空文件 = 无息肉 [8, ~240](典型)
has_polyp(帧级) binary 该帧是否含至少一个标注 1 正负样本过滤 非息肉帧可能有未标注息肉(假设) 无显式编码
polyp_instance_id integer 帧内息肉实例序号 1 多息肉帧实例分离 跟踪 ID 跨帧一致性未保证 无实例时为空 1 到该帧实例数
video_level_label binary 未标注视频是否含息肉 1 半监督正/负域划分 仅说明"至少存在过" 无缺失 {0, 1}(42 阳/61 阴)
resolution integer ×2 帧像素尺寸 560×480 输入归一化 统一(已缩放) 无缺失 560×480
source_video_resolution integer ×2 存储视频像素尺寸 768×576 分辨率域差分析 统一 无缺失 768×576
split(官方) categorical train / test train 复现官方协议 各论文自定义划分不一致 无缺失
patient/exam_id 不存在 提示患者级泛化不可评估 元数据已移除 缺失即信息(见坑点 7)

§4.2 标签分布

  • 帧级正负比:息肉帧 33,884 / 非息肉帧 6,382 ≈ 84.2% : 15.8%。标注子集高度偏向息肉出现帧——这是"按含息肉片段剪辑"的设计使然,与真实退镜过程(绝大多数帧无息肉)分布相反,构成 §7.1 的选择偏倚。
  • 息肉实例:200 个息肉摊到 33,884 帧,平均每个息肉约 169 帧(约 6-8 秒的连续暴露),长时程暴露便于时序建模但也放大了同一息肉跨 train/test 泄漏的风险(坑点 1)。
  • 未标注域:42 阳性 / 61 阴性视频(帧数 371,400 / 490,000),阴性帧占比 56.9%——更接近真实检查的无息肉分布,可用于校正正负偏倚(坑点 6)。
  • 类别体系:仅有"息肉 / 非息肉"二分类,无腺瘤/增生、大小、Paris 分型等亚标签。

§4.3 关键统计

统计项 数值 来源
标注视频数 160 官方 README
标注帧总数 40,266 官方 README
息肉帧 / 非息肉帧 33,884 / 6,382 官方 README
息肉实例总数 200(为 CVC-ClinicVideoDB 的 11 倍以上) 官方 README
未标注视频 / 帧 103 / 861,400(371,400 + 490,000) 官方 README + Frontiers 综述
视频分辨率 768×576 sing-group 索引
帧分辨率 560×480 综述 + 社区加载脚本
官方划分 train 100 视频(24,789 帧)/ test 60 视频(15,397 帧) FPSiam(Sci Rep 2023)
SOTA 性能衰减 Recall 平均 −26%,Precision 平均 −15% MICCAI 2021 论文

§4.4 数据层级

医院(1 家,未具名披露)
 └─ 结肠镜检查(次数未披露,元数据已移除)      ← 患者层级在此断裂
     └─ 视频(263 段:160 标注 + 103 未标注)   ← 实际可用的分组单元
         └─ 帧(40,266 标注帧 + 861,400 未标注帧)
             └─ 息肉实例(200 个,圆形标注)

关键结论:可用于防泄漏的最高可靠分组层级是视频(video_id)。检查级与患者级分组因元数据缺失而不可行(坑点 7)。

§4.5 缺失值与信息性缺失

缺失情形 表现 是否信息性 处理建议
非息肉帧无标注文件/空文件 标注目录下无对应 txt 或文件为空 ——空 = 确认无息肉(负帧),非"漏标" 直接作为纯背景帧参与训练(坑点 6)
未标注视频无帧级标注 unlabeled 目录下只有视频与标签 ——设计如此,供自监督 不要误当"漏标"补标
患者/检查 ID 整列不存在 ——隐私设计 分组只能到视频级(坑点 7)
标注一致性系数 文档未提供 否——真实缺失 小样本自评(§7.2)
采集日期/设备型号 文档未提供 否——真实缺失 按"未披露"如实报告

§5 划分与使用建议

§5.1 官方划分

视频划分为 train(100 段,24,789 帧)与 test(60 段,15,397 帧),无官方验证集。原始论文与多数后续工作直接在此 test 上报告 Precision/Recall/F1。要复现官方协议,务必从 FPSiam(Scientific Reports 2023)记录的划分口径入手,并核对你下载包中附带的划分列表。

§5.2 社区惯例划分(不可互相比较)

工作 划分方式 train/test 帧数 后果
FPSiam(Sci Rep 2023) 官方视频级划分 24,789 / 15,397 官方口径,推荐复用
YONA(2023) 官方划分、仅计息肉帧 20,942 / 12,933 榜单主口径(SOTA2 2023-06)
AVPDN(2025) 自定 7:2:1(train/test/val) 未披露明细 AP 96.6 与榜单完全不可比
自监督工作 未标注 103 段做 pretrain,标注子集微调 见 FPSiam 预训练-微调协议

§5.3 划分策略建议与泄漏风险 ⭐

  1. 永远按视频级分组划分:同一息肉的连续帧几乎像素级相似,帧级随机划分会让 test 信息经训练集"背书",虚高 5-15 个点(坑点 1)。用 GroupShuffleSplit(groups=video_id)
  2. 需要验证集时:从官方 train 的 100 段视频再切 20 段做验证(保持视频级),test 60 段封存至最终报告。
  3. 跨息肉早停:验证集指标应按"息肉事件"聚合(一个息肉的所有帧视为一个事件),避免同一息肉的多帧在同一 epoch 中反复计入。
  4. 视频级划分已尽量防住息肉跨集:官方划分按视频切分,同一息肉实例不会横跨 train/test——但同一检查的不同片段若被分进两个集,仍可能共享设备与人群特征,此风险无法排除(元数据缺失)。

§5.4 交叉验证建议

单中心数据建议做 5 折按视频分组的交叉验证报告均值 ± 标准差,替代单次 train/test 结果,以刻画小样本波动;折间确保同一 video_id 只出现在一个折。

§5.5 外部验证建议

  • 近域外部:CVC-ClinicVideoDB(欧洲、384×288)——测跨洲与跨分辨率泛化,预期掉点显著。
  • 高清现代域:REAL-Colon(1,920×1,080、多中心、全程连续)——测"标清→高清"分辨率域差(§7.6)。
  • 病理分层域:SUN——测向带组织学标签场景的迁移(仅检测框对齐)。
  • 报告时区分"帧级 F1"与"视频级事件召回",后者才是临床泄漏(漏检)的对应物。

§5.6 三种推荐工作流模板

模板 适用人群 数据流 报告要点
A. 严格基准复现 方法论文作者 官方 train(100) 内切 20 段做 val → test(60) 封存最终评测;圆形标注统一转 bbox 显式声明划分口径、IoU 阈值、帧口径(息肉帧/全帧);附划分列表
B. 预训练→微调 自监督/基础模型研究 unlabeled 103 段抽帧预训练 → 标注 train 微调 → test 评测 → 跨库(CVC/SUN)验证 预训练抽帧率、预训练 epoch、跨库掉点;引 Endo-FM 协议
C. 鲁棒性压力测试 CADe 工程团队 标注集按伪影分桶(模糊/反光/正常)→ 分桶测衰减;阴性未标注视频抽帧测 FP/frame 每桶样本量、衰减曲线、部署阈值建议;对照 SOTA2 基线

三个模板共享同一套防泄漏底线(视频级分组)与指标口径(§6.9),可按研究阶段从 A 渐进到 C。


§6 AI 就绪指南

§6.0 云端快速启动

数据托管在百度网盘与 Google Drive(无 HTTP 直链),Colab 场景建议:将 Google Drive 链接中的文件 ID 取出后用 gdown 拉取(大文件需处理 Google 配额确认页),或先在本地网盘客户端下载再上传至你的对象存储。

# Colab: 从 Google Drive 拉取分包(file_id 替换为官方 README 中 Part-1/Part-2 链接里的实际 ID)
# !pip install -q gdown
import gdown
# gdown.download(id="PART1_FILE_ID", output="/content/ldpolypvideo_part1.zip", quiet=False)
# gdown.download(id="PART2_FILE_ID", output="/content/ldpolypvideo_part2.zip", quiet=False)

§6.1 快速上手

# ============================================================
# 目录结构预期(详见 §4.0):
#   data_root/
#   ├── annotated/frames/{video_id}/00001.jpg ...   # 560×480 帧
#   ├── annotated/annotations/{video_id}/00001.txt  # 圆形标注(空文件=负帧)
#   ├── train_list.txt / test_list.txt              # 官方视频级划分
#   └── unlabeled/videos/{polyp|non_polyp}/...      # 103 段未标注视频
#
# data_root 拼接关系:data_root / subset_dir / video_id / frame_file
# 最小可用子集:官方 train 的前 5 段视频(约 1,200 帧)即可跑通
#   Dataset→DataLoader→前向传播 全链路,再扩展到全集。
# ============================================================
from pathlib import Path

DATA_ROOT = Path("/data/ldpolypvideo")          # ← 修改为你的解压根目录
TRAIN_VIDEOS = (DATA_ROOT / "train_list.txt").read_text().split()   # 100 段
TEST_VIDEOS = (DATA_ROOT / "test_list.txt").read_text().split()     # 60 段
print(f"train videos: {len(TRAIN_VIDEOS)}, test videos: {len(TEST_VIDEOS)}")

§6.2 数据获取

项目 内容
官方仓库 github.com/dashishi/LDPolypVideo-Benchmark
下载渠道 1 百度网盘全量包(README 内链接,提取码 ustc
下载渠道 2 Google Drive Part-1 + Part-2(README 内链接)
体量 双包分发,官方未公布精确字节数;预留 ≥100 GB 磁盘
注册要求 无需注册、无需申请,直链下载
许可约束 未附标准许可证文本;学术使用引用 MICCAI 2021 论文
校验 官方无 sha256,下载后自行记录文件数与校验和
# 克隆仓库获取 README 与示例图(数据本体在云盘,不在 git 仓库内)
git clone https://github.com/dashishi/LDPolypVideo-Benchmark.git
cd LDPolypVideo-Benchmark
# README 中点击 "Baidu Cloud"(提取码 ustc)或 "Google Drive (Part-1/Part-2)" 获取数据
# 下载完成后校验帧总数是否符合官方口径:
find data_root/annotated/frames -name "*.jpg" | wc -l   # 预期 ≈ 40,266

下载完整性自检脚本(官方无 sha256,用计数断言替代):

#!/usr/bin/env bash
# verify_ldpolypvideo.sh — 校验解压后规模是否与官方口径一致
set -euo pipefail
ROOT="${1:?用法: ./verify_ldpolypvideo.sh /data/ldpolypvideo}"

n_ann_vids=$(ls "$ROOT/annotated/frames" 2>/dev/null | wc -l)
n_frames=$(find "$ROOT/annotated/frames" -type f \( -name "*.jpg" -o -name "*.png" \) | wc -l)
n_unl_vids=$(find "$ROOT/unlabeled/videos" -type f | wc -l)

echo "annotated videos : $n_ann_vids  (expect 160)"
echo "annotated frames : $n_frames  (expect ≈ 40266)"
echo "unlabeled videos : $n_unl_vids  (expect 103)"

[ "$n_ann_vids" -eq 160 ] || echo "WARN: 标注视频数不符,检查 Part-1/Part-2 是否都解压"
[ "$n_unl_vids" -eq 103 ] || echo "WARN: 未标注视频数不符"
[ "$n_frames" -ge 40000 ] && [ "$n_frames" -le 40500 ] || echo "WARN: 标注帧数偏离官方口径"

# 固化校验和供后续版本管理(官方未提供,自建基线)
find "$ROOT" -type f -exec sha256sum {} \; > "$ROOT/manifest.sha256"
echo "manifest.sha256 written."

§6.3 预处理全流程

流程:视频解码抽帧 → 去黑边缩放(对齐 560×480)→ 圆形标注转 bbox → 类别归一化。

# -*- coding: utf-8 -*-
"""LDPolypVideo 预处理:圆形标注 → YOLO 归一化 bbox"""
from pathlib import Path
from dataclasses import dataclass

FRAME_W, FRAME_H = 560, 480   # 帧统一尺寸(§3.1)

@dataclass
class Circle:
    cx: float; cy: float; r: float

def parse_circle_file(txt_path: Path):
    """解析圆形标注文件。空文件或无行 = 非息肉帧(信息性缺失,见 §4.5)。
    实际分隔符以你下载包为准:常见为 'cx,cy,r' 或 'cx cy r',一行一个息肉。"""
    if not txt_path.exists():
        return []
    circles = []
    for line in txt_path.read_text().strip().splitlines():
        parts = [p for p in line.replace(",", " ").split() if p]
        if len(parts) >= 3:
            cx, cy, r = (float(v) for v in parts[:3])
            circles.append(Circle(cx, cy, r))
    return circles

def circle_to_yolo_bbox(c: Circle, img_w: int = FRAME_W, img_h: int = FRAME_H):
    """圆形 → 外接矩形 → YOLO 归一化 (class=0 息肉)。
    注意:圆对息肉是保守近似(坑点 3),评估 IoU 时要与同口径预测比较。"""
    x1, y1 = max(c.cx - c.r, 0.0), max(c.cy - c.r, 0.0)
    x2, y2 = min(c.cx + c.r, img_w), min(c.cy + c.r, img_h)
    if x2 <= x1 or y2 <= y1:
        return None
    return (0, (x1 + x2) / 2 / img_w, (y1 + y2) / 2 / img_h,
            (x2 - x1) / img_w, (y2 - y1) / img_h)

def convert_video(ann_dir: Path, out_dir: Path):
    out_dir.mkdir(parents=True, exist_ok=True)
    for txt in sorted(ann_dir.glob("*.txt")):
        boxes = [b for c in parse_circle_file(txt) if (b := circle_to_yolo_bbox(c))]
        lines = [f"{cls} {x:.6f} {y:.6f} {w:.6f} {h:.6f}" for cls, x, y, w, h in boxes]
        (out_dir / txt.name).write_text("\n".join(lines))   # 空列表 → 空文件(负帧)

视频解码与抽帧(针对未标注 103 段,861,400 帧——抽帧率选择见坑点 5):

# 每 5 帧抽 1 帧(约 5 FPS@25fps 存储),保留时序稀疏样本;与 PMC11324571 的做法一致
ffmpeg -i unlabeled/videos/polyp/video_0101.mp4 -vf "select=not(mod(n\,5))" \
       -vsync vfr -vf "crop=ih*4/3:ih,scale=560:480" unlabeled/frames/video_0101_%05d.jpg

§6.4 PyTorch DataLoader 完整代码

# -*- coding: utf-8 -*-
"""LDPolypVideo 视频级分组 DataLoader:
- 按 video_id 分组 → GroupShuffleSplit 防泄漏(坑点 1)
- 空标注文件 = 负帧(坑点 6)
- 圆形标注转 bbox(坑点 3)"""
from pathlib import Path
import torch
from torch.utils.data import Dataset, DataLoader
from torchvision import transforms
from PIL import Image
import random

class LDPolypVideoDataset(Dataset):
    """最小可用子集 = train_list.txt 的前 N 段视频(N=5 起步)。"""
    def __init__(self, data_root: str, video_ids, img_size=512,
                 augment=False, max_samples=None):
        self.root = Path(data_root)
        self.samples = []                       # (frame_path, ann_path, video_id)
        for vid in video_ids:
            fdir = self.root / "annotated/frames" / vid
            adir = self.root / "annotated/annotations" / vid
            for f in sorted(fdir.glob("*.jpg")):
                self.samples.append((f, adir / f"{f.stem}.txt", vid))
        if max_samples:
            self.samples = self.samples[:max_samples]
        self.tf = transforms.Compose([
            transforms.Resize((img_size, img_size)),
            transforms.ColorJitter(0.1, 0.1, 0.05) if augment else transforms.Identity(),
            transforms.ToTensor(),
            transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]),
        ])

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

    def __getitem__(self, idx):
        fpath, apath, vid = self.samples[idx]
        img = self.tf(Image.open(fpath).convert("RGB"))
        boxes = self._load_boxes(apath)         # [K,4] 绝对坐标 bbox,K=0 即负帧
        target = {"boxes": torch.as_tensor(boxes, dtype=torch.float32).reshape(-1, 4),
                  "labels": torch.ones(len(boxes), dtype=torch.int64),
                  "video_id": vid, "frame_file": fpath.name}
        return img, target

    def _load_boxes(self, apath: Path):
        """空/缺失文件 → [](负帧)。圆形(cx,cy,r) → 外接框。"""
        out = []
        if apath.exists() and apath.read_text().strip():
            for line in apath.read_text().strip().splitlines():
                p = [float(v) for v in line.replace(",", " ").split()[:3]]
                cx, cy, r = p
                out.append([cx - r, cy - r, cx + r, cy + r])
        return out

def collate_fn(batch):                          # 变长目标数 → 自定义 collate
    return tuple(zip(*batch))

def make_grouped_loaders(data_root: str, val_ratio=0.2, batch_size=8, num_workers=4):
    """官方 train(100 段) 内部再按【视频级】切 train/val,test(60 段) 封存。"""
    train_vids = (Path(data_root) / "train_list.txt").read_text().split()
    test_vids = (Path(data_root) / "test_list.txt").read_text().split()
    random.Random(42).shuffle(train_vids)       # 洗牌的是【视频列表】,不是帧!
    n_val = max(1, int(len(train_vids) * val_ratio))
    val_vids, tr_vids = train_vids[:n_val], train_vids[n_val:]
    mk = lambda vids, aug: DataLoader(
        LDPolypVideoDataset(data_root, vids, augment=aug), batch_size=batch_size,
        shuffle=aug, num_workers=num_workers, collate_fn=collate_fn)
    return mk(tr_vids, True), mk(val_vids, False), mk(test_vids, False)

if __name__ == "__main__":
    tr, va, te = make_grouped_loaders("/data/ldpolypvideo")
    for imgs, targets in tr:                    # 跑通一个 batch
        assert all(t["boxes"].shape[1] == 4 for t in targets)
        break
    print("DataLoader OK:", len(tr.dataset), len(va.dataset), len(te.dataset))

端到端微调示例(torchvision 检测模型,从零到可评测):

# -*- coding: utf-8 -*-
"""用 torchvision Faster R-CNN 在官方 train 子集上微调(10 行核心逻辑)。
GPU:1×12GB 可跑 batch 4;560×480 输入,30 epoch 内可见初步 mAP。"""
import torch
from torchvision.models.detection import fasterrcnn_resnet50_fpn_v2, FasterRCNN_ResNet50_FPN_V2_Weights

device = "cuda" if torch.cuda.is_available() else "cpu"
model = fasterrcnn_resnet50_fpn_v2(weights=FasterRCNN_ResNet50_FPN_V2_Weights.COCO_V1)
model.to(device).train()

tr_loader, val_loader, test_loader = make_grouped_loaders("/data/ldpolypvideo", batch_size=4)
params = [p for p in model.parameters() if p.requires_grad]
opt = torch.optim.AdamW(params, lr=1e-4, weight_decay=1e-4)

for epoch in range(30):
    for imgs, targets in tr_loader:
        imgs = [im.to(device) for im in imgs]
        tgts = [{k: (v.to(device) if torch.is_tensor(v) else v) for k, v in t.items()}
                for t in targets]
        # 纯负帧 batch(无任何框)会报错——检测头无法训练全负 batch:
        tgts = [t if len(t["boxes"]) else {**t, "boxes": torch.zeros((0, 4), device=device)}
                for t in tgts]
        if all(len(t["boxes"]) == 0 for t in tgts):
            continue                            # 跳过全负 batch
        losses = model(imgs, tgts)
        loss = sum(losses.values())
        opt.zero_grad(); loss.backward(); opt.step()
    # 验证:视频级划分的 val_loader 上跑 frame_pr_f1(§6.9),过拟合前早停
torch.save(model.state_dict(), "frcnn_ldpolypvideo.pth")

§6.5 坑点 8 个

⚠️ 坑点 1:时序相邻帧几乎重复——帧级随机划分造成隐性泄漏(分类:数据泄漏)

问题:视频帧高度自相关,一个息肉平均连续暴露约 169 帧;若按帧随机划分 train/test,几乎相同的帧会同时出现在两侧,模型等于"考原题"。
症状:F1 高达 0.95+ 但换一段全新视频就崩;视频级方法与图像级方法的差距被离奇抹平。
解决

  1. 简单方法:永远按 video_id 分组划分(官方 train/test 即视频级),自定义划分用 sklearn.model_selection.GroupShuffleSplit(groups=video_ids)
  2. 进阶方法:报告指标时按"息肉事件"聚合——同一息肉的全部帧算一个事件,事件级召回才反映真实漏检率;用 frame_id 连续段重建事件。
  3. SOTA 方法:划分前先做息肉实例跟踪(跨帧 ID 关联),确保实例级不跨集;并补做一次"同一检查不同片段"的风险自查(无法完全排除,见坑点 7)。
    参考:FPSiam 采用官方视频级划分(Sci Rep 2023);YONA 按官方划分复现(arXiv 2306.03686)。

⚠️ 坑点 2:跨论文划分口径不一,榜单数字不可直接比较(分类:评估误用)

问题:同一数据集上至少存在三种划分:官方视频级(train 24,789 帧/test 15,397 帧)、YONA 息肉帧口径(20,942/12,933)、AVPDN 自定 7:2:1。不同口径的 Precision/Recall/F1/AP 差异可达 10 个点以上。
症状:你的方法"输给"了实际上用了不同 test 集的论文;审稿人质疑复现性。
解决

  1. 简单方法:选一种基准口径(推荐官方视频级),在论文中显式写出帧数与视频数。
  2. 进阶方法:同时报告官方口径 + 自定口径两套结果,并给出划分脚本。
  3. SOTA 方法:将你的划分提交到社区榜单(如 SOTA2)时附划分定义文件;跨口径比较只做趋势性讨论,不做小数点级对比。
    参考SOTA2 Video Polyp Detection on LDPolypVideo(2023-06 评测集中记录了各方法口径);AVPDN(arXiv 2508.03458)。

⚠️ 坑点 3:圆形标注 ≠ 精确 bbox,更 ≠ 像素 mask(分类:标签理解)

问题:官方标注是圆(圆心 + 半径),是"定位"而非"勾边"。圆形对不规则息肉是近似:外接矩形会把息肉旁的正常黏膜框进来(高估框面积),IoU 阈值 0.5 下的评估系统性偏乐观或偏悲观取决于预测框形状。
症状:视觉化检查发现 GT 框总比息肉"胖"或"瘦";把本数据集训练的框直接迁移到掩膜数据集协议时 mAP 对不上。
解决

  1. 简单方法:统一用"圆→外接矩形"转换(§6.3 代码),预测端用同口径 anchor/输出,保证 GT 与预测形状一致。
  2. 进阶方法:训练时对半径加随机缩放(0.9-1.1)模拟标注抖动,提升对框宽严的鲁棒性。
  3. SOTA 方法:若研究目标是分割,不要在本数据集上硬做——改用有掩膜的 CVC-ClinicDB 或 SUN-SEG,把本数据集留给检测与预训练;或在复核子集上手工重标掩膜并量化圆标注偏差。
    参考:arXiv 综述明确其标注为 “circular annotations”(arXiv 2203.14291);CVC-ClinicDB 条目(千方病案医数集)对照掩膜口径。

⚠️ 坑点 4:运动模糊/反光/气泡帧上的标注可靠性下降(分类:标签理解)

问题:跟踪辅助标注在伪影密集帧(快速退镜的运动模糊、镜面反光、气泡)会继承跟踪漂移:圆形可能滞后于息肉真实位置、或在息肉刚出视野的边缘帧上仍保留标注。这些帧恰恰是数据集的价值所在,也是标注最不确定的部分。
症状:loss 长期压不下去的"难样本"集中在快速运动片段;可视化发现部分模糊帧 GT 与肉眼可见息肉错位。
解决

  1. 简单方法:训练时保留全部帧,但验证前抽样 100 张模糊帧人工复核标注偏移率,写入报告。
  2. 进阶方法:用置信度加权——按帧间光流幅度估计模糊程度,模糊帧 loss 权重降至 0.5-0.8。
  3. SOTA 方法:引入时序一致性约束(相邻帧检测框 IoU 连续性)作为伪标签清洗信号,剔除或降权时序断裂的标注。
    参考:论文自述复杂肠道环境(MICCAI 2021);SUN-SEG 对内镜伪影的属性化分析(arXiv 2203.14291)。

⚠️ 坑点 5:未标注视频的抽帧率选择与解码工程量(分类:预处理陷阱)

问题:103 段未标注视频共 861,400 帧,逐帧解码训练不现实;抽帧率(每 2 帧?5 帧?10 帧?)同时决定预训练语料规模、时序粒度与磁盘占用,且不同论文选择不同,结果不可比。
症状:抽得太密磁盘爆掉、训练吞吐崩塌;抽得太稀自监督的时序正样本对失去连续性语义。
解决

  1. 简单方法:每 5 帧抽 1(约 172,280 帧,与 PMC11324571 的"every fifth frame"同量级),ffmpeg -vf "select=not(mod(n\,5))",预训练前统一缩放至 560×480。
  2. 进阶方法:分层抽帧——息肉阳性视频(42 段)密抽(每 2-3 帧)、阴性视频(61 段)疏抽(每 5-10 帧),控制正负语料比。
  3. SOTA 方法:按存储帧率解码为时序片段(如 8-16 帧片段)做视频自监督(Endo-FM 的片段式采样),避免"抽帧后当独立图"丢掉时序。
    参考PMC11324571(ffmpeg 每 5 帧抽 1 得 99,374 负帧);Endo-FM(视频片段预训练协议)。

⚠️ 坑点 6:6,382 非息肉帧与视频级负样本的正确用法(分类:偏倚陷阱)

问题:两类"负样本"语义不同——标注子集内 6,382 帧是"确认无息肉的背景帧"(帧级阴性),而未标注阴性视频(61 段、490,000 帧)只是"整段未见息肉"(视频级阴性,不排除个别帧漏检)。把二者混用会引入标注噪声;全部不用则会放大 84% 的正帧偏倚。
症状:在剪辑过的标注子集上假阳性率被低估——真实退镜的整段无息肉场景(几万连续帧)从没在训练中出现过;部署后每帧都报警。
解决

  1. 简单方法:训练 mix 中加入 6,382 帧级负帧(比例 1:3~1:5),让模型见过"确认正常"的黏膜。
  2. 进阶方法:从未标注阴性视频抽帧作为难负样本(每 5 帧 1 张、confidence 不参与监督),模拟真实全程分布;视频级阴性标签用于半监督一致性损失而非逐帧硬标签。
  3. SOTA 方法:构建"剪辑偏倚校正"评估集——从阴性未标注视频抽连续 1,000 帧测每帧误报率(FP/frame),这是临床 CADe 的核心指标,标注子集无法测出。
    参考:Frontiers 综述对未标注子集 42/61 拆分的记录(Frontiers in AI 2026);PMC11324571 的负样本抽取实践。

⚠️ 坑点 7:患者元数据缺失——检查级/患者级泛化不可评估(分类:偏倚陷阱)

问题:所有患者相关元数据已被移除,160 段标注视频对应多少次检查、多少患者无法重建。"同一检查的两个片段被分进 train/test"这类残留泄漏既无法证实也无法排除;患者级泛化(新患者上的表现)在协议上不可评估。
症状:审稿人问"patient-level split 结果?"时无法回答;跨机构测试掉点远超视频级交叉验证的预期。
解决

  1. 简单方法:论文中如实声明"患者级评估不可行",把结论限定在视频级泛化。
  2. 进阶方法:用外观特征(设备色调、分辨率伪影)做视频聚类近似分组,作为患者级划分的下界模拟——并声明其局限。
  3. SOTA 方法:补做跨数据集验证(本库训练 → REAL-Colon/SUN 测试)作为"新人群泛化"的替代证据,这是社区公认的单中心缓解方案。
    参考:综述记录 “All patient-related metadata was eliminated”(Artificial Intelligence Review 2024);§2.5 人群表。

⚠️ 坑点 8:与 Kvasir-SEG 等静态图数据集的结果不可互相外推(分类:评估误用)

问题:静态分割榜上 F1 > 0.9 的模型在 LDPolypVideo 上检测 F1 普遍只有 0.54-0.62(SOTA2 2023-06);原始论文测得 SOTA 方法 Recall 平均降 26%、Precision 降 15%。两套数字描述的是不同难度的分布,直接对比会得出"模型退化"的错误结论——其实是任务更难。
症状:把 Kvasir-SEG 预训练权重直接零样本迁移后效果崩溃,误判为代码 bug;论文里混报两个数据集的指标却不加难度说明。
解决

  1. 简单方法:报告时永远成对标注协议(“Kvasir-SEG 分割 mDice” vs “LDPolypVideo 视频级检测 F1”),不做绝对值比较。
  2. 进阶方法:做"难度归因实验"——将本库帧按伪影分桶(模糊/反光/正常),量化各桶性能衰减,把"整体掉点"分解为可解释因素。
  3. SOTA 方法:采用两阶段迁移(静态图掩膜预训练 → 本库视频检测微调)并在消融表中单独报告各阶段增益,这是 YONA 等工作的标准做法。
    参考:MICCAI 2021 论文 26%/15% 衰减结论;SOTA2 榜单

§6.6 数据增强

增强 是否安全 说明
水平翻转 结肠腔无左右语义差异
随机裁剪 + 缩放至 512×512 YONA/社区标准做法;裁剪后需同步变换标注框
亮度/对比度小幅抖动(≤10%) 模拟曝光变化,但幅度过大会破坏黏膜色泽先验
垂直翻转 / 90° 旋转 ⚠️ 谨慎 丢失"重力指向肠腔下垂方向"的隐含线索,仅在消融验证后使用
运动模糊合成 与真实伪影同分布,可有效增强模糊帧鲁棒性
高光/气泡粘贴 Copy-paste 反光斑块提升困难样本覆盖
时序混洗 / 帧乱序 摧毁时序连续性,视频方法(STFT/YONA)直接失效
灰度化 黏膜血管色泽是息肉判别关键线索
强弹性形变 改变息肉形态学特征(隆起轮廓),医学语义失真

§6.7 模型推荐

模型 类型 LDPolypVideo 表现 适用场景
YONA 图像检测 + 1 邻帧参照 P 75.4 / R 53.1 / F1 62.3,FPS 46.3 精度-速度平衡首选(2023-06 榜首)
STFT 视频时序融合 P 72.1 / R 50.4 / F1 59.3,FPS 12.5 时序建模研究基线
Sparse-RCNN 图像检测 P 71.6 / R 47.9 / F1 57.4,FPS 40 Transformer 检测器对照
CenterNet 图像检测 P 70.6 / R 43.8 / F1 54.0,FPS 51.5 高吞吐部署场景
DINO 图像检测 P 68.3 / R 51.1 / F1 58.4,FPS 23 自监督预训练骨干搭档
Faster R-CNN 图像检测 P 68.8 / R 46.7 / F1 55.6,FPS 44.7 经典基线,社区复现最多
FCOS 图像检测 P 65.1 / R 46.0 / F1 53.9,FPS 42 anchor-free 对照

统一口径来源:SOTA2(2023-06,官方视频级划分);完整引用见 §8.1。

§6.8 硬件需求

任务 最低配置 推荐配置 说明
标注子集训练(检测) 1× RTX 3060 12GB,batch 4 1× RTX 4090 24GB,batch 16 560×480 输入,检测模型 64 epoch 内收敛
未标注视频预训练 1× A100 40GB 2-4× A100 40GB 86 万帧语料,对比学习 batch ≥256(靠队列/梯度累积)
全量推理/评测 CPU 可解帧 + 1× 3060 1× 4090 YONA 46.3 FPS 单卡实时
磁盘 100 GB 500 GB SSD 双云盘包解压 + 抽帧副本 + 预处理缓存

§6.9 评估指标代码

# -*- coding: utf-8 -*-
"""帧级 P/R/F1(IoU 匹配,与 SOTA2 口径一致)+ 视频级事件召回"""
import numpy as np

def iou_xyxy(a, b):
    x1, y1 = max(a[0], b[0]), max(a[1], b[1])
    x2, y2 = min(a[2], b[2]), min(a[3], b[3])
    inter = max(0.0, x2 - x1) * max(0.0, y2 - y1)
    ua = (a[2]-a[0])*(a[3]-a[1]) + (b[2]-b[0])*(b[3]-b[1]) - inter
    return inter / ua if ua > 0 else 0.0

def frame_pr_f1(gts, preds, iou_thr=0.5):
    """gts/preds: list[list[box_xyxy]](逐帧)。圆形 GT 请先转 bbox(坑点 3)。"""
    tp = fp = fn = 0
    for gt, pred in zip(gts, preds):
        matched = set()
        for p in pred:
            j = max((iou_xyxy(p, g) for g in gt), default=0.0)
            if j >= iou_thr:
                tp += 1; matched.add(int(np.argmax([iou_xyxy(p, g) for g in gt])))
            else:
                fp += 1
        fn += len(gt) - len(matched)
    prec = tp / (tp + fp) if tp + fp else 0.0
    rec = tp / (tp + fn) if tp + fn else 0.0
    f1 = 2 * prec * rec / (prec + rec) if prec + rec else 0.0
    return prec, rec, f1

def event_recall(events_gt, events_pred_hit, iou_thr=0.5):
    """息肉事件级召回:一个息肉(跨帧实例)被任意一帧命中即算检出。
    events_gt: {event_id: [boxes]};events_pred_hit: {event_id: bool}"""
    hit = sum(events_pred_hit.get(e, False) for e in events_gt)
    return hit / len(events_gt) if events_gt else 0.0

§6.10 MLOps 笔记

  • 数据版本化:云盘包无 sha256,入库时用 DVC/dvc 或 sha256sum 记录解压后全部文件的清单,绑定实验 commit。
  • 划分即配置:train/test 视频列表写入配置文件并随实验快照,避免坑点 2 的"口径漂移"。
  • 标签语义契约:把"空标注文件 = 确认阴性帧"写成团队数据契约文档,防止新成员把空文件当漏标修复(会污染负样本)。
  • 云盘依赖:数据在百度网盘/Google Drive,无版本化归档——团队内部至少保留一份只读主副本,新成员一律从主副本分发。
  • 推理监控:线上 CADe 监控 FP/frame 与"事件召回"两个指标——前者对应临床噪音、后者对应漏检,仅看帧级 F1 会同时误导两者。
  • 回归测试:每次换 backbone 后重跑 test 60 段并对比 SOTA2 口径基线(F1 62.3 为 2023-06 参照),波动 >2 点需排查。
  • 数据漂移:部署环境若为高清(1,920×1,080)内镜,务必先用 REAL-Colon 类数据做分辨率域差评估(§7.6)。

§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解措施
单中心偏倚 全部视频来自合肥一家医院,设备、操作手法、人群单一 🔴 高 跨库验证(CVC/REAL-Colon/SUN);跨中心前瞻复测
剪辑选择偏倚 84.2% 标注帧含息肉(按含息肉片段剪辑),与全程退镜分布相反 🔴 高 用未标注阴性视频做难负样本校正(坑点 6);测 FP/frame
标注精度偏倚 圆形标注 + 跟踪漂移,模糊帧边界不可靠 🟡 中 半径抖动增强;模糊帧 loss 降权(坑点 4)
分辨率域偏倚 存储分辨率 768×576/帧 560×480,低于现代内镜原生 1080p 🟡 中 高清环境部署前做分辨率适配评估(§7.6)
病理盲区 无组织学标签,腺瘤/增生不可分,临床分级价值受限 🟡 中 与 SUN/PICCOLO 联合使用
人口学黑箱 年龄/性别分布未披露,亚组公平性不可审计 🟡 中 谨慎外推结论至未验证人群

§7.2 标注质量

标注由临床医师参与、跟踪工具辅助完成,官方未发布一致性系数。第三方证据间接支持其可用性:多个独立团队(FPSiam、YONA、Endo-FM)基于该标注取得稳定结果,且原始论文用它测出可复现的 26%/15% 性能衰减。但三个具体风险要自行管理:圆形标注的保守近似(坑点 3)、模糊帧的跟踪漂移(坑点 4)、以及"空文件=确认阴性"的语义(§4.5)。建议在使用前抽 100 帧做人工复核并把偏移率写入实验报告——这是 30 分钟投入就能显著提升结论可信度的动作。

# -*- coding: utf-8 -*-
"""标注抽检器:随机抽 N 帧并叠加圆形标注,供人工快速目检。"""
import random
from pathlib import Path
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from PIL import Image

def sample_frames_for_review(data_root: str, n=100, seed=42, out_dir="review"):
    rng = random.Random(seed)
    root = Path(data_root) / "annotated"
    frames = list((root / "frames").glob("*/*.jpg"))
    picks = rng.sample(frames, min(n, len(frames)))
    out = Path(out_dir); out.mkdir(exist_ok=True)
    n_empty = 0
    for f in picks:
        ann = root / "annotations" / f.parent.name / f"{f.stem}.txt"
        fig, ax = plt.subplots(figsize=(5.6, 4.8))
        ax.imshow(Image.open(f)); ax.axis("off")
        if ann.exists() and ann.read_text().strip():
            for line in ann.read_text().strip().splitlines():
                cx, cy, r = (float(v) for v in line.replace(",", " ").split()[:3])
                ax.add_patch(mpatches.Circle((cx, cy), r, fill=False,
                                             color="#2563EB", linewidth=1.5))
        else:
            n_empty += 1                      # 负帧(确认阴性)计数
        fig.savefig(out / f"{f.parent.name}_{f.stem}.png", dpi=80,
                    bbox_inches="tight"); plt.close(fig)
    print(f"导出 {len(picks)} 帧到 {out}/;其中负帧 {n_empty} 张。人工检查:"
          f"①圆是否贴合息肉 ②模糊帧是否错位 ③负帧是否漏检。")

§7.3 泛化性评估

目标场景 失效风险 证据
本库 test(同中心) 官方视频级划分,社区结果稳定(F1 54-62 区间)
欧洲中心(CVC-VideoClinicDB) 跨洲跨设备域差;FPSiam 将其作为独立迁移域
现代高清全程检查(REAL-Colon) 分辨率 560×480 → 1,920×1,080 的域差 + 全程分布反转
病理分级场景(SUN) 本库无组织学标签,仅有定位能力可迁移
胶囊内镜(Kvasir-Capsule) 很高 成像原理不同(胶囊视角/照明),不建议直接迁移

§7.4 伦理与合规

  • 去标识化:所有患者相关元数据在发布前被移除,影像本身经剪辑挑选(含息肉片段),不含面部或体表特征。
  • 知情同意:官方文档未披露原始检查的知情同意与 IRB/伦理审批细节;使用时应在论文中声明"按发布方提供的公开学术用途数据使用"。
  • 使用限制:未附标准许可证文本,学术免费使用需引用原始论文;商业用途(含产品训练)无明确授权条款——建议在商用前联系发布方取得书面许可
  • DUO 对齐:无正式 DUO 声明;按惯例类比 GRU(通用研究)+ NRES(无额外限制),最终以发布方意见为准。

§7.5 公平性

数据集未披露年龄、性别分布,无法做亚组性能审计;单中心中国人群意味着向其他族裔、其他医疗体系的外推缺乏数据支撑。对面向多元人群的 CADe 产品,应将本数据集定位为"训练组件之一"而非"验证依据",并在多元中心数据上补做公平性评估。

§7.6 数据漂移

三个明确的漂移轴:分辨率漂移(本库 560×480 帧 vs 现代内镜 1,080p+——部署前需评估超分或下采样策略);分布漂移(剪辑后的息肉密集分布 vs 全程稀疏分布——FP/frame 在后者会显著升高);设备漂移(未披露设备型号,色调与噪点特性可能与你的采集设备不同)。监控建议:部署后持续统计每帧/每事件的阳性预测率,相对基线的漂移超过 20% 时触发复审。

§7.7 DAIMS 24 项评估

# 检查项 状态 说明
1 宽格式数据 帧图像 + 坐标标注,任意语言可读
2 唯一标识 video_id + frame_id 构成两级主键
3 特殊字符处理 命名纯 ASCII,无特殊字符风险
4 重复行/重复样本 ⚠️ 帧间天然高度相似(视频属性),无跨集重复声明,需事件级去重
5 缺失值编码 空标注文件 = 确认阴性,语义明确(§4.5)
6 标签标识清晰 ⚠️ 帧级阴性靠空文件隐含表达,无显式标签列;视频级标签独立
7 罕见类分组 仅有息肉/非息肉二类,无亚型可分组
8 偏倚评估 单中心/剪辑/分辨率偏倚在本页 §7.1 完整讨论
9 数据字典 ⚠️ 官方无字段级字典,本页 §4.0/§4.1 为社区重建版
10 信息性缺失解释 空文件与未标注域的"缺失即信息"已解释(§4.5)
11 设备记录 内镜型号与参数未披露
12 共线性 标注坐标间无共线性问题(视觉数据)
13 编码映射 ⚠️ 无临床编码标签;本页 §2 已补 ICD-11/SNOMED 对应关系
14 时间戳处理 ⚠️ 无采集时间戳;仅帧序号保留时序(§3.7)
15 划分建议 官方视频级 train/test 划分明确
16 泄漏讨论 帧级泄漏、检查级不可排除两类风险均已讨论(§5.3、坑点 1/7)
17 标签分布 帧级 84.2%:15.8%、实例 200 个已统计(§4.2)
18 测量偏倚 ⚠️ 圆形标注近似与跟踪漂移未量化,需自行复核(坑点 3/4)
19 外部验证建议 §5.5 给出 CVC/REAL-Colon/SUN 三级验证路径
20 版本记录 ⚠️ 单版本发布,无版本演进记录与 changelog
21 预处理脚本 官方未提供;本页 §6.3/§6.4 提供可运行重建
22 合规要求 ⚠️ 无正式许可文本,学术惯例可自由使用,商用边界不明(§7.4)
23 多模态对齐 单模态视频数据,无跨模态对齐问题
24 去标识化 患者元数据全部移除(§7.4)

DAIMS 评分:14.5 / 24

评分解读:LDPolypVideo 在"数据本体质量"上表现良好——标识、缺失语义、划分、去标识化四项硬指标全部达标,这使它能直接支撑视频检测与预训练研究;失分集中在"元数据与治理"层:无数据字典、无预处理脚本、无设备/时间记录、无正式许可证,这些缺口不阻断研究,但会把工程负担转嫁给使用者。与静态图金标准(如 Kvasir-SEG 配有完整文档)相比,它属于"数据强、文档弱"的典型学术发布。

对你意味着什么:① 如果你的任务是视频息肉检测/预训练,缺口无实质影响——按本页 §6.3-§6.4 重建管线即可,半天内可跑通;② 如果你要写合规报告或申请 IRB,必须自行补充设备、人群、许可三类文档证据,并在报告中标注"未披露"而非留空;③ 永远不要假设"空标注=漏标",也永远不要做帧级随机划分——这两条是使用本数据集的红线(坑点 1/6)。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
CVC-VideoClinicDB Hospital Clínic de Barcelona(欧洲) 检测迁移(FPSiam 预训练→微调) 检测 P/R/F1 明显下降(跨域) 自监督预训练特征可跨洲迁移但掉点显著(Sci Rep 2023
SUN Database Showa University(日本) 视频检测基准并列评测 YONA:P 83.3 / R 74.9 / F1 78.9(SUN)vs F1 62.3(本库) 同一模型跨库分差 16+ F1 点 本库难度显著高于 SUN,两库不可互换(YONA
未标注域(本库 103 段) 同库自监督 预训练表征质量 下游检测/分割增益 正增益 86 万帧无标注视频可稳定提升下游任务(Endo-FM, MICCAI 2023
真实全程检查分布 PMC11324571 多库研究 负样本扩展后检测 YOLOv7 系性能 阴性帧扩充后假阳性结构改变 未标注阴性视频可作为负样本源,但改变 FP 分布(PMC11324571

§8 基准性能与生态

§8.1 排行榜

以下为 SOTA2 汇总的 Video Polyp Detection on LDPolypVideo 评测(2023-06,官方视频级划分,IoU 匹配帧级指标)。表中数值均为 YONA 论文(arXiv:2306.03686, 2023)的统一复现产出;"完整引用"列给出各模型原始论文,复现协议见 YONA 实验章节:

排名 模型 Precision Recall F1 FPS 关键技术 完整引用 代码
1 YONA 75.4 53.1 62.3 46.3 单邻帧参照 + 通道对比注意力 “YONA: You Only Need One Adjacent Reference-frame for Accurate and Fast Video Polyp Detection”, arXiv:2306.03686, 2023. arXiv 未开源
2 STFT 72.1 50.4 59.3 12.5 短时傅里叶时序特征融合 原始论文信息见 YONA(arXiv:2306.03686)参考文献;本表为 YONA 统一复现 未开源
3 DINO 68.3 51.1 58.4 23.0 DETR 系去噪训练 Zhang, H. et al., 2023, ICLR. arXiv:2203.03605 官方开源
4 MEGA 69.2 50.1 58.1 8.1 多帧全局聚合 Gong, X. et al., 2021, CVPR. arXiv:2007.12332 官方开源
5 TransVOD 69.2 49.2 57.5 8.4 端到端视频 Transformer 检测 He, D.-A. et al., 2022, IEEE TPAMI. arXiv:2201.07570 官方开源
6 FGFA 68.8 48.9 57.2 1.8 光流引导帧聚合 Zhu, X. et al., 2017, ICCV. arXiv:1703.10025 官方开源
7 Sparse-RCNN 71.6 47.9 57.4 40.0 稀疏候选集检测头 Sun, P. et al., 2021, CVPR. arXiv:2011.12450 官方开源
8 Faster R-CNN 68.8 46.7 55.6 44.7 两阶段检测经典基线 Ren, S. et al., 2015, NeurIPS. arXiv:1506.01497 官方开源
9 CenterNet 70.6 43.8 54.0 51.5 关键点无锚检测 Zhou, X. et al., 2019. arXiv:1904.07850 官方开源
10 FCOS 65.1 46.0 53.9 42.0 全卷积 anchor-free Tian, Z. et al., 2019, ICCV. arXiv:1904.01389 官方开源

来源:SOTA2 Research — Video Polyp Detection on LDPolypVideo(评测日期 2023-06-03)。

⚠️ 数值不可直接比较的原因:① 各方法可能使用不同的训练轮数/增强;② AVPDN(arXiv 2508.03458,2025)自用 7:2:1 划分报告 AP 96.6,与上表完全不可比;③ 上表多数非 YONA 方法的结果是 YONA 论文统一复现的数字,与各方法原论文自报值可能不同;④ 原始论文(MICCAI 2021)的 4 方法对比是 2021 年口径,数值低于 2023 年复现。

§8.2 SOTA 总结与选型建议

  • 要部署/投稿:选 YONA 路线——F1 62.3 且 46.3 FPS,精度速度双榜首;其"只需 1 个邻帧"的结论对临床实时 CADe 特别友好。
  • 要研究时序建模:以 STFT(59.3)与 TransVOD(57.5)为基线,说明多帧融合尚未兑现期望,是研究空间而非终点。
  • 要自监督/基础模型:跳过检测榜,直接用 Endo-FM 预训练范式 + 本库未标注 86 万帧。
  • 要极致速度:CenterNet(51.5 FPS)与 Faster R-CNN(44.7 FPS)以 8-14 个 F1 点换取 40+ FPS,边缘端部署可参考;先做伪影分桶衰减测试再定阈值。
  • 要临床叙事:报"事件级召回 + FP/frame"(§6.9),与审稿人关心的漏检率直接对话,避免陷入榜单小数点竞争。
  • 总体水位:F1 上限仍 <65、Recall 上限 <55——视频息肉检测远未饱和,本库仍是有效的"难度基准"。

§8.3 评测协议

标准协议(社区共识):官方视频级 train/test;训练输入 560×480 或随机裁剪 512×512;指标为帧级 Precision/Recall/F1(IoU ≥0.5)+ FPS;GT 框为圆形标注转外接矩形。需显式声明的协议要素:划分口径(坑点 2)、IoU 阈值、正帧/全帧口径(YONA 仅计息肉帧)。进阶协议:息肉事件级召回(§6.9 代码)与 FP/frame。

协议要素 社区主流选择 你的论文必须写明
划分 官方视频级(100/60) 是否复用官方划分;如自定,给出生成脚本
输入尺寸 512×512 随机裁剪(YONA)或 560×480 全图 训练与测试尺寸是否一致
GT 形状 圆 → 外接矩形 是否对半径做抖动增强
IoU 阈值 0.5 是否补报 0.3/0.7 敏感性
帧口径 YONA 榜单只计 33,884 息肉帧 是否含 6,382 负帧(影响 FP 统计)
FPS 口径 单卡 batch=1 推理 硬件型号与精度(FP16/FP32)
进阶指标 事件级召回、FP/frame 临床相关性论证的加分项
数据集 关系 联合用法
CVC-ClinicVideoDB 最早期视频检测基准 做跨年代小规模验证
SUN Database 带病理标签的视频检测集 定位→分型级联的第二级训练
KUMC 腺瘤/增生分类检测 检测框 + 分类头迁移
REAL-Colon 全程高清多中心 高分辨率域与全程分布验证
CVC-ClinicDB / Kvasir-SEG 静态分割掩膜金标准 分割预训练 → 本库检测微调(坑点 8 的两阶段路线)
Kvasir-Capsule 胶囊内镜视频 跨成像原理泛化(高风险实验)

§8.5 关键论文 Top 8

  1. Ma, Y., Chen, X., Cheng, K., Li, Y., Sun, B. “LDPolypVideo Benchmark: A Large-Scale Colonoscopy Video Dataset of Diverse Polyps.” MICCAI 2021, LNCS 12905, pp. 387-396. DOI: 10.1007/978-3-030-87240-3_37 — 数据集原始论文:规模声明、跟踪辅助标注工具、SOTA 衰减实验。
  2. Ji, G.-P., Chou, Y.-C., Lin, G., Tang, M., Jia, K. “Video Polyp Segmentation: A Deep Learning Perspective.” Machine Intelligence Research 19(6), 531-549, 2022. arXiv:2203.14291视频息肉综述:确立 LDPolypVideo “circular annotations” 口径与生态位。
  3. Li, K., Fathallah, R., Clunie, D., et al. “Colonoscopy polyp detection and classification: dataset creation and comparative evaluations.” PLoS ONE 16(8): e0255809, 2021. DOI: 10.1371/journal.pone.0255809 — KUMC 数据集论文,视频检测生态对照系。
  4. “Foundation Model for Endoscopy Video Analysis via Large-scale Self-supervised Pre-train.” MICCAI 2023. DOI: 10.1007/978-3-031-43996-4_10(Endo-FM 项目页)— 将本库未标注视频用于内镜视频基础模型预训练的代表作。
  5. “Self-supervised representation learning using feature pyramid siamese networks for colorectal polyp detection.” Scientific Reports 13, 2023. DOI: 10.1038/s41598-023-49057-6 — 官方划分最可靠的公开记录(train 100 段/24,789 帧,test 60 段/15,397 帧)+ 自监督复现。
  6. “YONA: You Only Need One Adjacent Reference-frame for Accurate and Fast Video Polyp Detection.” arXiv:2306.03686, 2023 — 当前榜单第一:单邻帧 > 多帧聚合的证据,并统一复现 10 种方法。
  7. “AVPDN: Learning Motion-Robust and Scale-Adaptive Representations for Video-Based Polyp Detection.” arXiv:2508.03458, 2025 — 运动鲁棒表征;自定 7:2:1 划分(坑点 2 的典型案例)。
  8. Misawa, M., et al. “Development of artificial intelligence systems for colonoscopy using a deep learning system…”(SUN Database 论文,2021,含六类组织学标签)— 带病理标签的视频检测系,与本库"定位强、分型无"形成互补。

§8.6 社区活跃度

  • GitHub 官方仓库 dashishi/LDPolypVideo-Benchmark:81 stars / 8 forks(截至 2026-09),17 commits,无 release、无 issue 板块活跃讨论——数据集本体维护安静
  • 引用动能:Springer 记录 92 次引用、10k+ 访问(截至 2026-09);2023-2025 年仍持续有新方法(YONA、AVPDN)以它为基准,学术活跃度高于仓库活跃度
  • 社区支持渠道:以论文通讯作者邮件 + GitHub 为准;无官方排行榜服务器,SOTA2 为第三方静态汇总。
  • 获取支持的建议路径:① 下载/链接失效 → GitHub 提 issue;② 学术问题 → 论文通讯作者(USTC,Xuejin Chen 团队);③ 复现细节 → 优先阅读 FPSiam 与 YONA 的实验章节,两者对数据处理描述最完整;④ 大规模镜像需求 → 联系发布方而非私自转发云盘链接(合规边界见 §7.4)。

§8.7 生态快照

资源 类型 链接 Star/热度(截至 2026-09) 推荐理由
官方仓库 数据入口 GitHub 81 stars README + 下载链接 + 示例图
Endo-FM 预训练模型 github.com/med-air/Endo-FM 活跃 本库预训练的内镜视频基础模型,可直接微调
FPSiam 自监督代码 Sci Rep 2023 论文级 官方划分最完整记录 + 自监督复现
SOTA2 榜单 基准汇总 sota2.com 第三方 统一口径的方法对比表
VPS 综述 文献地图 arXiv 2203.14291 高引 视频息肉方向所有数据集/方法的坐标系
sing-group 索引 数据集索引 GitHub 维护中 所有结肠镜数据集的规格对照表

§9 相关资源与引用

§9.1 官方资源

资源 链接 说明
官方 GitHub 仓库 github.com/dashishi/LDPolypVideo-Benchmark README、示例图、下载入口(唯一官方渠道)
论文 DOI 页 doi.org/10.1007/978-3-030-87240-3_37 MICCAI 2021 正式版(LNCS 12905)
MICCAI 2021 Open Access miccai2021.org 免费全文 + 评审意见公开页
Mendeley Catalog mendeley.com 目录页 文献元数据管理用
百度网盘 见官方 README(提取码 ustc) 全量数据
Google Drive 见官方 README(Part-1 / Part-2) 全量数据国际线路

无官方教程/Slack/Discord;社区问题通过 GitHub 或论文通讯邮箱解决。数据集无 Zenodo/figshare 归档副本,云盘链接是唯一分发路径——建议使用者在自建镜像时遵守发布方授权并保留来源声明。

§9.2 BibTeX 引用块

@inproceedings{ma2021ldpolypvideo,
  author    = {Ma, Yiting and Chen, Xuejin and Cheng, Kai and Li, Yang and Sun, Bin},
  title     = {{LDPolypVideo Benchmark}: A Large-Scale Colonoscopy Video Dataset of Diverse Polyps},
  booktitle = {Medical Image Computing and Computer Assisted Intervention -- MICCAI 2021},
  series    = {Lecture Notes in Computer Science},
  volume    = {12905},
  pages     = {387--396},
  year      = {2021},
  doi       = {10.1007/978-3-030-87240-3_37}
}

@article{fpsiam2023selfsupervised,
  title   = {Self-supervised representation learning using feature pyramid siamese networks for colorectal polyp detection},
  journal = {Scientific Reports},
  volume  = {13},
  year    = {2023},
  doi     = {10.1038/s41598-023-49057-6}
}

@inproceedings{endofm2023foundation,
  title     = {Foundation Model for Endoscopy Video Analysis via Large-scale Self-supervised Pre-train},
  booktitle = {Medical Image Computing and Computer Assisted Intervention -- MICCAI 2023},
  year      = {2023},
  doi       = {10.1007/978-3-031-43996-4_10}
}

@article{jona2023yona,
  title   = {{YONA}: You Only Need One Adjacent Reference-frame for Accurate and Fast Video Polyp Detection},
  journal = {arXiv preprint arXiv:2306.03686},
  year    = {2023},
  url     = {https://arxiv.org/abs/2306.03686}
}

@article{ji2022videopolyp,
  author  = {Ji, Ge-Peng and Chou, Yuan-Chi and Lin, Guanbin and Tang, Min and Jia, Kuihua},
  title   = {Video Polyp Segmentation: A Deep Learning Perspective},
  journal = {Machine Intelligence Research},
  volume  = {19},
  number  = {6},
  pages   = {531--549},
  year    = {2022}
}

@article{li2021kumc,
  author  = {Li, Kaifa and Fathallah, Rebeca and Clunie, David and Qiu, Yu-Wen and Bernal, Jorge and Li, Xiao-Yan and Li, Wen-Ping and Chen, Yan and Chen, Huai-Ying and Hu, Bing and others},
  title   = {Colonoscopy polyp detection and classification: dataset creation and comparative evaluations},
  journal = {PLoS ONE},
  volume  = {16},
  number  = {8},
  pages   = {e0255809},
  year    = {2021}
}

@article{avpdn2025,
  title   = {{AVPDN}: Learning Motion-Robust and Scale-Adaptive Representations for Video-Based Polyp Detection},
  journal = {arXiv preprint arXiv:2508.03458},
  year    = {2025},
  url     = {https://arxiv.org/abs/2508.03458}
}

@article{tajbakhsh2016cvcvideo,
  author  = {Tajbakhsh, Nima and Gurudu, Suryakanth R. and Liang, Jianming},
  title   = {Automated Polyp Detection in Colonoscopy Videos Using Shape and Context Information},
  journal = {IEEE Transactions on Medical Imaging},
  volume  = {35},
  number  = {2},
  pages   = {630--644},
  year    = {2016}
}

§9.3 引用指南

  • 使用数据:必引 ma2021ldpolypvideo(数据集论文);这是发布方声明的要求(README Citation 栏)。
  • 使用官方划分:建议同时引 fpsiam2023selfsupervised 作为划分口径的公开记录来源。
  • 使用未标注视频做预训练:建议同时引 endofm2023foundation 说明预训练协议来源。
  • 对比榜单数字:注明 SOTA2 汇总与 2023-06 评测日期,并引用 jona2023yona(统一复现来源)。

§10 AI 使用声明卡

§10.1 AI 模型列表

用途 模型 使用方式
条目起草 大型语言模型(CodeBuddy 平台) 按本站写作规范起草全文初稿
信息检索 联网搜索工具 核实规模数字、论文引用、社区状态

§10.2 AI 参与范围

AI 参与了:初稿撰写、结构组织、代码示例起草、表格整理。AI 未参与:对数据集的独立运行验证、医学判断的最终裁决、以及任何涉及原始数据的直接访问(编辑过程未下载或运行该数据集)。全部关键数字均追溯到 §10.3 所列来源,人工复核后定稿。

§10.3 输入来源列表

  1. Ma, Y., Chen, X., Cheng, K., Li, Y., Sun, B. “LDPolypVideo Benchmark: A Large-Scale Colonoscopy Video Dataset of Diverse Polyps.” MICCAI 2021, LNCS 12905, pp. 387-396. DOI: 10.1007/978-3-030-87240-3_37
  2. Springer Chapter 页(引用计数 92、访问 10k+,截至 2026-09):https://link.springer.com/chapter/10.1007/978-3-030-87240-3_37
  3. 官方 GitHub 仓库 README(规模、下载渠道、提取码):https://github.com/dashishi/LDPolypVideo-Benchmark
  4. dblp 条目(作者与页码核实):https://dblp.org/rec/conf/miccai/MaCCLS21
  5. MICCAI 2021 Open Access 页(录用与评审信息):https://miccai2021.org/openaccess/paperlinks/2021/09/01/268-Paper1167.html
  6. FPSiam: “Self-supervised representation learning using feature pyramid siamese networks for colorectal polyp detection.” Scientific Reports 13, 2023. DOI: 10.1038/s41598-023-49057-6(官方划分 100/60 视频、24,789/15,397 帧)
  7. YONA: “You Only Need One Adjacent Reference-frame for Accurate and Fast Video Polyp Detection.” arXiv:2306.03686, 2023(划分口径与基准表)
  8. Endo-FM: “Foundation Model for Endoscopy Video Analysis via Large-scale Self-supervised Pre-train.” MICCAI 2023. DOI: 10.1007/978-3-031-43996-4_10
  9. Ji, G.-P., et al. “Video Polyp Segmentation: A Deep Learning Perspective.” Machine Intelligence Research 19(6), 531-549, 2022; arXiv:2203.14291(circular annotations 口径)
  10. AVPDN: arXiv:2508.03458, 2025(7:2:1 自定划分案例)
  11. SOTA2 Research: “Video Polyp Detection on LDPolypVideo”(2023-06 评测):https://www.sota2.com/research/sota/video-polyp-detection-on-ldpolypvideo
  12. Frontiers in Artificial Intelligence 综述(2026):LDPolypVideo 未标注子集 42/61 拆分记录:https://www.frontiersin.org/journals/artificial-intelligence/articles/10.3389/frai.2026.1786679/abstract
  13. Artificial Intelligence Review 系统综述(2024,DOI: 10.1007/s10462-023-10621-1):元数据移除与 560×480 处理记录
  14. “Assessing clinical efficacy of polyp detection models using open-access datasets.” PMC11324571(2024):ffmpeg 每 5 帧抽样实践
  15. sing-group/deep-learning-colonoscopy 数据集索引(768×576 视频分辨率):https://github.com/sing-group/deep-learning-colonoscopy
  16. Li, K., et al. “Colonoscopy polyp detection and classification…” PLoS ONE 16(8): e0255809, 2021(KUMC 对照)

§10.4 人工校验记录

内容模块 审核者 审核方式 审核状态
§2 医学背景(ICD-11/SNOMED 映射、流行病学表述) 千方病案医学编辑部 与 CVC-ClinicDB 等已发布条目交叉比对 + 文献核对 ✅ 已通过
§1/§3/§4 规模数字(160/40,266/200/103/861,400) 千方病案医学编辑部 逐项对照官方 README + 双综述 + FPSiam ✅ 已通过
§5 划分口径与泄漏分析 千方病案医学编辑部(数据工程) 对照 FPSiam/YONA/AVPDN 三种划分记录 ✅ 已通过
§6 代码示例(预处理/DataLoader/指标) 千方病案医学编辑部(数据工程) 逻辑走查与 API 核对(未运行原始数据) ✅ 已通过
§6.5 八个坑点 千方病案医学编辑部(数据工程) 逐条溯源至论文/综述/第三方实践 ✅ 已通过
§7 DAIMS 24 项与评分 千方病案医学编辑部 24 项逐条核对状态与说明 ✅ 已通过
§8 榜单数字与引用 千方病案医学编辑部 对照 SOTA2 2023-06 汇总与原始论文 ✅ 已通过
§9 BibTeX 千方病案医学编辑部 逐字段与 DOI/dblp 比对 ✅ 已通过

§10.5 AI 生成章节标注

本条目全文初稿由 AI 起草;§0 审核声明、§2.1-§2.2 医学编码映射、§7.7 DAIMS 评分与解读、§10 声明卡由编辑部在 AI 初稿基础上重点重写与定稿。代码示例(§6.1、§6.3、§6.4、§6.9)为 AI 起草后经人工逻辑走查,但未经真实数据集端到端运行。

§10.6 最后人工审核日期

2026-09-05(与 §0 审核日期一致)

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


§C 结构化数据(JSON-LD)

返回 AI-Ready 数据集