EndoMapper — 完整标定内镜手术数据集 AI-Ready Wikipedia

96 段完整标定内镜手术视频,超 24 小时真实结肠镜 VSLAM 基准

来源 Universidad de Zaragoza (I3A) & Hospital Clínico Universitario Lozano Blesa url: https://www.synapse.org/#!Synapse:syn26707219/wiki/615178发布时间: 2026-09-15最后更新: 2026-09-25 阅读 49
EndoMapper — 完整标定内镜手术数据集 AI-Ready Wikipedia

信息速览

数据集名称EndoMapper — 完整标定内镜手术数据集 AI-Ready Wikipedia
数据类型96 段完整手术视频,超 24 小时 1440×1080 视频,268,679 帧解剖区域标注,4,086 帧工具分割,COLMAP 伪真值轨迹,Synapse 申请获取
规模未逐患者公开(96 段完整手术视频,含同患者相隔数周重复检查)
接入方式Universidad de Zaragoza (I3A) & Hospital Clínico Universitario Lozano Blesa url: https://www.synapse.org/#!Synapse:syn26707219/wiki/615178
AI 就绪度

数据集封面

EndoMapper — 完整标定内镜手术数据集 AI-Ready Wikipedia


INFOBOX

字段 内容
数据集名称 EndoMapper
英文全称 EndoMapper — A dataset of complete calibrated endoscopy procedures
别名/简称 Endomapper Dataset;H2020 ENDOMAPPER
疾病分类(ICD-11) 2B91 结肠恶性肿瘤(筛查场景目标病种);2B92 直肠恶性肿瘤
SNOMED CT 73761001(Colonoscopy);69076009(Colonic polyp);363406005(Malignant tumor of colon)
数据模态 真实内镜视频 + 几何/光度标定 + COLMAP 位姿与稀疏重建 + 解剖/工具标注 + 手术文本 + 模拟序列
AI 任务类型 VSLAM/视觉里程计、相机位姿估计、深度估计、图像检索、工具分割、解剖区域识别
样本总数 96 段完整手术视频(2022 初版 59 段;约 24 小时)
数据大小 超 24 小时视频(1440×1080,40/50 fps;总字节数官方未公布)
数据格式 视频 + JSON/SRT/TXT 元数据 + XML 分割多边形 + COLMAP 文本格式
许可证 自定义研究许可(限研究、禁止再分发、需 Statement of Intended Use)
访问级别 申请审核(Synapse 注册 + 用途声明)
DUO 标签 HMB(生物医学研究)+ NCU(非商业)
语言 英语(文档、元数据与论文)
首发日期 2022-04-29(arXiv v1 与 Synapse 初版)
最后更新 2023-10-03(Scientific Data 正式发表版)
发布机构 萨拉戈萨大学 I3A、Lozano Blesa 大学医院、IIS Aragón、CIBEREHD
官方主页 Synapse Wiki 与 项目主页
下载地址 Synapse syn26707219
DOI 数据集 10.7303/syn26707219;论文 10.1038/s41597-023-02564-7
引用次数 57+(Scopus,截至 2026-09)
AI 就绪度评分 ⭐⭐⭐⭐(4/5)— 官方提供标定/验证/工具代码仓库与标注文件,但标注子集覆盖低、无真实深度真值,需自行实现管线
页面状态 published

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

  • 医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(结直肠癌筛查、结肠解剖与内镜操作)、§7 偏倚分析。
  • 数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
  • 审核日期:2026-09-05

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

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

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。EndoMapper 要求用户在 Synapse 注册并提交 Statement of Intended Use,使用限于从影像/视频获取医学信息的研究,禁止再分发,且发表成果须引用数据集 DOI 与 Scientific Data 论文。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。

§1 数据集概览

§1.0 30 秒速览

这是什么? EndoMapper 是欧洲 H2020 ENDOMAPPER 项目产出的真实内镜视频数据集:西班牙萨拉戈萨 Lozano Blesa 大学医院在 2020-2022 年的常规临床日程中,连续采集了 96 段完整手术视频(约 24 小时,初版为 59 段、超 15 小时),覆盖结肠镜与胃镜。它是第一个同时提供每台内镜的几何标定(鱼眼模型)与光度标定参数、且把标定视频本身一并发布的内镜数据集(论文)。

为什么重要? 内镜导航目前完全依赖医生手动操作,要让 AI 学会"定位与建图"(VSLAM),必须有真实、完整、标定过的手术视频。现有数据集多为短片段或静态图像,且从不提供标定信息;EndoMapper 用完整手术 + 双重标定 + COLMAP 伪真值轨迹补齐了这块基石,把"空间智能"带入消化道(官方介绍)。

我能用它做什么? 训练和评测内镜 VSLAM/视觉里程计、弱监督深度估计与 3D 重建、同患者图像检索与回环检测、工具分割(4,086 帧)与解剖区域识别(268,679 帧标注);它也是 MICCAI 2023 SimCol3D 挑战赛 Task 3(真实结肠镜位姿估计)的官方数据来源。数据在 Synapse 免费申请获取(限研究、禁止再分发)。

§1.1 技术摘要

EndoMapper 的采集链路为 Olympus EVIS EXERA III CV-190 图像处理器 + CLV-190 光源 + CF-H190 结肠镜/GIF-H190 胃镜,经 DVI 由 Epiphan(1440×1080 @ 40 fps)或 Magewell(@ 50 fps)采集卡录制,输出图像裁剪去除个人信息、体外帧被手动剪辑(Methods)。团队为 8 台结肠镜与 8 台胃镜分别计算了几何标定(Vicalib 工具 + Kannala-Brandt 模型,重投影误差约 1 像素级)与光度标定(Spot Light Source 模型,结肠镜 RMSE 均值 2.94 灰度级),并随数据集发布原始标定视频。派生标注包括:医生逐帧标注的 10 类解剖区域(5 序列 268,679 帧)、Odin CAT 工具生成的工具分割(4,086 帧)、内镜医生口述手术文本(JSON/SRT)、同患者重复检查索引(SamePatient.json)、COLMAP 稀疏重建与上至尺度 6DoF 轨迹,以及 VR-Caps 模拟序列的几何真值。技术验证显示 ORB-SLAM3 在 Seq_015 上仅 25% 帧成功定位、地图碎裂为 133 个小 sub-map,正式确立了该数据集作为"真实内镜 SLAM 挑战基准"的定位。

从数据流水线视角看,该数据集贡献了三个可复用资产:其一,可复算的标定链路——从标定视频到参数的全部代码开源(EM_Dataset-GeometricCalibration / PhotometricCalibration),社区可为新内镜扩展同一流程;其二,可核验的伪真值协议——COLMAP 重建附 covisibility 与 cluster 划分,配合 SimCol3D 的人工核验流程,构成"伪真值可信度"的分级使用范式;其三,真实工况的难度标定——官方用 SOTA 系统实测出的失败率(25% 定位率)为后续方法提供了明确的改进基线,这是"精心设计的难"而非"偶然的脏"。

§1.2 战略价值

维度一:方法学稀缺性——首个"完整手术 + 双标定"组合。 内镜数据集长期停留在"短片段 + 无标定"状态:CVC-ClinicDB 只有 612 张静态图像,Kvasir 只有 4,000 张图像,Nerthus 只有 21 个短视频(论文 Table 1)。没有标定,VSLAM 无法正确建模鱼眼畸变;没有完整手术,算法接触不到退镜、清洗、转折等真实工况。EndoMapper 用 96 段完整手术 + 16 台内镜各自的标定参数 + 原始标定视频,第一次让"在真实结肠镜数据上严肃地做 VSLAM"成为可能,这也是 ORB-SLAM3、NR-SLAM、ColonSLAM 等一系列工作以它为试金石的原因。

维度二:标注体系的"金字塔"设计。 数据集没有追求全量稠密标注,而是分层提供:全序列可得的元数据(文本 footage、同患者索引)、数百帧的医生标注(解剖区域)、数千帧的工具分割、以及无需人工的几何派生数据(COLMAP 重建、模拟真值)。这种设计既控制了临床标注成本,又为弱监督学习提供了"伪真值 + 少量金标准"的完整监督梯度,与自监督/弱监督内镜建图的主流研究范式高度契合。

维度三:基准生态位。 SimCol3D 挑战赛(MICCAI 2023)Task 3 直接采用 EndoMapper 的 7 条序列作为真实数据测试集,并由组织者与一名胃肠病学家人工核验 COLMAP 伪真值(挑战赛论文);C3VD 等体模配对深度数据集则与其形成"真实 vs 可控"互补。选择 EndoMapper,即选择了与当前内镜 3D 重建社区共用的评测底座。

§1.3 同类数据集横向对比

数据集 模态 规模 标注/真值 差异化
EndoMapper 完整真实结肠镜/胃镜视频 96 视频,约 24 小时,1440×1080 几何+光度标定、COLMAP 伪真值、268,679 帧解剖标注、4,086 帧工具分割、文本 footage、模拟真值 唯一"完整手术+双标定",VSLAM 专用
CVC-ClinicDB 结肠镜静态图像 612 图像 息肉分割掩码 息肉分割,无视频时序
Kvasir / Kvasir-Seg 内镜静态图像 4,000 / 8,000 图像 分类标签 / 息肉分割 大规模分类与分割,无标定
HyperKvasir 图像 + 短视频 110,079 图像(10,662 标注)+ 374 短视频 解剖标志、病理发现 上消化道为主,无几何标定
Colon10k 结肠镜图像 10,126 图像 位置识别标签 面向检索,无连续长序列
Nerthus 结肠镜短视频 21 视频(5,525 帧) 肠道准备质量分级 质量评估专用
SimCol3D 合成结肠镜视频 训练 14,412 帧 + 测试 9,009 帧 深度图 + 相机位姿真值 完美真值但存在 sim-to-real 差距
C3VD 体模结肠镜视频 10,015 帧 2D-3D 配准配对深度 体模可控场景,无体内形变
EndoSLAM 体模 + 离体猪肠 12,250 帧(体模)等 CT 导出位姿/3D 模型 离体环境,临床真实性有限

表中同类数据集数字均引自 EndoMapper 论文 Table 1 与 SimCol3D 论文、C3VD 对比综述。

§1.4 版本时间轴

时间 版本/事件 说明
2022-04-29 arXiv v1 + Synapse 初版 59 序列、超 15 小时(OpenReview 摘要)
2022-11-24 Scientific Data 投稿 收稿(出版记录)
2023-09-14 Scientific Data 接收 同日
2023-10-03 Scientific Data 在线发表(10:671) 最终口径:96 视频、约 24 小时
2023-10-10 arXiv v2 与期刊版对齐(arXiv)
2024(至今) 生态延续 ColonSLAM(MICCAI 2024)等后续工作持续以该数据集为底座

版本使用提示:引用文献时注意对齐口径——2022-2023 年上半年的论文多引用"59 序列/15 小时"初版口径,此后的工作(含 SimCol3D 正式版)改用"96 视频/约 24 小时"。Synapse 上的实体内容随项目持续扩容,实验记录务必锚定下载日期与实体版本号。

§1.5 典型应用场景

  1. 内镜 VSLAM/视觉里程计评测:用标定参数配置 Kannala-Brandt 相机模型,在完整手术视频上评测 ORB-SLAM3、DSO、NR-SLAM 等系统的定位鲁棒性。
  2. 弱监督深度估计与 3D 重建:以 COLMAP 伪真值(上至尺度轨迹 + 稀疏点云)作监督信号,训练单目深度/位姿网络。
  3. 同患者回环与地图复用:利用 SamePatient.json 指数间隔数周的重复检查,研究图像检索、地图对齐与病灶随访定位。
  4. 工具分割与解剖区域识别预训练:以 4,086 帧工具掩码与 268,679 帧解剖标签做领域内预训练/微调。
  5. 多模态学习:对齐视频、手术文本 footage(JSON/SRT)与几何数据,构建手术阶段理解或报告生成模型。

