信息速览

C3VD — 结肠镜 3D 深度真值视频基准 AI-Ready Wikipedia
INFOBOX
| 数据集名称 | C3VD(Colonoscopy 3D Video Dataset) |
| 英文全称 | Colonoscopy 3D Video Dataset |
| 别名/简称 | C3VD、C3VD v1、C3VD(Bobrow et al. 2023) |
| 疾病分类 | 结直肠癌筛查与结肠病变检测背景数据(ICD-11:2B70 结肠恶性肿瘤 / DD71 溃疡性结肠炎 / DD70 克罗恩病,详见 §2) |
| SNOMED CT | 44441009 Colonoscopy / 363406005 Malignant tumor of colon / 64766004 Ulcerative colitis / 34000006 Crohn’s disease(详见 §2.1b) |
| 数据模态 | 结肠镜 RGB 视频 + 3D 模型真值(深度/法线/光流/遮挡/6-DoF 位姿/覆盖图) |
| AI 任务类型 | 单目深度估计、表面重建、相机位姿估计与 SLAM、缺失区域(覆盖)检测、域适应 |
| 样本总数 | 22 段注册视频 / 10,015 帧 + 4 段真实筛查结肠镜视频 |
| 数据大小 | 按视频 ZIP 分发,官方未公布单一总量;建议预留数十 GB 磁盘(见 §3.4) |
| 数据格式 | PNG(RGB/遮挡)、TIFF 16-bit(深度/法线/光流)、TXT(位姿)、OBJ(3D 网格)、MP4(原始视频) |
| 许可证 | CC BY-NC-SA 4.0 |
| 访问级别 | 开放(官网直接下载,无需注册与申请) |
| DUO 标签 | NCU(非商业,对应 CC BY-NC-SA 4.0 的 NC 限制) |
| 语言 | 英文(站点、文档与论文) |
| 首发日期 | 2022-06-17(arXiv:2206.08903 v1) |
| 最后更新 | 2023-12(Medical Image Analysis 正式出版);后继版本 C3VDv2 数据于 2025-12-19 存入 JHU Dataverse |
| 发布机构 | 约翰斯·霍普金斯大学 Durr Lab(Computational Biophotonics) |
| 官方主页 | https://durrlab.github.io/C3VD/ |
| 下载地址 | https://durrlab.github.io/C3VD/(官网直链;失效时转 JHU Dataverse) |
| DOI | 10.1016/j.media.2023.102956(论文);C3VDv2 数据 10.7281/T1/JC64MK |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 多任务像素级真值齐全、官方加载器与配准代码开源、社区基准成熟;扣分项:无官方 train/test 划分、16-bit 编码需自行解码、phantom 域与真实临床域存在差距 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、结肠镜筛查临床任务定义、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(16-bit 深度/法线/光流编码、camera-to-world 位姿矩阵)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与约翰斯·霍普金斯大学、Durr Lab 及 Olympus 无任何商业利益关联。本页面不销售 C3VD 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述机构的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。C3VD 采用 CC BY-NC-SA 4.0 许可,可在官网直接下载、无需注册或签署协议,但明确禁止商业用途,且基于该数据集的派生作品须以相同方式共享(其派生数据集 C3VD-Raycasting-10k 即继承了同一许可)。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? C3VD(Colonoscopy 3D Video Dataset)是约翰斯·霍普金斯大学 Durr 实验室在 Medical Image Analysis 发表的结肠镜 3D 视频基准数据集。团队先用专业数字雕刻技术制作高保真结肠硅胶模型,再用真实的临床高清结肠镜拍摄这些模型,并通过一套"GAN 深度域转换 + 进化优化配准"算法,把拍摄到的真实视频逐帧对齐到已知 3D 模型上——于是每一帧视频都拥有了来自 3D 渲染的像素级深度真值。共 22 段注册视频、10,015 帧,另有 4 段真实筛查结肠镜视频。
为什么重要? 在 C3VD 出现之前,结肠镜视觉算法(深度估计、3D 重建、SLAM)几乎没有带几何真值的公开评测手段:真实患者结肠镜视频拿不到深度标签,纯仿真视频又太假。C3VD 用"实体硅胶模型 + 真实内镜成像"的方式首次同时做到"真实感"与"亚毫米级真值",成为该领域从"定性展示"走向"定量基准"的分水岭,被 ECCV、MICCAI、MIDL 等顶会工作广泛用作评测集。
我能用它做什么? 在同一套视频上训练和评测单目深度估计模型、做相机位姿估计与结肠镜 SLAM、重建结肠内表面 3D 网格、检测检查遗漏的盲区(覆盖图任务)、以及研究仿真到真实(sim-to-real)的域适应。所有数据以 CC BY-NC-SA 4.0 免费开放下载,无需任何申请流程。注意:22 段注册视频是硅胶 phantom 而非患者影像,评测真实临床性能需另行交叉验证。
§1.1 摘要
C3VD 的技术路线可以概括为"真实成像 + 已知几何 + 多模态配准"。团队首先以高于 CT 结肠成像的空间分辨率数字雕刻结肠模型,并用带纹理的硅胶层浇铸成实体 phantom;随后使用临床 HD 视频结肠镜(Olympus CF-HQ190L)配机械臂采集视频,保留真实光照、传感器增益、gamma 与噪声特性。配准环节将光学帧经条件 GAN 转换到深度域,再用 CMA-ES 进化优化器对齐边缘特征,仿真实验中达到平均 0.321 mm 平移误差与 0.159° 旋转误差;利用视频时序信息后,平移与旋转精度分别较单帧配准提升 55.6% 与 60.4%。最终 22 段视频共 10,015 帧被逐帧配对上 0-100 mm clamp 的 16-bit 深度图、相机坐标系表面法线、±20 px clamp 光流、二值遮挡掩码、6-DoF camera-to-world 位姿、观察覆盖图(vt 纹理顶点编码)与真值 3D 网格(arXiv:2206.08903)。2025 年发布的 C3VDv2 进一步扩充了帧目录结构、漫反射通道与形变视频(C3VDv2 官方页)。
§1.2 战略价值
维度一:填补"真值真空"的基准稀缺性。 结肠镜是结直肠癌筛查的一线手段,但单目结肠镜不配备深度传感器,黏膜表面反光、弱纹理与受限光照使传统多视几何方法失效。在 C3VD 之前,该领域论文大多只能做定性可视化;C3VD 首次提供了 10,015 帧像素级几何真值,让 AbsRel、δ1、RMSE 等 Eigen 协议指标可以在这个领域被严肃计算(arXiv:2206.08903)。对于期刊审稿人与复现者,这直接决定了实验结论的可信度。
维度二:多任务真值的"一鱼多吃"。 同一帧视频同时携带深度、法线、光流、遮挡、位姿与覆盖图六类真值,意味着你可以只维护一份评测集,就横向对比深度估计、法线估计、光流预测、SLAM 轨迹精度与盲区检测五类任务。官方还开源了配准与渲染代码(GitHub DurrLab/C3VD),研究者可以按同样流程制作自有 phantom 数据,这种"基准 + 可复现管线"的组合显著放大了数据集的长期价值。
维度三:获取与合规的低摩擦。 C3VD 无需注册、无需培训证书、无需签署协议——官网直接下载,这在医疗数据集里是稀缺的获取体验(对比 MIMIC-III 的 CITI 培训 + DUA 流程)。代价是许可较严格:CC BY-NC-SA 4.0 把使用范围锁定在非商业,且要求派生作品同许可共享。对学术界,这几乎无感;对产业界,商业产品要么绕道(用 C3VD 只做方法验证、产品数据另采),要么联系权利方授权。规划项目时把这个约束前置,可以避免后期返工。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 真值来源 | 真实感 | 核心差异 |
|---|---|---|---|---|
| C3VD | 22 视频 / 10,015 帧 + 4 段真实筛查视频 | 硅胶 phantom 3D 模型渲染 + 2D-3D 配准(0.321 mm 级) | 实体模型 + 真实内镜成像 | 像素级深度/法线/光流/遮挡/位姿/覆盖图全套真值 |
| SimCol3D | 33 视频 / 37,800 帧 | 纯虚拟仿真渲染 | 虚拟场景 | 无实体成像,域差距更大,配套 MICCAI 挑战赛 |
| SCARED | 11 段体内手术序列 | 达芬奇 Xi 双目内窥镜 | 真实手术 | 上腹部手术场景、双目立体真值,非结肠 |
| EndoMapper | 完整校准结肠镜检查流程 | 无深度真值(仅有校准与重建) | 真实患者 | 提供真实全流程视频,但缺逐帧几何真值 |
| Colon10K | 大规模真实临床视频 | 无逐帧几何真值 | 真实患者 | 规模大、真实,常与 C3VD 组合做训练/评测 |
注:SimCol3D 规模与用途见 EndoStreamDepth(arXiv:2512.18159)数据集章节;SCARED 信息见 IRMV 医疗数据集汇总与 SCARED 原始发布;EndoMapper 见 Azagra et al., Scientific Data 2023。
对比解读的三条主线值得展开。其一,真值取得方式决定域差距大小:SimCol3D 是纯虚拟渲染,域差距最大;SCARED 用双目立体匹配取得真实手术场景真值,但器官(上腹部)与模态(双目)都不适用于结肠;EndoMapper 有真实患者全流程却无逐帧几何标签;C3VD 取中间路线——真实内镜成像 + 已知几何 phantom,用配准技术换来了"真实感与真值兼得"。其二,规模与真值密度成反比:C3VD 的 10,015 帧全部带六通道真值,而大规模真实数据集(Colon10K、Hyper-Kvasir)帧数多但几乎无几何标签,两者天然构成"训练源 + 评测集"的互补关系。其三,任务专用性:C3VD 的覆盖图真值(vt 编码)在内镜数据集中独一无二,盲区检测任务几乎没有替代基准。
§1.4 版本时间轴
| 时间 | 版本/事件 | 说明 |
|---|---|---|
| 2022-06-17 | arXiv:2206.08903 v1 | 数据集与配准方法首次公开发布 |
| 2022-11-23 | arXiv v2 | 内容修订,预印本体量扩充(29,507 KB) |
| 2023-09-05 | arXiv v3 | 与期刊版对齐的最终预印本 |
| 2023-12 | Medical Image Analysis 90:102956 | 同行评审正式版,DOI 10.1016/j.media.2023.102956 |
| 2025-06-30 | C3VDv2 预印本 | 增强真实感版本论文发布(Scientific Data) |
| 2025-12-19 | C3VDv2 数据存档 | JHU Dataverse 发布,DOI 10.7281/T1/JC64MK |
来源:arXiv 版本历史、Semantic Scholar C3VDv2 条目、JHU Dataverse。
时间轴的三个观察:arXiv 三个版本横跨 15 个月,说明配准管线与数据文档经历了持续打磨;正式发表(MedIA 2023-12)滞后于数据可用(2022-06),意味着社区引用经历了一段"预印本→期刊版"的换轨期,检索文献时两个引用都要覆盖;C3VDv2 与 v1 间隔约两年半,且 v2 选择了 Scientific Data 而非技术会议——体现的是数据集论文"存档优先"的定位。
§1.5 典型应用场景
- 单目深度估计基准:在 10,015 帧 phantom 视频上按社区 split 评测 δ1/AbsRel/RMSE,对比通用模型与内镜专用模型(PPSNet、EndoOmni、EndoStreamDepth 等,见 §8)。
- 结肠镜 SLAM 与位姿估计:用 pose.txt 的 camera-to-world 真值计算绝对轨迹误差(ATE/APE),评测视觉里程计与回环性能。
- 检查盲区检测:以 coverage_mesh.obj 的 vt=1/vt=2 观察编码训练覆盖率预测与遗漏区域提示模型,对应质量控制场景。
- 表面重建评测:将预测深度反投影为点云/网格,与真值 OBJ 模型计算 Chamfer 距离等几何误差。
- Sim-to-real 域适应研究:以 C3VD phantom 为带真值源域,配合真实临床视频(如 Colon10K、Hyper-Kvasir)做无监督域适应与风格迁移,这正是 ColonCrafter、PPSNet 等工作的核心思路。
每个场景对应的数据用法与产出物速查:
| 场景 | 用到的通道 | 产出物 | 最小验证 |
|---|---|---|---|
| 深度估计基准 | color + depth | δ1/AbsRel/RMSE 表 | 对照 Depth Anything V2 zero-shot 基线 |
| SLAM/位姿 | color + pose.txt | ATE/APE 轨迹曲线 | EVO 工具包 + 官方 exampleDataLoader |
| 盲区检测 | coverage_mesh.obj + color | 覆盖率预测/遗漏提示 | 逐序列覆盖率曲线 |
| 表面重建 | depth + model.obj | Chamfer/法线一致度 | trimesh 加载真值网格比对 |
| 域适应 | color(phantom→真实) | 域间指标差 | t-SNE/风格迁移可视化 |
§2 医学背景
§2.1 ICD-11 编码映射
C3VD 本身不携带疾病标签——phantom 数据模拟健康结肠解剖。下表给出与结肠镜筛查场景相关、理解该数据集临床定位所需的 ICD-11 核心编码。
| 术语 | ICD-11 编码 | 中文名称 | 与 C3VD 的关系 |
|---|---|---|---|
| Malignant neoplasm of colon | 2B70 | 结肠恶性肿瘤 | 结肠镜筛查的首要目标疾病;C3VD 的 phantom 不含肿瘤 |
| Ulcerative colitis | DD71 | 溃疡性结肠炎 | 结肠镜随访监测的炎症性肠病 |
| Crohn’s disease | DD70 | 克罗恩病 | 可累及全消化道、结肠镜评估的炎症性肠病 |
注:编码依据 WHO ICD-11 浏览器(https://icd.who.int/)。C3VD 官方论文与站点未定义疾病标签体系,上述编码用于帮助 AI 研究者理解数据集所处的临床语境,不代表数据集内含相应疾病样本。
选码逻辑说明:C3VD 的临床语境由"筛查操作"与"目标疾病"两端构成。操作端(结肠镜检查本身)在 ICD-11 中归入扩展码体系而非核心章,因此本表只列疾病端编码;若你的论文需要操作编码,建议直接使用 SNOMED CT 的 44441009(Colonoscopy),其操作语义比 ICD-11 扩展码更稳定、且与临床自然语言更对齐。
§2.1b SNOMED CT 映射
| 概念 | SNOMED CT 码 | 英文术语 | 说明 |
|---|---|---|---|
| 结肠镜检查 | 44441009 | Colonoscopy (procedure) | 数据集的采集操作 |
| 结肠恶性肿瘤 | 363406005 | Malignant tumor of colon (disorder) | 筛查目标病变 |
| 溃疡性结肠炎 | 64766004 | Ulcerative colitis (disorder) | 炎症性肠病监测 |
| 克罗恩病 | 34000006 | Crohn’s disease (disorder) | 炎症性肠病 |
§2.2 疾病简介与流行病学
结直肠癌(Colorectal Cancer, CRC)是全球最常见的消化道恶性肿瘤之一。按 GLOBOCAN 2020 估计,全球每年新发结直肠癌约 193 万例、死亡约 93.5 万例,发病率居全部恶性肿瘤第三位、死亡率居第二位。绝大多数结直肠癌遵循"腺瘤—癌"的演进路径,从癌前腺瘤发展为浸润性癌通常需要数年,这为筛查性内镜干预提供了时间窗——结肠镜检查由此成为唯一能在检查同时完成"发现 + 切除"的一线筛查手段。
结肠镜的临床效能高度依赖操作质量:腺瘤检出率(ADR)每提升 1%,间期结直肠癌风险约下降 3%;而镜像盲区、皱襞后方遗漏与退镜过快是漏诊的主要机制。这正是 C3VD 所瞄准的痛点——如果算法能实时估计黏膜深度与表面几何、重建已检查表面、提示未观察盲区,就能为内镜医师提供"电子地图"式的辅助,压缩人为漏检空间。
从筛查流程看,结肠镜检查分为插镜(进镜至盲肠)与退镜观察两个阶段,主流指南要求退镜时间不少于 6 分钟——退镜阶段的观察质量直接决定 ADR。这一流程特征对 AI 任务有直接映射:退镜阶段是覆盖图任务建模的对象(哪些黏膜面被观察过、哪些被遗漏),而插镜-退镜的往返轨迹正是 SLAM 位姿估计要处理的典型"回环"场景。C3VD 的 phantom 视频序列记录了内镜在结肠模型内的探索轨迹,与上述临床过程在几何结构上同构,只是不包含病理与活体动态。
§2.3 临床任务定义
| 临床任务 | 定义 | 与 C3VD AI 任务的对应 |
|---|---|---|
| 筛查性结肠镜 | 对无症状人群的结直肠癌/癌前病变检出 | 覆盖图任务 → 盲区检测 |
| 诊断性结肠镜 | 对症状或阳性筛查结果的评价与取材 | 深度估计 → 病变尺寸量化前置能力 |
| 治疗性内镜 | 息肉切除、EMR/ESD 等 | 表面重建 → 切除边界几何辅助 |
| 质量指标监测 | 退镜时间、盲区率、ADR | 覆盖图 + 位姿 → 自动化质量评估 |
| 内镜导航与复查定位 | 病变标记与原路返回 | SLAM 位姿 → 重定位与地图复用 |
§2.4 患者人群构成
C3VD 的人群构成与临床队列截然不同,AI 使用者必须清醒认识这一点:
| 数据来源 | 人数/对象 | 人口学信息 | 说明 |
|---|---|---|---|
| 硅胶 phantom 注册视频(22 段) | 非人体,实验室模型 | 不适用 | 数字雕刻结肠模型 + 硅胶浇铸,模拟健康结肠解剖 |
| 真实筛查视频(4 段) | 官方未公布受检者人数 | 官方未公布年龄/性别/种族 | 由胃肠病医师 Venkata S. Akshintala 采集,带 3D 真值模型与粗粒度位姿,无逐帧深度真值 |
来源:官方数据集页、Bobrow et al. 2023 论文摘要。数据集不包含患者人口学分层,因此无法做任何人群亚组分析。
§2.5 临床价值
C3VD 的价值链条是"几何真值 → 几何 AI → 临床质量"。深度与法线真值支撑的黏膜几何感知,是病变尺寸自动量化(息肉测量目前主要靠目测估计,误差大)、肠道形状三维重建与导航的前置能力;覆盖图真值支撑的盲区检测直接对应"减少漏检"这一核心质量目标;位姿真值支撑的 SLAM 则是内镜机器人自主导航与复查时"原路返回可疑病变"的技术基础。值得注意的是,这些能力从 phantom 基准走到真实临床,中间还隔着域差距与临床验证两道门槛(见 §7.3)。
分任务看临床落点的远近:**近期(1-3 年量级)**最有希望的是检查质量离线审计——用覆盖图思想对真实检查录像做回顾性盲区分析,不直接干预操作、监管风险低;中期是退镜阶段实时盲区提示与病变尺寸量化辅助,需要实时性与真实域鲁棒性同时达标;远期是内镜机器人自主导航与"数字孪生肠道",这依赖 SLAM 在活体动态环境下的成熟,目前 phantom 基准只是其能力上限探针。AI 团队在规划路线图时,可以用 C3VD 作为"几何能力标尺",但不应把 phantom 上的性能直接映射为临床收益。
§2.6 金标准(真值)描述
| 属性 | 内容 |
|---|---|
| 真值类型 | 逐帧渲染几何真值(深度/法线/光流/遮挡)+ 配准相机位姿 + 全局 3D 网格与覆盖编码 |
| 真值来源 | 已知 3D 模型经 NVIDIA OptiX 光线追踪渲染,与光学视频经 GAN + CMA-ES 配准后逐帧对齐 |
| 标注方式 | 全自动管线生成,无人工逐帧标注(人工仅用于配准初始化 GUI 微调) |
| 标注者 | 不适用(自动管线);管线由 JHU Durr Lab 开发 |
| 精度 | 仿真对照实验中配准平均平移误差 0.321 mm、旋转误差 0.159° |
| 性质 | 几何真值(phantom 已知几何),非病理标注 |
来源:arXiv:2206.08903 摘要与官方页面。
金标准性质的三个要点需要辨析。第一,"渲染即真值"的确定性:深度/法线/光流/遮挡四类逐帧真值全部由 OptiX 光线追踪按配准位姿渲染产生,同一帧重跑管线得到完全相同的结果——不存在人工标注的随机误差,这是临床采集型数据集无法企及的一致性水平。第二,配准是唯一误差源:真值与视频帧之间的对齐精度受配准算法限制(0.321 mm / 0.159°),意味着监督信号存在亚毫米级系统性不确定度,对绝大多数深度估计任务可以忽略,但对超高精度几何重建需计入。第三,两类视频的真值强度不同:22 段注册视频具备上述全套逐帧真值;4 段真实筛查视频仅有粗粒度位姿与 3D 模型,其"金标准"强度低一档,论文中引用时必须区分。
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 说明 | 理由 |
|---|---|---|---|
| 复现主流论文基准数字(深度/位姿) | C3VD v1(22 注册视频) | durrlab.github.io/C3VD | PPSNet、EndoStreamDepth、ColonCrafter 等均在 v1 上报告 |
| 需要漫反射通道、形变视频与更新目录结构 | C3VDv2 | durrlab.github.io/C3VDv2 | 新增 diffuse 帧与形变序列,JHU Dataverse 分发 |
| 研究结肠组织动态形变 | C3VDv2 形变视频 | v2 专属 | v1 为刚性 phantom 序列 |
| 商业用途 | 均不适用 | — | CC BY-NC-SA 4.0 明确禁止商用 |
| 复现配准管线 | C++ 代码 + 标定包 | config.ini(全向内参/手眼矩阵/CMAES 参数) | 三方约定混淆是头号失败源,见坑点 7 |
| 制作自有 phantom 基准 | 渲染代码 rendergt | 复用官方渲染约定 | 保证自建数据与 C3VD 编码一致可互比 |
§3.1 模态详情
视频模态。 Olympus CF-HQ190L 高清临床视频结肠镜采集,分辨率 1350×1080(裁剪视频元数据黑边后),录制帧率 30 fps。phantom 视频保留了真实内镜成像的关键物理特性:近场照明衰减、镜面高光、传感器增益、gamma 与噪声(来源:C3VDv2 官方页、arXiv:2206.08903、UCL 团队对采集帧率的引述)。
几何真值模态(每帧配对)。 六类逐帧真值 + 两类序列级真值:
| 真值通道 | 编码方式 | 物理含义 |
|---|---|---|
| 深度 depth | 16-bit 灰度 TIFF/PNG,线性缩放,clamp 0-100 mm | 相机 Z 轴方向深度;像素值 16,384 = 25 mm |
| 表面法线 normals | 16-bit 彩色 TIFF,XYZ 存 RGB 通道,±1 → 0-65,535 | 相机坐标系(+x 右、+y 下、+z 沿视线) |
| 光流 optical flow | 16-bit 彩色 TIFF,R=X / G=Y,±20 px clamp | 当前帧 → 前一帧;首帧无值 |
| 遮挡 occlusion | 8-bit 二值 | 255 = 遮挡了 100 mm 内其他网格面;0 = 其余 |
| 相机位姿 pose.txt | 行主序展平 camera-to-world 齐次矩阵,每帧一行 | 6-DoF 位姿真值 |
| 覆盖图 coverage_mesh.obj | 纹理顶点编码:vt=1 已观察 / vt=2 未观察 | 序列级观察覆盖 |
| 3D 网格 model.obj | Wavefront OBJ 三角网格 | 真值表面几何(含模具文件) |
关于原始视频与帧文件的层级关系:官方同时提供原始视频(MP4,含视频预览)与逐帧导出文件(PNG/TIFF)。深度学习管线应使用逐帧文件——它们是与真值渲染严格同步的确定帧序,直接从 MP4 抽帧可能因编码关键帧与时间基差异引入偏移。相机标定文件(棋盘格序列与全向模型内参 camera_intrinsics.txt)单独打包提供,仅在需要复现配准管线或做畸变校正时使用。
§3.2 按子集样本数统计
22 段注册视频按结肠段分布如下(逐视频帧数转录自 OpenMedLab 数据集档案,合计 10,015 帧与官方数字吻合):
| 结肠段 | 视频数 | 逐视频帧数 | 帧数小计 |
|---|---|---|---|
| 盲肠(cecum) | 8 | 276, 765, 370, 1,142, 595, 730, 465, 425 | 4,768 |
| 降结肠(descending colon) | 1 | 148 | 148 |
| 乙状结肠(sigmoid colon) | 4 | 700, 514, 613, 536 | 2,363 |
| 横结肠(transcending/transverse colon) | 9 | 61, 700, 194, 103, 235, 250, 214, 382, 597 | 2,736 |
| 合计 | 22 | — | 10,015 |
另有 4 段真实筛查结肠镜视频(含配套 3D 真值模型与粗粒度相机位姿),官方页未公布其逐段帧数。
段级分布对实验设计的影响不可忽视。盲肠段 8 段视频贡献了近半帧数(47.6%),意味着任何"全数据随机打散"的训练都会被盲肠主导;降结肠仅 1 段 148 帧(1.5%),既当不了像样的测试集也学不出稳定的段级表征。合理的做法有二:一是分层采样,训练 batch 中各段按视频数而非帧数加权;二是直接采用 domain-shift split,让"训练段"与"测试段"物理分离,从根上回避段级失衡对泛化评估的污染。EndoStreamDepth 选择后者并报告了跨段泛化结果,是目前最稳健的社区实践。
§3.3 数据格式清单
| 内容 | 格式 | 位深/编码 | 命名规则 |
|---|---|---|---|
| RGB 帧 | PNG | 8-bit | 0000_color.png(v1 风格,前缀 4 位帧号) |
| 深度 | TIFF/PNG | 16-bit 灰度 | 0000_depth.tiff |
| 法线 | TIFF | 16-bit 彩色 | 0000_normals.tiff |
| 光流 | TIFF | 16-bit 彩色 | 0000_occlusion.png 同目录风格(v2:NNNN_flow.tiff) |
| 遮挡 | PNG/TIFF | 8-bit 二值 | 0000_occlusion.png |
| 位姿 | TXT | 文本矩阵 | pose.txt(每行一个矩阵) |
| 真值网格 | OBJ | 文本 | coverage_mesh.obj / model.obj + model.mtl |
| 原始视频 | MP4 | H.264 | 官网预览与原始序列 |
| 配准代码 | Python/C++ | — | GitHub 仓库 DurrLab/C3VD |
| 相机内参 | TXT | 文本 | camera_intrinsics.txt(全向模型参数) |
| 配准掩膜 | PNG | 8-bit 二值 | mask.png(Olympus 镜体角点掩膜) |
注:v1 与 v2 的目录命名不同(v1 为扁平前缀式 0000_color.png,v2 为分目录式 depth/NNNN_depth.tiff),详见 §6.5 坑点 8。
§3.4 存储大小与分发
官方未公布数据集单一总量数字。数据按逐视频 ZIP 压缩包分发,每个压缩包含该视频的全部帧与真值;相机标定文件以独立 ZIP 提供(例如 JHU Dataverse 上 C3VDv1 的 10×10 mm 棋盘格标定图像包为 45.8 MB)。建议为下载、解压与预处理预留数十 GB 级磁盘空间,并以官网下载表中的单包大小为准(来源:JHU Dataverse 文件元数据)。
§3.5 标注方式
C3VD 的全部几何标注由自动渲染管线生成:已知的 3D 模型几何经 NVIDIA OptiX 光线追踪,按配准所得相机位姿逐帧渲染出深度、法线、遮挡与覆盖图。整个流程中没有人工逐帧标注环节——人工干预仅存在于配准初始化阶段(GUI 手动粗对齐)与标定。这使标注成本近乎为零、标注一致性达到管线确定性水平,是真值型(而非人工标注型)数据集的典型代表。
管线可以拆成四步理解:
- 建模:数字雕刻结肠表面(分辨率高于 CT 结肠成像),得到封闭三角网格与模具。
- 成像:硅胶 phantom 在机械臂轨迹下被真实结肠镜拍摄,得到带真实成像物理特性的光学视频。
- 配准:GAN 把光学帧映到深度域,CMA-ES 对齐边缘特征,解出每帧相机位姿(相对 3D 模型)。
- 渲染:按位姿逐帧光线追踪,输出深度/法线/遮挡/覆盖与 6-DoF 位姿文件。
§3.6 标注精度与一致性
自动标注的精度上限由配准精度决定:在具备无误差真值的仿真对照实验中,平均平移误差 0.321 mm、旋转误差 0.159°;利用视频时序信息后,平移与旋转精度分别较单帧配准提升 55.6% 与 60.4%(arXiv:2206.08903)。需要强调:这些误差数字衡量的是"光学视频与 3D 模型渲染视图对得多齐",phantom 本身的几何即真值,不存在人工标注漂移。
§3.7 采集周期
官方未公布具体采集起止日期。可核实的公开时间锚点为:arXiv 预印本 v1 于 2022-06-17 提交、Medical Image Analysis 正式版于 2023 年 12 月见刊,phantom 制作与视频采集发生在论文周期内。本页以 2022/2023 作为时间覆盖描述(来源:arXiv 版本历史)。
§3.8 地域覆盖
数据采集全部位于美国马里兰州巴尔的摩:22 段注册视频在约翰斯·霍普金斯大学 Durr Lab 实验室内以 phantom 拍摄;4 段真实筛查视频由约翰斯·霍普金斯医院胃肠病科医师采集。数据集不含多中心、多地域数据,这一点直接影响其泛化性评估(见 §7.3)。
§3.9 设备规格
| 项目 | 规格 |
|---|---|
| 内镜主机 | Olympus CF-HQ190L 高清视频结肠镜(v1 与 v2 同型号,以相机标定文件命名佐证) |
| 图像分辨率 | 1350×1080(裁剪黑边与视频元数据后) |
| 帧率 | 30 fps |
| phantom | 数字雕刻结肠模型,硅胶浇铸,带纹理层 |
| 位姿采集 | 机械臂轨迹日志(配准用),最终位姿经 2D-3D 配准精修 |
| 渲染 | NVIDIA OptiX 光线追踪 |
相机标定细节对复现配准管线的研究者尤为重要。官方提供两类标定资料:其一为几何标定序列(10×10 mm 方格棋盘格视频,JHU Dataverse 记录其包体 45.8 MB 与 MD5);其二为全向(omnidirectional)相机内参模型——C3VD 的配准代码使用包含扭曲参数(a0-a4、c、d、e)的全向投影模型而非普通针孔模型,camera_intrinsics.txt 给出 width、height、cx、cy 及各系数。若把内参当针孔模型使用,重投影会出现系统性畸变(见 §6.5 坑点 7 的 sanity check 方法)。
§3.10 深度溯源链
数字雕刻结肠模型(分辨率高于 CT 结肠成像)
→ 硅胶浇铸 + 纹理层 → 实体 phantom
→ Olympus CF-HQ190L + 机械臂 → 原始视频 + 机械臂位姿日志
→ 条件 GAN(光学帧 → 深度域)+ CMA-ES 边缘配准(0.321 mm / 0.159°)
→ NVIDIA OptiX 逐帧渲染 → 深度/法线/光流/遮挡/覆盖/位姿真值
→ 打包分发(官网 ZIP + JHU Dataverse)
§4 数据结构
§4.0 目录树
以 v1 单个视频序列 cecum_t1_a 解压后的结构为例(命名规则转录自 OpenMedLab 档案与官方页):
C3VD/
├── cecum_t1_a/ # 结肠段_纹理_视频编号
│ ├── 0000_color.png # RGB 帧(8-bit,1350×1080)
│ ├── 0000_depth.tiff # 深度(16-bit,0-100 mm 线性缩放)
│ ├── 0000_normals.tiff # 法线(16-bit 彩色,相机坐标系)
│ ├── 0000_occlusion.png # 遮挡(8-bit 二值)
│ ├── 0001_color.png
│ ├── 0001_depth.tiff
│ ├── ...
│ └── pose.txt # 逐帧 camera-to-world 齐次矩阵(行主序)
├── cecum_t1_b/
│ ├── ...
├── descending_a/
│ ├── ...
├── sigmoid_t1_a/
│ ├── ...
├── transcending_a/
│ ├── ...
├── [video]_coverage_mesh.obj # 真值网格 + vt 覆盖编码
├── [video]_model.obj # 真值 3D 模型
└── [mold].obj # 模具文件
官方仓库工作目录另有配准用的输入结构(构建后运行时使用):config.ini(参数文件)、mask.png(Olympus 内镜二值角点掩膜)、rgb/(原始帧)、edges/(GAN 预测边缘图)、results/ 与 render/(配准结果与真值渲染输出),与数据包目录不同,勿混淆:
v2 版本改为分目录结构:color/、depth/、normals/、optical_flow/、occlusions/、diffuse/ 子目录,帧文件命名为 NNNN_depth.tiff 等四位数格式(来源:C3VDv2 官方页)。
§4.1 DAIMS 八列字段字典
| 字段/文件 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
*_color.png |
图像 | RGB 内镜帧 | 8-bit PNG | 网络输入 | 真实成像噪声/增益 | 无 | 0-255 × 3 通道 |
*_depth.tiff |
图像 | 深度图(相机 Z 轴) | 16-bit TIFF,16,384=25 mm | 深度估计监督 | 配准误差 0.321 mm 级 | clamp 饱和区(=100 mm) | 0-65,535 → 0-100 mm |
*_normals.tiff |
图像 | 表面法线 | 16-bit 彩色 | 法线估计/重建 | 随配准位姿误差传递 | 无 | ±1 → 0-65,535 |
*_flow.tiff |
图像 | 光流(当前→前一帧) | 16-bit 彩色 | 运动估计/SLAM | 首帧无值(缺失) | 首帧 | ±20 px → 0-65,535 |
*_occlusion.png |
图像 | 自遮挡二值掩码 | 8-bit | 重建遮挡处理 | 管线确定性 | 无 | 0 / 255 |
pose.txt |
文本 | camera-to-world 齐次矩阵 | 每行 16 值,行主序 | SLAM/位姿评测 | 平移 0.321 mm / 旋转 0.159° 级 | 无 | 齐次变换矩阵 |
coverage_mesh.obj |
网格 | 观察覆盖编码网格 | vt=1 观察 / vt=2 未观察 | 盲区检测 | 覆盖粒度=三角面 | — | 2 类 |
model.obj |
网格 | 真值表面几何 | Wavefront OBJ | 表面重建评测 | phantom 制造公差 | — | 三角网格 |
视频名(如 cecum_t1_a) |
元数据 | 结肠段_纹理_编号 | — | 域划分/分层抽样 | — | — | 4 结肠段 |
§4.2 标签分布
- 结肠段维度:盲肠 4,768 帧(47.6%)、横结肠 2,736 帧(27.3%)、乙状结肠 2,363 帧(23.6%)、降结肠仅 148 帧(1.5%)——降结肠严重欠采样(按 §3.2 表计算)。
- 深度维度:官方未公布逐像素深度直方图;已知 clamp 上限 100 mm,内镜近场成像使有效深度集中于浅距区间,使用时应统计实际分布并处理饱和像素。
- 覆盖维度:每序列网格以 vt 编码观察/未观察面,各视频观察覆盖率随探索路径不同而变化,官方未公布汇总统计。
- 序列内变奏:即使同一结肠段,不同视频的帧数差可达一个数量级(盲肠段 276 帧到 1,142 帧),反映探索路径长短与停留时间的差异——按帧采样会放大长序列的权重。
- 法线维度:相机坐标系定义(+z 沿视线)意味着法线分布在管腔内壁上以"朝向相机"为主,训练法线估计网络时无需再处理世界坐标系转换,但要记得这是相对相机的量、随位姿变化。
§4.3 关键统计
| 统计项 | 数值 | 备注 |
|---|---|---|
| 注册视频数 | 22 | 4 个结肠段 |
| 注册帧总数 | 10,015 | 配对全套真值 |
| 平均帧数/视频 | 约 455 | 10,015 ÷ 22(本页推算) |
| 单视频帧数范围 | 61 - 1,142 | §3.2 表 |
| 真实筛查视频 | 4 段 | 含粗位姿与 3D 模型,无逐帧深度真值 |
| 分辨率 | 1350×1080 | 全部帧一致 |
| 配准误差 | 0.321 mm / 0.159° | 仿真对照实验 |
| 时序配准增益 | 平移 +55.6% / 旋转 +60.4% | 相对单帧配准 |
| 评估 split 社区惯例 | ≥4 套 | 见 §5.2,数字不可直接互比 |
| 派生数据集 | 1(C3VD-Raycasting-10k) | 10,014 点云对,同许可 |
§4.4 数据层级
C3VD(数据集)
└── phantom 序列(22 段,另有 4 段真实筛查视频)
└── 视频序列(结肠段_纹理_编号,如 cecum_t1_a)
└── 帧(逐帧真值:color/depth/normals/flow/occlusion)
└── 像素(1350×1080)
序列级真值:pose.txt(逐帧位姿)、coverage_mesh.obj、model.obj
与临床数据集"患者 → 检查 → 序列 → 切片"的四级层级不同,C3VD 无患者维度——这既是脱敏红利,也是泛化性短板。
层级设计的实践含义:所有 22 段视频共享同一套标定与编码规范,因此可以写一个统一的 Dataset 类遍历全部序列(§6.4);但每段视频的帧数跨度极大(61 - 1,142),DataLoader 需注意 epoch 内序列采样均衡;序列级真值(coverage_mesh.obj、model.obj)与帧级文件不同层,加载器要分开处理两种粒度。若使用 C3VDv2,目录多了一层"通道子目录",层级从"帧文件平铺"变为"帧文件按通道分组",Dataset 类的文件枚举逻辑需相应调整(§6.5 坑点 8)。
§4.5 缺失值与信息性缺失编码
| 情形 | 表现 | 处理建议 |
|---|---|---|
| 光流首帧 | 当前→前一帧定义下首帧无值,编码中该帧光流无效 | 训练/评测从第 2 帧起计入光流损失 |
| 深度 clamp 饱和 | 距离 ≥100 mm 的像素被钳制为上限编码 | 用 raw == 65,535(或 depth >= 100 mm)掩码剔除 |
| 遮挡边界 | 8-bit 二值,无渐变 | 仅作二值语义使用,勿做软标签 |
| 覆盖编码 | 仅在网格纹理顶点上(vt),不是图像 | 用 MeshLab 或 trimesh 读取 vt 字段 |
| 真实筛查视频 | 无逐帧深度真值 | 只用于定性展示或位姿级评测,勿混入深度定量评测 |
| 相机标定缺失感知 | 部分视频包不含标定文件,标定单独打包 | 需要内参时从 camera_intrinsics.txt 与标定包读取 |
| MP4 与帧序 | MP4 关键帧对齐不保证 | 一律使用官方逐帧 PNG/TIFF 而非自抽帧 |
§5 数据划分与使用建议
§5.1 官方划分
C3VD 不提供官方 train/test 划分。 官方发布的是完整的 22 段注册视频与配套真值,划分方案留给社区。这保证了灵活性,但也直接导致了跨论文数字不可比的问题(见 §6.5 坑点 6)。
§5.2 社区惯例划分
| 划分方案 | 内容 | 使用者 |
|---|---|---|
| Domain-shift split | 横结肠(transcending)全部视频留作测试,其余三段训练 | EndoStreamDepth 等定义为"split 1"式泛化评测 |
| In-distribution split | 四个结肠段内部按视频划分训练/测试 | 多数深度估计论文("split 2"式) |
| 四轨迹 held-out | cecum_t4b、descending_t4a、sigmoid_t3b、transcending_t4b 留作测试 | UCL 团队(Ju et al.)位姿与深度评测 |
| LightDepth 补充材料 split | 按其论文补充材料定义 | PPSNet 等沿用 |
来源:EndoStreamDepth(arXiv:2512.18159)、UCL Ju et al.、PPSNet(arXiv:2403.17915)。
如何为你的项目选 split:看论文主张——若主张跨段泛化能力,用 domain-shift split(横结肠留出);若主张段内精度,用 in-distribution split 或 UCL 四轨迹方案;看对比对象——要和某篇论文的数字同表对比,就用它的 split 与它的有效掩码定义;拿不准——双 split 并报 + 置信区间,并在附录公开视频名清单。三条原则的优先级依次递减。
§5.3 划分策略与泄漏风险
- 同 phantom 序列的邻近帧泄漏:C3VD 帧间高度冗余(30 fps 连续轨迹),若按"帧"随机划分,测试帧的相邻帧会出现在训练集中,指标虚高。必须按视频序列划分。
- 同结肠段纹理泄漏:同名纹理(如 cecum_t1_a 与 cecum_t1_b)共享同一硅胶模型外观与几何,同纹理跨 split 会造成视觉记忆泄漏;domain-shift split 按结肠段切分可彻底规避。
- 降结肠单视频问题:降结肠仅 1 段 148 帧,任何划分都难以构成该段的独立测试集——建议在论文中显式声明降结肠不参与泛化评测。
- GAN 深度域共享:配准管线对全部视频使用同一个 GAN 与标定,管线级偏置在所有序列间共享,无法通过划分消除,只能靠外部验证(真实临床视频)评估。
§5.4 交叉验证建议
若报告单次 split 结果,建议同时给出 domain-shift split(横结肠留出)以展示跨段泛化,并使用 1,000 次 bootstrap 重采样报告 95% 置信区间(ColonCrafter 在 PSB 2026 的做法)。逐段结果应分列,避免被盲肠高帧数主导的宏平均掩盖降结肠失效。
若做 k 折交叉验证,折的单位必须是视频而非帧,且要保证每折内不出现同纹理对(cecum_t1_a 与 cecum_t1_b 视觉高度相似,应视为一个"纹理单元"一起分折)。22 段视频做 5 折时每折约 4-5 段,方差会明显大于大规模数据集上的 CV——这正是 bootstrap CI 比 CV 更受社区偏好的原因:视频级 CV 在 C3VD 上代价高而稳定性差,多数论文退而采用"单 split + bootstrap"或"双 split 互证"的折中方案。
§5.5 外部验证建议
在 C3VD 上训练的模型应至少在一个真实临床数据集上验证:候选包括 Hyper-Kvasir(真实胃肠镜)、Colon10K(真实结肠镜)、EndoMapper(完整校准检查流程)。UCL 团队的工作证明"在 C3VD 上占优不等于在真实数据上占优",反过来在其方案中以真实数据训练也能在 C3VD 上取得高评测分数——两种现象都指向 phantom 域差距,报告论文时务必写明训练域与评测域(来源:Ju et al.)。
推荐的验证组合矩阵:
| 论文主张 | 最小外部验证配置 | 反例风险 |
|---|---|---|
| 深度估计方法创新 | C3VD domain-shift split + Hyper-Kvasir 或 Colon10K 定性展示 | 只报 phantom 数字 |
| 位姿/SLAM 创新 | C3VD 四轨迹 held-out(ATE)+ 真实视频轨迹图 | 把配准误差当作真实域精度 |
| 盲区检测创新 | C3VD 覆盖图 + 真实检查流程覆盖率统计 | 忽略 phantom 无病理的覆盖语义差异 |
| 域适应创新 | C3VD→真实 + SimCol3D→C3VD 双向 | 单向迁移结论过度泛化 |
§6 AI 就绪指南
§6.0 云端快速启动
C3VD 无官方 pip 包与 Hugging Face 镜像,云端使用需手动下载数据包。最快的路径是在 Colab/Kaggle 中挂载磁盘后直接 wget 官网下载表中的视频 ZIP:
# Colab 示例:下载官方样例视频序列(注册与渲染代码仓库提供的示例包)
# 目录预期:/content/c3vd_sample/<video>/ 下含 config.ini、rgb/、pose.txt 等
!wget -O sample.zip "https://durrlab.github.io/C3VD/" # 实际下载链接以官网下载表为准
!unzip -q sample.zip -d /content/c3vd_sample
注意:官网部分直链存在失效风险(官方 C3VDv2 页面明确提示可从 JHU Dataverse 直接下载),详见 §6.5 坑点 2。
§6.1 快速上手
代码前须知(目录结构预期):以下代码假设你的 data_root 目录下每个子目录是一个视频序列(如 cecum_t1_a/),其内含扁平命名帧文件 NNNN_color.png、NNNN_depth.tiff、NNNN_normals.tiff、NNNN_occlusion.png 与一个 pose.txt。data_root 与视频名的拼接关系:data_root / video_name / f"{idx:04d}_color.png"。最小可用子集:任选 1 段视频的全部帧即可跑通深度监督训练循环;完整 benchmark 需要 22 段全量。
# 环境依赖:pip install numpy imageio torch
import imageio.v2 as imageio
import numpy as np
data_root = "/data/C3VD" # 你的解压根目录
video = "cecum_t1_a" # 最小可用子集:任意一段视频
rgb = imageio.imread(f"{data_root}/{video}/0000_color.png") # (1080, 1350, 3) uint8
depth_raw = imageio.imread(f"{data_root}/{video}/0000_depth.tiff") # (1080, 1350) uint16
depth_mm = depth_raw.astype(np.float32) * (100.0 / 65535.0) # 解码为毫米
print(rgb.shape, depth_raw.dtype, depth_mm.max()) # 验证:max 应 <= 100.0
跑通后建议立即做一次三联可视化——深度/法线/光流叠加检查是发现编码错误的最高效手段:
快速上手的三条纪律:先只跑一段视频再批量(防下载残缺放大返工);所有解码函数过单元测试(防编码误读扩散到全部实验);可视化先行(肉眼确认几何合理后再喂给模型)。
import matplotlib.pyplot as plt
normals_raw = imageio.imread(f"{data_root}/{video}/0000_normals.tiff").astype(np.float32)
normals = normals_raw * (2.0 / 65535.0) - 1.0
fig, axes = plt.subplots(1, 3, figsize=(15, 4))
axes[0].imshow(rgb); axes[0].set_title("color")
axes[1].imshow(depth_mm, cmap="magma"); axes[1].set_title(f"depth (max {depth_mm.max():.1f} mm)")
axes[2].imshow((normals + 1) / 2); axes[2].set_title("normals (camera frame)")
for ax in axes: ax.axis("off")
plt.tight_layout(); plt.savefig("c3vd_check.png", dpi=120)
正常判据:深度图近处暗(或按 cmap 反转)远处亮、结肠袋褶皱层次分明;法线图以蓝/绿色调为主且朝向连续渐变——若出现大片纯色或方向突变,几乎可以断定解码错了。
§6.2 数据获取
| 项目 | 说明 |
|---|---|
| 主下载页 | https://durrlab.github.io/C3VD/(逐视频 ZIP 下载表) |
| 备用渠道 | JHU Dataverse(C3VDv2 页面官方提示直链失效时改从 Dataverse 下载) |
| 注册要求 | 无——开放下载,无需账号、无需签署协议 |
| 许可 | CC BY-NC-SA 4.0(禁商用、派生作品同许可共享) |
| 配准/渲染代码 | https://github.com/DurrLab/C3VD(Ubuntu 20.04 + CMake≥3.5 + CUDA≥11.1,NVIDIA GPU 算力 5.0+) |
| 官方示例加载器 | 仓库内 python/exampleDataLoader.py(位姿 + 深度重投影 3D 点云) |
# 依赖安装与仓库构建(仅在需要复现配准/渲染时)
sudo apt install -y freeglut3-dev libglew-dev
git clone https://github.com/DurrLab/C3VD.git && cd C3VD
git submodule init && git submodule update
mkdir build && cd build && cmake .. && make -j8
# 产物:bin/ 下 c3vd align(GUI 初始化)、c3vd register、c3vd rendergt
深度学习用户无需构建上述 C++ 管线——只需要数据包与 Python 环境。数据获取的推荐顺序:
- 官网下载表勾选所需的视频 ZIP(可先下 1-2 段验证流程,再批量下载)。
- 每包下载后立即解压核对帧数(对照 §3.2 表),残缺包当场重下。
- 直链失效时转 JHU Dataverse:检索数据集 DOI(10.7281/T1/JC64MK 及其关联条目),API 方式列举文件:
# JHU Dataverse API:列出某数据集版本的全部文件元数据(含 MD5 与大小)
curl -s "https://archive.data.jhu.edu/api/datasets/:persistentId/" \
"?persistentId=doi:10.7281/T1/JC64MK" | python3 -m json.tool | head -60
# 单文件下载:/api/access/datafile/<fileId>
- 固化一份
manifest.csv(文件名、MD5、下载日期、来源渠道),作为数据卡的一部分入库版本管理。
§6.3 预处理全流程
import numpy as np
import imageio.v2 as imageio
def decode_depth(tiff_path: str) -> tuple[np.ndarray, np.ndarray]:
"""16-bit TIFF -> 毫米深度 + 有效掩码(剔除 100 mm clamp 饱和像素)"""
raw = imageio.imread(tiff_path).astype(np.float32)
depth_mm = raw * (100.0 / 65535.0)
valid = raw < 65535 - 1e-3 # 饱和像素 = 上限编码
return depth_mm, valid
def decode_normals(tiff_path: str) -> np.ndarray:
"""16-bit 彩色 TIFF -> 单位法线 (H, W, 3),相机坐标系"""
raw = imageio.imread(tiff_path).astype(np.float32)
n = raw * (2.0 / 65535.0) - 1.0 # ±1 线性映射还原
norm = np.linalg.norm(n, axis=-1, keepdims=True)
return n / np.maximum(norm, 1e-8)
def decode_flow(tiff_path: str) -> tuple[np.ndarray, np.ndarray]:
"""16-bit 彩色 TIFF -> 像素光流 (H, W, 2),±20 px clamp 还原"""
raw = imageio.imread(tiff_path).astype(np.float32)
fx = raw[..., 0] * (40.0 / 65535.0) - 20.0 # R 通道:X 方向
fy = raw[..., 1] * (40.0 / 65535.0) - 20.0 # G 通道:Y 方向
flow = np.stack([fx, fy], axis=-1)
valid = raw[..., 0] != 0 # 0 值需与真零流区分,见坑点 5
return flow, valid
def load_pose(pose_path: str, idx: int) -> np.ndarray:
"""pose.txt 第 idx 行 -> 4x4 camera-to-world(行主序展平)"""
with open(pose_path) as f:
vals = list(map(float, f.readlines()[idx].split()))
return np.asarray(vals, dtype=np.float64).reshape(4, 4)
def standardize(rgb: np.ndarray, size: tuple[int, int] = (518, 518)) -> np.ndarray:
"""标准化:与主流工作一致地 resize 后归一化"""
import cv2
img = cv2.resize(rgb, size, interpolation=cv2.INTER_LINEAR).astype(np.float32) / 255.0
img = (img - [0.485, 0.456, 0.406]) / [0.229, 0.224, 0.225]
return img
def decode_occlusion(path: str) -> np.ndarray:
"""8-bit 二值遮挡:255 = 遮挡了 100 mm 内其他网格面"""
return (imageio.imread(path) > 127).astype(np.uint8)
def read_coverage(obj_path: str) -> tuple[np.ndarray, np.ndarray]:
"""从 coverage_mesh.obj 读取顶点与逐面覆盖(vt=1 观察 / vt=2 未观察)"""
verts, faces, face_cov = [], [], []
with open(obj_path) as f:
for ln in f:
if ln.startswith("v "):
verts.append([float(x) for x in ln.split()[1:4]])
elif ln.startswith("vt "):
# vt 的 u 值编码覆盖:u==1 观察,u==2 未观察
face_cov.append(1 if float(ln.split()[1]) == 1.0 else 0)
elif ln.startswith("f "):
faces.append([[int(t) for t in part.split("/")[:2]]
for part in ln.split()[1:]])
import numpy as np
return np.asarray(verts), np.asarray(face_cov[:len(faces)]) # 面级覆盖标签
def sanity_check_pose(pose: np.ndarray, depth: np.ndarray,
intr: dict) -> None:
"""坑点 7 的预防性检查:位姿 sanity check(相机应看向管腔内部)"""
R, t = pose[:3, :3], pose[:3, 3]
look = R @ np.array([0.0, 0.0, 1.0]) # 相机光轴方向(世界系)
assert np.isclose(np.linalg.det(R), 1.0, atol=1e-6), "旋转矩阵非法"
assert depth.max() <= 100.0, "深度超出 clamp 上限,解码或配准有误"
print(f"look={look.round(3)}, cam_t={t.round(1)} mm")
清洗与增强要点:C3VD 帧无需质检过滤(自动渲染保证一致性),但对掩膜外的无效像素必须同步处理;几何增强须对 RGB 与全部真值通道施加同一几何变换(见 §6.6)。
§6.4 PyTorch DataLoader
import os
import cv2
import numpy as np
import torch
from torch.utils.data import Dataset, DataLoader
import imageio.v2 as imageio
class C3VDDepthDataset(Dataset):
"""C3VD 深度估计数据集:按视频序列组织,输出 RGB + 毫米深度 + 有效掩码。
目录预期:data_root/<video>/NNNN_color.png / NNNN_depth.tiff(v1 扁平命名)。
"""
def __init__(self, data_root: str, videos: list[str], size=(518, 518)):
self.root = data_root
self.size = size
self.samples = []
for v in videos: # 按视频序列划分,杜绝帧级泄漏
vdir = os.path.join(data_root, v)
n = sum(1 for f in os.listdir(vdir) if f.endswith("_color.png"))
self.samples += [(vdir, i) for i in range(n)]
def __len__(self):
return len(self.samples)
def __getitem__(self, idx):
vdir, i = self.samples[idx]
rgb = cv2.imread(os.path.join(vdir, f"{i:04d}_color.png"))
rgb = cv2.cvtColor(rgb, cv2.COLOR_BGR2RGB)
raw = imageio.imread(os.path.join(vdir, f"{i:04d}_depth.tiff")).astype(np.float32)
depth = raw * (100.0 / 65535.0)
valid = (raw < 65535).astype(np.float32) # clamp 饱和掩码
# 同一几何变换作用于 RGB 与深度(最近邻保真值)
rgb = cv2.resize(rgb, self.size, interpolation=cv2.INTER_LINEAR)
depth = cv2.resize(depth, self.size, interpolation=cv2.INTER_NEAREST)
valid = cv2.resize(valid, self.size, interpolation=cv2.INTER_NEAREST)
rgb = (rgb.astype(np.float32) / 255.0 - [0.485, 0.456, 0.406]) / [0.229, 0.224, 0.225]
return (
torch.from_numpy(rgb.transpose(2, 0, 1).copy()).float(),
torch.from_numpy(depth[None].copy()).float(),
torch.from_numpy(valid[None].copy()).float(),
)
# 用法:按 §5.2 的 domain-shift split 组织视频名
ALL_VIDEOS = ["cecum_t1_a", "cecum_t1_b", "cecum_a", "cecum_b", "cecum_t2_a", "cecum_t2_b",
"cecum_t3_a", "cecum_t3_b", "sigmoid_t1_a", "sigmoid_t1_b", "sigmoid_t2_a",
"sigmoid_t2_b", "transcending_a", "transcending_t1_a", "transcending_t1_b",
"transcending_t2_a", "transcending_t2_b", "transcending_t3_a",
"transcending_t3_b", "transcending_t4_a", "transcending_t4_b", "descending_a"]
train_set = C3VDDepthDataset("/data/C3VD", [v for v in ALL_VIDEOS if "transcending" not in v])
train_loader = DataLoader(train_set, batch_size=4, shuffle=True, num_workers=8, pin_memory=True)
注:上表视频名清单仅示意组织方式,实际序列名以解压后的目录为准(含 _a/_b 后缀与纹理编号,见 §3.2)。
配一个最小训练循环,即可从"加载器"走到"能跑的实验":
import torch
from torch import nn
model = <你的深度网络>() # 例如 Depth Anything V2 微调头
criterion = nn.L1Loss(reduction="none") # 掩码内逐像素 L1
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-5, weight_decay=1e-2)
device = "cuda" if torch.cuda.is_available() else "cpu"
model.to(device).train()
for epoch in range(5):
for rgb, depth, valid in train_loader:
rgb, depth, valid = rgb.to(device), depth.to(device), valid.to(device)
pred = model(rgb) # 预测深度(mm)
if pred.shape[-2:] != depth.shape[-2:]: # 对齐分辨率
pred = nn.functional.interpolate(pred, size=depth.shape[-2:],
mode="bilinear", align_corners=False)
pred = pred.clamp(0.0, 100.0) # 与官方编码一致的 clamp
loss = (criterion(pred, depth) * valid).sum() / valid.sum().clamp(min=1.0)
optimizer.zero_grad(); loss.backward(); optimizer.step()
print(f"epoch {epoch}: loss {loss.item():.4f}")
两个训练期细节值得提前写进代码:其一,clamp(0, 100) 必须加——它让预测分布与真值编码一致,否则饱和区像素会持续产生不可学习的梯度;其二,损失分母用 valid.sum() 而非 batch 像素总数,保证饱和区占比不同的视频之间损失可比。
§6.5 八大坑点
⚠️ 坑点 1:16-bit 真值编码被当作 8-bit 读取(分类:预处理陷阱)
问题:C3VD 的深度、法线、光流全部是 16-bit 编码,且不是常见的毫米直存或浮点 TIFF,而是"物理量线性缩放到 0-65,535"的自定义映射。用默认
cv2.imread(默认IMREAD_COLOR会把 uint16 截断/转换为 uint8)或直接除以 255 解码,得到的深度、法线全部错位。
症状:深度图可视化呈黑图或条纹;depth_mm.max()出现 1.5 mm 一类的荒谬值;训练 loss 不收敛或法线监督出现 180° 反向。
解决:
- 简单方法:用
imageio.imread或cv2.imread(path, cv2.IMREAD_UNCHANGED)读取,保持 uint16;深度按raw * 100.0 / 65535.0解码,法线按raw * 2.0 / 65535.0 - 1.0,光流按raw * 40.0 / 65535.0 - 20.0。- 进阶方法:写单元测试锚定官方标定关系——官方文档明确"像素值 16,384 对应 25 mm",断言
abs(decode(16384) - 25.0) < 1e-3;法线解码后逐像素模长应约为 1。- SOTA 方法:参考官方仓库
python/exampleDataLoader.py的读取逻辑,把解码函数集中到单一模块并冻结版本,避免各实验脚本解码不一致(来源:DurrLab/C3VD)。
参考:官方编码说明(16,384 = 25 mm 等全部映射关系)。
⚠️ 坑点 2:官网下载直链失效(“File not found”)(分类:工程陷阱)
问题:官方站点按视频提供 ZIP 直链,但部分直链会随时间失效。官方在 C3VDv2 页面明确写道:“If downloads links below fail (e.g. ‘File not found’), please download files directly from the JHU Dataverse repository.”——这是官方自认的已知问题。
症状:wget返回 404 或 “File not found” 页面;自动化下载脚本中途断链,数据集不完整。
解决:
- 简单方法:改从 JHU Dataverse 检索条目逐文件下载(C3VDv2 数据 DOI 10.7281/T1/JC64MK,页面内含 v1 标定文件等关联文件)。
- 进阶方法:用 Dataverse API 批量枚举文件清单再下载,脚本中校验每个 ZIP 的可解压性与帧数(对照 §3.2 表逐视频核对帧数)。
- SOTA 方法:建立数据版本目录(
c3vd_v1/、c3vd_v2/)并记录下载日期与文件 MD5(Dataverse 提供 MD5 字段,如标定包 45.8 MB 的 MD5),一次固化、多实验复用。
参考:官方失效提示、JHU Dataverse。
⚠️ 坑点 3:phantom 域与真实临床域的差距被忽视(分类:偏倚陷阱)
问题:C3VD 主体是硅胶 phantom 视频,不是活体组织。虽然它保留了真实光照、增益与噪声,但黏膜色泽、湿润反光、蠕动形变与病理外观与真实结肠存在系统性差异。直接把 phantom 上训练的深度模型宣称"临床可用"是审稿人最容易攻击的点。
症状:模型在 C3VD 测试集上 AbsRel 很低,迁移到真实结肠镜视频上深度出现大面积漂移与伪影;论文外审被质疑临床相关性。
解决:
- 简单方法:报告时明确区分"phantom 基准性能"与"真实视频定性表现",不要混为一谈。
- 进阶方法:引入真实域无监督适应——PPSNet 用 teacher-student 迁移(C3VD 有监督 + 真实临床数据自监督),显著提升真实域表现。
- SOTA 方法:ColonCrafter 采用真实→仿真风格迁移,把 C3VD 帧转成训练分布再做 zero-shot 推理,δ1 提升约 2 个百分点;也可采用域随机化与 Diffusion 先验。
参考:PPSNet, ECCV 2024(arXiv:2403.17915)、ColonCrafter, PSB 2026。
⚠️ 坑点 4:深度 clamp 饱和像素污染训练与评测(分类:评估误用)
问题:官方深度在相机 Z 轴方向 clamp 到 0-100 mm。内镜近场成像下大多数像素深度远小于 100 mm,但视野边缘与远端管腔像素会被钳制在上限编码——它们不是真实测量值。
症状:RMSE 被饱和像素拉高或(若把饱和区当标签训练)模型学会预测"清一色 100 mm";不同论文评测集饱和像素比例不同,指标出现不可解释的差异。
解决:
- 简单方法:训练与评测都加有效掩码
raw < 65535,只统计未饱和像素(Eigen 协议 + mask)。- 进阶方法:在损失函数中按掩码加权,并对深度预测做与官方一致的 clamp(保证推理分布与评测一致)。
- SOTA 方法:报告指标时同时给出"全像素"与"有效像素"两套结果,并统计各视频饱和像素比例随序列位置的漂移(覆盖图可辅助判断远端盲区)。
参考:官方深度编码说明、EndoStreamDepth 对 0-100 mm clamp 的显式描述(arXiv:2512.18159)。
⚠️ 坑点 5:光流的 ±20 px clamp 与首帧缺失(分类:标签理解)
问题:官方光流从"当前帧 → 前一帧"计算,方向定义与常见"前一帧 → 当前帧"相反;X/Y 运动被 clamp 到 ±20 px(超出部分截断);首帧按定义没有光流。三重约定叠加,极易用错。
症状:光流监督训练后模型预测方向整体相反;快速运动区域监督信号被削顶;首帧参与光流损失时出现 NaN 或恒零伪梯度。
解决:
- 简单方法:训练循环从第 2 帧起计入光流损失;使用前把"当前 → 前一帧"反转为所需方向约定(取反即可)。
- 进阶方法:解码时区分"真零流"与"无效值"(G/R 通道全 0 需结合遮挡掩码判断),对 clamp 区间边缘像素降权。
- SOTA 方法:视频模型(如 EndoStreamDepth 的时序窗口)用多帧一致性损失替代原始光流监督,绕开 clamp 削顶问题。
参考:官方光流编码说明(R=X、G=Y、±20 px、当前→前一帧)。
⚠️ 坑点 6:无官方划分导致跨论文数字不可比(分类:评估误用)
问题:C3VD 官方不提供 train/test 划分。社区自发形成了至少四种互不相同的 split(横结肠留出、in-distribution 划分、UCL 四轨迹留出、LightDepth 补充材料划分),同一模型在不同 split 上 δ1 可差十余个百分点。
症状:论文对比表中不同方法的数字根本不在同一评测集上;复现者按错 split 训练,得到与原文差距很大的结果,误以为论文有误。
解决:
- 简单方法:复现时先从论文/代码定位其使用的确切 split(视频名清单),不要想当然。
- 进阶方法:同时报告 domain-shift split(横结肠留出)与 in-distribution split 两套结果,用 bootstrap 置信区间包装(ColonCrafter 用 1,000 次 bootstrap)。
- SOTA 方法:发布你的 split 清单与评估代码(如 EndoStreamDepth 在仓库中公开两个 split 的定义),推动社区对齐;跨数据集加测 SimCol3D 官方挑战赛 split 佐证泛化。
参考:EndoStreamDepth split 定义、UCL 四轨迹 split。
⚠️ 坑点 7:pose.txt 位姿约定混淆(camera-to-world、行主序、与机械臂日志不同源)(分类:工程陷阱)
问题:数据集里有两套位姿:发布数据中的
pose.txt是逐帧 camera-to-world 齐次矩阵、行主序展平;而配准代码仓库工作目录中的pose.txt是机械臂日志(列主序、带时间戳)。同时,主流 SLAM 数据集(如 TUM RGB-D)多用四元数 + 平移的 w2c/c2w 约定,三方极易混淆。
症状:重投影点云"翻转"或整体飞出视野;轨迹评测(ATE/APE)出现恒定大偏移;用配准代码时初始对齐失败。
解决:
- 简单方法:对
pose.txt按每行 16 值 reshape(4,4) 并当作 c2w 使用;可视化前两帧的相机原点与看向方向做 sanity check(相机应看向管腔内部)。- 进阶方法:写转换单测——把 c2w 求逆得 w2c 后,将真值深度重投影到相邻帧,边缘重投影误差应小于数像素;机械臂日志则需按列主序读取并按
poseStartTime/poseOffset与视频帧做时间对齐。- SOTA 方法:直接复用官方
exampleDataLoader.py的位姿 + 深度重投影逻辑作为金标准参照,评测用 EVO 工具包计算 ATE(UCL 工作的做法)。
参考:DurrLab/C3VD README(两种 pose.txt 的定义与 config.ini 时序参数)、Ju et al.(EVO 协议)。
⚠️ 坑点 8:v1/v2 并存导致命名、结构、许可三层混淆(分类:工程陷阱)
问题:C3VD v1 与 2025 年的 C3VDv2 同时在线。v1 帧文件是扁平命名(
0000_color.png),v2 是分目录命名(depth/NNNN_depth.tiff,新增 diffuse 通道与形变视频);两者引用文献不同(bobrow2023 vs golhar2025);且许可为 CC BY-NC-SA 4.0——基于数据的派生数据集必须同许可共享。
症状:加载器在 v2 目录上按 v1 命名找不到文件;论文引用了错误版本;把基于 C3VD 的派生数据以宽松许可发布造成许可违规(UCL 的 C3VD-Raycasting-10k 因此显式声明继承 CC BY-NC-SA 4.0)。
解决:
- 简单方法:加载器内置版本探测(子目录含
color/则 v2,否则 v1),数据目录按c3vd_v1/、c3vd_v2/物理分离。- 进阶方法:在数据卡(data card)中记录版本、下载日期、许可与引用条目;论文引用按所用版本选择 bobrow2023 或 golhar2025。
- SOTA 方法:发布派生数据时显式声明继承 CC BY-NC-SA 4.0 并回链原始数据集(参照 C3VD-Raycasting-10k 的声明写法),在 CI 中校验许可声明文件存在。
参考:C3VD 官方页、C3VDv2 官方页、C3VD-Raycasting-10k 许可声明。
§6.6 数据增强策略
| 增强方式 | 安全性 | 说明 |
|---|---|---|
| 亮度/对比度小幅抖动 | ✅ | 模拟内镜光照变化,需保持近场照明衰减先验 |
| 色相大幅偏移 | ⚠️ | phantom 色彩本身固定,过度偏移破坏域先验 |
| 同步几何变换(旋转/裁剪/缩放,同步作用于深度/法线/光流/位姿) | ✅ | 几何一致性必须全通道同步,法线需用旋转矩阵变换,光流需同步缩放 |
| 水平翻转 | ❌ | 破坏法线 XYZ 分量、光流方向与右利手退镜先验,需同步翻转全部真值通道,得不偿失 |
| 镜面高光模拟 | ✅ | 与真实内镜反光特性一致,可提升真实域泛化 |
| 弹性形变 | ❌ | 破坏几何真值有效性(形变后深度/法线不再对应渲染几何) |
| 高斯噪声/模糊 | ✅ | 模拟传感器与对焦变化,强度需保守 |
| 序列随机采样步长 | ✅ | 隔帧采样弱化帧间冗余,等效数据增强 |
| 光流/位姿通道逆变换遗漏 | ❌ | 几何增强后忘记同步逆变换位姿矩阵是常见 bug |
§6.7 模型推荐
| 模型 | 类型 | 适用任务 | 参考性能(C3VD) | 代码可得性 |
|---|---|---|---|---|
| PPSNet | 监督 + 近场光照先验 | 深度估计 | δ1 0.89 / AbsRel 0.049 / RMSE 2.06(Ours-Student) | 官方项目页 ppsnet.github.io |
| LightDepth | 自监督 | 深度估计 | AbsRel 0.078 | 论文补充材料 split |
| EndoStreamDepth | 视频时序 | 视频流深度 | δ1 0.952 / AbsRel 0.085(split 1) | GitHub 开源 |
| ColonCrafter | Diffusion 视频先验 | 时序一致深度 | zero-shot δ1 0.77(+风格迁移 0.79) | 论文发布 |
| EndoOmni | 大规模预训练 | 深度估计 | δ1 0.77 / RMSE 6.91 | 按论文 |
| Depth Anything V2 | 通用基础模型 | zero-shot 基线 | δ1 0.61 / AbsRel 0.24 | 开源 |
| SHADeS | 自监督 | 深度 + 位姿联合 | 胃肠内镜多任务(UCL 工作用其初始化) | 按论文 |
| MonoDepth2 / MonoViT | 自监督经典 | 深度估计 | 常见自监督基线(UCL 对比表) | 开源 |
性能数字不可直接互比(split 与协议不同),详见 §8.1。来源见 §8 各条完整引用。
§6.8 硬件需求
| 场景 | GPU | 显存 | 说明 |
|---|---|---|---|
| 数据加载与解码调试 | 无需 GPU | — | imageio/cv2 即可 |
| 单目深度微调(ViT-S/DPT 级) | 1× RTX 4090 / A6000 | 24 GB | EndoStreamDepth 训练用 A6000 |
| 视频时序模型(窗口 5 帧、518²) | 1× A6000 / A100 | 24-48 GB | batch 4 + AdamW,15K 迭代量级 |
| 大规模预训练或扩散模型(ColonCrafter 级) | 多卡 A100 | 40 GB+ / 卡 | Diffusion 先验训练成本高 |
| 数据解码与可视化 | CPU 即可 | — | imageio + matplotlib,无需 GPU |
§6.9 评估指标代码
import numpy as np
def depth_metrics(pred: np.ndarray, gt: np.ndarray, valid: np.ndarray,
min_depth: float = 1e-3, max_depth: float = 100.0) -> dict:
"""Eigen 协议深度指标 + clamp 饱和掩码。pred/gt 单位 mm,valid 为有效像素掩码。"""
m = valid & (gt >= min_depth) & (gt <= max_depth)
p, g = pred[m], gt[m]
thresh = np.maximum(g / p, p / g)
d = g - p
return {
"delta1": float((thresh < 1.25).mean()),
"abs_rel": float((np.abs(d) / g).mean()),
"sq_rel": float((d ** 2 / g).mean()),
"rmse": float(np.sqrt((d ** 2).mean())),
}
位姿评测(SLAM 方向)同样有一段最小代码——先用 EVO 工具包做 ATE 计算:
# pip install evo
# 将估计轨迹与真值轨迹导出为 TUM 格式(timestamp tx ty tz qx qy qz qw)后:
evo_ape tum gt_traj.txt est_traj.txt -va --plot --align
# 输出 ATE 的 RMSE/mean/median,-align 做 Umeyama 对齐(尺度不变配置可加 -as)
# 真值轨迹导出:pose.txt (camera-to-world, 行主序) -> TUM 格式
import numpy as np
def pose_to_tum(pose: np.ndarray, t: float) -> str:
"""4x4 c2w -> TUM 行:timestamp tx ty tz qx qy qz qw"""
from scipy.spatial.transform import Rotation as R
tx, ty, tz = pose[:3, 3]
qx, qy, qz, qw = R.from_matrix(pose[:3, :3]).as_quat()
return f"{t:.6f} {tx:.6f} {ty:.6f} {tz:.6f} {qx:.6f} {qy:.6f} {qz:.6f} {qw:.6f}"
with open("pose.txt") as f:
gt = [np.asarray(list(map(float, ln.split()))).reshape(4, 4)
for ln in f if ln.strip()]
with open("gt_traj.txt", "w") as f:
for i, p in enumerate(gt): # 帧率 30 fps -> 时间戳 = i / 30
f.write(pose_to_tum(p, i / 30.0) + "\n")
§6.10 MLOps 笔记
- 版本即协议:v1/v2 目录结构不同,把"数据版本 + split 清单 + 解码函数版本"三者绑定进实验追踪(MLflow/W&B tag),否则指标不可追溯。
- 数据卡强制项:记录下载日期、ZIP MD5、解压后逐视频帧数核对表(对照 §3.2)。
- 许可合规自动化:CC BY-NC-SA 4.0 的 NC 限制应写入 CI 检查——禁止在商用产品仓库引入本数据集;派生数据发布须带同许可声明。
- 评测复现:固定 OpenCV/imageio 版本(解码行为与插值有关),评估脚本与 split 清单入库并打 tag。
- 失效重试:官网直链可能失效(坑点 2),数据获取脚本应内置 JHU Dataverse 备用路径与帧数校验。
- 复现归档:论文投稿时随仓库公开 split 清单、解码模块与环境锁文件(requirements/lock),审稿人复现成本从天级降到分钟级。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 域偏倚(phantom vs 活体) | 22 段主体为硅胶模型,黏膜外观、湿润反光、蠕动形变与真实结肠存在系统差异 | 高 | 真实域适应(PPSNet teacher-student)、风格迁移(ColonCrafter)、真实数据外部验证 |
| 结肠段分布失衡 | 盲肠占 47.6% 帧,降结肠仅 1 段 148 帧(1.5%) | 中 | 分段宏平均;domain-shift split;声明降结肠不参与泛化结论 |
| 无病理样本 | phantom 模拟健康结肠解剖,不含息肉/肿瘤/炎症 | 高 | 与真实病理数据集(Kvasir-SEG 等)组合使用 |
| 设备单一性 | 仅 Olympus CF-HQ190L 一种内镜、固定光照与增益 | 中 | 增强模拟光照变化;多设备数据外部验证 |
| 序列级冗余 | 30 fps 连续轨迹,相邻帧高度相似 | 中 | 按视频(非帧)划分;逐段报告 |
| 静态刚性假设(v1) | v1 phantom 序列无组织动态形变 | 中 | 形变需求转用 C3VDv2 形变视频 |
| 覆盖真值粒度 | 覆盖以三角面为单位(vt 编码),非像素级 | 低-中 | 覆盖任务按面聚合预测再评估 |
| 真值坐标约定 | 法线/位姿绑定相机坐标系与 camera-to-world 约定 | 低 | 坑点 1/7 的解码与转换单测覆盖 |
§7.2 标注质量
C3VD 的真值不经过人工标注,因此不存在标注者间一致性(IAA)问题。其质量由两条证据链支撑:其一,phantom 几何即已知真值,渲染真值的唯一误差来源是配准——仿真对照实验中平均平移误差 0.321 mm、旋转误差 0.159°,利用时序信息后精度较单帧提升 55.6%/60.4%;其二,官方开源了配准与渲染全管线代码,第三方可以复现真值生成过程。相对地,4 段真实筛查视频只有粗粒度位姿真值与 3D 模型,无逐帧深度标签,官方亦未将其用于定量深度评测。
从监督信号质量的角度,可以把 C3VD 的真值分为三档置信度,训练时区别对待:满置信——深度/法线/遮挡/覆盖四类渲染通道(确定性管线产物);高置信——6-DoF 位姿(受 0.321 mm/0.159° 配准误差约束,仍远优于任何手工标注);粗粒度——4 段真实视频的位姿与模型(官方未给出误差界,仅够定性使用)。把三档置信度写进数据卡与损失权重设计,是把这个数据集"用对"的标志性细节。
§7.3 泛化性评估
| 场景 | 失效风险 | 证据 |
|---|---|---|
| phantom 测试集 → 真实临床视频 | 高(外观域差距) | PPSNet 需 teacher-student 迁移才能在真实数据产出高质量深度;ColonCrafter 用风格迁移弥合 |
| 盲肠 → 其他结肠段 | 中(domain-shift split 成立) | EndoStreamDepth 以横结肠留出检验跨段泛化 |
| C3VD → 手术场景(SCARED 类) | 极高(解剖与器械差异) | 领域内默认结论,无跨域直接证据 |
| 单内镜型号 → 多型号 | 中-高(色彩/视场/畸变差异) | 数据集单设备构成所致(§7.1) |
| C3VD → SimCol3D 反向迁移 | 高(仿真域差距更大) | EndoStreamDepth 在两域分开评测 |
| phantom → 形变场景(蠕动、器械交互) | 高(v1 为刚性序列) | 需改用 C3VDv2 形变视频验证 |
| 覆盖检测 → 真实检查流程 | 中-高(无病理与操作差异) | 覆盖语义在真实退镜中受气泡/粪便干扰 |
§7.4 伦理
phantom 数据不含人体信息,不涉及伦理审批问题。4 段真实筛查视频由持证胃肠病医师采集,官方论文与站点未详细公布 IRB 批准与知情同意细节,发布文件中不含患者标识或人口学信息(rai 声明亦如此描述)。使用者在引用真实视频段时应遵循原始许可并在论文中注明来源与许可限制。CC BY-NC-SA 4.0 的非商业约束属于许可伦理的一部分,商用前必须获得额外授权。
§7.5 公平性
C3VD 不含任何患者人口学信息(性别、年龄、种族均无),因此无法进行人群亚组公平性审计。需要公平性评估的模型应在真实临床数据集上另行开展。数据集本身不存在标注人群偏倚问题(无人工标注人群),但其"健康结肠解剖"的 phantom 构成意味着病理表现被系统性排除——这是比人口学偏倚更值得在论文中声明的覆盖性局限。
§7.6 数据漂移
C3VD v1(2022-2023)与 C3VDv2(2025)之间存在明确版本演化:v2 更换了目录结构、新增 diffuse 与形变通道、提升真实感。对长期维护的模型资产而言,phantom 数据不存在"人群漂移"问题(几何固定),但存在"版本漂移"——跨版本的文件命名、编码与覆盖范围差异需要在数据管道中显式管理(§6.5 坑点 8)。真实域漂移应通过外部真实数据集监控,而非本数据集。
需要区分三种"漂移"的时间尺度:版本漂移(以年计)由官方版本发布触发,管理手段是双版本目录与数据卡;管线漂移(以月计)来自解码库与预处理依赖升级,管理手段是锁定依赖版本并保留解码单元测试;评测协议漂移(以季度计)来自社区 split 惯例演化,管理手段是跟踪新论文的 split 声明并在重大不一致时重跑基准。三种漂移的监控都不需要接触真实临床数据流——这正是 phantom 基准相对临床数据库的运维优势。
§7.7 DAIMS 数据就绪度 24 项评估
评估口径说明:DAIMS 面向"AI 能否直接消费这份数据"检查结构、编码、文档与合规四类就绪条件;下表逐项给出 C3VD(v1 为主、v2 佐证)的判定与依据。
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式数据 | ✅ | 每帧一组文件、每序列一目录,天然长表结构 |
| 2 | 唯一标识 | ✅ | 视频名 + 4 位帧号构成确定性主键(如 cecum_t1_a/0000) |
| 3 | 特殊字符处理 | ✅ | 文件名仅小写字母/数字/下划线,跨平台安全 |
| 4 | 重复行 | ✅ | 渲染生成保证无重复记录(同帧多真值属设计内配对) |
| 5 | 缺失编码 | ⚠️ | 深度 clamp、光流 ±20 px clamp 为截断式编码,需掩码处理(§6.5 坑点 4/5) |
| 6 | 标签标识 | ⚠️ | 无疾病标签;结肠段语义藏在视频名中需解析 |
| 7 | 罕见类分组 | ⚠️ | 降结肠仅 1 段视频,稀有域无法分组验证 |
| 8 | 偏倚评估 | ✅ | 论文与官方页明示 phantom 构成与限制,社区域差距研究充分 |
| 9 | 数据字典 | ✅ | 官方页逐通道编码文档完整(位深/缩放/坐标约定) |
| 10 | 信息性缺失解释 | ✅ | 光流首帧缺失、遮挡语义、vt 覆盖编码均有官方解释 |
| 11 | 设备记录 | ✅ | 内镜型号(CF-HQ190L)、分辨率、帧率、标定文件齐全 |
| 12 | 共线性 | ⚠️ | 深度与法线由同一位姿渲染,存在几何耦合,多任务训练需注意 |
| 13 | 编码映射 | ✅ | 16,384=25 mm 等映射官方明文给出 |
| 14 | 时间戳处理 | ⚠️ | 发布数据无逐帧时间戳;配准工作流的机械臂日志需 poseStartTime 对齐 |
| 15 | 划分建议 | ❌ | 无官方 train/test 划分,社区多套 split 并存(坑点 6) |
| 16 | 泄漏讨论 | ⚠️ | 官方未讨论;帧级泄漏风险需使用者自行规避(§5.3) |
| 17 | 标签分布 | ⚠️ | 逐视频帧数可核对(§3.2),但深度/覆盖分布官方未发布 |
| 18 | 测量偏倚 | ✅ | 真值误差来源单一(配准)且已定量(0.321 mm / 0.159°) |
| 19 | 外部验证建议 | ✅ | 官方定位即 benchmark,社区已有大量外部验证实践 |
| 20 | 版本记录 | ✅ | arXiv v1→v3 版本史、MedIA 正式版、C3VDv2 独立发布,均可追溯 |
| 21 | 预处理脚本 | ✅ | 官方 exampleDataLoader.py + 配准/渲染代码全开源 |
| 22 | 合规要求 | ✅ | CC BY-NC-SA 4.0 明示,开放下载、无注册门槛 |
| 23 | 多模态对齐 | ✅ | 逐帧像素级配对(视频 ↔ 全部真值通道),对齐即数据集核心贡献 |
| 24 | 去标识化 | ✅ | phantom 无人体信息;真实筛查视频无标识文件发布 |
DAIMS 评分:19.5 / 24
评分解读:扣分集中在四点——无官方划分(#15)、官方未讨论泄漏(#16)、截断式数值编码需自行处理(#5)、深度/覆盖分布统计缺失(#17,#7 与 #14 各半扣分由其稀疏域与时间戳语义导致)。作为真值型 phantom 数据集,C3VD 在结构、编码文档、版本管理与合规四个维度的表现远超临床数据集的平均水平;它的"不就绪"几乎全部来自"基准管理"而非"数据质量"——这正是 phantom 数据集的典型画像:几何质量顶格,评测协议留给社区。
对你意味着什么:拿到数据后第一周请做三件事——按 §3.2 表逐视频核对帧数(防下载残缺);把深度/法线/光流解码函数用 16,384=25 mm 锚点写上单元测试(防编码误读);用 domain-shift split + 视频级划分冻结你的评测协议(防泄漏与不可比)。做到这三件事,C3VD 剩余的 19.5/24 里的所有扣分项都不会伤害你的实验结论;做不到,最先坑你的就是 clamp 饱和像素和 split 混用。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| SimCol3D(仿真结肠镜) | SimCol 挑战赛组织方 | 深度估计(挑战赛 split) | L1 0.087 / RMSE 0.126(EndoStreamDepth) | 跨域评测 | C3VD 与 SimCol3D 双域评测成为视频深度模型标配 |
| 真实临床视频(斜位/正位/轴向) | UNC 团队临床数据 | 深度估计 | PPSNet teacher-student 提升 δ1 至 0.89 | 需域适应 | phantom 监督 + 真实自监督组合显著优于纯 phantom |
| C3VD-Raycasting-10k | UCL | 点云配准 | 10,014 对 CT-内镜配准样本 | 派生生态 | C3VD 轨迹 + CT 解剖可派生新任务基准 |
| EndoMapper(真实全流程) | UCL 合作项目 | 深度/位姿定性 | 定性对比为主 | — | 真实数据上表现强 ≠ phantom 上表现强,反之亦然 |
注:仅收录有同行评审支撑的结果;EndoMapper 行为定性证据。来源:EndoStreamDepth、PPSNet、C3VD-Raycasting-10k、Ju et al.。
§8 基准性能与生态
§8.1 排行榜:C3VD 深度估计
⚠️ 下表数字来自不同论文的不同 split 与评测协议(有的含有效掩码、有的报告 zero-shot),不可直接横向比较,仅供了解技术演进脉络;复现对比必须在同一 split 下进行。
| 模型 | δ1 ↑ | AbsRel ↓ | RMSE (mm) ↓ | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|---|
| EndoStreamDepth | 0.952 | 0.085 | — | 2026 | 视频流时序一致性 + 边缘损失 | Li, H., Lu, D., Wang, J., Webster III, R. J., Oguz, I., 2025, arXiv:2512.18159(MIDL 2026). https://arxiv.org/abs/2512.18159 | GitHub 开源 |
| PPSNet(Ours-Student) | 0.89* | 0.049 | 2.06* | 2024 | 近场光照逐像素 shading + teacher-student | Paruchuri, A., Ehrenstein, S., Wang, S., et al., 2024, ECCV. https://doi.org/10.1007/978-3-031-73411-3_27 | ppsnet.github.io |
| ColonCrafter(+ST,zero-shot) | 0.79 | 0.15 | 6.21 | 2026 | Diffusion 视频深度先验 + 真实→仿真风格迁移 | Hardy, E., et al., 2026, PSB. https://psb.stanford.edu/psb-online/proceedings/psb26/hardy.pdf | 论文发布 |
| EndoOmni | 0.77 | 0.15 | 6.91 | 2025 | 大规模内镜预训练 | 见 ColonCrafter 表 1 转引(EndoOmni 原文) | 按原文 |
| LightDepth | — | 0.078 | — | 2024 | 自监督近场光照衰减建模 | Paruchuri, A., et al., 2024, ECCV(同 PPSNet 团队,split 沿用其补充材料) | 按论文 |
| Depth Anything V2 | 0.61 | 0.24 | 8.20 | 2024 | 通用基础模型 zero-shot | Yang, L., et al., 2024(转引自 ColonCrafter 表 1) | 开源 |
注:带 * 的 PPSNet 指标为 δ<1.1 口径与其论文协议(含 UNC 团队评测集组合),与其余行 split 不同。
§8.2 SOTA 总结与选型建议
- 追求榜单精度:视频流方案(EndoStreamDepth)在 C3VD 的时序一致性上领先,适合把视频作为输入的应用。
- 追求跨域稳健:PPSNet / ColonCrafter 路线(光照先验、风格迁移、teacher-student)在 phantom→真实迁移上证据最充分。
- 零训练基线:Depth Anything V2 可直接给出可用的 zero-shot 深度,但与内镜专用模型差距明显(δ1 0.61 vs 0.9+),适合作 baseline 而非终稿。
- 自监督约束场景:LightDepth 证明不依赖真值标签也能达到接近监督的 AbsRel,适合真实临床数据上无标签训练。
选型还可以从"你有什么"倒推。有真值(在 C3VD 上做研究):监督微调一个强 backbone 起步最快,再叠加近场光照先验或时序一致性冲高;只有真实视频(无标签):LightDepth 式自监督 + 真实域训练,然后拿 C3VD 当外部评测集——UCL 工作证明这条反向路线同样能拿高分;要视频级输出(下游重建/导航):直接考虑 ColonCrafter / EndoStreamDepth 一类时序模型,逐帧模型的前后抖动会在重建环节被放大;算力受限:zero-shot 基础模型 + 少量 C3VD 微调(ViT-S 级 24 GB 单卡可跑)是性价比最高的起点。
§8.3 评测协议
社区通行的评测要素:Eigen 指标族(δ1/AbsRel/SqRel/RMSE)+ 有效像素掩码(剔除 100 mm clamp 饱和与近零深度)+ 视频级划分 + bootstrap 置信区间;位姿评测用 EVO 工具包报告 ATE/APE(UCL 协议);视频深度另报时序一致性指标。训练侧普遍 resize 至 518²(C3VD)或 476²(SimCol3D),Adam/AdamW、小 batch(4)为主流配置(来源:EndoStreamDepth 与 ColonCrafter 实现细节)。
一份"协议核对清单"可以避免绝大多数不可比问题:
| 协议要素 | 社区主流做法 | 检查问题 |
|---|---|---|
| 指标族 | δ1(或 δ<1.1)+ AbsRel + SqRel + RMSE | 是否混用 δ1 与 δ<1.1 口径 |
| 有效掩码 | 剔除深度 ≥100 mm 饱和与 <1e-3 近零像素 | 是否报告全像素与掩码后两套数字 |
| 距离单位 | 毫米(RMSE 带 mm 量纲) | 是否误用米/归一化尺度 |
| 划分 | 视频级;domain-shift 或 in-distribution | split 清单是否公开 |
| 置信区间 | 1,000 次 bootstrap 95% CI | 单点数字无 CI 时谨慎比较 |
| 位姿指标 | EVO 的 ATE(对齐后)/ APE | 是否声明对齐方式(Umeyama/-as) |
| 输入分辨率 | 518×518(C3VD) | 分辨率差异会显著影响边缘指标 |
| 训练细节 | AdamW,lr 1e-5/1e-4 量级,batch 4,15K 迭代级 | 复现时对齐迭代量与增强策略 |
§8.4 相关数据集
| 数据集 | 模态 | 真值 | 与 C3VD 的互补关系 |
|---|---|---|---|
| SimCol3D | 仿真结肠镜视频(33 段/37,800 帧) | 渲染深度/位姿 | 跨域泛化对照域 |
| SCARED | 达芬奇 Xi 双目手术视频 | 双目深度 | 手术场景、真实立体真值 |
| EndoMapper | 真实完整结肠镜检查 | 校准 + 重建 | 真实流程级数据 |
| Colon10K | 大规模真实结肠镜 | 部分标注 | 真实域训练源 |
| Hyper-Kvasir | 真实胃肠镜 | 部分标注 | 真实域训练源(UCL 工作用其训练后反测 C3VD) |
| Kvasir-SEG | 真实胃肠息肉图像 | 息肉分割掩码 | 病理语义维度补充(C3VD 无病理) |
| C3VD-Raycasting-10k | CT-内镜点云对(10,014 对) | 配准真值 | 直接派生自 C3VD 的配准任务基准 |
§8.5 关键论文 Top 8
- Bobrow, T. L., Golhar, M., Vijayan, R., Akshintala, V. S., Garcia, J. R., Durr, N. J., 2023, Medical Image Analysis 90:102956. https://doi.org/10.1016/j.media.2023.102956 — 数据集原始论文:GAN+CMA-ES 2D-3D 配准与 C3VD 发布。
- Golhar, M. V., Galeano Fretes, L. S., Ayers, L., Akshintala, V. S., Bobrow, T. L., Durr, N. J., 2025, Scientific Data(C3VDv2). https://doi.org/10.7281/T1/JC64MK — 增强真实感后继版本。
- Paruchuri, A., Ehrenstein, S., Wang, S., Fried, I., Pizer, S. M., Niethammer, M., Sengupta, R., 2024, ECCV. https://doi.org/10.1007/978-3-031-73411-3_27 — PPSNet:近场光照先验 + teacher-student,C3VD SOTA。
- Li, H., Lu, D., Wang, J., Webster III, R. J., Oguz, I., 2025, arXiv:2512.18159(MIDL 2026). https://arxiv.org/abs/2512.18159 — EndoStreamDepth:视频流时序一致深度估计,定义两个社区 split。
- Hardy, E., et al., 2026, PSB. https://psb.stanford.edu/psb-online/proceedings/psb26/hardy.pdf — ColonCrafter:Diffusion 先验 + 风格迁移的 zero-shot 视频深度。
- Jiang, L., Huang, J., Bano, S., Clarkson, M., Mao, Z., Hoque, M., 2025, arXiv:2511.00260 / figshare 30640043. https://arxiv.org/abs/2511.00260 — C3VD-Raycasting-10k:基于 C3VD 轨迹的 CT-内镜点云配准基准。
- Azagra, P., et al., 2023, Scientific Data 10. https://doi.org/10.1038/s41597-023-02564-7 — EndoMapper:真实完整校准结肠镜数据集,常与 C3VD 对比。
- Ju, L., et al., 2026, s11548-026-03669-1(Surgical Endoscopy). https://discovery.ucl.ac.uk/id/eprint/10226086/ — 多模态单目内镜深度与位姿:定义四轨迹 held-out 评测协议。
- Azagra, P., et al., 2023, Scientific Data 10(EndoMapper 数据集论文). https://doi.org/10.1038/s41597-023-02564-7 — 真实全流程校准数据的采集范式参照。
- Paruchuri, A., et al., 2024, ECCV(LightDepth,与 PPSNet 同团队的前序工作). https://arxiv.org/abs/2403.17915 — 自监督近场光照深度估计基线。
§8.6 社区活跃度
C3VD 的生态活跃度由下游使用量背书:arXiv 预印本自 2022 年发布后经历 3 个版本修订,正式版发表于 Medical Image Analysis(医学影像领域顶刊);截至 2026-09,围绕该数据集的深度估计工作覆盖 ECCV 2024、MIDL 2026、PSB 2026 等会议,并已出现直接派生的二级数据集(C3VD-Raycasting-10k)。官方 GitHub 仓库(DurrLab/C3VD)持续提供配准/渲染代码与示例数据加载器,问题反馈渠道为 GitHub Issues;第一作者 Taylor L. Bobrow 的 Google Scholar 总被引 533 次(截至 2026-09 检索,含其全部论文)。数据集本身无官方排行榜,评测生态由论文自报 + 代码开源构成。
对使用者而言,社区生态有三个可操作的观察点:其一,split 共识正在形成——EndoStreamDepth 公开两个 split 定义、UCL 公开四轨迹清单,新论文跟随其一即可获得可比性;其二,版本重心正在迁移——C3VDv2 的发布意味着新项目若需要 diffuse/形变通道应直接起于 v2,但深度估计基准数字仍以 v1 为主,建议双版本目录并存;其三,派生许可先例已立——C3VD-Raycasting-10k 的同许可声明为"如何合规发布 C3VD 派生数据"提供了可直接套用的模板。
§8.7 生态快照
| 资源 | 类型 | 链接 | 推荐理由 |
|---|---|---|---|
| DurrLab/C3VD 仓库 | 代码 | https://github.com/DurrLab/C3VD | 配准/渲染全管线 + exampleDataLoader.py |
| C3VD 官方页 | 数据 | https://durrlab.github.io/C3VD/ | 22 视频逐包下载与编码文档 |
| C3VDv2 官方页 | 数据 | https://durrlab.github.io/C3VDv2 | v2 增强版:diffuse、形变视频、Dataverse 入口 |
| JHU Dataverse | 数据存档 | https://archive.data.jhu.edu | 官方指定备用下载渠道(含 MD5) |
| C3VD-Raycasting-10k | 派生数据 | https://figshare.com/articles/dataset/30640043 | 点云配准新任务基准 |
| PPSNet 项目页 | 代码/模型 | https://ppsnet.github.io/ | ECCV 2024 深度估计 SOTA 复现 |
| EndoStreamDepth 仓库 | 代码 | https://github.com/MedICL-VU/EndoStreamDepth | 视频深度 SOTA + split 定义公开 |
Star 数截至 2026-09 检索,随时间变化请以 GitHub 页面为准。
§9 相关资源与引用
§9.1 官方资源清单
| 资源 | 说明 | 链接 |
|---|---|---|
| 数据集主页 | 编码文档 + 逐视频下载表 + 引用要求 | https://durrlab.github.io/C3VD/ |
| C3VDv2 主页 | 后继版本:目录结构、diffuse 通道、形变视频 | https://durrlab.github.io/C3VDv2/ |
| GitHub 仓库 | 配准/渲染代码、示例序列、数据加载器 | https://github.com/DurrLab/C3VD |
| JHU Dataverse | 官方指定备用存档(含相机标定包) | https://archive.data.jhu.edu |
| 论文(开放摘要页) | Medical Image Analysis 正式版 | https://www.sciencedirect.com/science/article/abs/pii/S1361841523002165 |
| arXiv 预印本 | v1-v3 全版本免费全文 | https://arxiv.org/abs/2206.08903 |
| ColonCrafter 论文 PDF | PSB 2026 会议版全文(含 C3VD 基准表) | https://psb.stanford.edu/psb-online/proceedings/psb26/hardy.pdf |
| EndoStreamDepth 仓库 | MIDL 2026 视频深度 SOTA 与 split 定义 | https://github.com/MedICL-VU/EndoStreamDepth |
| C3VD-Raycasting-10k 主页 | UCL 派生点云配准基准(含许可声明) | https://figshare.com/articles/dataset/30640043 |
| PPSNet 项目页 | ECCV 2024 代码与预训练模型 | https://ppsnet.github.io/ |
§9.2 学习路径
- 第 1 步(建立直觉,半天):读 arXiv:2206.08903 摘要与方法图,抓住"配准产生真值"这一核心机制——理解了 GAN 深度域转换 + CMA-ES 边缘对齐,就知道真值的可信边界在哪里。
- 第 2 步(跑通数据,半天):按 §6.1 下载 1 段视频,完成解码 + 三联可视化(深度/法线/光流),通过 16,384=25 mm 锚点测试。
- 第 3 步(理解真值结构,一天):读官方 README 与
python/exampleDataLoader.py,亲手把位姿 + 深度重投影成 3D 点云并与model.obj目测比对——这一步能提前暴露坑点 1 与坑点 7。 - 第 4 步(冻结评测协议,一天):选定 split(建议 domain-shift),复现 Depth Anything V2 zero-shot 基线并输出 §6.9 指标;把 split 清单与评估脚本入库。
- 第 5 步(开始实验,持续):按 §6.5 八坑点逐项自查后开始自己的模型迭代;每轮实验记录数据版本、split 版本与解码函数版本三者绑定(§6.10)。
§9.3 BibTeX 完整引用
@article{bobrow2023,
title = {Colonoscopy 3D video dataset with paired depth from 2D-3D registration},
author = {Bobrow, Taylor L. and Golhar, Mayank and Vijayan, Rohan and
Akshintala, Venkata S. and Garcia, Juan R. and Durr, Nicholas J.},
journal = {Medical Image Analysis},
volume = {90},
pages = {102956},
year = {2023},
publisher = {Elsevier},
doi = {10.1016/j.media.2023.102956}
}
@article{bobrow2022,
title = {Colonoscopy 3D Video Dataset with Paired Depth from 2D-3D Registration},
author = {Bobrow, Taylor L. and Golhar, Mayank and Vijayan, Rohan and
Akshintala, Venkata S. and Garcia, Juan R. and Durr, Nicholas J.},
journal = {arXiv preprint arXiv:2206.08903},
year = {2022}
}
@article{golhar2025,
title = {C3VDv2 -- Colonoscopy 3D video dataset with enhanced realism},
author = {Golhar, Mayank V. and Galeano Fretes, Lucas Sebastian and Ayers, Loren and
Akshintala, Venkata S. and Bobrow, Taylor L. and Durr, Nicholas J.},
journal = {Scientific Data},
year = {2025},
doi = {10.7281/T1/JC64MK}
}
@misc{jiang2025raycasting,
title = {C3VD-Raycasting-10k: A Clinical Point Cloud Registration Dataset for
Image-Guided Colonoscopy},
author = {Jiang, Linzhe and Huang, Jiayuan and Bano, Sophia and
Clarkson, Matt and Mao, Zhehua and Hoque, Mobarak},
howpublished = {figshare, DOI 10.5522/04/30640043.v1; arXiv:2511.00260},
year = {2025}
}
§9.4 引用指南
- 使用 v1 数据或配准代码:引用
bobrow2023(正式版优先于bobrow2022)。 - 使用 C3VDv2 数据:引用
golhar2025,可同时引用bobrow2023以说明数据集谱系。 - 使用派生数据集:额外引用对应来源(如
jiang2025raycasting)。 - 官方要求:“Please cite our publication if you use code or data from this site.”(官方主页引述)。
- 引用格式核对建议:DOI 解析(https://doi.org/10.1016/j.media.2023.102956)应指向 Medical Image Analysis 90 卷 102956 号文章;Dataverse DOI(10.7281/T1/JC64MK)指向 v2 数据存档,两者不可混用。
§10 AI 使用声明卡
§10.1 AI 模型列表
| 模型 | 用途 | 使用阶段 |
|---|---|---|
| 大语言模型辅助写作(CodeBuddy Code 研究助手) | 资料检索整合、结构化撰写、代码示例编写 | 全流程 |
§10.2 AI 参与范围
本页面的结构设计、初稿撰写、代码示例生成由 AI 辅助完成。AI 的具体参与边界如下:
- 参与:检索结果整合、章节结构与行文、代码示例与解码函数编写、表格转录与格式统一。
- 不参与:数据本体校验(AI 未接触任何 C3VD 原始文件)、临床判断、最终事实裁断。
- 事实核查机制:基于 2026-09-13 执行的 5 轮 WebSearch,全部关键数字(10,015 帧、22 段视频、0.321 mm/0.159° 配准误差、1350×1080、16,384=25 mm、CC BY-NC-SA 4.0、各 SOTA 指标)均逐一对应 FACTS.md 中的来源 URL。
- 已执行纠错:种子档案中的开发机构信息(“达特茅斯 Geisel School of Medicine”)与检索证据不符,已按检索结果更正为约翰斯·霍普金斯大学 Durr Lab,详见 §10.3 与 FACTS.md。
§10.3 输入来源列表
- Bobrow, T. L., et al., 2022-2023, arXiv:2206.08903(v1-v3). https://arxiv.org/abs/2206.08903
- Bobrow, T. L., et al., 2023, Medical Image Analysis 90:102956. https://doi.org/10.1016/j.media.2023.102956
- C3VD 官方数据集主页. https://durrlab.github.io/C3VD/
- C3VDv2 官方数据集主页. https://durrlab.github.io/C3VDv2/
- DurrLab/C3VD GitHub 仓库(README、许可、config.ini 文档). https://github.com/DurrLab/C3VD
- JHU Dataverse:C3VDv2 关联数据与相机标定文件元数据. https://archive.data.jhu.edu
- Golhar, M. V., et al., 2025, Scientific Data(C3VDv2,Semantic Scholar 条目). https://semanticscholar.org/reader/6e3985947893583f24c3c7f51dfbb152a66532e5
- OpenMedLab Awesome-Medical-Dataset C3VD 档案(逐视频帧数表). https://github.com/openmedlab/Awesome-Medical-Dataset/blob/main/resources/C3VD.md
- Paruchuri, A., et al., 2024, ECCV(PPSNet,arXiv:2403.17915). https://arxiv.org/abs/2403.17915
- Li, H., et al., 2025, arXiv:2512.18159(EndoStreamDepth,MIDL 2026). https://arxiv.org/abs/2512.18159
- Hardy, E., et al., 2026, PSB(ColonCrafter). https://psb.stanford.edu/psb-online/proceedings/psb26/hardy.pdf
- Ju, L., et al., 2026, Surgical Endoscopy(UCL 多模态深度与位姿). https://discovery.ucl.ac.uk/id/eprint/10226086/
- Jiang, L., et al., 2025, C3VD-Raycasting-10k(figshare 30640043 / arXiv:2511.00260). https://figshare.com/articles/dataset/30640043
- Taylor L. Bobrow 发布线程(数据集构建过程,2023-09-19). https://twitter.com/tbobrow1
- Semantic Scholar 作者页:Taylor L. Bobrow(引用统计). https://semanticscholar.org/author/Taylor-L.-Bobrow/35650165
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11/SNOMED 映射、流行病学) | 千方病案医学编辑部 | 交叉审核(编码与文献核对) | ✅ 已通过/已验证 |
| §3 数据集规格(规模、编码、设备) | 千方病案医学编辑部 | 交叉审核(对照 FACTS.md 来源) | ✅ 已通过/已验证 |
| §4 DAIMS 数据字典 | 千方病案医学编辑部 | 交叉审核(编码映射逐项核对) | ✅ 已通过/已验证 |
| §5 划分策略与泄漏分析 | 千方病案医学编辑部 | 交叉审核(社区 split 证据核对) | ✅ 已通过/已验证 |
| §6 预处理代码与 8 坑点 | 千方病案医学编辑部 | 交叉审核(官方文档/README 对照) | ✅ 已通过/已验证 |
| §7 DAIMS 24 项与质量评估 | 千方病案医学编辑部 | 交叉审核 | ✅ 已通过/已验证 |
| §8 基准数字与引用 | 千方病案医学编辑部 | 交叉审核(原文表格转录核对) | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
全部章节初稿由 AI 辅助生成,经 §10.4 所列人工校验流程后发布。其中 §6.5 八个坑点的事实内核(编码映射、下载失效提示、位姿约定、split 差异、许可传染)全部溯源至官方文档与同行评审论文,代码示例按官方编码规范编写并通过解码锚点测试(16,384 = 25 mm)。
§10.6 最后人工审核日期
2026-09-05
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- SLAM-3D-Endoscopic — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- jigsaws — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- m2cai16-tool — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- multibypass140 — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- scared — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- hamlyn-datasets — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- endoslam — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- endomapper — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- misaw — 共享标签:医学影像 / 内窥镜影像 / 手术视频
- cad-cap — 共享标签:医学影像 / 内窥镜影像 / 手术视频
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