按研究者画像的入门路径推荐:

你是谁 建议第一步 进阶方向
SLAM 算法研究者 下载 Seq_015 与数段筛查序列,复现 ORB-SLAM3 官方验证 非刚体建模、sub-map 融合
深度/重建研究者 用 COLMAP 伪真值平稳段做自监督预训练 SimCol3D 预训练 → 真实微调
分割/分类研究者 5 个标注序列 leave-one-out 起步 跨设备泛化、噪声鲁棒训练
临床工程团队 检索/地图复用原型(跨检查定位病灶) 与文本 footage 联动的阶段理解
多模态/LLM 研究者 SRT-帧对齐数据构建 手术报告生成、时序定位

§2 医学背景

§2.1 ICD-11 编码映射

EndoMapper 的标注体系是"解剖区域 + 器械 + 几何",不直接包含疾病诊断标签;下表将数据集的筛查场景与常见目标病种映射到 ICD-11,供背景理解与下游临床任务建模使用。

场景/标签 ICD-11 编码 ICD-11 中文名 说明
筛查结肠镜主要目标病种 2B91 结肠恶性肿瘤 医院采集日程主要来自结直肠癌筛查项目(Methods)
直肠段病变场景 2B92 直肠恶性肿瘤 直肠为解剖标注十个区段之一(rectum)
息肉检出相关场景 DB35 结肠息肉 腺瘤-癌序列起点,筛查结肠镜的核心检出对象

§2.1b SNOMED CT 映射

概念 SNOMED CT 码 与数据集的关系
Colonoscopy(结肠镜检查) 73761001 数据集主体操作类型(超半数序列)
Gastroscopy(胃镜检查) 44441009 数据集第二操作类型(GIF-H190 胃镜序列)
Colonic polyp(结肠息肉) 69076009 筛查目标病变;数据集不含逐帧息肉标注
Malignant tumor of colon(结肠恶性肿瘤) 363406005 筛查项目最终预防目标

§2.2 疾病与操作简介

结肠镜检查(colonoscopy)是结直肠癌筛查与诊断的金标准操作:内镜经肛门进入,依次通过直肠、乙状结肠、降结肠、脾曲、横结肠、肝曲、升结肠,到达盲肠与回盲瓣,必要时进入末段回肠,随后在退镜过程中系统观察黏膜。数据集的 10 类解剖区域标注恰好对应这条"进镜路径"(rectum → cecum → ileum),论文明确指出采集医院的日程"主要聚焦于结直肠癌筛查项目",患者未按症状筛选而是连续纳入(Methods)。筛查性结肠镜的标准操作要求缓慢、彻底的退镜观察,这一"贴近 VSLAM 典型工作模式"的特性使 EndoMapper 中超过半数的筛查序列成为算法入门的理想子集,而治疗性操作(活检、息肉切除)序列则提供了更具挑战性的动态场景。数据集还包含胃镜(gastroscopy)序列,覆盖上消化道检查场景。

数据集标注的 10 个解剖区段与进镜路径的对应关系如下(帧数分布见 §4.2):

进镜顺序 标注区段 标注总帧数 VSLAM 视角下的特点
1 rectum(直肠) 4,679 管腔宽、皱襞规则,进镜起点
2 sigmoid(乙状结肠) 52,880 高弯曲度,形变最剧烈的区段
3 descending(降结肠) 43,040 相对平直,易重建
4 esplenic(脾曲) 12,120 转折点,视野突变
5 transverse(横结肠) 21,600 三角形皱襞,受呼吸/体位影响
6 hepatic(肝曲) 9,600 转折点,暗区多
7 ascending(升结肠) 88,120 帧数最多的区段(筛查停留久)
8 ileocecal(回盲瓣) 6,880 到达盲肠的里程碑标志
9 ileum(末段回肠) 1,800 最少标注(仅部分检查进入)
10 cecum(盲肠) 27,960 检查完成度的金标准标志

上表帧数为 论文 Table 2 中 5 个标注序列的合计值;区段名称沿用论文原文拼写(esplenic 即脾曲 splenic flexure 的原文写法)。

对 VSLAM 而言,这条路径还隐含一个重要先验:解剖区段在时间轴上大致单调(进镜期)而后逆转(退镜期重复经过同一区段),这就是"同一区段内天然存在回环"的来源。官方技术验证显示,回环与地图复用恰恰是现有方法失败最多的环节——EndoMapper 将这一临床操作结构转化为可计算的评测维度。

§2.3 临床任务定义

  • 定位与导航(对应 AI 任务:VSLAM/位姿估计):内镜在腔内"现在在哪里、曾经过哪里",是减少盲区、防止漏检的核心。EndoMapper 的 6DoF 伪真值轨迹直接服务于此任务的开发与评测。
  • 病变检出与随访(对应 AI 任务:图像检索/地图复用):发现息肉后需要回溯定位并在下次检查中比对。同患者重复检查 + 文本 footage 索引为此提供数据基础。
  • 操作质量评估(对应 AI 任务:解剖区域识别):到达盲肠率、各肠段观察时间等质量指标依赖区域识别;论文的基线模型(Top-1 约 26%)表明该任务远未解决。
  • 器械交互理解(对应 AI 任务:工具分割):识别活检钳、圈套器等器械是操作阶段理解与并发症防范的基础。

临床任务与数据资产的映射关系:

临床任务 依赖的数据资产 当前技术成熟度(官方证据)
腔内定位/导航 标定参数 + COLMAP 轨迹 + ORB-SLAM3 基线 低(25% 帧定位)——核心研究缺口
病灶随访/回溯 SamePatient.json + 检索基线 中(跨检查检索定性可行,论文 Fig.12)
观察质量评估 解剖区域帧标签 低(Top-1 26.08%)——段间差异细微
器械感知 工具分割掩码 中(mIoU 55-67,标签有噪声)
操作记录结构化 文本 footage(JSON/SRT) 探索性——无官方基线

§2.4 患者人群构成

维度 内容
来源机构 Hospital Clínico Universitario Lozano Blesa(西班牙萨拉戈萨),单一中心
采集时间 项目执行期内常规日程(伦理批准 2020-2022,含 acta 05/2020 至 acta 20/2022)
入组方式 未按症状/病理筛选,连续跟随医院日程(主要为结直肠癌筛查项目)
年龄/性别/种族 未公开(论文与 Synapse 均未报告人口学统计)
就医类型 门诊筛查与诊疗结肠镜为主,另含胃镜检查
特殊子集 同一患者相隔数周的重复结肠镜(SamePatient.json 索引)

§2.5 临床价值定位

对临床而言,该数据集的终极目标是"内镜导航辅助系统":实时提示已观察/未观察区域、自动测量息肉大小、引导医生回到既往发现的病灶、并将不同检查的同一部位图像对齐以便比较(OpenReview 摘要)。这些能力的共同前置是精确的腔内定位与建图——这正是当前内镜 AI 最薄弱的环节。对研究者而言,数据集的"真实 + 完整 + 标定"三属性使实验结论可直接外推到真实操作环境,避免了在合成数据上过拟合后无法落地的问题。

从证据等级看,数据集的临床价值链条是:真实完整手术(外推性)→ 双重标定(几何正确性)→ 伪真值轨迹(可优化的监督信号)→ 医生标注(临床语义锚点)→ 同患者重复(纵向验证场景)。每一环都对应导航系统落地前必须跨越的验证门槛,这也是论文将其定位为"spatial AI 进入内镜的桥梁"的含义。

§2.6 标注金标准体系

标注维度 划分方式 标注方式 标注者 性质
解剖区域 5 个序列(Seq_003/011/013/093/094)全帧 逐帧人工标注(医生观看视频后标注) 医生(论文作者团队消化科医师) 近金标准,10 类
工具分割 4 个结肠镜序列共 4,086 帧 专有 Odin CAT 工具生成多边形掩码 商用标注工具(半自动) 弱金标准,mIoU 验证 55-67
手术文本 footage 部分序列全篇 内镜医生口述 + 时间戳对齐(JSON/SRT) 操作内镜医生 描述性元数据
相机轨迹 COLMAP 可重建片段 COLMAP SfM 自动重建 算法生成(人工抽检核验) 伪真值,上至尺度
模拟序列真值 VR-Caps 模拟片段 渲染引擎导出 算法生成 严格真值(仅仿真域)

六层标注按"金标准纯度"从高到低排列为:医生解剖标注 → 模拟真值(仿真域内最高但非真实域)→ 工具分割 → 手术文本 → COLMAP 伪真值。这个排序决定了它们的用途:前两层适合做评测集与校准集,中间两层适合做训练集弱标签,COLMAP 伪真值适合做大规模预训练监督——颠倒使用(如用伪真值做最终榜单评测)是最常见的误用。

§3 数据集规格

§3.0 版本抉择矩阵

EndoMapper 在 Synapse 上随项目推进持续扩容,论文存在"初版 59 序列"与"最终版 96 视频"两个口径,选择研究口径前请先对照下表。

你的需求 推荐口径 规模 理由
复现 SimCol3D Task 3 / 2023 年前文献 论文口径(96 视频)+ SimCol3D 公开的 7 条测试轨迹划分 约 24 小时 与挑战赛评测协议对齐,结果可比
快速入门/算法冒烟测试 初版 59 序列中的筛查结肠镜子集 超 15 小时 筛查序列探查缓慢,最接近 VSLAM 典型工况
弱监督深度/检索训练 全量视频 + COLMAP 伪真值 约 24 小时 伪真值覆盖越多片段,监督信号越充分
分割/分类任务 仅 5 个解剖标注序列 + 4 个工具分割序列 268,679 / 4,086 帧 标注集中于少数序列,避免用无标注视频硬训

§3.1 模态详情

  1. 真实内镜视频:96 段完整手术(结肠镜 + 胃镜 + 标定视频),1440×1080,40 fps(Epiphan 卡)或 50 fps(Magewell 卡),24bit RGB。输出图像由内镜塔裁剪去除个人信息,体外帧被手动剪辑。
  2. 几何标定参数 + 标定视频:8 台结肠镜(编号 02-09)与 8 台胃镜(编号 11-18)的 Kannala-Brandt 鱼眼模型参数,由 Vicalib 工具从标定视频计算;标定视频随数据集发布,可重新标定。
  3. 光度标定参数:Spot Light Source 模型的光源方向/强度与 gamma(γ=2.2)、自动增益参数,用于逆渲染与光度重投影。
  4. COLMAP 稀疏重建:逐 cluster 的相机位姿(上至尺度 6DoF)、3D 点云、图像 covisibility 关系,COLMAP 文本格式。
  5. 帧级标注:10 类解剖区域标签(医生标注,5 序列 268,679 帧);工具分割二值多边形(4,086 帧,XML)。
  6. 元数据:手术文本 footage(JSON + SRT)、同患者索引(SamePatient.json)、手术描述。
  7. 模拟序列:VR-Caps 仿真结肠镜视频,附形变场景与轨迹的严格几何真值。

各模态的关键规格汇总:

模态 分辨率/精度 覆盖范围 质量锚点
手术视频 1440×1080 @ 40/50 fps 96 段完整手术 体外帧已剔除
几何标定 Kannala-Brandt 8 参数/台 16 台内镜 重投影误差约 1 像素级
光度标定 光源模型 + γ=2.2 + 增益 同上 RMSE 2.94/3.34 灰度级
解剖标注 帧级 10 类 5 序列 268,679 帧 医生人工
工具分割 二值多边形 4,086 帧 mIoU 55-67(间接验证)
COLMAP 重建 稀疏点云 + 位姿(上至尺度) 34-39% 帧(已验证序列) 簇内一致、跨簇不可比
模拟真值 深度/位姿/形变 模拟序列 仿真域严格真值

§3.2 子集与样本数

子集 数量 说明
完整手术视频(最终版) 96 段 / 约 24 小时 结肠镜为主,含胃镜与标定视频
初版发布序列 59 段 / 超 15 小时 2022 年口径,SimCol3D 引用
筛查结肠镜 超过半数序列 缓慢彻底探查,最易上手
解剖区域标注序列 5 段(Seq_003/011/013/093/094) 共 268,679 帧、10 类
工具分割序列 4 段结肠镜 共 4,086 帧
同患者重复检查 多对(SamePatient.json 索引) 相隔数周,用于地图复用研究
标定内镜 8 结肠镜 + 8 胃镜 每台独立几何/光度参数
模拟序列 VR-Caps 生成若干段 含严格几何真值

§3.3 数据格式

内容 格式 说明
手术/标定视频 视频文件(1440×1080 RGB) 40/50 fps 双帧率
解剖区域标签 Anatomical_Regions_XXX.txt 每行 Frame###;region label;
工具分割 tool_segmentation_XXX.xml 逐帧帧号 + 二值多边形坐标列表
手术文本 Seq_XXX.json + Seq_XXX.srt 时间戳同步,SRT 便于播放器叠加
同患者索引 SamePatient.json 序列对与间隔时间
COLMAP 重建 COLMAP 文本格式 逐 cluster 位姿/点云 + covisibility 文件

§3.4 存储与规模

官方未公布数据集总字节数;按约 24 小时 1440×1080 视频估算,完整下载量在数百 GB 量级,建议使用 Synapse 客户端断点续传并优先下载所需序列。视频分辨率 1440×1080、40/50 fps、24bit RGB,实验中常降采样至 720×540(论文 ORB-SLAM3 验证即如此处理,ar5iv 版)。

组成部分 规模参考 对存储/内存的影响
手术视频(96 段) 约 24 小时 @ 1440×1080、40/50 fps 占数据集体积绝大部分;随机寻帧慢,建议转帧目录
标定视频 每台内镜单独录制 数十段短视频;重新标定时需要
解剖/工具标签 268,679 帧 TXT + 4,086 帧 XML 文本体量小,内存可全量加载
COLMAP 重建 逐 cluster 文本文件 单 cluster 数千点,按需加载
文本 footage JSON/SRT 体量可忽略,可全量索引

§3.5 标注方式

标注分为四层:医生人工标注(解剖区域,逐帧观看视频后打标)、商用工具半自动标注(Odin CAT 工具分割,生成二值多边形)、算法派生(COLMAP 重建、covisibility)、仿真导出(VR-Caps 真值)。数据集设计上不追求全量标注,而是为弱监督学习提供"少量金标准 + 大量伪真值"的梯度(论文标注章节)。

四层标注的监督强度与适用任务对照:

标注层 监督强度 体量 最适用的 AI 任务
医生帧级解剖标注 金标准级 268,679 帧(5 序列) 区域识别、阶段分割
Odin CAT 工具掩码 弱金标准 4,086 帧(4 序列) 工具分割
COLMAP 伪真值 弱监督(上至尺度) 依序列而异(34-39% 帧) 深度/位姿/检索弱监督
VR-Caps 仿真真值 严格真值(仿真域) 若干模拟序列 绝对尺度评测、sim-to-real 研究

§3.6 标注者资质与一致性

解剖区域标注由消化科医师(论文作者 C.S./A.F./A.L. 供职于 Lozano Blesa 消化科)在观看视频后完成;工具分割由专有 Odin CAT 标注工具生成,其质量通过"多模型交叉验证"间接评估——官方在 EndoVis17 预训练后于 EndoMapper 微调,报告 mIoU 55.63-66.87,显著低于 Kvasir-Inst(85-87),论文据此确认"工具分割标签更具挑战性"(Table 8)。数据集未公布标注者间一致性系数(如 Cohen’s kappa),该信息缺失。

§3.7 采集周期

采集在 H2020 项目执行期内按医院常规日程进行,每周固定一天录制并与医务团队协调;伦理批准横跨 2020-2022(CEICA acta 05/2020、18/2020、08/2022、20/2022),2022-04 发布初版、2023-10 发布最终论文口径(Methods)。

时间节点 事件
2020(acta 05/2020 起) 伦理批准开始,采集系统设计落地
2020-2022 每周例行采集,覆盖筛查与诊疗日程
2022-04-29 Synapse 初版发布(59 序列)
2022-11-24 / 2023-09-14 Sci Data 收稿 / 接收
2023-10-03 期刊版发布(96 视频口径)

§3.8 地域覆盖

单一中心:西班牙阿拉贡自治区萨拉戈萨的 Hospital Clínico Universitario Lozano Blesa。无多中心、多国数据,地域与人群多样性是已知局限。

§3.9 设备规格

部件 型号 备注
图像处理器 Olympus EVIS EXERA III CV-190 内镜塔核心
冷光源 Olympus EVIS EXERA III CLV-190 与相机同轴移动的光源
结肠镜 Olympus CF-H190 8 台(编号 02-09)分别标定
胃镜 Olympus GIF-H190 8 台(编号 11-18)分别标定
采集卡 A Epiphan DVI2USB 3.0 1440×1080 @ 40 fps
采集卡 B Magewell Pro Capture DVI 1440×1080 @ 50 fps
连接方式 DVI 直连内镜塔 输出图像已裁剪个人信息

设备配置的两点工程含义:其一,光源与相机同轴随动,意味着不存在传统多视角重建的"固定照明"假设——这正是数据集提供光度标定的原因;其二,两代采集卡的帧率差异是系统性而非偶发的,任何跨序列的时间对齐都必须先确定该序列由哪张卡录制(可通过 fps 元数据区分)。

§3.10 深度溯源链

原始信号(Olympus 内镜塔 DVI 输出)→ 采集卡数字化(Epiphan/Magewell)→ 裁剪与体外帧手动剪辑 → 按内镜编号关联标定参数(Vicalib 几何 + Spot Light 光度)→ 派生标注(医生解剖标注 / Odin CAT 工具分割 / COLMAP 重建 / VR-Caps 仿真)→ Synapse 发布(DOI 10.7303/syn26707219)→ Scientific Data 论文同行评审(DOI 10.1038/s41597-023-02564-7)。全链路中采集、标定、验证代码均开源在 github.com/Endomapper,可逐环节复现。

§4 数据结构

§4.0 目录树

数据解压后的目录组织如下(以论文描述为准,XXX 为三位序列号;实际文件名以 Synapse wiki 的 README 为准):

EM_Dataset/
├── SamePatient.json              # 同患者序列索引与间隔时间
├── Seq_001/                      # 每段序列一个根目录
│   ├── Seq_001.avi               # 手术视频(1440×1080)
│   ├── Seq_001.json              # 手术文本 footage(时间戳 + 文本)
│   ├── Seq_001.srt               # 同上,SRT 字幕格式
│   ├── meta-data/
│   │   ├── Anatomical_Regions_001.txt   # 逐帧解剖区域标签
│   │   └── tool_segmentation_001.xml    # 工具分割多边形
│   ├── calibration/              # 该序列所用内镜的标定参数
│   │   ├── geometric_XXX.yaml    # Kannala-Brandt 内参与畸变
│   │   └── photometric_XXX.yaml  # 光源方向/强度、gamma、增益
│   └── colmap/                   # COLMAP 稀疏重建(逐 cluster)
│       ├── cluster_001/          # cameras.txt images.txt points3D.txt
│       └── covisibility_XXX.txt  # 共视帧列表
├── Seq_002/ ...
├── calibration_videos/           # 原始标定视频(棋盘格等图案)
└── simulated/                    # VR-Caps 模拟序列与几何真值

注意:COLMAP 重建仅存在于可成功重建的序列/片段;不是每个序列都有 colmap/ 与标注子目录。目录树的层级为"序列根目录 → 视频与文本 footage → meta-data 标注 → 标定参数 → COLMAP 簇"四层,读取代码应以存在性检查(os.path.exists)逐层探测,而非假设全部子目录齐全。

§4.1 DAIMS 字段字典

核心字段 8 列定义如下:

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
seq_id string 序列号(Seq_XXX) Seq_015 主键、按序列划分 无 无 Seq_001 起
frame_id int 帧号 54420 时序对齐 无 无 0 至序列帧数
timestamp float 时间戳(秒) 2176.8 帧率换算 受 40/50 fps 混用影响 无 >0
region string 解剖区域标签(10 类) sigmoid 区域识别 段间边界主观性 未标注=无该行 rectum/sigmoid/descending/esplenic/transverse/hepatic/ascending/ileocecal/ileum/cecum
tool_polygon list[int] 工具分割二值多边形顶点 [[x1,y1],...] 工具分割 掩码噪声(mIoU 55-67) 无该行=未标注 像素坐标
cam_K / cam_dist list[float] Kannala-Brandt 内参与畸变参数 8 参数 去畸变、VSLAM 重投影误差约 1 像素级 缺失=该内镜未标定 见 calibration 文件
cam_pose 4×4 矩阵 COLMAP 上至尺度位姿 - 位姿监督 伪真值、尺度不定 无该行=未重建 cluster 局部坐标系
text_footage string 手术描述文本(时间戳对齐) "cecum reached..." 阶段理解、弱标签 口述主观性 部分序列缺失 自由文本
fps float 该序列实际帧率 40.0 / 50.0 时间轴换算 读取自容器元数据 无 40 或 50
endoscope_id string 所用内镜编号 02(结肠镜)/ 11(胃镜) 关联正确标定参数 无 无 02-09 / 11-18
cluster_id int COLMAP 重建簇编号 cluster_003 分段评测、伪真值检索 无 无 cluster=未重建 0-49(Seq_001 有 50 簇)
covisible_frames list[int] 与该帧至少共享一个 3D 点的帧集合 [54395, 54401, ...] 检索监督、位姿图构建 COLMAP 几何检查保证 无该行=未重建 帧号集合

字段字典中 region 的取值沿用论文原文拼写(含 esplenic);cam_pose 的尺度因子每 cluster 独立,跨簇不可直接比较。

§4.2 标签分布

解剖区域标注 5 序列 268,679 帧的区段分布(帧数,论文 Table 2):

序列 总帧数 rectum sigmoid descending esplenic transverse hepatic ascending ileocecal ileum cecum
Seq_003 78,439 1,519 2,840 7,640 320 3,440 1,840 58,720 320 1,800 0
Seq_011 25,840 1,480 11,920 4,440 2,200 3,320 2,480 0 0 0 0
Seq_013 33,360 360 2,720 3,600 2,200 4,200 2,360 13,400 1,520 0 3,000
Seq_093 78,480 920 14,040 18,960 6,400 4,640 2,160 7,200 2,640 0 21,520
Seq_094 52,560 400 21,360 8,400 1,000 6,000 760 8,800 2,400 0 3,440
合计 268,679 4,679 52,880 43,040 12,120 21,600 9,600 88,120 6,880 1,800 27,960

分布高度不均衡:ascending 段 88,120 帧对 ileum 1,800 帧相差约 49 倍;Seq_011 未到达盲肠(无 ascending 及以后区段),本身是"未完成检查"的真实案例。官方解剖识别实验即以类别最均衡的 Seq_094 作测试集、其余 4 序列作训练。使用建议:直接在此 5 序列上训练生产级模型不可行(规模太小),更现实的用法是把它们当作"验证锚"——在大规模无标注视频上自监督预训练后,用这 5 段做小样本校准与域内评估。

测试序列选择逻辑:官方选 Seq_094 而非最大序列做测试,理由是它"类别最均衡"(10 类中最稀有的 rectum 也有 400 帧);这提示在自建划分时,应优先保证稀有类在测试侧有最低代表性,再追求总量。

§4.3 关键统计

统计项 数值 来源
解剖标注总帧数 268,679(5 序列、10 类) Table 2
工具分割总帧数 4,086(4 序列) 论文
Seq_003 帧数 78,439 Table 2
COLMAP 帧重建率 Seq_001 39.18%、Seq_002 34.79% arXiv v1 Table 4
ORB-SLAM3 帧定位率(Seq_015) 25%,133 个 sub-map ar5iv 版
ORB-SLAM3 sub-map 规模 关键帧均值 22、地图点均值 1,444、帧均值 91 论文 Table 6
光度标定 RMSE 结肠镜均值 2.94、胃镜 3.34 灰度级 论文 Table 5
视频规格 1440×1080,40 或 50 fps Methods
光度标定内镜数 8 结肠镜(02-09)+ 8 胃镜(11-18) 论文 Table 5
ORB-SLAM3 sub-map 均值规模 关键帧 22、地图点 1,444、帧 91(均值) 论文 Table 6
Seq_015 处理配置 720×540 降采样、隔帧、重投影阈值 ×2 ar5iv 版
ORB-SLAM3 运行耗时 跟踪均值 23 ms、最大 37 ms(实时) 同上
跨检查检索验证 Seq_035 → Seq_027(间隔约两周)成功召回 论文 Fig.12

§4.4 数据层级

数据集为四层结构:项目(1 个)→ 患者(未逐患者公开,同一患者可有多段检查)→ 序列(96 段完整手术)→ 帧(每序列数万帧,部分帧附带标注/重建)。任何涉及"同一患者"的统计都不能把序列当独立样本;涉及"同一序列"的分帧实验都要警惕相邻帧高度相似带来的有效样本量膨胀。

层级与主键的对应关系:序列层主键 seq_id;帧层复合主键 (seq_id, frame_id);患者层无显式 ID,只能通过 SamePatient.json 的序列对进行分组归并——这是设计防泄漏逻辑时必须注意的实现细节,因为"未出现在 SamePatient.json 中"严格来说只说明"官方未声明同患者",不能证明不同患者。

§4.5 缺失值与信息性缺失

缺失模式 机制 处理建议
解剖区域标签只覆盖 5 序列 标注成本限制 非标注序列不存在该文件;不得视为"负类"
工具分割只覆盖 4,086 帧 仅选定片段标注 文件内逐帧列点,未列出的帧=未标注
文本 footage 缺失 部分手术无口述描述 该序列无 SRT/JSON;视为模态缺失而非空文本
COLMAP 重建片段级缺失 平滑非形变段才能重建 无 colmap/ 或 cluster 不含该帧=不可用作伪真值
体外帧被剪辑移除 人工质检剪辑 帧号不连续,勿按固定帧率反推时间戳

§5 划分与使用建议

官方划分:数据集未提供正式 train/val/test 划分;仅在技术验证中给出两个约定:解剖区域识别以 Seq_003/011/013/093 为训练、Seq_094 为测试(类别最均衡);SimCol3D 挑战赛 Task 3 以 7 条 EndoMapper 轨迹(3 名患者)为测试集、鼓励用其余序列训练(挑战赛论文)。SLAM 验证的参照序列为 Seq_015(ORB-SLAM3 全序列实测)。

任务类型 推荐划分 锚点来源
解剖区域识别 训练 003/011/013/093,测试 094 官方 Table 7 协议
工具分割 4 个标注序列内按帧段划分(报告序列级留出结果) 官方 Table 8 协议
SLAM/位姿 SimCol3D Task 3 的 7 条测试轨迹;Seq_015 作定性对照 挑战赛论文 + 官方验证
深度/检索(弱监督) 按患者分组的自定义划分,测试患者不可见于训练 SamePatient.json

社区惯例:复现 SimCol3D 的直接用其 7 条测试轨迹;做 VSLAM 的常用 Seq_015(ORB-SLAM3 验证序列)与若干筛查序列做定性对比;做弱监督深度的多用 COLMAP 覆盖率高的平稳段做训练池。

划分策略建议:SLAM/深度任务按"序列"划分并固定随机种子;检索/地图复用任务按"患者"划分,确保测试患者不出现在训练集;分类/分割任务在序列内划分帧时至少保证训练/测试帧间隔足够远(如以千帧为间隔的分段留出),避免"相邻帧各分一侧"。

泄漏风险(§5.3 重点):同患者序列相隔数周、黏膜外观高度相似,按序列随机划分会把"同一患者的两次检查"分进训练与测试,高估检索与深度模型性能;相邻帧(40/50 fps)近乎复制粘贴,帧级随机划分等于测试集泄漏。务必使用 SamePatient.json 与序列级分组。

泄漏自查清单(提交结果前逐项确认):

检查项 方法 不通过时的后果
同患者跨集 解析 SamePatient.json 校验两侧患者交集为空 检索/深度指标虚高
相邻帧跨集 训练/测试帧最小间隔 ≥ 1000 帧 分类指标接近完美却无泛化
同内镜标定跨集 测试内镜参数未参与任何训练侧预处理拟合 去畸变策略过拟合单台设备
伪真值来源跨集 测试集 COLMAP 参数未与训练集联合优化 位姿评测不可比

交叉验证建议:标注序列仅 5 段,可用 leave-one-sequence-out(5 折)并报告每折方差,同时按患者分组防止同患者跨折;工具分割 4 序列同理(4 折)。

外部验证建议:内部模型迁移到 SimCol3D 合成域、C3VD 体模域或自采数据前,先在 EndoMapper 内按设备(结肠镜 vs 胃镜)与序列类型(筛查 vs 治疗)分层评估,再报告跨域退化幅度。

§6 AI 就绪指南

§6.0 云端快速启动

数据体量在数百 GB 量级且需人工审批,不建议直接在 Colab 免费实例上托管全量数据。推荐流程:本地/机构服务器用 Synapse 客户端下载 → 仅上传所需序列片段至云端工作区 → 云端 GPU 训练。Synapse 提供 Python SDK(synapseclient),可在任意云端 Jupyter 环境中按序列号增量拉取。

云端步骤 操作 注意事项
1 本地申请通过后下载核心序列 优先:标注序列 + Seq_015 + 若干筛查序列
2 打包上传云端对象存储 检查云服务商条款允许存放该许可数据
3 挂载/同步至训练节点 用 rsync 增量同步,保留目录结构
4 转帧缓存(可选) ffmpeg 展开常用序列,加速随机读取
5 训练结束清理 遵守"禁止再分发",临时副本及时删除

§6.1 数据获取与快速上手

获取流程:

步骤 操作 说明
1 注册 Synapse 账号 需机构邮箱,v1 论文注明限非营利机构
2 访问 syn26707219 阅读使用条件(限研究、禁再分发)
3 填写 Statement of Intended Use 描述研究用途,等待审批
4 安装 pip install synapseclient 并下载 支持按序列增量下载
5 引用义务 发表时引用 DOI 10.7303/syn26707219 与 Scientific Data 论文
# 安装 Synapse 官方 Python 客户端
pip install synapseclient

# 命令行登录并下载指定实体(首次建议只下载 1-2 段序列验证管线)
python -c "import synapseclient; syn=synapseclient.login(); syn.get('syn26707219', downloadLocation='./EM_Dataset')"

快速上手代码说明:以下代码假设你已将数据下载到 data_root,目录结构符合 §4.0 的树形预期(data_root/Seq_XXX/...);data_root 即解压根目录,代码内部用 os.path.join(data_root, seq_id) 拼接路径;最小可用子集为任意一段有解剖标注的序列(如 Seq_003,78,439 帧标注)加其标定文件,即可跑通"视频帧 + 标签"读取。

import json, os
import cv2
import numpy as np

DATA_ROOT = "./EM_Dataset"          # 解压根目录(§4.0 树形结构)
SEQ = "Seq_003"                     # 最小可用子集:带解剖标注的序列
seq_dir = os.path.join(DATA_ROOT, SEQ)

def load_region_labels(seq_dir):
    """解析 Anatomical_Regions_XXX.txt:每行 'Frame###;region;'"""
    labels = {}
    for f in os.listdir(os.path.join(seq_dir, "meta-data")):
        if f.startswith("Anatomical_Regions"):
            with open(os.path.join(seq_dir, "meta-data", f)) as fh:
                for line in fh:
                    parts = line.strip().split(";")
                    if len(parts) >= 2 and parts[0].startswith("Frame"):
                        labels[int(parts[0][5:])] = parts[1]
    return labels

def read_frames(seq_dir, stride=100):
    """按步长抽帧,返回 (frame_id, BGR image)。"""
    cap = cv2.VideoCapture(os.path.join(seq_dir, f"{os.path.basename(seq_dir)}.avi"))
    fid, ok = 0, True
    while ok:
        ok, frame = cap.read()
        if ok and fid % stride == 0:
            yield fid, frame
        fid += 1
    cap.release()

labels = load_region_labels(seq_dir)
print(f"{SEQ} 共 {len(labels)} 帧带解剖标签")

same_patient = json.load(open(os.path.join(DATA_ROOT, "SamePatient.json")))
print("同患者序列对:", list(same_patient.items())[:3])

下载完整性验证:Synapse 支持按实体校验,建议下载后先核对序列目录数量与每段视频可读性,再开始实验;对拷贝到云端的副本,保留 Synapse 的实体版本号作为溯源凭证。

# 快速完整性检查:列出全部序列目录并确认每个目录含视频文件
for d in ./EM_Dataset/Seq_*/; do
  ls "$d" | grep -qE '\.(avi|mp4|mkv)$' || echo "缺视频: $d"
done | tee integrity_report.txt

§6.2 预处理全流程

(1)鱼眼去畸变:必须使用 Kannala-Brandt 模型(cv2.fisheye),不能用普通 cv2.undistort(见坑点 3):

import cv2
import numpy as np

# calibration/ 下 YAML 内的 K(3x3) 与 D(4x1) 为 Kannala-Brandt 参数
K = np.array([[543.1, 0, 719.5], [0, 542.3, 539.5], [0, 0, 1]], np.float32)  # 示意,请读实际文件
D = np.array([-0.08, 0.02, -0.005, 0.001], np.float32)                        # 示意

new_K = cv2.fisheye.estimateNewCameraMatrixForUndistortRectify(
    K, D, (1440, 1080), np.eye(3), balance=0.0)
map1, map2 = cv2.fisheye.initUndistortRectifyMap(
    K, D, np.eye(3), new_K, (1440, 1080), cv2.CV_16SC2)

def undistort(img):
    return cv2.remap(img, map1, map2, cv2.INTER_LINEAR)

(2)帧率与时间轴统一:先读视频 fps 元数据,勿假设常量(见坑点 4)。

(3)清洗:丢弃运动模糊/离焦帧(用 Laplacian 方差阈值)与出水污染帧(亮度直方图突变检测),可显著提高伪真值质量。

(4)标准化:训练前降采样至 720×540(与论文 ORB-SLAM3 验证一致)或 512×384,ImageNet 归一化;保留原始分辨率用于标定计算。

def preprocess(img, size=(720, 540)):
    img = cv2.resize(img, size, interpolation=cv2.INTER_AREA)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB).astype(np.float32) / 255.0
    return (img - np.array([0.485, 0.456, 0.406])) / np.array([0.229, 0.224, 0.225])

(5)增强:见 §6.6;内镜域特别注意光度增强与真实光源物理的一致性。

(6)COLMAP 伪真值解析:弱监督训练的核心数据源,注意"上至尺度 + 逐簇独立"(见坑点 1):

def load_colmap_cluster(cluster_dir):
    """解析 COLMAP 文本格式的 images.txt(位姿)与 points3D.txt(点云)。
    目录预期:cluster_dir/{cameras,images,points3D}.txt
    返回 {image_id: (qw,qx,qy,qz,tx,ty,tz)},位姿为簇内局部坐标系、上至尺度。
    """
    poses = {}
    with open(os.path.join(cluster_dir, "images.txt")) as f:
        lines = [l.strip() for l in f if l.strip() and not l.startswith("#")]
    for i in range(0, len(lines), 2):          # 偶数行=位姿,奇数行=2D 观测
        p = lines[i].split()
        image_id, qw, qx, qy, qz, tx, ty, tz = p[0], *map(float, p[1:8])
        poses[int(image_id)] = (qw, qx, qy, qz, tx, ty, tz)
    return poses

def load_covisibility(cluster_dir):
    """读取 covisibility 列表:每个 image_id 对应的共视帧集合。"""
    cov = {}
    path = os.path.join(cluster_dir, "covisibility.txt")
    if os.path.exists(path):
        for line in open(path):
            parts = line.strip().split()
            if parts:
                cov[int(parts[0])] = list(map(int, parts[1:]))
    return cov

(7)同患者防泄漏解析:划分前必须先跑这段(见坑点 6):

def patient_groups(data_root):
    """从 SamePatient.json 构建 {seq_id: patient_group} 映射;
    未出现在索引中的序列各成独立组。"""
    sp = json.load(open(os.path.join(data_root, "SamePatient.json")))
    groups, gid = {}, 0
    for pair in (sp.get("pairs") or sp.items()):
        if isinstance(pair, dict):
            s1, s2 = pair.get("sequences", [None, None])[:2]
        else:
            (s1, s2) = list(pair)[:2] if isinstance(pair, (list, tuple)) else (None, None)
        if s1 and s2:
            groups.setdefault(s1, f"p{gid}"); groups[s2] = f"p{gid}"; gid += 1
    return groups

SamePatient.json 的键结构以实际文件为准(记录序列对与间隔时间);上述代码提供了 pairs 列表与字典两种常见布局的兼容读取,使用前请先打印文件结构确认。

§6.3 PyTorch DataLoader

import os, json
import cv2
import torch
from torch.utils.data import Dataset, DataLoader

class EndoMapperDataset(Dataset):
    """EndoMapper 解剖区域分类/深度预训练数据集。

    目录预期(data_root 为解压根目录,路径均为 os.path.join 拼接):
        data_root/Seq_XXX/Seq_XXX.avi
        data_root/Seq_XXX/meta-data/Anatomical_Regions_XXX.txt
    最小可用子集:任一含 Anatomical_Regions 文件的序列(如 Seq_003)。
    """
    REGIONS = ["rectum", "sigmoid", "descending", "esplenic", "transverse",
               "hepatic", "ascending", "ileocecal", "ileum", "cecum"]

    def __init__(self, data_root, seq_ids, stride=30, size=(720, 540)):
        self.root, self.stride, self.size = data_root, stride, size
        self.samples = []
        for sid in seq_ids:
            d = os.path.join(data_root, sid)
            lab = self._labels(d)
            self.samples += [(sid, int(f), lab[f]) for f in sorted(lab)[::stride]]

    def _labels(self, seq_dir):
        out = {}
        for f in os.listdir(os.path.join(seq_dir, "meta-data")):
            if f.startswith("Anatomical_Regions"):
                for line in open(os.path.join(seq_dir, "meta-data", f)):
                    p = line.strip().split(";")
                    if len(p) >= 2 and p[0].startswith("Frame"):
                        out[int(p[0][5:])] = p[1]
        return out

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

    def __getitem__(self, i):
        sid, fid, region = self.samples[i]
        cap = cv2.VideoCapture(os.path.join(self.root, sid, f"{sid}.avi"))
        cap.set(cv2.CAP_PROP_POS_FRAMES, fid)
        ok, img = cap.read()
        cap.release()
        img = cv2.resize(cv2.cvtColor(img, cv2.COLOR_BGR2RGB), self.size)
        img = torch.from_numpy(img).permute(2, 0, 1).float() / 255.0
        y = self.REGIONS.index(region)
        return img, torch.tensor(y)

train_ds = EndoMapperDataset("./EM_Dataset", ["Seq_003", "Seq_011", "Seq_013", "Seq_093"])
train_dl = DataLoader(train_ds, batch_size=16, shuffle=True, num_workers=4,
                      pin_memory=True, persistent_workers=True)

生产提示:VideoCapture 随机寻帧在大视频上较慢,工业管线建议先用 ffmpeg 将视频展开为帧目录或按 cluster 切片缓存。

§6.4 坑点清单

⚠️ 坑点 1:把 COLMAP 伪真值当稠密金标准(分类:评估误用)

问题:COLMAP 重建是"上至尺度"的稀疏伪真值,仅在平滑非形变片段成功:官方验证中 Seq_001 只有 39.18% 帧、Seq_002 只有 34.79% 帧被重建(Table 4)。把它当稠密、绝对尺度的真值,会让位姿/深度评测结果系统性虚高。
症状:评测 ATE 异常漂亮,但实际部署跟踪频繁丢失;不同序列的误差互不可比(每个 cluster 尺度不同);用未重建帧计算指标时程序直接崩溃或指标骤变。
解决:

  1. 简单方法:只对"被 COLMAP 重建的帧"计算指标,用 covisibility 文件过滤孤立帧;所有指标注明"up-to-scale"。
  2. 进阶方法:对齐后再评——用 Umeyama/Horn 相似变换把估计轨迹对齐到伪真值(允许尺度因子),分段(per-cluster)报告误差与覆盖率。
  3. SOTA 方法:像 SimCol3D 那样对伪真值先人工定性核验(组织者 + 一名胃肠病学家逐条检查轨迹与视频运动方向一致性,挑战赛论文),或改在 VR-Caps 模拟序列(严格真值)上做绝对尺度评测。
    参考:EndoMapper 论文 COLMAP 验证节;SimCol3D arXiv:2307.11261

⚠️ 坑点 2:忽略非刚体形变,SLAM 地图碎裂成碎片(分类:评估误用)

问题:结肠是蠕动、受镜头推压持续形变的非刚体场景。官方用 ORB-SLAM3 处理整段 Seq_015,得到 133 个小 sub-map(关键帧均值仅 22),仅 25% 帧成功定位——把数据集当静态场景评测会严重误读系统性能(ar5iv 版)。
症状:跟踪频繁重启、地图无法回环合并;全局一致性指标无意义;同一序列不同运行的轨迹差异巨大。
解决:

  1. 简单方法:接受 sub-map 粒度评测:按 cluster 分段计算局部精度,放弃全局一致性报告。
  2. 进阶方法:仿照官方调参——降采样 720×540、隔帧跳过、重投影阈值 ×2 抑制形变引起的跟踪丢失,并报告调参细节以便复现。
  3. SOTA 方法:使用显式建模形变的系统,官方仓库的 NR-SLAM(非刚体单目 SLAM)即为此设计(github.com/Endomapper/NR-SLAM);或引入拓扑先验(ColonSLAM,MICCAI 2024)。
    参考:EM_Dataset-ORBSLAM3Validation;NR-SLAM 仓库

⚠️ 坑点 3:用 pinhole 模型处理鱼眼畸变(分类:预处理陷阱)

问题:内镜镜头接近正交/等距立体投影的广角鱼眼,边缘畸变极大。用普通 pinhole + 径向畸变模型去畸变,边缘重投影误差发散,特征点无法三角化。论文明确指出 Kannala-Brandt 模型"对提取与三角化图像边缘附近特征至关重要"(ar5iv 版)。
症状:去畸变后边缘出现拉伸黑边与"果冻"纹理;VSLAM 只能在图像中心工作;标定文件用错时整段序列轨迹漂移。
解决:

  1. 简单方法:始终用 cv2.fisheye.* 接口加载数据集自带的 Kannala-Brandt 参数;先在标定视频上验证重投影误差约 1 像素级再用。
  2. 进阶方法:注意 16 台内镜各有独立参数——按序列 metadata 关联正确内镜编号,勿复用其他内镜参数。
  3. SOTA 方法:在 VSLAM 中直接采用 KB 模型原生前端(ORB-SLAM3 的 KB 支持或 DSO 的 fisheye 模式),避免去畸变损失视场。
    参考:EM_Dataset-GeometricCalibration;Vicalib 工具文档

⚠️ 坑点 4:假设统一帧率与连续帧号(分类:工程陷阱)

问题:数据由两种采集卡录制——Epiphan DVI2USB 3.0 为 40 fps、Magewell Pro Capture DVI 为 50 fps,同帧率下时间戳换算差 25%;且体外帧被人工剪辑移除,帧号不连续(Methods)。
症状:跨序列统一按 40 fps 换算时间导致文本 footage 对不上画面;光流/运动幅度归一化错误;按帧号差推算时长偏大。
解决:

  1. 简单方法:运行时从 VideoCapture.get(cv2.CAP_PROP_FPS) 读取实际帧率,时间轴一律用时间戳而非帧号。
  2. 进阶方法:用 SRT/JSON 文本 footage 的时间戳做对齐基准,与视频时间轴校验偏差。
  3. SOTA 方法:构建统一时序索引表(序列 → fps → 帧号 ↔ 秒),入库时一次性校验帧号连续性并记录剪辑缺口。
    参考:EndoMapper Methods 章节

⚠️ 坑点 5:把工具分割标签当严格金标准(分类:标签理解)

问题:4,086 帧工具掩码由专有 Odin CAT 工具生成,属半自动弱标签。官方交叉验证显示各模型在 EndoMapper 上 mIoU 仅 55.63-66.87,而在 EndoVis17 上为 75.44-87.56——论文自证"标签更具挑战性"(Table 8)。
症状:分割模型在验证集 mIoU 天花板明显低于公开基准;把验证失败全归因于模型而忽视标签噪声;不同模型的排序在小差距上不可信。
解决:

  1. 简单方法:训练时对掩码边界做腐蚀/置信度加权,评测时同时报告边界 F 值而非仅 mIoU。
  2. 进阶方法:噪声鲁棒训练(co-teaching/标签平滑)或用 EndoVis17/Kvasir-Inst 先验再微调,减小噪声梯度影响。
  3. SOTA 方法:小规模人工复检(抽 200-500 帧)建立"可信子集",报告噪声上限与去噪后指标。
    参考:EM_Dataset-ToolSegmentation;Tomasini et al. 分割对比研究

⚠️ 坑点 6:同患者序列造成的患者级泄漏(分类:数据泄漏)

问题:数据集刻意包含同一患者相隔数周的重复结肠镜(SamePatient.json 索引),黏膜外观与解剖结构高度相似。若按序列随机划分 train/test,同一患者的检查会跨集出现,检索/深度模型的评测指标被严重高估。
症状:图像检索模型"几乎完美"匹配测试序列;深度估计跨患者泛化远差于评测值;换自采数据后性能断崖下跌。
解决:

  1. 简单方法:解析 SamePatient.json,把同一患者的全部序列划入同一侧。
  2. 进阶方法:按患者分组做 GroupKFold/leave-one-patient-out,报告患者间方差。
  3. SOTA 方法:对检索任务显式模拟"时间间隔"分层(同检查内/跨检查/跨患者三档),分别报告,与官方 Seq_035→Seq_027 跨两周检索实验对齐(论文 Fig.12)。
    参考:SamePatient.json 字段说明

⚠️ 坑点 7:用通用分类基准预期解剖区域准确率(分类:评估误用)

问题:相邻肠段视觉差异极其细微,“对训练有素的医生都难以区分”。官方基线中最好的 ResNetV2-101 Top-1 仅 26.08%、Top-3 66.09%(Table 7),远低于通用图像分类常识。
症状:团队以为模型坏掉而反复调参;错误地用"Top-1 低于 90%"否定数据集;在不同标注序列间比较得到矛盾结论。
解决:

  1. 简单方法:以官方 Top-1 26%/Top-3 66% 为基线锚点,优先报告 Top-3 与混淆矩阵。
  2. 进阶方法:合并视觉上不可分的相邻区段(如降为 5 大段)做消融,定位"分界模糊"的具体类别。
  3. SOTA 方法:引入时序上下文(视频级 RNN/Transformer 或拓扑顺序约束)而非单帧分类,这正与解剖路径的先验一致。
    参考:EM_Dataset-AnatomicalRegions

⚠️ 坑点 8:忽视光度域差与仿真-真实鸿沟(分类:偏倚陷阱)

问题:内镜光源随相机移动、组织反光与自动增益造成强烈光度变化;数据集自带的光度标定(Spot Light Source 模型,结肠镜 RMSE 均值 2.94 灰度级,γ=2.2)常被忽略。同时,唯一"严格真值"来自 VR-Caps 模拟序列,直接把仿真训练的模型搬到真实序列会遭遇 sim-to-real 域差(ar5iv 版)。
症状:自监督深度/光度重投影损失不收敛或震荡;仿真域调好的位姿/深度模型在真实序列上精度骤降;亮度增强后真实感崩溃。
解决:

  1. 简单方法:加载 photometric 参数做辐射归一化(gamma 校正 + 光源模型白平衡),增强时限制亮度/对比度幅度。
  2. 进阶方法:仿真训练采用域随机化(纹理、反光、增益),真实序列上用 COLMAP 伪真值做无监督微调。
  3. SOTA 方法:用光度标定驱动的物理成像模型(如 inverse rendering 损失)替代纯光度一致性损失。
    参考:EM_Dataset-PhotometricCalibration

§6.5 数据增强

  • 安全增强 ✅:水平/垂直小角度旋转(≤10°)、随机裁剪后缩放、高斯噪声、运动模糊模拟、色温小扰动、时间维度上的帧采样抖动。
  • 危险增强 ❌:大幅亮度/对比度翻转(破坏光度标定与黏膜色泽判读)、强弹性形变(叠加真实蠕动形变后破坏几何标注一致性)、水平镜像(解剖方位与拓扑先验失效)、色彩通道置换(临床色泽语义被破坏)。

判断一条增强是否安全的通用准则是"是否破坏数据集的三大物理事实":鱼眼投影几何(KB 参数标定的是真实镜头)、光源随相机移动的光度模型、解剖区段的拓扑顺序。凡与这三者冲突的增强,即便在自然图像上是常规操作,在这里都会把监督信号变错——例如水平镜像会让"进镜路径单调性"这一时序先验完全反转。

§6.6 模型推荐

任务 推荐起点 说明
VSLAM/里程计 ORB-SLAM3(KB 模式)、DSO-fisheye、NR-SLAM NR-SLAM 为官方非刚体方案
位姿估计(学习式) SimCol3D 获胜方法、Bimodal Camera Pose 挑战赛验证过协议
深度估计 MonoDepth2 自监督 + COLMAP 伪真值微调 注意坑点 1/8
工具分割 MiniNetV2(官方基线,66.65 mIoU,0.52M 参数) 轻量且接近 SOTA
解剖区域识别 ResNetV2-101 / MobileNetV2 + 时序后处理 见坑点 7
图像检索 NetVLAD/D2-Net + COLMAP 监督 官方验证 covisibility 可作监督

§6.7 硬件需求

场景 最低配置 推荐配置
数据下载/解析 16GB 内存 + 数百 GB 磁盘 64GB 内存 + 2TB NVMe
SLAM 评测 8 核 CPU + 16GB 16 核 CPU + 32GB(实时性要求高)
分割/分类训练 1× RTX 2080(官方基线推理参考) 1-2× A100/4090
深度/重建训练 1× 24GB GPU 2-4× 32GB GPU + DDP

官方基线的推理耗时参考(RTX 2080,单图):MiniNetV2 26 ms、U-Net 54 ms、MF-TAPNet 155 ms;ORB-SLAM3 跟踪均值 23 ms(720×540 输入)。配置低于参考卡时,请按比例重测推理时间而非直接引用。

§6.8 评估指标代码

以下三个函数分别对应本数据集三大任务的官方评测思路:ATE(位姿,up-to-scale 对齐)、Top-K 准确率(解剖分类,呼应官方 Top-1/Top-3 双指标)、mIoU(工具分割)。实现中已内置相似变换对齐——这是伪真值评测(坑点 1)的必备步骤。

import numpy as np

def ate_rmse(est, ref, aligned=True):
    """绝对轨迹误差:est/ref 为 (N,3) 平移序列;先做相似变换对齐(up-to-scale)。"""
    assert est.shape == ref.shape
    if aligned:  # Horn/Umeyama 相似变换,允许尺度
        mu_e, mu_r = est.mean(0), ref.mean(0)
        e_c, r_c = est - mu_e, ref - mu_r
        cov = r_c.T @ e_c / len(e_c)
        U, S, Vt = np.linalg.svd(cov)
        s = S.sum() / (r_c.var(0).sum())
        R = Vt.T @ U.T
        if np.linalg.det(R) < 0:
            Vt[-1] *= -1; R = Vt.T @ U.T
        est_a = (s * (e_c @ R.T)) + mu_r
        return np.sqrt(((est_a - ref) ** 2).sum(1).mean())
    return np.sqrt(((est - ref) ** 2).sum(1).mean())

def topk_accuracy(logits, y, ks=(1, 3)):
    out = {}
    for k in ks:
        pred = logits.topk(k, dim=1).indices
        out[f"top{k}"] = (pred == y[:, None]).any(1).float().mean().item()
    return out

def miou(pred, gt, n_cls):
    ious = []
    for c in range(n_cls):
        inter = ((pred == c) & (gt == c)).sum()
        union = ((pred == c) | (gt == c)).sum()
        if union > 0:
            ious.append(inter / union)
    return float(np.mean(ious))

§6.9 MLOps 笔记

  • 版本锚定:数据无版本号递增机制,实验记录须锚定"Synapse 实体版本 + 下载日期 + 序列清单哈希"。
  • 数据卡:把 SamePatient.json 解析结果、每序列 fps 与帧数、COLMAP 覆盖率写入数据卡,随模型 artifact 一起归档。
  • 复现实验:优先复用官方 9 个仓库(标定、验证、NR-SLAM),用 git commit 锁定;SLAM 结果随机性大,报告 ≥5 次运行的中位数与四分位距。
  • 许可合规流水线:在 CI 中检查发布物不含原始视频帧(禁止再分发条款),只允许衍生指标与图表。
  • 评测协议:位姿评测固定"相似变换对齐 + per-cluster 报告 + 覆盖率"三件套(坑点 1),保证与 SimCol3D 协议可对话。
  • 特征缓存策略:把 ORB/SuperPoint 特征与去畸变图像按 seq_id/cluster_id 缓存为分片,避免反复解码大视频;缓存键包含"标定参数哈希 + 降采样配置",防止设备参数混淆。
  • 监控指标:训练期监控伪真值帧占比(有效监督信号量);评测期监控"帧定位率"与"sub-map 平均时长"两个内生指标——它们比单一 ATE 更能反映非刚体场景的真实鲁棒性。
  • 失败样本库:把跟踪丢失片段(定位率 0 的窗口)按解剖区段归档,作为下一轮迭代的难例挖掘池;这与官方"easy 与 hard 序列并存、供社区识别研究挑战"的设计初衷一致。

§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解措施
中心偏倚 单一医院(萨拉戈萨 Lozano Blesa)单一设备体系(Olympus EXERA III) 高 迁移前在自有数据/多中心集上复测
操作类型偏倚 超半数为筛查结肠镜,治疗性操作占比低 中 按序列类型分层评估,治疗子集单独报告
标注覆盖偏倚 解剖标签仅 5 序列、工具分割仅 4,086 帧 高 伪真值 + 金标准分层使用,报告标注来源
伪真值偏倚 COLMAP 只在平滑非形变段成功,采样系统性偏向"简单"片段 高 按覆盖率加权,警惕"简单片段过拟合"
人群统计缺失 年龄/性别/种族未公开 中 无法做人群公平性审计,结论限于设备与操作层
标签体系偏倚 解剖区段边界由医师主观划分,10 类词表为项目自定义 低-中 报告混淆矩阵,谨慎跨研究比较区段指标
时段偏倚 采集集中于项目期每周固定一天 低 注意单日工作流可能引入节律性模式
帧率异质 40/50 fps 双采集卡混用 低 运行时读取实际 fps,时间轴用时间戳

§7.2 标注质量

解剖区域标注由消化科医师逐帧观看视频完成,可靠性最高;但其段间边界本身存在主观性(论文承认"区段差异即使对训练有素的医生也非常细微",且 Top-1 基线仅 26%)。工具分割为专有工具生成的弱标签,官方用多模型交叉验证(mIoU 55-67,低于其他域 20+ 个点)确认其挑战性。COLMAP 伪真值经算法几何检查 + 下游任务(图像检索)验证"合理可用作弱监督",但无像素级精度评估。数据集未公布标注者间一致性统计——使用时应自建小型人工复检子集。

按标注层汇总的质量证据链:

标注层 质量证据 证据强度 已知短板
解剖区域 医生标注 + 4 模型基线验证(Top-1 26.08% 印证任务难度) 中高 边界主观性、无一致性系数
工具分割 多模型 mIoU 交叉对比(55.63-66.87) 中 半自动生成、边界噪声
COLMAP 伪真值 几何检查 + 检索任务间接验证 + SimCol3D 人工核验协议 中 覆盖率 34-39%、上至尺度
模拟真值 渲染引擎导出,几何精确 高(限仿真域) 真实域外推性有限
文本 footage 操作医生口述、时间戳自动对齐 中 主观描述、非结构化

§7.3 泛化性评估

目标场景 失效风险 证据
其他医院/其他品牌内镜 高:几何/光度特性改变,标定参数失效 单中心、16 台 Olympus 内镜标定
合成→真实(SimCol3D→EndoMapper) 中高:sim-to-real 域差 挑战赛 Task 3 专门检验真实泛化(论文)
真实→体模(→C3VD) 中:形变消失、反光特性改变 C3VD 为无形变体模(对比表)
胃镜↔结肠镜互迁 高:解剖与运动模式差异大 胃镜光度 RMSE(3.34)高于结肠镜(2.94),光源非对称
治疗性操作场景 中高:器械交互、出血/水环境 治疗序列占比低,训练代表性不足

§7.4 伦理合规

采集获 CEICA(阿拉贡自治区研究伦理委员会)多次批准(acta 05/2020、18/2020、08/2022、20/2022),全部受试者取得知情同意;数据为二次利用医疗数据(secondary use);输出图像裁剪去除个人信息、体外帧手动移除;Synapse 访问需注册 + Statement of Intended Use 且禁止再分发(Use of human participants 节)。

面向合规审计的要点清单:

合规维度 状态 依据
伦理批准 ✅ CEICA 四次会议批准(2020-2022) 论文 Methods
知情同意 ✅ 全部受试者 论文 Methods
去标识化 ✅ 输出裁剪 + 体外帧移除 论文 Methods
使用限制 ✅ 限研究、禁再分发、用途声明 Synapse Usage Notes
引用义务 ✅ 数据 DOI + 期刊论文双引用 Synapse Usage Notes
二次共享 ❌ 明确禁止 Synapse Usage Notes

§7.5 公平性

数据集未发布患者人口学信息,无法进行性别/年龄/种族维度的公平性审计;筛查项目人群的构成也未细分。涉及人群公平性的结论(如"模型对某人群更差")在该数据集上不可检验,应在论文局限性中明示。可操作的替代路径:在设备与操作层做分层公平性(结肠镜 vs 胃镜、筛查 vs 治疗、不同内镜编号),这些维度在数据集内可控可测。

§7.6 数据漂移

设备固定(同一内镜塔与采集卡)使设备层漂移风险低;但项目横跨 2020-2022,筛查流程、肠道准备方案与医生团队可能随时间变化;同患者重复检查本身是"受控纵向漂移"的天然素材——两周间隔内黏膜外观与光照模式的变化可作为分布漂移的量化参考。

漂移维度 数据集内表现 监控建议
设备漂移 低(固定内镜塔,16 台内镜参数齐全) 以 endoscope_id 分组监控误差
流程漂移 中(2020-2022 筛查流程演变不可见) 按采集年份分桶评估
采集卡差异 明确存在(40 vs 50 fps) 时间轴统一后再比
纵向漂移 可量化(同患者数周间隔) 用同患者对做变化幅度基准
操作类型混合 筛查/治疗比例未知精确值 按文本 footage 分类后分层

§7.7 DAIMS 数据集完备性评估

# 检查项 状态 说明
1 宽格式数据 ✅ 视频/标签/元数据按序列目录组织,可直接表格化
2 唯一标识 ✅ Seq_XXX + 帧号构成稳定主键
3 特殊字符处理 ✅ 标签为 ASCII 单词,文件名规范
4 重复行 ✅ 相邻帧相似但不重复;无重复记录
5 缺失编码 ⚠️ 未标注以"文件/行缺失"表达,无显式编码
6 标签标识 ✅ 10 类解剖 + 工具掩码语义清晰
7 罕见类分组 ⚠️ ileum 仅 1,800 帧,未提供合并策略
8 偏倚评估 ✅ 论文自报筛查占比、验证协议局限
9 数据字典 ✅ Synapse wiki + 论文格式说明完整
10 信息性缺失解释 ⚠️ COLMAP 缺失片段的机制有解释,标注缺失量未汇总成表
11 设备记录 ✅ 16 台内镜逐台编号与标定参数
12 共线性 ⚠️ 解剖区段与时间强相关,需时序建模处理
13 编码映射 ⚠️ 标签为自由词表,无 ICD/SNOMED 官方映射
14 时间戳处理 ✅ JSON/SRT 提供显式时间戳
15 划分建议 ✅ 官方验证给出固定 train/test 序列约定
16 泄漏讨论 ✅ SamePatient.json 显式支持患者级防泄漏
17 标签分布 ✅ 论文 Table 2 全量公布帧级分布
18 测量偏倚 ✅ 双采集卡差异、裁剪流程有说明
19 外部验证建议 ✅ 与 SimCol3D/C3VD 互补关系明确
20 版本记录 ⚠️ Synapse 有实体版本,但数据集本身无语义版本号
21 预处理脚本 ✅ 标定/验证/仿真 9 个官方仓库开源
22 合规要求 ✅ 使用条件四条明确(限研究/禁再分发/用途声明/引用义务)
23 多模态对齐 ✅ 视频-文本-标签-位姿均带时间戳/帧号对齐
24 去标识化 ✅ 输出裁剪个人信息 + 体外帧移除

DAIMS 评分:19.5 / 24

评分解读:该数据集在设备溯源、多模态对齐、去标识化与合规条款上达到教科书级(✅ 集中于"记录完备"类);失分集中在"统计可用性"——标注覆盖低、无标签体系映射、无语义版本号,反映其"以 VSLAM 为主、标注为辅"的设计取向。19.5/24 在真实临床视频数据集中属于第一梯队。

对你意味着什么:(1) 可以放心把该数据集作为真实内镜几何算法的评测底座,设备与标定信息足够完整;(2) 训练分割/分类模型时,务必自建复检子集并报告标签噪声上限;(3) 论文发表层面的"数据字典"需求已满足,但入库/共享前需自行补建 ICD/SNOMED 映射与版本锚定;(4) 防泄漏有官方工具(SamePatient.json),划分脚本应强制解析它;(5) 若用于企业内部数据治理对标,本表的 ⚠️ 项即是最优先的补齐清单。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
SimCol3D Task 3 真实测试集 UCL(Wellcome/EPSRC 资助挑战赛) 真实结肠镜位姿估计 ATE(对齐后) 测试数据直接取自 EndoMapper 7 条轨迹 COLMAP 伪真值经人工核验后可行,确立"伪真值评测"协议(挑战赛论文)
EndoVis17 → EndoMapper 迁移 官方技术验证 二值工具分割 mIoU 55.63-66.87 低于 EndoVis17(75-88)约 20 点 确认 EndoMapper 分割标签域内挑战性(Table 8)
同患者跨两周检索 官方技术验证 图像检索/地点识别 定性成功案例 跨检查仍可召回同区域画面 covisibility 训练的检索可跨检查复用(论文 Fig.12)
NR-SLAM 在真实序列 官方团队 非刚体单目 SLAM 轨迹与地图质量 相对刚体方法减少碎裂 显式形变建模改善真实结肠场景(arXiv:2308.04036)

§8 基准性能与生态

§8.1 官方技术验证基线排行

EndoMapper 不是刷榜型数据集;以下排名来自官方技术验证实验(各表内部可比,跨表/跨任务数值不可直接比较——标注子集不同、协议不同):

排名 模型 性能 年份 关键技术 完整引用 代码
1 ResNetV2-101 解剖识别 Top-1 26.08% / Top-3 66.09% 2023 ImageNet 预训练 + 序列微调 He et al., 2016, CVPR(ResNet 架构);验证协议见 Azagra et al., 2023, Scientific Data. DOI 10.1038/s41597-023-02564-7 EM_Dataset-AnatomicalRegions
2 DenseNet-161 Top-1 24.87% / Top-3 66.77% 2023 密集连接分类器 Huang et al., 2017, CVPR;协议同上 同上
3 MobileNetV2 Top-1 20.40% / Top-3 60.17% 2023 轻量实时推理 Sandler et al., 2018, CVPR;协议同上 同上
4 EfficientNetV2-M Top-1 17.61% / Top-3 48.00% 2023 高效缩放 Tan & Le, 2021, ICML;协议同上 同上
1 MF-TAPNet 工具分割 mIoU 66.87 2023 时序注意力分割 Tomasini et al. 对比研究,协议见 Azagra et al., 2023, Scientific Data. DOI 10.1038/s41597-023-02564-7 EM_Dataset-ToolSegmentation
2 MiniNetV2 mIoU 66.65(0.52M 参数,26 ms) 2023 轻量实时分割 同上 同上
3 LinkNet mIoU 60.54 2023 编解码跳跃连接 同上 同上
4 U-Net mIoU 55.63 2023 经典医学分割基线 Ronneberger et al., 2015, MICCAI;协议同上 同上

另一维官方实测:ORB-SLAM3(Campos et al., 2021, IEEE T-RO. DOI 10.1109/TRO.2021.3075644)在 Seq_015 上 25% 帧定位成功、133 个 sub-map(ar5iv 版)——这是任何新 SLAM 方法入场的对照组。

阅读上表的三个前提:(1) 分类与分割两块的测试集不同(Seq_094 vs 4 个工具分割序列),数值不可横向比较;(2) 全部为官方验证数字,属"入场基线"而非社区刷榜结果,更新方法应自行报告同协议对比;(3) 工具分割与解剖识别的分数上限受标签噪声/边界主观性压制(见 §6.4 坑点 5/7),低分不等于数据集不可用。

§8.2 SOTA 总结与选型建议

  • 做 SLAM:以 ORB-SLAM3(KB 模式 + 官方调参)为刚性基线,NR-SLAM 为非刚体对照;报告帧定位率与 sub-map 数量,而非仅轨迹误差。若你的方法不能显著超过"25% 帧定位、133 个 sub-map"这条官方基线,说明改进尚未触及非刚体核心难点。
  • 做学习式位姿/深度:先在 SimCol3D 合成数据预训练(真值充分),再在 EndoMapper 伪真值上微调与评测,这是挑战赛验证过的路径;单靠 EndoMapper 伪真值从零训练会受限于 34-39% 的覆盖率。
  • 做分割:MiniNetV2 以 0.52M 参数逼近最大模型,是端侧部署首选;追求上限用 MF-TAPNet;两者都需按坑点 5 处理标签噪声。
  • 做检索/地图复用:以 covisibility 为监督的 CNN 检索(官方验证路径)起步,叠加跨患者分组评测;跨检查检索是数据集独有的高价值场景(同患者序列相隔数周)。
  • 做多模态/阶段理解:文本 footage + 解剖标签 + 器械信息可组合成手术阶段弱标签;建议以 SRT 时间戳为对齐主轴。

§8.3 评测协议要点

  1. 位姿:相似变换对齐(up-to-scale)、per-cluster 报告 ATE + 帧覆盖率;固定测试序列(SimCol3D 7 条或 Seq_015)。
  2. 分割/分类:固定官方划分(解剖:003/011/013/093 训练、094 测试);报告 Top-3 与混淆矩阵。
  3. 检索:按"同检查内 / 跨检查同患者 / 跨患者"三档分别报告。
  4. 一律声明标注来源(医生人工 / 工具生成 / COLMAP 伪真值)。
  5. SLAM 运行细节必须披露:输入分辨率、抽帧策略、相机模型、重投影阈值(官方即用 ×2 阈值应对非刚体),缺任何一项都无法复现。
  6. 与 SimCol3D 对话时使用其 7D 位姿表示(平移 + 四元数)与 ATE 协议,避免自定义格式造成不可比。
数据集 类型 与 EndoMapper 的关系
SimCol3D 合成结肠镜(深度+位姿真值) Task 3 直接使用 EndoMapper 真实测试序列(论文)
C3VD 体模视频 + 配对深度 真实/可控互补;2D-3D 配准真值(Bobrow et al., 2023, Med Image Anal. DOI 10.1016/j.media.2023.102956)
EndoSLAM 体模 + 离体 早期 SLAM 专用数据集(Ozyoruk et al., 2021, Med Image Anal)
Kvasir/HyperKvasir 图像分类/分割 大规模弱标签预训练来源
Colon10k 位置识别 检索任务补充训练数据
VR-Caps 胶囊内镜仿真 EndoMapper 模拟序列即由其生成(Incetan et al., 2021, Med Image Anal)
Bimodal Pose 数据(Rau et al.) 合成位姿数据 位姿监督学习路线参考(IEEE T-MRB 2023)
Heidelberg Colorectal(CaDIS) 手术室多模态 手术场景多模态标注范式参照(Maier-Hein et al., 2021, Scientific Data)

§8.5 关键论文 Top 8

  1. Azagra, P. et al. Endomapper dataset of complete calibrated endoscopy procedures. Scientific Data 10, 671 (2023). DOI 10.1038/s41597-023-02564-7 —— 数据集本体论文,含全部验证实验。
  2. Azagra, P. et al. arXiv:2204.14240 (2022) —— 预印本与初版口径(59 序列)。
  3. Rau, A. et al. SimCol3D – 3D Reconstruction during Colonoscopy Challenge. arXiv:2307.11261 (2023) —— 确立 EndoMapper 真实测试协议(Task 3)。
  4. Campos, C. et al. ORB-SLAM3: An accurate open-source library for visual, visual-inertial, and multimap SLAM. IEEE T-RO 37, 1874-1890 (2021). DOI 10.1109/TRO.2021.3075644 —— 官方验证的刚性基线。
  5. EndoMapper Team. NR-SLAM: Non-Rigid Monocular SLAM. arXiv:2308.04036 (2023) —— 官方非刚体方案。
  6. Bobrow, T. L. et al. Colonoscopy 3D video dataset with paired depth from 2D-3D registration. Medical Image Analysis (2023). DOI 10.1016/j.media.2023.102956 —— C3VD,互补真值路线。
  7. Rau, A. et al. Bimodal camera pose prediction for endoscopy. IEEE T-MRB (2023). DOI 10.1109/TMRB.2023.3320267 —— 学习式位姿估计代表。
  8. Schmidt, A. et al. Tracking and mapping in medical computer vision: A review. Medical Image Analysis (2024). DOI 10.1016/j.media.2024.103131 —— 领域综述,系统覆盖本数据集定位。

§8.6 社区活跃度

  • 论文引用 57+(Scopus,截至 2026-09),覆盖 SLAM、深度估计、分割与综述类工作(OUCI)。
  • GitHub 组织 Endomapper 维护 9 个仓库(截至 2026-09):NR-SLAM 58 stars、Endo-STTN 29、ColonSLAM(MICCAI 2024)17、标定与验证仓库若干;许可证 AGPL-3.0/GPL-3.0。
  • 数据经由 Synapse 托管与审批发放;项目主页 endomapper.eu 提供项目动态。
  • 学术事件锚点:SimCol3D 挑战赛(MICCAI 2023)与 ColonSLAM(MICCAI 2024)持续以该数据集为真实数据底座,形成"挑战赛 + 官方仓库"的双轨社区机制。
  • 官方团队的后续产出(NR-SLAM、Endo-STTN、SuperPoint 内镜特征研究等)均以该数据集为实验平台,仓库更新可持续跟踪。

§8.7 生态快照

资源 类型 链接 Star(截至 2026-09) 推荐理由
NR-SLAM 非刚体 SLAM 代码 GitHub 58 官方非刚体基线,C++
Endo-STTN 视频修复/合成 同上 29 内镜视频时序建模工具
ColonSLAM 拓扑 SLAM(MICCAI 2024) 同上 17 深度特征 + 拓扑先验
EM_Dataset-PhotometricCalibration 光度标定代码 同上 12 复现光度参数
EM_Dataset-GeometricCalibration 几何标定代码 同上 3 Vicalib 配置参考
EM_Dataset-ORBSLAM3Validation SLAM 验证代码 同上 4 官方调参与协议
Synapse wiki 数据托管 syn26707219 — 申请入口与文档

生态使用建议:起步阶段只需三个仓库——GeometricCalibration(读标定参数)、ORBSLAM3Validation(复现基线)、AnatomicalRegions(跑通标注读取);PhotometricCalibration 在做光度重投影或逆渲染时再加;NR-SLAM 与 ColonSLAM 作为对照系统在论文对比实验阶段引入。所有仓库均为 AGPL-3.0 或 GPL-3.0,闭源商业集成前请评估传染性条款。

§9 相关资源与引用

资源 说明 链接
Synapse 数据主页 申请入口、使用条件、安装说明 syn26707219
代码使用说明(Synapse) 各仓库安装与使用指南索引 syn52137895
GitHub 组织 9 个官方仓库(标定/验证/SLAM) github.com/Endomapper
项目主页 H2020 ENDOMAPPER 项目动态 endomapper.eu
论文(期刊版) Scientific Data 10:671 开放获取 DOI 10.1038/s41597-023-02564-7
论文(预印本) arXiv v1/v2 arXiv:2204.14240
PMC 全文 致谢/资助/作者贡献明细 PMC10547713
SimCol3D 挑战赛 Task 3 评测协议与测试划分 arXiv:2307.11261
Awesome 收录页 社区数据集索引(含文件结构图) openmedlab/Awesome-Medical-Dataset

§9.1b 相关工具链

工具 用途 链接
synapseclient 命令行/Python 下载与版本管理 PyPI
COLMAP 读取/扩展官方稀疏重建 colmap.github.io
Vicalib 重新计算几何标定 github.com/arpg/vicalib
OpenCV fisheye Kannala-Brandt 去畸变 docs.opencv.org
ORB-SLAM3 刚性 VSLAM 基线 UZ-SLAMLab/ORB_SLAM3

§9.2 BibTeX 引用

@dataset{azagra2022endomapper_data,
  title        = {Endomapper dataset of complete calibrated endoscopy procedures},
  author       = {Azagra, Pablo and Sostres, Carlos and Ferr{\'a}ndez, {\'A}ngel and
                  Riazuelo, Luis and Tomasini, Clara and Le{\'o}n Barbed, Oscar and
                  Morlana, Javier and Recasens, David and Batlle, V{\'i}ctor M. and
                  G{\'o}mez-Rodr{\'i}guez, Juan J. and Elvira, Richard and
                  L{\'o}pez, Julia and Oriol, Cristina and Civera, Javier and
                  Tard{\'o}s, Juan D. and Murillo, Ana Cristina and Lanas, Angel and
                  Montiel, Jos{\'e} M. M.},
  year         = {2022},
  publisher    = {Synapse},
  doi          = {10.7303/syn26707219}
}

@article{azagra2023endomapper,
  title        = {Endomapper dataset of complete calibrated endoscopy procedures},
  author       = {Azagra, Pablo and Sostres, Carlos and Ferr{\'a}ndez, {\'A}ngel and
                  Riazuelo, Luis and Tomasini, Clara and Le{\'o}n Barbed, Oscar and
                  Morlana, Javier and Recasens, David and Batlle, V{\'i}ctor M. and
                  G{\'o}mez-Rodr{\'i}guez, Juan J. and Elvira, Richard and
                  L{\'o}pez, Julia and Oriol, Cristina and Civera, Javier and
                  Tard{\'o}s, Juan D. and Murillo, Ana Cristina and Lanas, Angel and
                  Montiel, Jos{\'e} M. M.},
  journal      = {Scientific Data},
  volume       = {10},
  pages        = {671},
  year         = {2023},
  publisher    = {Springer Nature},
  doi          = {10.1038/s41597-023-02564-7}
}

§9.3 引用指南

使用该数据集的成果必须同时引用:数据集 DOI(10.7303/syn26707219)与 Scientific Data 论文;在引用出版物中可包含数据集图像与视频片段(见 Synapse 使用条件第 5/6 条)。若使用了 SimCol3D Task 3 的测试划分,请同时引用挑战赛论文(arXiv:2307.11261)。

引用格式建议:

场景 必引条目
使用任何视频/标注数据 Synapse DOI + Scientific Data 论文(上方 BibTeX 两条全引)
使用 SimCol3D Task 3 划分 追加 Rau et al. 2023(arXiv:2307.11261)
使用 VR-Caps 模拟序列 追加 Incetan et al. 2021(VR-Caps,Med Image Anal)
与 C3VD 对比 追加 Bobrow et al. 2023(Med Image Anal, 10.1016/j.media.2023.102956)
使用 ORB-SLAM3 基线 追加 Campos et al. 2021(IEEE T-RO)

§10 AI 使用声明卡

§10.1 AI 模型列表

本页面撰写使用大语言模型辅助完成文本整合与代码示例生成;未使用 AI 生成数据集内的任何医学结论或数字。

§10.2 AI 参与范围

AI 参与:结构组织、条款改写、代码示例起草、表格排版。人工参与:事实核对(全部数字溯源至下方来源)、医学表述审核、许可条款核验。

AI 未参与的环节:WebSearch 事实核实的检索词设计与来源取舍由人工主导;所有规模数字(96 段、约 24 小时、268,679 帧、4,086 帧、mIoU、Top-1/Top-3、25% 定位率、57+ 引用)均直接取自下方 14 条来源的原文,未由 AI 生成或推断;三个固定免责声明采用金标准模板逐字引入(数据使用合规段按数据集实际协议改写)。

§10.3 输入来源列表

  1. Azagra, P. et al., 2023. Endomapper dataset of complete calibrated endoscopy procedures. Scientific Data 10, 671. DOI 10.1038/s41597-023-02564-7. https://link.springer.com/10.1038/s41597-023-02564-7
  2. Azagra, P. et al., 2022. arXiv:2204.14240(摘要与全文 PDF v1/v2). https://arxiv.org/abs/2204.14240
  3. Azagra, P. et al., 2023. PMC 全文(PMC10547713,含致谢与作者贡献). https://pmc.ncbi.nlm.nih.gov/articles/PMC10547713
  4. arXiv v1 PDF(Table 2/3/4 与早期 Usage Notes). https://arxiv.org/pdf/2204.14240v1
  5. ar5iv HTML 版(标定/SLAM 验证细节). https://ar5iv.arxiv.org/html/2204.14240
  6. 萨拉戈萨大学知识库 PDF(出版时间线与机构署名). https://zaguan.unizar.es/record/128096/files/texto_completo.pdf
  7. OpenReview 页面(初版摘要:59 序列/15 小时口径). https://openreview.net/forum?id=l810wcVkiEK
  8. Rau, A. et al., 2023. SimCol3D Challenge(arXiv:2307.11261,Task 3 协议). https://arxiv.org/abs/2307.11261
  9. SimCol3D PDF(UCL Discovery 存档). https://discovery.ucl.ac.uk/id/eprint/10194104/1/SimCol3D.pdf
  10. GitHub Endomapper 组织(9 仓库、Star 数、许可证). https://github.com/Endomapper
  11. OUCI 引用统计页(Scopus 57,截至 2026-09). https://ouci.dntb.gov.ua/works/l1Z8K1o9/
  12. Bobrow, T. L. et al., 2023. C3VD. Medical Image Analysis. DOI 10.1016/j.media.2023.102956(经对比表引用)
  13. 对比数据表(含 EndoMapper 与 C3VD 属性). https://arxiv.org/html/2506.24074v1
  14. Synapse 数据主页(使用条件与下载). https://www.synapse.org/#!Synapse:syn26707219/wiki/615178

§10.4 人工校验记录

内容模块 审核者 审核方式 审核状态
§2 医学背景与 ICD-11/SNOMED 映射 千方病案医学编辑部 逐条对照文献与术语库 ✅ 已通过/已验证
§3-§4 规模、设备与数据结构 千方病案医学编辑部 对照论文 Table 1/2/4/5/6 与 Methods ✅ 已通过/已验证
§6 代码示例与 8 坑点 数据工程师 逻辑走查 + API 核对 ✅ 已通过/已验证
§7 DAIMS 24 项与偏倚分析 数据工程师 逐项对照官方材料 ✅ 已通过/已验证
§8 引用与生态数字 编辑部 对照 Scopus/GitHub 检索快照 ✅ 已通过/已验证
全文许可与合规表述 编辑部 对照 Synapse 使用条件 ✅ 已通过/已验证

§10.5 AI 生成章节标注

以下章节由 AI 起草、经人工校验后发布:§1.1/§1.2 叙述、§6 全部代码示例、§7.7 评分解读、§8.2 选型建议。

其余章节(数据集档案、规格、结构、划分、质量评估、引用与声明卡)由编辑部基于来源列表直接撰写;两类的区分依据是"是否包含 AI 生成的解释性叙述与代码",纯事实转述章节不计入 AI 生成。

§10.6 最后人工审核日期

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

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


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


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • SLAM-3D-Endoscopic — 共享标签:医学影像 / 内窥镜影像 / 手术视频
  • jigsaws — 共享标签:医学影像 / 内窥镜影像 / 手术视频
  • m2cai16-tool — 共享标签:医学影像 / 内窥镜影像 / 手术视频
  • multibypass140 — 共享标签:医学影像 / 内窥镜影像 / 手术视频
  • scared — 共享标签:医学影像 / 内窥镜影像 / 手术视频
  • hamlyn-datasets — 共享标签:医学影像 / 内窥镜影像 / 手术视频
  • c3vd — 共享标签:医学影像 / 内窥镜影像 / 手术视频
  • endoslam — 共享标签:医学影像 / 内窥镜影像 / 手术视频
  • misaw — 共享标签:医学影像 / 内窥镜影像 / 手术视频
  • cad-cap — 共享标签:医学影像 / 内窥镜影像 / 手术视频

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集