信息速览

MultiBypass140 — 多中心胃旁路手术视频基准 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | MultiBypass140 |
| 英文全称 | MultiBypass140: A Multicentric Dataset of Laparoscopic Roux-en-Y Gastric Bypass Surgeries |
| 别名/简称 | MultiBypass140、MBy140、StrasBypass70(斯特拉斯堡子集)、BernBypass70(伯尔尼子集)、Bypass140 |
| 疾病分类(ICD-11) | 5B80 肥胖症(手术适应证,含 2 型糖尿病 5A11 等代谢合并症,手术操作编码详见 §2.1) |
| SNOMED CT | 414916001 Obesity (finding) / 44054006 Diabetes mellitus type 2 / 60621009 Body mass index (observable entity)(详见 §2.2) |
| 数据模态 | 腹腔镜内窥镜手术视频(25 fps)+ 逐帧手术阶段/步骤标注 + 术中不良事件(IAE)标注 |
| AI 任务类型 | 手术阶段识别(12 类)、手术步骤识别(46 类)、阶段+步骤联合多任务识别、术中不良事件检测、跨中心域自适应 |
| 样本总数 | 140 台手术视频(StrasBypass70 与 BernBypass70 各 70 台)/ 约 770,701 个 1 fps 标注帧 |
| 数据大小 | 视频分 5 个 zip 分卷 + 1 个 IAE 标签卷(总体积官方未公布);1 fps 帧共 770,701 帧 |
| 数据格式 | 手术视频(按中心组织为 videos/ 目录)+ pickle 标签文件(1 fps 逐帧标签)+ JPG 抽帧(img{N}.jpg) |
| 许可证 | CC BY-NC-SA 4.0(署名-非商业性使用-相同方式共享 4.0 国际) |
| 访问级别 | 开放(官方 S3 公开直链下载,无需注册,下载即同意非商业研究用途条款) |
| DUO 标签 | NCU(非商业)、GS(地理与机构来源限于法瑞两中心)、PUB(须引用原始论文) |
| 语言 | 英文(文档与标注本体);视频为手术画面 |
| 首发日期 | 2023-12-20 |
| 最后更新 | 2025-09-19(修正 BBP04 帧-标签数量不一致) |
| 发布机构 | CAMMA International(法国 IHU 斯特拉斯堡 / 斯特拉斯堡大学医院 + 瑞士伯尔尼 Inselspital 大学医院) |
| 官方主页 | GitHub:CAMMA-public/MultiBypass140 |
| 下载地址 | CAMMA 公共数据集 S3 |
| DOI | 10.1007/s11548-024-03166-3 |
| 引用次数 | 58+(Semantic Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方 5 折划分、预处理与训练管线齐全可一键运行;扣分项:需自行按 1 fps 抽帧、两中心分辨率不统一、曾出现帧-标签错位需使用修正版分卷 |
| 页面状态 | published |
§0 E-E-A-T 审核声明
本页面由千方病案医学编辑部按 AI-Ready Wikipedia 规范撰写,采用 AI 辅助起草加人工交叉审核流程。
- 医学审核者:千方病案医学编辑部,交叉审核:§2 医学背景(ICD-11 与 SNOMED CT 映射、胃旁路手术临床背景)、§7 偏倚分析。
- 数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
- 审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。MultiBypass140 以 CC BY-NC-SA 4.0 许可发布,限非商业科学研究用途,再分发须采用相同许可并署名引用原始论文;使用 IAE 标注还须引用 Bose et al. 2025。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? MultiBypass140 是全球首个多中心腹腔镜胃旁路手术视频基准数据集:140 台完整的腹腔镜 Roux-en-Y 胃旁路(LRYGB)手术录像,一半来自法国斯特拉斯堡大学医院(StrasBypass70),一半来自瑞士伯尔尼 Inselspital 大学医院(BernBypass70)。两名委员会认证外科医生逐帧标注了 12 个手术阶段(phase)和 46 个手术步骤(step),2025 年又补充了 797 个术中不良事件(IAE)标注。
为什么重要? 以往手术 AI 模型几乎都在单一医院的数据上训练,换一家医院性能就大幅下降。MultiBypass140 用两个中心的真实数据量化了这一"泛化鸿沟":同一模型跨中心评估时阶段识别 F1 从 62.4% 跌到 33.1%。它让"AI 模型能否在不同医院落地"第一次成为可精确测量的科学问题。
我能用它做什么? 训练手术阶段/步骤识别模型(如 TeCNO、MTMS-TCN)、研究跨中心域自适应、开发术中不良事件自动检测、做手术视频预训练表示学习。数据可免费公开下载(CC BY-NC-SA 4.0),官方附带 5 折划分和全套基线训练代码。
§1.1 技术摘要
MultiBypass140 由 CAMMA 联盟(斯特拉斯堡 IHU,Nicolas Padoy 团队牵头)于 2023 年 12 月 20 日发布,配套论文发表于国际计算机辅助放射与外科学会期刊 IJCARS(Lavanchy & Ramesh et al., 2024)。数据集将斯特拉斯堡原有的单中心 Bypass40 扩展为 70 台(StrasBypass70),并联合伯尔尼新增 70 台(BernBypass70),共 140 台 LRYGB 手术视频,按 25 fps 录制,经 OoBNet 模型自动涂黑体外帧并人工复核完成脱敏。两名临床经验均超过 10 年的委员会认证外科医生基于 MOSaiC 网络标注平台,按照 LRYGB 手术本体论完成两级粒度全量标注,阶段层面 Cohen’s kappa 达 96%,步骤层面达 81%。官方以 1 fps 抽帧组织标签(共约 770,701 帧),提供训练 80 / 验证 20 / 测试 40 的官方划分及 5 折交叉验证元数据,并开源了 CNN、CNN+LSTM、TeCNO、MTMS-TCN 四族基线的完整训练管线。论文围绕 7 组实验系统量化了单中心训练、联合训练与跨中心评估下的性能差异,确立了"多中心数据是手术 AI 泛化前提"这一核心结论。2025 年 4 月起,数据集进一步并入 5 类、共 797 个术中不良事件标注(含 1-5 级严重度),将用途扩展至手术安全监测。
§1.2 战略价值
维度一:跨中心泛化的"标准试验场"。 手术流程识别模型从实验室走向真实多院区部署时,最大的障碍是不同医院在器械、光照、术者习惯与手术流程上的系统性差异。MultiBypass140 是首个把这种差异"内置"为数据集设计目标的公开基准——两中心在 Petersen 间隙关闭(99% vs 16%)、系膜缺损关闭(100% vs 21%)、大网膜离断(94% vs 36%)等关键流程上存在显著差异(p<0.01),且两中心视频分辨率、色彩特性均不同。任何声称"泛化能力强"的手术流程模型都可以在此接受跨中心压力测试,这使它成为域自适应、测试时适应、联邦学习等方向论文的标准外部验证集。
维度二:从"流程理解"到"手术安全"的任务升级跳板。 2025 年并入的 IAE 标注(出血、机械损伤、热损伤、缺血性损伤、吻合口闭合不良 5 类,797 个事件,含 1-5 级严重度)使该数据集成为唯一同时具备"阶段 + 步骤 + 不良事件"三级标注的胃旁路视频资源。研究者可以在同一数据上对齐"模型认为手术进行到哪一步"与"不良事件实际发生在哪一步",训练安全监测系统或研究事件与流程的时序因果关系——这是 Cholec80、AutoLaparo 等流程识别数据集不具备的能力。
维度三:手术视频预训练的高质量监督源。 12+46 两级层级本体、96%/81% 的高标注一致性、约 77 万帧的规模,使其成为视频-语言预训练与手术基础模型(Surgical Foundation Model)时代理想的下游评测集——2025 年以来 HyperVLP、TASOT、Surg-R1 等新一代模型均将其列为三大手术基准之一(与 Cholec80、AutoLaparo 并列)。
§1.3 同类数据集横向对比
| 数据集 | 手术类型 | 规模 | 中心数 | 标注粒度 | 差异化定位 |
|---|---|---|---|---|---|
| MultiBypass140 | 腹腔镜 Roux-en-Y 胃旁路 | 140 视频 / 约 770,701 帧(1 fps) | 2(法/瑞) | 12 阶段 + 46 步骤 + 5 类 IAE | 唯一多中心 + 多粒度 + 不良事件三合一 |
| Cholec80 | 腹腔镜胆囊切除 | 80 视频 | 1 | 7 阶段 + 器械 | 阶段识别经典基准,单中心 |
| CholecT50 | 腹腔镜胆囊切除 | 50 视频 | 1 | 7 阶段 + 三元组动作 + 器械框 | 动作三元组任务标杆,单中心 |
| AutoLaparo | 腹腔镜子宫切除术 | 21 视频 | 1 | 7 阶段 | 妇科流程识别,规模小 |
| Bypass40 | 腹腔镜胃旁路 | 40 视频 | 1 | 11 阶段 + 45 步骤 | MultiBypass140 的直接前代(StrasBypass70 的子集) |
| HeiChole | 腹腔镜胆囊切除 | 33 视频 | 3(德) | 7 阶段 + 动作 + 器械 + 技能 | 早期多中心尝试,规模与标注粒度有限 |
(对比信息来源:Lavanchy et al., 2024 与各数据集官方文献。)
§1.4 版本时间轴
| 版本节点 | 日期 | 关键变化 |
|---|---|---|
| arXiv 预印本 | 2023-12 | 论文预印本 arXiv:2312.11250 发布 |
| 首次发布 | 2023-12-20 | 数据集 + 5 折划分 + 基线管线开源(12 阶段 + 46 步骤) |
| IJCARS 正式版 | 2024-05-18(在线)/ 2024-11(刊期) | 论文刊于 IJCARS 19(11):2249-2257 |
| IAE 标注并入 | 2025-04-29 | 新增 multibypass06 卷:5 类 IAE + 严重度标注 |
| IAE 标签修正 | 2025-09-03 | 修正 IAE 标签中手术 ID 的不一致 |
| 帧标签修正 | 2025-09-19 | 修正 BBP04 视频帧数与标签数不一致,multibypass01 更新为 multibypass01_corrected.zip |
§1.5 典型应用场景
- 手术阶段/步骤联合识别:以 MTMS-TCN 等多任务时序卷积网络为基线,训练同时输出 12 阶段与 46 步骤的实时流程追踪系统。
- 跨中心泛化与域自适应研究:官方 7 组跨中心实验协议直接可用,用于测试域自适应、测试时训练、联邦学习等方法的真实增益。
- 术中不良事件检测与安全监测:利用 IAE 标注(5 类 + 严重度)训练事件检测器,研究事件在流程中的时序分布(如 major event 后事件密度上升)。
- 手术效率与流程差异分析:两中心手术时长(111±33 vs 73±20 分钟)与流程差异本身即是手术技术比较研究素材(如 Lavanchy et al., Surg Endosc 2025 的 SEVERE 评分分析)。
- 手术视频预训练与零样本评测:作为 SurgVLP/HecVL/PeskaVLP 等视频-语言预训练模型的零样本下游基准,评估手术基础模型的跨术式迁移能力。
§2 医学背景
§2.1 疾病与手术的 ICD-11 映射
MultiBypass140 全部 140 台手术均为腹腔镜 Roux-en-Y 胃旁路术(LRYGB)。该手术是减重代谢外科的代表性术式,主要适应证为肥胖症及其代谢合并症。ICD-11 主要对疾病诊断编码,手术操作本身通常按各国操作分类编码,因此病历中一般以手术适应证为主编码:
| 标签/概念 | ICD-11 编码 | ICD-11 中文名称 | 说明 |
|---|---|---|---|
| 肥胖症(主要适应证) | 5B80 | 肥胖症(Generalized obesity) | BMI 显著升高相关疾病,LRYGB 的首要适应证 |
| 2 型糖尿病(代谢合并症) | 5A11 | 2 型糖尿病 | 代谢手术可使部分患者糖尿病缓解 |
| 手术操作(LRYGB) | —(各国操作分类) | 腹腔镜 Roux-en-Y 胃旁路术 | ICD-11 MMS 不直接编码术式,病案以国家操作分类(如美国 CPT 43644)编码 |
(来源:WHO ICD-11 浏览器 及减重代谢外科编码惯例。)
§2.2 SNOMED CT 映射
| 标签/概念 | SNOMED CT 码 | 术语名称 | 备注 |
|---|---|---|---|
| 肥胖症 | 414916001 | Obesity (finding) | 手术核心适应证 |
| 2 型糖尿病 | 44054006 | Diabetes mellitus type 2 (disorder) | 常见代谢合并症 |
| 体重指数 | 60621009 | Body mass index (observable entity) | 手术资格判定(通常 BMI≥40 或 ≥35 伴合并症)的关键观测 |
§2.3 疾病与手术简介
肥胖症是以体内脂肪过度蓄积为特征的慢性代谢性疾病,与 2 型糖尿病、高血压、睡眠呼吸暂停、非酒精性脂肪肝等疾病密切相关。当生活方式干预与药物治疗效果不佳时,减重代谢手术是目前维持长期减重与代谢改善最有效的治疗手段。腹腔镜 Roux-en-Y 胃旁路术(LRYGB)是该领域经典术式:先在胃上部用切割闭合器建立一个约 15-30 mL 的小胃囊,再将空肠上提与小胃囊吻合(胃空肠吻合),形成"食物袢",随后在距 Treitz 韧带一定距离处横断空肠并构建 Y 形肠-肠吻合,使食物绕过大部分胃与十二指肠,兼具限制摄入与减少吸收双重机制,并通过胃肠道激素调节改善胰岛素敏感性。手术流程通常包括 Preparation(准备)、Gastric pouch creation(胃囊制作)、Gastrojejunal anastomosis(胃空肠吻合)、Jejunojejunal anastomosis(空肠空肠吻合)等 12 个阶段、46 个细粒度步骤,全程约 60-180 分钟。术中可能出现出血、机械损伤、热损伤等不良事件,需要在流程中及时识别与处理——这正是 MultiBypass140 标注体系对应的临床实体。
流行病学:全球肥胖症患病率持续攀升,减重手术量逐年增长,其中腹腔镜胃旁路与袖状胃切除术是最主流的两种术式。LRYGB 技术成熟,腹腔镜入路自 20 世纪 90 年代发展至今已成为标准入路;但不同中心在吻合方式、系膜缺损关闭、网膜处理等技术细节上存在长期形成的"术式方言"差异,MultiBypass140 的两中心工作流统计(见 §7.1)正是这种差异的首次大规模定量呈现。
§2.3b LRYGB 标注本体的 12 个阶段(临床视角)
数据集标注本体的 12 个阶段(P1-P12)对应 LRYGB 的完整临床流程。掌握每个阶段的手术学含义,有助于理解标签的时序结构与两中心差异的来源:
| 阶段 ID | 阶段名称(官方英文) | 手术学内容 | 两中心差异要点 |
|---|---|---|---|
| P1 | Preparation | 探查腹腔、放置穿刺器与牵开器 | 基础流程,两中心均有 |
| P2 | Gastric pouch creation | 脂肪垫/小弯游离、横向与纵向切割闭合、胃囊加固 | 核心步骤,胃囊大小策略可有差异 |
| P3 | Omentum division | 暴露并离断大网膜、松解粘连 | 斯特拉斯堡 94% 手术执行、伯尔尼仅 36%(p<0.01) |
| P4 | Gastrojejunal anastomosis | Treitz 韧带识别、胆袢测量、胃空肠闭合吻合 | 吻合方式(直线/圆形吻合器)存在术者差异 |
| P5 | Anastomosis test | 注入染料(亚甲蓝/吲哚菁绿)目检吻合口完整性 | 常规质控步骤 |
| P6 | Jejunal separation | 横断空肠、分离胆汁袢与食物袢 | — |
| P7 | Petersen space closure | 关闭 Petersen 间隙(防内疝) | 斯特拉斯堡 99% vs 伯尔尼 16%(p<0.01),最大流程差异之一 |
| P8 | Jejunojejunal anastomosis | 空肠-空肠闭合吻合及加固 | — |
| P9 | Mesenteric defect closure | 关闭系膜缺损、固定吻合口 | 斯特拉斯堡 100% vs 伯尔尼 21%(p<0.01) |
| P10 | Cleaning & coagulation | 止血、冲洗与吸引 | — |
| P11 | Disassembling | 缝合腹壁、拔除穿刺器、放置引流、取出标本 | 收尾流程 |
| P12 | Other intervention | 术中发现的其他干预(如小肠损伤缝合 S43) | 罕见阶段,长尾标签 |
(阶段定义来源:Lavanchy et al., 2024, Table 1;差异统计来源:Lavanchy et al., Surg Endosc 2025。)
§2.4 临床任务定义
| 任务层级 | 数据集对应 | 临床意义 |
|---|---|---|
| 手术阶段识别(phase recognition) | 12 类逐帧阶段标签 | 实时掌握手术全局进度,支撑手术室调度、进度看板与术后复盘 |
| 手术步骤识别(step recognition) | 46 类逐帧步骤标签 | 细粒度动作单元定位,支撑器械需求预测与操作质量分析 |
| 阶段+步骤联合多任务识别 | 多任务标签(pickle) | 单模型两级输出,更贴近"主刀直觉"的工作流理解 |
| 术中不良事件(IAE)检测 | 5 类事件 + 0-5 级严重度 | 术中安全预警、事件漏检回顾、术者培训反馈 |
| 跨中心泛化评估 | 双中心子集 + 官方 7 组实验协议 | 量化模型在新医院落地的性能衰减,是临床转化的前提验证 |
§2.5 患者人群
| 属性 | StrasBypass70(法国) | BernBypass70(瑞士) |
|---|---|---|
| 来源机构 | University Hospital of Strasbourg | Inselspital, Bern University Hospital |
| 手术类型 | 腹腔镜 Roux-en-Y 胃旁路(LRYGB) | 腹腔镜 Roux-en-Y 胃旁路(LRYGB) |
| 手术数量 | 70 台 | 70 台 |
| 平均视频时长 | 111±33 分钟(41-178) | 73±20 分钟(37-145) |
| 视频分辨率 | 原始 854×480 或 1920×1080,统一剪辑至 854×480 | 720×576 |
| 每台手术平均活动数 | 约 10 阶段 / 33 步骤 | 约 8 阶段 / 27 步骤 |
| 患者年龄/BMI/性别分布 | 官方未公布 | 官方未公布 |
(来源:Lavanchy et al., 2024;Lavanchy et al., Surg Endosc 2025。)
§2.6 临床价值
对临床而言,MultiBypass140 支撑的流程识别与事件检测技术指向三个落地场景:其一,智能手术室——实时阶段识别可自动记录手术时长结构、提示下一步所需器械、生成结构化手术报告草稿,减轻文书负担;其二,手术安全——IAE 检测模型可对术中出血等事件进行自动计数与分级,帮助科室建立"无责复盘"的质量改进闭环(研究中 85% 的不良事件在术中被完全纠正,但主要事件前后的事件密度差异提示流程风险窗口的存在);其三,培训与资质评估——两中心流程差异的量化本身揭示了同一术式的合理技术变体范围,为年轻术者理解"教科书流程 vs 现实变体"提供参照,也是跨中心 AI 模型准入测试的方法学模板。
§2.7 金标准参考
| 维度 | 内容 |
|---|---|
| 标注对象 | 140 台 LRYGB 手术视频的全部 1 fps 帧 |
| 标注方式 | 人工逐帧标注(MOSaiC 网络协作标注平台),两级本体(12 阶段 + 46 步骤);IAE 由专门研究另行标注后并入 |
| 标注者 | 2 名委员会认证外科医生,临床经验均超过 10 年,具手术视频分析经验 |
| 一致性 | Cohen’s kappa:阶段 96%、步骤 81%(本体层面一致性,见 Lavanchy et al., 2023 本体论文) |
| 标注性质 | 全量人工标注(非弱监督),出厂即带官方 train/val/test 划分与 5 折交叉验证元数据 |
| 脱敏 | OoBNet 自动检测并涂黑体外帧 + 人工逐条复核 |
§3 数据集规格
§3.0 版本抉择矩阵
MultiBypass140 的"版本"体现为下载分卷与更新状态的选择:
| 你的需求 | 推荐版本 | 构成 | 理由 |
|---|---|---|---|
| 只做阶段/步骤识别 | multibypass01_corrected.zip + multibypass02-05.zip(5 卷) | 视频 + 逐帧 phase/step 标签 | 01 卷必须用 corrected 版,否则 BBP04 帧-标签错位 |
| 做不良事件检测 | 上述 5 卷 + multibypass06_corrected.zip | 追加 IAE 标签(_with_iae.pickle) | IAE 须使用 2025-09-03 后修正版,注意手术 ID 对齐 |
| 复现论文 7 组实验 | 全部 6 卷 + GitHub 仓库代码 | 含 5 折划分元数据与基线管线 | 划分文件随仓库 labels/ 目录分发 |
| 快速概览标注结构 | 仅 GitHub 仓库(约 MB 级) | 标签 pickle + visualise_labels.ipynb | 无需下载视频即可理解本体与划分 |
§3.1 模态详情
腹腔镜视频:140 台完整 LRYGB 手术的腹腔内窥镜录像,25 fps 录制。斯特拉斯堡中心原始分辨率为 854×480 或 1920×1080,发布版统一剪辑至 854×480;伯尔尼中心为 720×576。视频按中心组织为 BernBypass70/videos/ 与 StrasBypass70/videos/ 两个目录,以 5 个 zip 分卷分发。全部体外画面(可能暴露患者或人员身份的镜头)已由 OoBNet 模型自动涂黑并经人工复核,因此数据集可直接用于研究。
1 fps 帧序列:官方标签以 1 fps 抽帧为时间基准(img1.jpg, img2.jpg, ...),两中心合计约 770,701 帧(StrasBypass70 464,794 帧、BernBypass70 305,907 帧)。视频本体仍为 25 fps,需要更高时间分辨率时须自行抽帧并做标签对齐(见坑点 8)。
层级标注(pickle):每帧一个阶段 ID(12 类)与一个步骤 ID(46 类),以 Python pickle 文件按划分存放(1fps_100_X.pickle 等,结构见 §4)。
IAE 标注:5 类术中不良事件(bleeding、mechanical injury、thermal injury、ischemic injury、insufficient closure of anastomosis),严重度 0-5(0 为"无事件"),以 _with_iae.pickle 变体文件与独立分卷 multibypass06_corrected.zip 提供。
§3.2 按子集与划分的样本数
| 数据集 | 子集 | 视频数 | 时长范围(分钟) | 平均时长(分钟) | 1 fps 总帧数 |
|---|---|---|---|---|---|
| StrasBypass70 | train | 40 | 41 / 171 | 106±32 | 253,913 |
| StrasBypass70 | val | 10 | 78 / 176 | 121±33 | 72,555 |
| StrasBypass70 | test | 20 | 63 / 178 | 115±32 | 138,326 |
| BernBypass70 | train | 40 | 37 / 114 | 69±19 | 166,431 |
| BernBypass70 | val | 10 | 54 / 116 | 77±20 | 46,497 |
| BernBypass70 | test | 20 | 52 / 145 | 77±24 | 92,979 |
| MultiBypass140 合计 | train / val / test | 80 / 20 / 40 | — | 88 / 99 / 96 | 420,344 / 119,052 / 231,305 |
(来源:Lavanchy et al., 2024, Table 7。)
§3.3 数据格式
| 内容 | 格式 | 说明 |
|---|---|---|
| 手术视频 | 视频文件(分 5 个 zip 分卷分发) | 25 fps;按中心目录组织 |
| 1 fps 帧 | JPG(img{N}.jpg) |
由官方 util/extract_frames.py 从视频抽取 |
| 阶段/步骤标签 | pickle(.pickle) |
按中心/划分存放;文件名含 1fps 前缀;训练集文件名含 100(如 1fps_100_0.pickle) |
| IAE 标签 | pickle(*_with_iae.pickle) |
与 phase/step 标签同构,另含事件与严重度字段 |
| 划分元数据 | 仓库内 labels/ 目录 | 官方 5 折交叉验证(train/val/test) |
| 标注可视化 | Jupyter notebook | 仓库根目录 visualise_labels.ipynb |
§3.4 存储规模
官方未公布数据集总体积。可参考的规模锚点:140 段完整手术视频(合计约 179 小时,由平均时长 92±33 分钟 × 140 台估算)、1 fps 抽帧后约 770,701 张 JPG。建议预留 1 TB 级存储用于"原始分卷 + 解压视频 + 1 fps 帧 + 训练缓存"的完整工作区,并以 df -h 实测为准。
§3.5 标注方式
| 标注类型 | 方式 | 说明 |
|---|---|---|
| 阶段/步骤 | 人工全量标注 | 两名委员会认证外科医生(>10 年经验)基于 MOSaiC 平台逐帧标注,非自动、非弱监督 |
| IAE | 人工事件级标注 | 由 IAE 研究专项标注后于 2025-04 并入;类别 5 种,严重度 0-5 |
| 脱敏 | 模型辅助 + 人工复核 | OoBNet 自动涂黑体外帧,全部结果人工逐条复核 |
§3.6 标注者资质与一致性
标注由两名委员会认证(board-certified)外科医生完成,二人均具有 10 年以上临床经验与丰富的手术视频分析经验。标注所依据的 LRYGB 本体论经多中心专家共识验证(Lavanchy et al., Surg Endosc 2023),两人独立试标注的一致性为:阶段 Cohen’s kappa 96%,步骤 81%。步骤层面一致性低于阶段层面,反映细粒度步骤边界(如剥离与闭合器的切换瞬间)天然存在观察者间变异——复现研究时应对步骤级结果保留更大的测量误差预期。
§3.7 采集周期
官方论文与仓库未公布视频的具体采集年份区间。可确认的相关时间锚点:伯尔尼中心的伦理批准编号为 2021-01666(Canton of Bern 伦理委员会),斯特拉斯堡 Bypass40 前代数据发表于 2021 年。数据集于 2023-12-20 首次公开发布。
§3.8 地域覆盖
| 中心 | 国家 | 机构 | 子集名 | 视频数 |
|---|---|---|---|---|
| 斯特拉斯堡 | 法国 | University Hospital of Strasbourg | StrasBypass70(SBP01-SBP70) | 70 |
| 伯尔尼 | 瑞士 | Inselspital, Bern University Hospital | BernBypass70(BBP01-BBP70) | 70 |
§3.9 设备规格
官方未公布腹腔镜主机、镜头型号等设备元数据。已知成像属性汇总:
| 成像属性 | StrasBypass70 | BernBypass70 |
|---|---|---|
| 录制帧率 | 25 fps | 25 fps |
| 原始分辨率 | 854×480 或 1920×1080 | 720×576 |
| 发布版分辨率 | 统一剪辑至 854×480 | 720×576(未统一) |
| 标签时间基准 | 1 fps 抽帧(约 464,794 帧) | 1 fps 抽帧(约 305,907 帧) |
| 脱敏处理 | OoBNet 涂黑体外帧 + 人工复核 | OoBNet 涂黑体外帧 + 人工复核 |
论文将"不同器械、光照、患者体型与术者习惯"列为两中心视觉分布差异的来源,设备异质性是数据集设计上刻意保留的现实变量(见 §7.3 泛化性)。设备型号层面无官方记录,无法做"按镜头型号分层"的分析。
§3.10 深度溯源链
原始手术(两中心常规临床录像)→ 25 fps 录像归档 → OoBNet 脱敏 + 人工复核 → LRYGB 本体论(Lavanchy et al. 2023)→ MOSaiC 平台双医师标注 → 一致性核验(kappa 96%/81%)→ 1 fps 标签序列化(pickle)→ 5 折划分打包 → CAMMA 公共 S3 发布(2023-12-20)→ IAE 并入与两轮修正(2025-04 至 2025-09)→ 配套论文 IJCARS 2024(DOI 10.1007/s11548-024-03166-3)。
§4 数据结构
§4.0 目录树
按官方 README 下载、解压并完成抽帧与软链接后,工作区结构如下:
MBy140/
├── datasets/
│ └── MultiBypass140/
│ ├── BernBypass70/
│ │ ├── videos/ # BBP01-BBP70 手术视频(multibypass01-05 分卷解压)
│ │ └── frames/ # 自行按 1 fps 抽帧生成(img1.jpg, img2.jpg, ...)
│ │ ├── BBP01/
│ │ ├── BBP02/
│ │ └── ...
│ └── StrasBypass70/
│ ├── videos/ # SBP01-SBP70 手术视频
│ └── frames/
│ ├── SBP01/
│ └── ...
├── labels/
│ ├── bern/labels_by70_splits/
│ │ ├── frames -> ../../datasets/BernBypass70/frames/ # symlink
│ │ └── labels/
│ │ ├── train/
│ │ │ ├── 1fps_100_0.pickle
│ │ │ ├── 1fps_100_0_with_iae.pickle
│ │ │ └── ...
│ │ ├── val/
│ │ │ ├── 1fps_0.pickle
│ │ │ ├── 1fps_0_with_iae.pickle
│ │ │ └── ...
│ │ └── test/
│ │ ├── 1fps_0.pickle
│ │ └── ...
│ └── strasbourg/labels_by70_splits/
│ ├── frames -> ../../datasets/StrasBypass70/frames/
│ └── labels/
│ ├── train/ ├── val/ └── test/
├── loaders/ # 官方 PyTorch Dataset/DataLoader
├── main_cnn.py # 阶段 1:ResNet-50 空间特征训练
├── main_temp.py # 阶段 2:MS-TCN 时序模型训练
├── util/extract_frames.py
├── visualise_labels.ipynb
└── tables/ # 阶段/步骤本体映射表
要点:datasets/ 存视频与帧,labels/ 存标签与划分元数据,二者通过 frames 软链接关联;IAE 标签文件(*_with_iae.pickle)需复制到对应 labels/center/labels_by70_splits/labels/{train,val,test}/ 目录。
§4.1 DAIMS 数据字典
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| surgery_id | Text | 手术唯一标识,前缀 SBP=斯特拉斯堡、BBP=伯尔尼 | SBP01、BBP70 | 分中心分析、划分控制 | 无(机构分配) | 无 | SBP01-SBP70 / BBP01-BBP70 |
| frame_index | Integer | 1 fps 帧序号(自手术视频起点) | 1、2、3… | 时间对齐、窗口切分 | 1 fps 抽帧舍入 | 无 | 1 至该视频总帧数 |
| img_file | Text | 帧文件名 | img123.jpg | 图像加载 | 无 | 无 | img{N}.jpg |
| phase_id | Integer/Categorical | 手术阶段标签(12 类) | 4 = Gastrojejunal anastomosis | 主任务标签 | 边界 ±数秒(kappa 96%) | 无 | 1-12 |
| step_id | Integer/Categorical | 手术步骤标签(46 类) | 18 = Gastrojejunal stapling | 细粒度任务标签 | 边界 ±秒级(kappa 81%) | 0 = Null step(无操作) | 0-45 |
| iae_category | Text/Categorical | 术中不良事件类别(5 类,随 IAE 卷提供) | bleeding | 事件检测任务 | 事件识别主观性 | 0/None = 无 IAE | 5 类 |
| severity | Integer | IAE 严重度分级 | 2 | 事件分级任务 | 分级主观性 | 0 = 无 IAE | 0-5 |
| split | Text | 官方划分归属 | train / val / test | 复现官方协议 | 无 | 无 | train / val / test |
| fold | Integer | 5 折交叉验证折号 | 0-4 | 交叉验证 | 无 | 无 | 0-4 |
§4.2 标签分布
阶段/步骤分布在两中心间系统性不均衡(这也正是数据集的研究价值所在):
- 流程差异显著:Petersen space closure 在斯特拉斯堡 99% 的手术中出现、伯尔尼仅 16%;mesenteric defect closure 为 100% vs 21%;omentum division 为 94% vs 36%(均 p<0.01,Lavanchy et al., Surg Endosc 2025)。
- 时长结构差异:斯特拉斯堡平均每台手术约 10 个阶段、33 个步骤,伯尔尼约 8 个阶段、27 个步骤;斯特拉斯堡手术平均长 38 分钟。
- 长尾结构:46 个步骤中相当一部分(如 S43 Suture of small bowel lesion、各加固步骤)在全部 140 台手术中出现频次很低;IAE 5 类中 4 类占比 ≤2%(797 个事件中 thermal 12、ischemic 6、insufficient closure 4)。
IAE 事件构成明细(共 797 个事件,Lavanchy et al., Surg Endosc 2025):
| IAE 类别 | 事件数 | 占比 | 建模提示 |
|---|---|---|---|
| Bleeding(出血) | 658 | 83% | 主类,检测器的主体信号 |
| Mechanical injury(机械损伤) | 117 | 15% | 次类 |
| Thermal injury(热损伤) | 12 | 2% | 长尾,需分层评估 |
| Ischemic injury(缺血性损伤) | 6 | 1% | 极稀有 |
| Insufficient closure of anastomosis(吻合口闭合不良) | 4 | 1% | 极稀有 |
每台手术平均 5.7±3.2 个事件;85%(675/797)的事件在术中被完全纠正;25%(35/140)的手术含 1 个 major event,12%(17/140)含多个——主要事件之后的事件密度显著高于之前(1.3 vs 0.8,p<0.01),提示"事件聚集窗口"是安全监测模型的关键设计考量。阶段/步骤的逐类精确计数官方以论文图(phase/step occurrence 图)形式发布,未提供机器可读计数表;建议用 visualise_labels.ipynb 在本地统计后建模。
§4.3 关键统计
- 总视频数 140(80 train / 20 val / 40 test),总 1 fps 帧数约 770,701(train 420,344 / val 119,052 / test 231,305)。
- 视频时长:全体 92±33 分钟;斯特拉斯堡 111±33 分钟;伯尔尼 73±20 分钟。
- 标注一致性:阶段 kappa 96%,步骤 kappa 81%。
- IAE:797 个事件,平均每台 5.7±3.2 个;35/140 台手术含 1 个 major event,17/140 台含多个;85%(675/797)术中被完全纠正。
- 事件构成:bleeding 658(83%)、mechanical injury 117(15%)、thermal injury 12(2%)、ischemic injury 6(1%)、insufficient closure of anastomosis 4(1%)。
§4.4 数据层级
MultiBypass140(数据集)
└── Center(中心:StrasBypass70 / BernBypass70)
└── Surgery(手术:SBP01-SBP70 / BBP01-BBP70,共 140 台,每台对应 1 台手术 1 名患者)
└── Video(视频文件,25 fps)
└── Frame @1fps(标注帧,img{N}.jpg,约 770,701 帧)
├── Phase(12 类,每帧恰 1 个)
├── Step(46 类,每帧恰 1 个,0 为 Null step)
└── IAE(事件级,每台手术 0-N 个事件,5 类 × 严重度 0-5)
注意:层级是"手术 → 帧 → 标签",IAE 是事件级(一段区间)而非帧级标签,与逐帧标签处于不同粒度。
§4.5 缺失值与信息性缺失
| 情形 | 表现 | 处理建议 |
|---|---|---|
| 无操作帧 | step_id = 0(Null step),阶段内器械调整、等待间隙 | 评估时可保留或按协议剔除,须与基线口径一致 |
| 无 IAE 手术 | severity = 0 / 无事件记录 | 建模时视为负样本,而非缺失 |
| 体外涂黑帧 | 脱敏导致首尾或偶发帧为黑帧 | 入模前可按亮度阈值过滤,避免黑帧污染特征 |
| 未公布的患者人口学 | 年龄/BMI/性别分布缺失 | 无法做患者级分层分析,见 §7.5 公平性限制 |
| 官方未公布数据总体积 | — | 以本地下载实测为准 |
§5 划分与使用建议
§5.1 官方划分
官方按视频时长将每个中心分别切分为训练 40 / 验证 10 / 测试 20 台,合计 train 80 / val 20 / test 40;划分元数据随仓库 labels/ 目录分发,并同步提供 5 折交叉验证版本(train/val/test 的 5 组组合)。官方基线与论文全部 7 组实验均基于该划分,复现研究应优先采用。
§5.2 社区惯例划分
后续视频-语言预训练工作(如 HyperVLP、TASOT 等)通常将 MultiBypass140 作为跨术式零样本下游评测集:在 Cholec80/CholecT45 等外部数据上预训练,分别在 StrasBypass70 与 BernBypass70 的官方测试划分上报告 Acc/F1(HyperVLP, arXiv 2606.31245;TASOT, arXiv 2602.24138)。做此类迁移研究时须保持官方测试视频不变。
§5.3 划分策略与泄漏风险(重点)
- 帧级随机划分 = 致命泄漏:相邻帧几乎相同,任何帧级 shuffle 都会把测试帧的"答案"泄入训练集。必须以手术(视频)为单位划分——官方划分即如此。
- 中心维度是实验变量而非噪声:若研究目标是跨中心泛化,"一中心全进训练、另一中心全进测试"正是官方实验 (4)(5) 的设计;反之若目标是同分布性能,应使用联合划分并报告两中心分项。混用两种口径会导致结论不可比(见坑点 4)。
- IAE 标签的二重泄漏:IAE 事件与手术时长、流程强相关;将 IAE 相关信息纳入特征后再预测流程,等于让标签互相当特征。事件检测与流程识别任务须分设特征集。
- 预处理泄漏:在 train+val+test 全体上统计归一化参数或做聚类,会将测试分布信息泄入训练。归一化统计只允许来自 train。
- 同患者重复手术:数据集未提供患者跨手术重复记录的证据(每台手术对应唯一 ID),但若将其与 Bypass40 等前代数据合并使用,注意 StrasBypass70 的 40 台即 Bypass40——合并时勿将同一手术同时作为"旧数据训练集"与"新数据测试集"。
§5.4 交叉验证建议
优先直接使用官方 5 折划分(与基线可比);自定 CV 时建议按"中心分层 + 视频为单位"的分组 5 折,保证每折内两中心比例稳定,并固定随机种子报告跨折均值±标准差(官方基线即按 5 折报 ±std)。
§5.5 外部验证建议
在 MultiBypass140 上训练的流程识别模型,外部验证的自然选择包括:Cholec80(异术式跨域)、AutoLaparo(异术式跨域)、Bypass40(同术式同中心前代,仅作 sanity check,注意与 StrasBypass70 重叠)、以及自行接入的新中心数据。反向路径(在 Cholec80 训练、MultiBypass140 零样本测试)已成为视频-语言预训练论文的通行协议。
§6 AI 就绪指南 ⭐
§6.0 云端快速启动
数据集为普通 zip 分卷 + 视频文件,无专用云镜像。推荐在任意 GPU 主机(≥1 张 24 GB 显存卡)上按 §6.2 直接 wget 下载。下载耗时主要受 S3 带宽限制,5 个分卷可并行 wget;磁盘建议预留 1 TB(含帧缓存)。
§6.1 快速上手(含目录结构注释)
# ============================================================
# 最小可用路径:加载官方标签 + 统计类别分布(无需下载视频)
# 目录结构预期(data_root 拼接关系):
# $MBy140/ ← git clone 的仓库根
# ├── labels/{strasbourg,bern}/labels_by70_splits/
# │ ├── frames -> <你解压并抽帧后的帧目录> ← 软链接,见 §4.0
# │ └── labels/{train,val,test}/*.pickle ← 官方划分标签
# ├── loaders/ ← 官方 PyTorch Dataset
# └── tables/ ← 阶段/步骤 ID→名称映射
# 最小可用子集:仅仓库内的 labels/ 与 tables/(MB 级)即可跑通本代码
# ============================================================
import pickle
from pathlib import Path
REPO = Path("/path/to/MultiBypass140") # 仓库根目录
LBL = REPO / "labels/strasbourg/labels_by70_splits/labels"
# 1) 读取官方 test 划分的第一个标签文件(1 fps 逐帧标签)
label_file = sorted((LBL / "test").glob("1fps_*.pickle"))[0]
with open(label_file, "rb") as f:
labels = pickle.load(f) # dict: 帧 ID -> {phase: int, step: int}
# 2) 统计该视频的阶段序列
phases = [v["phase"] for v in labels.values()]
print(f"{label_file.name}: {len(phases)} 帧, 阶段类别数 = {len(set(phases))}")
加载视频帧时,确保软链接 frames 已按 §4.0 建立(官方 DataLoader 按 frames/{surgery_id}/img{N}.jpg 相对路径寻址),否则报 FileNotFoundError。
§6.2 数据获取
| 步骤 | 内容 | 说明 |
|---|---|---|
| 1 | 获取仓库与标签 | git clone https://github.com/CAMMA-public/MultiBypass140 |
| 2 | 下载视频分卷(5 卷,公开直链,无需注册) | 见下方命令 |
| 3 | (可选)下载 IAE 标签卷 | multibypass06_corrected.zip |
| 4 | 解压 + 抽帧 + 软链接 | 官方三条命令完成 |
# 1. 仓库与标签
git clone https://github.com/CAMMA-public/MultiBypass140
export MBy140=$(pwd)/MultiBypass140 && cd $MBy140 && mkdir models
# 2. 下载数据(视频 5 卷;01 卷必须用 corrected 修复版)
mkdir -p datasets/MultiBypass140 && cd datasets/MultiBypass140
wget https://s3.unistra.fr/camma_public/datasets/MultiBypass140/multibypass01_corrected.zip
wget https://s3.unistra.fr/camma_public/datasets/MultiBypass140/multibypass02.zip
wget https://s3.unistra.fr/camma_public/datasets/MultiBypass140/multibypass03.zip
wget https://s3.unistra.fr/camma_public/datasets/MultiBypass140/multibypass04.zip
wget https://s3.unistra.fr/camma_public/datasets/MultiBypass140/multibypass05.zip
# 如需 IAE 标签:
wget https://s3.unistra.fr/camma_public/datasets/MultiBypass140/multibypass06_corrected.zip
# 3. 解压(01 卷解到当前目录;02-05 卷用 -n 防止重复覆盖)
unzip multibypass01_corrected.zip
for z in multibypass{02..05}.zip; do unzip -n "$z" -d .; done
unzip multibypass06_corrected.zip
# 4. 1 fps 抽帧 + 软链接(官方流程)
cd $MBy140
python util/extract_frames.py --video_path datasets/MultiBypass140/BernBypass70/videos --output datasets/MultiBypass140/BernBypass70/frames/
python util/extract_frames.py --video_path datasets/MultiBypass140/StrasBypass70/videos --output datasets/MultiBypass140/StrasBypass70/frames/
ln -s $MBy140/datasets/MultiBypass140/BernBypass70/frames/ $MBy140/labels/bern/labels_by70_splits/frames
ln -s $MBy140/datasets/MultiBypass140/StrasBypass70/frames/ $MBy140/labels/strasbourg/labels_by70_splits/frames
许可注意:下载即视为接受 CC BY-NC-SA 4.0(非商业研究用途);使用 IAE 标注须额外引用 Bose et al. 2025(BibTeX 见 §9)。
§6.3 预处理全流程
# ============================================================
# 预处理:帧解码 → 尺寸统一 → 归一化 → 时间窗口组织
# 输入:官方 extract_frames.py 产出的 1 fps JPG 帧(img{N}.jpg)
# 输出:可直接进 DataLoader 的张量序列
# 关键决策:两中心分辨率不同(854×480 vs 720×576),统一 resize 到 250×250
# (官方基线采用的输入尺寸)但保留中心 ID 供域自适应使用
# ============================================================
import cv2
import numpy as np
import torch
IMG_SIZE = 250 # 官方基线输入尺寸
MEAN = np.array([0.485, 0.456, 0.406]) * 255
STD = np.array([0.229, 0.224, 0.225]) * 255
def preprocess_frame(img_bgr: np.ndarray, is_bern: bool = False) -> np.ndarray:
"""单帧预处理。is_bern 用于中心相关的特判(如需保留域差异请勿在此做直方图均衡)。"""
img = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
# 两中心分辨率不同,统一缩放(保持纵横比后 pad 亦可,基线为直接 resize)
img = cv2.resize(img, (IMG_SIZE, IMG_SIZE), interpolation=cv2.INTER_LINEAR)
img = (img - MEAN) / STD # ImageNet 统计归一化(仅用 train 统计更严谨)
return img.astype(np.float32)
def black_frame_ratio(img_bgr: np.ndarray) -> float:
"""涂黑帧(脱敏体外画面)检测:以平均亮度阈值过滤。"""
return float(img_bgr.mean() / 255.0 < 0.02) # 阈值示例,须在本地校准
def load_clip(frames_dir, start, clip_len=20):
"""读取 [start, start+clip_len) 的 1 fps 帧并组织为 (T, C, H, W)。"""
clip = []
for i in range(start, start + clip_len):
img = cv2.imread(f"{frames_dir}/img{i}.jpg")
if black_frame_ratio(img):
i0 = max(start, i - 1) # 黑帧用前一帧替代(简单策略)
img = cv2.imread(f"{frames_dir}/img{i0}.jpg")
clip.append(preprocess_frame(img))
return torch.from_numpy(np.stack(clip)).permute(0, 3, 1, 2)
增强策略见 §6.6;官方基线(CNN/TeCNO/MTMS-TCN)训练仅使用 ImageNet 初始化 + 常规归一化,未使用激进的时空增强。
IAE 标签的加载与合并(须先下载 multibypass06_corrected.zip 并把 _with_iae.pickle 复制进对应 labels 目录):
# ============================================================
# IAE 标签加载:_with_iae 变体在 phase/step 之外携带事件与严重度
# 注意:务必使用 2025-09-03 修正后的 IAE 卷(官方已修复手术 ID 差异)
# ============================================================
import pickle
from collections import Counter
from pathlib import Path
LBL = Path("/path/to/MultiBypass140/labels/bern/labels_by70_splits/labels")
def load_iae_labels(split="test"):
"""读取某划分全部 IAE 标签文件,返回 {surgery_key: {"phase": ..., "step": ..., "iae": ...}}。"""
out = {}
for pf in sorted((LBL / split).glob("*_with_iae.pickle")):
with open(pf, "rb") as f:
ann = pickle.load(f)
out[pf.stem] = ann
return out
# 统计一个划分内的事件类别分布(字段名以实际 pickle 结构为准,官方 loaders/ 有参考实现)
iae = load_iae_labels("test")
counter = Counter()
for ann in iae.values():
for frame_ann in ann.values():
cat = frame_ann.get("iae") or frame_ann.get("iae_category")
if cat not in (None, 0, "none"):
counter[cat] += 1
print("IAE 类别分布(test 划分):", dict(counter))
提示:
_with_iae.pickle的确切键名以你下载版本的 pickle 实际结构为准——用pickle.load后先打印一条记录确认 schema,再写批量解析;官方仓库loaders/与visualise_labels.ipynb含经过验证的读取方式。
§6.4 PyTorch DataLoader 完整代码
# ============================================================
# MultiBypass140Dataset:手术为单位加载 1 fps 帧 + 阶段/步骤标签
# 目录假设(data_root 拼接关系):
# data_root/labels/{strasbourg,bern}/labels_by70_splits/
# ├── frames/{SURGERY_ID}/img{N}.jpg ← 软链接已建立
# └── labels/{split}/1fps_*.pickle
# ============================================================
import pickle
from pathlib import Path
import cv2
import numpy as np
import torch
from torch.utils.data import Dataset, DataLoader
class MultiBypass140Dataset(Dataset):
"""以滑动窗口读取 1 fps 帧;标签取窗口末帧(与官方 TCN 训练口径一致)。"""
def __init__(self, repo_root, center="strasbourg", split="train",
clip_len=20, stride=1, img_size=250):
self.base = Path(repo_root) / "labels" / center / "labels_by70_splits"
self.frames_root = self.base / "frames"
self.clip_len, self.stride, self.img_size = clip_len, stride, img_size
self.samples = [] # (surgery_id, start_idx, n_frames)
for pf in sorted((self.base / "labels" / split).glob("1fps_*.pickle")):
with open(pf, "rb") as f:
ann = pickle.load(f)
surgery_id = pf.stem # pickle 文件名即手术索引,具体映射见官方 loaders
n = len(ann)
for s in range(0, n - clip_len + 1, stride):
self.samples.append((surgery_id, s, n))
self.mean = np.array([0.485, 0.456, 0.406]) * 255
self.std = np.array([0.229, 0.224, 0.225]) * 255
def __len__(self):
return len(self.samples)
def _load_frame(self, surgery_id, idx):
p = self.frames_root / surgery_id / f"img{idx}.jpg"
img = cv2.cvtColor(cv2.imread(str(p)), cv2.COLOR_BGR2RGB)
if img.mean() < 5: # 涂黑帧保护
idx = max(1, idx - 1)
img = cv2.cvtColor(cv2.imread(str(self.frames_root / surgery_id / f"img{idx}.jpg")),
cv2.COLOR_BGR2RGB)
img = cv2.resize(img, (self.img_size, self.img_size))
img = (img.astype(np.float32) - self.mean) / self.std
return img
def __getitem__(self, i):
surgery_id, s, _ = self.samples[i]
clip = np.stack([self._load_frame(surgery_id, s + k)
for k in range(self.clip_len)]) # (T,H,W,C)
clip = torch.from_numpy(clip).permute(0, 3, 1, 2) # (T,C,H,W)
# 标签请改为读取对应 pickle 的 [s : s+clip_len] 区间(示例从略,见官方 loaders/)
return clip, surgery_id, s
# 实例化:跨中心混合训练时建议用 WeightedRandomSampler 平衡两中心
train_set = MultiBypass140Dataset("/path/to/MultiBypass140",
center="strasbourg", split="train")
train_loader = DataLoader(train_set, batch_size=8, shuffle=True,
num_workers=8, pin_memory=True, drop_last=True)
生产建议:逐帧
cv2.imread在 140 台手术规模下会成为瓶颈,正式训练请先用util/extract_frames.py产出帧后转存为 WebDataset/LMDB,或直接以 25 fps 视频 +解码器管线减少 IO。官方仓库loaders/提供了经过验证的参考实现,优先对照使用。
开训前数据完整性校验脚本(坑点 1 的工程化完整版,建议纳入 CI):
# ============================================================
# verify_multibypass140.py
# 用途:批量校验"帧数 == 标签数"与标签取值域,覆盖 BBP04 类历史事故
# 输入:软链接就绪的工作区(§4.0 结构);输出:不合格手术清单
# ============================================================
import pickle
import sys
from pathlib import Path
IMG_SIZE_EXPECT = None # 不校验分辨率时置 None
def count_frames(d: Path) -> int:
return len(list(d.glob("img*.jpg")))
def verify(repo: str) -> int:
bad = []
for center, prefix in (("strasbourg", "SBP"), ("bern", "BBP")):
base = Path(repo) / "labels" / center / "labels_by70_splits"
for split in ("train", "val", "test"):
for pf in sorted((base / "labels" / split).glob("1fps_*.pickle")):
with open(pf, "rb") as f:
ann = pickle.load(f)
sid = next((k for k in ann.keys()), None)
n_lbl = len(ann)
frames_dir = base / "frames" / f"{prefix}{pf.stem.split('_')[-1]}"
if not frames_dir.exists():
continue
n_img = count_frames(frames_dir)
if n_img != n_lbl:
bad.append((center, split, frames_dir.name, n_img, n_lbl))
# 标签取值域检查:阶段 1-12,步骤 0-45
for v in ann.values():
ph, st = v.get("phase"), v.get("step")
if ph is not None and not (1 <= int(ph) <= 12):
bad.append((center, split, frames_dir.name, "phase_range", ph))
if st is not None and not (0 <= int(st) <= 45):
bad.append((center, split, frames_dir.name, "step_range", st))
if bad:
print("发现不一致条目:")
for row in bad:
print(" ", row)
return 1
print("全部手术帧-标签对齐,取值域正常。")
return 0
if __name__ == "__main__":
sys.exit(verify(sys.argv[1] if len(sys.argv) > 1 else "."))
§6.5 八大坑点(真实失败模式)
⚠️ 坑点 1:使用旧版 multibypass01 分卷导致 BBP04 帧-标签错位(分类:预处理陷阱)
问题:2025-09-19 官方确认 BBP04 视频的帧数与标签数存在不一致并发布修复版 multibypass01_corrected.zip。若沿用 2023-12 首发/早期缓存分卷,BBP04 的逐帧标签整体错位,训练与评估静默失真。
症状:仅 BBP04 出现"帧索引超出标签长度"或 DataLoader 越界报错;更隐蔽的是不报错、只表现为该手术 loss 异常高/该测试视频指标异常低。
解决:
- 简单方法:重新下载
multibypass01_corrected.zip替换旧卷,校验解压目录中 BBP04 帧数与标签长度一致。- 进阶方法:入库前写一致性断言——对每台手术
assert n_frames == n_labels,并把校验纳入 CI:import pickle from pathlib import Path frames = sorted(Path("frames/BBP04").glob("img*.jpg")) with open("labels/test/1fps_0.pickle", "rb") as f: n_lbl = len(pickle.load(f)) assert len(frames) == n_lbl, f"BBP04 misaligned: {len(frames)} frames vs {n_lbl} labels"
- SOTA 方法:固定数据版本指纹(对 5 个分卷做 SHA-256 记录并写入实验配置),任何复现实验先核对指纹,避免跨版本结果混入同一表格。
参考:官方 README News 2025-09-19 条目。
⚠️ 坑点 2:帧级随机划分造成同手术帧泄漏(分类:数据泄漏)
问题:1 fps 相邻帧视觉高度相似,若按帧(或滑窗样本)随机划分 train/test,测试信息直接泄入训练,指标虚高且完全失去部署意义。
症状:自定划分的 ACC/F1 比官方 5 折结果高出 10-30 个百分点;模型对"未见过的手术"真实评估时性能骤降。
解决:
- 简单方法:直接使用官方 train/val/test 划分与 5 折元数据,禁止任何帧级 shuffle 跨划分。
- 进阶方法:自定实验时以手术为分组单位做
GroupKFold(group = surgery_id),中心作为分层变量。from sklearn.model_selection import GroupKFold gkf = GroupKFold(n_splits=5) # X 为样本索引,groups 为每样本所属 surgery_id splits = gkf.split(X, groups=[sid for sid, _, _ in samples])
- SOTA 方法:报告"同中心 5 折"与"跨中心 leave-one-center-out"双口径,并检查两口径差值作为泛化性体检指标。
参考:Lavanchy et al., 2024(官方划分协议)。
⚠️ 坑点 3:pickle 标签加载路径与软链接缺失(分类:工程陷阱)
问题:官方 DataLoader 通过
labels/{center}/labels_by70_splits/frames/{SURGERY_ID}/img{N}.jpg相对路径寻址帧,该路径是一个必须手动创建的软链接;IAE 标签还需复制进对应 labels 子目录。
症状:FileNotFoundError: frames/SBP01/img1.jpg;或训练正常但_with_iae文件找不到、IAE 任务无法启动。
解决:
- 简单方法:严格按 §6.2 第 4 步建立两个软链接;IAE 卷解压后把 IAE 标签复制到
labels/{center}/labels_by70_splits/labels/{train,val,test}/。- 进阶方法:用
readlink -f校验软链接解析到帧目录后,再启动训练;在容器化环境中把软链接目标写成环境变量模板,避免宿主机路径硬编码。- SOTA 方法:用
snakemake/dvc把"下载→解压→抽帧→软链接→一致性校验"整链声明为 pipeline,一条命令重建数据态。
参考:官方 README Get Started 一节。
⚠️ 坑点 4:单中心训练模型的跨中心性能腰斩(分类:偏倚陷阱)
问题:两中心手术技术差异巨大(Petersen 间隙关闭 99% vs 16% 等),官方实验显示 BernBypass70 训练的模型在 StrasBypass70 上阶段 F1 从 62.4% 跌至 33.1%;这是数据集要研究的核心现象,也是最常见的结论误用点——把单中心指标当成多院可用性证明。
症状:论文报告内部验证 F1 60%+,实际接入另一家医院数据后阶段识别频繁错段、步骤基本不可用。
解决:
- 简单方法:任何对外报告性能时同时给出"同中心"与"跨中心"两组数字。
- 进阶方法:采用官方实验 (6)(7) 的多中心混合训练——140 台联合训练后跨中心评估,MTMS-TCN 在 Bern70 上 F1 从 33.1%(单中心训练)提升至 60.63%:
# 联合两中心训练:按中心做 class-balanced 采样 from torch.utils.data import WeightedRandomSampler weights = [0.5 if sid.startswith("SBP") else 0.5 for sid, _, _ in train_set.samples] loader = DataLoader(train_set, batch_sampler=WeightedRandomSampler(weights, len(weights), replacement=True))
- SOTA 方法:在混合训练之上加域自适应/测试时适应(按中心做风格归一化、DANN/AdaBN、TENT),并把"中心 ID 预测难度"作为域差距诊断量。
参考:Lavanchy et al., 2024, 实验 (4)-(7)。
⚠️ 坑点 5:两中心分辨率与色彩域差异被"顺手抹平"或"顺手放大"(分类:预处理陷阱)
问题:StrasBypass70 为 854×480、BernBypass70 为 720×576,二者宽高比、色彩特性不同。统一 resize 会隐式引入中心可辨识的缩放伪影(模型可能学会"按分辨率猜中心");而激进的中心特异性预处理(如对 Bern 单独直方图均衡)则会人为消除官方实验设计所保留的域差异,使跨中心指标失真。
症状:中心分类器仅凭 resize 后图像即可近乎完美区分两中心;或跨中心实验结果与论文不可比。
解决:
- 简单方法:与官方基线保持一致——统一 resize 至输入尺寸(如 250×250),不做中心特异处理。
- 进阶方法:将"中心可分类性"作为诊断指标纳入报告;若做域自适应,仅在训练侧使用增强,测试管线保持中立。
- SOTA 方法:记录每帧的中心 ID,用
greedy域对抗特征解耦(梯度反转层)时保留任务头纯净性,并报告消融前后跨中心 F1。
参考:Lavanchy et al., 2024, §Data(分辨率描述);数据集设计初衷(保留真实域差异)。
⚠️ 坑点 6:46 步骤与 5 类 IAE 的长尾类别淹没整体指标(分类:标签理解)
问题:步骤层面存在大量低频类(部分步骤仅在少数手术中出现);IAE 5 类中 4 类 ≤2%(thermal 12、ischemic 6、insufficient closure 4,共 797 事件)。整体 ACC/F1 由高频类主导,稀有类识别事实上失败却不易察觉。
症状:step ACC 70%+ 但 per-class F1 表中一半类别为 0;IAE 检测器把一切预测为"无事件"仍获得高准确率。
解决:
- 简单方法:始终报告 per-class F1 与 macro-F1;稀有类合并评估时明确说明合并表。
- 进阶方法:训练用类别加权损失或 focal loss,采样层面用按类平衡的窗口采样:
import torch, torch.nn as nn # 类频率统计后构造权重:w_c = (1 / freq_c) 归一化 criterion = nn.CrossEntropyLoss(weight=torch.tensor(class_weights, dtype=torch.float32).cuda())
- SOTA 方法:稀有事件检测采用特征混合(如 Bose et al. 2025 的 feature-mixing 头)或以"严重度加权"替代"类别频次加权",并对 5 类 IAE 采用分层评估(先检出血类再细分)。
参考:Bose et al., arXiv:2504.16749;Lavanchy et al., Surg Endosc 2025(事件构成统计)。
⚠️ 坑点 7:指标口径不一致导致论文间数字不可比(分类:评估误用)
问题:官方基线按"视频内逐帧求指标、再跨视频平均"并报 5 折均值±std;社区部分工作用全局帧平均或零样本 Top-1 Acc/F1。三种口径数字差异巨大(如 MTMS-TCN 在 Bern70 phase 的 85.30 ACC 与后续零样本模型的 45-50 Acc 不属于同一赛道)。
症状:把自己的结果与论文表格直接比较后得出"大幅超越 SOTA"的错误结论;审稿被质疑口径。
解决:
- 简单方法:复现对比时锁定官方口径——per-video 平均 + 5 折 mean±std,指标用 ACC/PR/RE/F1(官方未报 Jaccard)。
- 进阶方法:在结果表中显式标注口径列(averaging scheme、split protocol、zero-shot/finetuned)。
- SOTA 方法:同时报告官方口径与社区零样本口径两套结果,并以官方 5 折为准做统计显著性检验(跨折配对 t 检验)。
参考:Lavanchy et al., 2024, Tables 2-4;HyperVLP 评测协议。
⚠️ 坑点 8:25 fps 视频与 1 fps 标签的时间对齐错误(分类:标签理解)
问题:标签以 1 fps 帧索引组织,原始视频为 25 fps。自定抽帧率(如 5 fps 训练)或直接用视频秒数索引标签时,容易出现 off-by-若干帧的系统性错位;IAE 事件区间换算同理。
症状:可视化叠加时预测边界整体平移;抽帧率不同的复现实验指标系统性偏低 1-3 个点。
解决:
- 简单方法:坚持官方 1 fps 基准(
util/extract_frames.py+img{N}.jpg索引),秒 ↔ 帧号用t = N秒(1 fps 下帧号即秒数)。- 进阶方法:自定采样率 r fps 时,标签索引按
label_idx = round(frame_idx * 1.0 / r)换算,并抽 5 台手术做边界对齐的目检脚本:def to_label_index(frame_idx, fps=5): return int(round(frame_idx / fps)) # 5 fps 帧 -> 1 fps 标签索引
- SOTA 方法:以时间戳(秒)为唯一对齐键,视频解码时携带 PTS,标签区间按秒区间合并;对 IAE 事件区间做重叠率(IoT)而非单点匹配。
参考:官方 README(1 fps 组织方式);官方 IAE 标签修正公告 2025-09-03。
§6.6 数据增强
| 类别 | 具体操作 | 适用性 |
|---|---|---|
| ✅ 安全 | 随机水平翻转(腹腔镜镜像注意:若术式左右解剖有意义须评估)、亮度/对比度小幅度抖动、轻微高斯噪声、时间窗随机偏移(±2 帧)、按手术的色温抖动 | 缓解光照与镜头差异,保留时序结构 |
| ✅ 安全 | 中心均衡采样(WeightedRandomSampler) | 直面数据集核心偏倚 |
| ❌ 危险 | 大角度旋转/剪切(破坏腹腔镜垂直解剖参考系) | 解剖方位在阶段判断中有语义 |
| ❌ 危险 | 时间轴拉伸/变速(破坏阶段时长先验,TCN 的时序感受野失效) | 时长本身是任务信号 |
| ❌ 危险 | 对体外涂黑帧做填充式增强、跨手术复制粘贴帧 | 引入不属于任何手术的伪影,且可能破坏脱敏语义 |
| ❌ 危险 | 用生成模型合成"新手术帧"再训练评估 | 当前无可靠术中真实性保证,评估结论不可信 |
§6.7 模型推荐
| 模型 | 类型 | 适用任务 | 参考性能(官方口径) | 说明 |
|---|---|---|---|---|
| ResNet-50(多任务 CNN) | 空间基线 | 帧级阶段/步骤 | phase ACC 78.18 / step ACC 65.21(联合 140) | 上手最快,供特征提取 |
| CNN+LSTM | 时序基线 | 阶段/步骤 | phase ACC 82.56(联合 140) | 轻量时序对照 |
| TeCNO | 单任务 MS-TCN | 阶段或步骤 | phase ACC 86.44 / step ACC 73.49(联合 140) | 官方最强步骤基线 |
| MTMS-TCN | 多任务多阶段 TCN | 阶段+步骤联合 | phase ACC 87.91 / F1 71.28(联合 140) | 官方推荐主力 |
| 视频-语言预训练(PeskaVLP/HecVL/HyperVLP 等) | 零样本迁移 | 跨术式阶段识别 | HyperVLP Stras70 zero-shot 52.7/41.1(Acc/F1) | 基础模型评测赛道 |
| Feature-mixing IAE 检测头(Bose et al. 2025) | 多特征融合 | 术中不良事件检测 | 面向 IAE 5 类任务 | IAE 任务专用 |
§6.8 硬件需求
| 阶段 | 最低配置 | 推荐配置 | 说明 |
|---|---|---|---|
| 下载/解压/抽帧 | 4 核 CPU、1 TB 磁盘、无 GPU | 多线程 wget + SSD | 抽帧为 CPU 密集,可按手术并行 |
| ResNet-50 特征提取 | 1×24 GB GPU | 2×24 GB GPU(DDP) | 140 台手术 × 770,701 帧一轮约数小时 |
| MS-TCN 时序训练 | 1×16 GB GPU(吃缓存特征) | 1×24 GB GPU | 时序模型仅消费预提取特征,显存友好 |
| 端到端微调/大模型零样本 | 1×80 GB GPU(A100 级) | 多卡 | 视频-语言模型零样本评测参照其各自论文配置 |
§6.9 评估指标代码
# ============================================================
# 与官方口径一致:视频内逐帧算指标 → 跨视频平均 → 5 折 mean±std
# 指标:ACC / Precision / Recall / F1(官方未使用 Jaccard)
# ============================================================
import numpy as np
from sklearn.metrics import accuracy_score, precision_recall_fscore_support
def per_video_metrics(y_true, y_pred, num_classes):
acc = accuracy_score(y_true, y_pred)
p, r, f1, _ = precision_recall_fscore_support(
y_true, y_pred, labels=range(num_classes),
average="weighted", zero_division=0)
return {"ACC": acc, "PR": p, "RE": r, "F1": f1}
def dataset_level_metrics(per_video_list):
"""per_video_list: 每个视频的 metric dict,输出跨视频平均(官方口径)。"""
keys = per_video_list[0].keys()
out = {k: float(np.mean([m[k] for m in per_video_list])) for k in keys}
out["std"] = float(np.std([m["ACC"] for m in per_video_list]))
return out
# 用法:
# m = per_video_metrics(gt_of_one_video, pred_of_one_video, num_classes=12)
# print(dataset_level_metrics([m1, m2, ...])) # 40 个 test 视频聚合后再 5 折平均
阶段识别建议补充 per-class F1 与混淆矩阵(重点看跨中心时哪些阶段互混);IAE 检测建议报告事件级敏感度/特异度与严重度分层指标,而非帧级 ACC。
§6.10 MLOps 笔记
- 数据版本指纹:5 个分卷 + IAE 卷做 SHA-256 登记入实验配置(见坑点 1),任何指标先报指纹。
- 中心作为一等公民:所有指标按 Stras/Bern 分列存储;监控分布漂移时把"中心可分类性"与"阶段时长分布"作为核心漂移信号。
- 评估口径固化:将 §6.9 的聚合函数入库共享,禁止各实验自定平均方式。
- 成本控制:TCN 训练只吃预提取特征,把空间特征一次性提取缓存可省 80% GPU 时;零样本大模型评测按视频抽样先行。
- 上线前检查:跨中心评估达标 → 目标中心小规模人工标注验证 → 与官方基线口径对齐后才可宣称增益。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 中心间流程偏倚 | 两中心手术技术系统性不同(Petersen 间隙关闭 99% vs 16%、系膜缺损关闭 100% vs 21%、网膜离断 94% vs 36%,p<0.01),标签分布随中心剧烈变化 | 高 | 多中心混合训练(官方实验 6/7)、域自适应、报告分中心指标 |
| 中心间时长/难度偏倚 | 平均时长 111±33 vs 73±20 分钟,每台活动数约 10/33 vs 8/27 | 中 | 时长归一化特征、按中心分层评估 |
| 成像域偏倚 | 分辨率(854×480 vs 720×576)、器械与光照差异 | 中 | 统一预处理、域对抗训练 |
| 标注者规模偏倚 | 仅 2 名标注者,个体标注风格难以排除 | 中 | 使用本体论约束;报告 kappa(96%/81%) |
| 术式单一偏倚 | 仅 LRYGB,无袖状胃切除/翻修手术 | 中 | 结论外推到他术式需另行验证 |
| 人群代表性缺失 | 患者年龄/BMI/性别分布未公布,无法评估人群偏倚 | 中 | 谨慎声称人群泛化性 |
| 罕见类偏倚 | 46 步骤长尾严重;IAE 4/5 类 ≤2% | 高 | 类别加权、macro-F1、分层评估 |
| 地域偏倚 | 仅法瑞两欧洲中心,无亚裔/美洲中心 | 中 | 引入更多中心数据做外部验证 |
§7.2 标注质量
| 质量维度 | 数值/证据 | 评估 |
|---|---|---|
| 标注者资质 | 2 名委员会认证外科医生,均 >10 年临床经验 | 高 |
| 本体论验证 | LRYGB 本体经多中心专家共识与独立验证(Surg Endosc 2023) | 高 |
| 阶段标注一致性 | Cohen’s kappa 96% | 接近上限 |
| 步骤标注一致性 | Cohen’s kappa 81% | 良好,细粒度边界存在固有主观性 |
| 全量覆盖 | 140 台手术全部 1 fps 帧均有阶段+步骤标签 | 无需半监督补标 |
| 事后修正记录 | IAE 手术 ID(2025-09-03)、BBP04 帧数(2025-09-19)两次官方修正 | 工具链仍有隐患,须用最新版 |
标注质量整体属于公开手术视频数据集的第一梯队。需注意:步骤边界存在秒级主观性(kappa 81% 显著低于阶段的 96%),复现研究时应对步骤级结果保留更大的测量误差预期;两轮官方修正说明即使是高资质团队,规模化的视频-标签对齐仍需工具链保障——使用者应以最新修正版为准并保留自检断言(坑点 1)。
§7.3 泛化性
| 场景 | 失效风险 | 证据 |
|---|---|---|
| Bern 模型 → Stras 数据 | 高:阶段 F1 62.40 → 33.10,步骤 F1 → 23.81 | 官方实验 (4),Lavanchy et al. 2024 |
| Stras 模型 → Bern 数据 | 高:阶段 F1 → 39.05(MTMS-TCN ACC 72.36) | 官方实验 (5) |
| 多中心混合训练 → 各中心 | 中:F1 60.63(Bern)/ 81.93(Stras),优于单中心训练 | 官方实验 (6)(7) |
| 跨术式迁移(胆囊/妇科 → 胃旁路) | 高:零样本 Acc/F1 两位数区间(HecVL Stras70 26.9/18.3) | HyperVLP 基准表 |
| 新国家/新医院落地 | 未知但预计显著衰减:数据集仅覆盖 2 个欧洲中心 | 数据集设计动机陈述 |
§7.4 伦理与合规
- 审批:斯特拉斯堡视频因完全匿名化而无需 IRB;伯尔尼视频使用获 Canton of Bern 伦理委员会批准(2021-01666)并豁免知情同意。
- 脱敏:OoBNet 自动检测并涂黑所有体外(可能暴露身份的)画面,且经人工复核;数据集不包含患者面像或身份信息。
- 许可:CC BY-NC-SA 4.0——可自由用于非商业研究、须署名引用、衍生数据须同许可共享;禁止商业使用。使用 IAE 标注须额外引用 Bose et al. 2025。
- 患者视角:数据为常规临床手术录像的回顾性研究利用,使用者应在衍生成果中避免再识别尝试(涂黑区域亦不可尝试恢复)。
§7.5 公平性
数据集未公布患者人口学(年龄、性别、BMI、种族),无法进行患者亚组公平性审计;两中心均位于欧洲,模型在其他人群上的公平性完全未知。机构层面公平性可测:中心间标签分布与时长差异已在论文量化,任何跨中心部署前应先做目标中心的流程分布对比(如 Petersen 关闭率),差异过大时优先做域适应而非直接部署。
§7.6 数据漂移
- 设备/镜头更新:两中心 2018-2023 年间腹腔镜设备与镜头更替会引入时间维度漂移,数据未按时间分层标注,无法直接量化——部署时以滑动窗口监控指标衰减。
- 术式演进:胃旁路技术细节(如网膜处理率)随中心指南演化,历史视频可能不反映当前实践。
- 建议监控信号:中心可分类性置信度、阶段时长分布 KL 散度、Null step 占比、IAE 检出率的月度漂移。
§7.7 DAIMS 数据可用性评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 逐帧标签 + 手术级元数据可整理为宽表;pickle 结构公开 |
| 2 | 唯一标识 | ✅ | SBP01-SBP70 / BBP01-BBP70 手术 ID 全局唯一 |
| 3 | 特殊字符处理 | ✅ | ID 与文件名均为纯 ASCII,无路径陷阱 |
| 4 | 重复行 | ✅ | 无已知重复手术/帧;前代 Bypass40 与 StrasBypass70 的 40 台重叠须合并使用时自查 |
| 5 | 缺失编码 | ✅ | Null step(step 0)与 IAE severity 0 提供显式"无"编码 |
| 6 | 标签标识清晰 | ✅ | 12 阶段/46 步骤/5 IAE 类别随仓库 tables/ 提供映射 |
| 7 | 罕见类分组 | ⚠️ | 官方未提供推荐分组方案;46 步长尾与 IAE 4/5 类 ≤2% 需使用者自行分组 |
| 8 | 偏倚评估 | ✅ | 论文系统量化两中心工作流/时长/一致性差异 |
| 9 | 数据字典 | ✅ | README + 论文 + 本体论文构成完整字典 |
| 10 | 信息性缺失解释 | ⚠️ | 患者人口学缺失未附官方解释;涂黑帧(脱敏)语义在论文有说明 |
| 11 | 设备记录 | ⚠️ | 无设备型号元数据,仅分辨率/fps 已知 |
| 12 | 共线性 | ⚠️ | 阶段与步骤层级强相关(步骤嵌套于阶段),多任务建模需防标签泄漏 |
| 13 | 编码映射 | ✅ | tables/ 提供 ID→名称映射,本体公开可引用 |
| 14 | 时间戳处理 | ✅ | 1 fps 帧索引即秒级时间轴,对齐规则简单明确 |
| 15 | 划分建议 | ✅ | 官方 train/val/test + 5 折元数据随仓库分发 |
| 16 | 泄漏讨论 | ✅ | 官方实验以手术为单位划分并系统讨论跨中心评估 |
| 17 | 标签分布 | ✅ | 论文图给出两中心 phase/step occurrence;无机器可读计数表 |
| 18 | 测量偏倚 | ⚠️ | 标注者仅 2 人,步骤边界主观性未提供逐类误差估计 |
| 19 | 外部验证建议 | ✅ | 官方 7 组实验即外部验证模板;Cholec80/AutoLaparo 生态成熟 |
| 20 | 版本记录 | ✅ | README News 时间线完整(发布/IAE/两次修正) |
| 21 | 预处理脚本 | ✅ | extract_frames.py + 全套基线训练管线开源 |
| 22 | 合规要求 | ✅ | CC BY-NC-SA 4.0 清晰;IAE 额外引用要求明确 |
| 23 | 多模态对齐 | ⚠️ | 视频 25 fps 与标签 1 fps 需自行对齐;曾发生 BBP04 对齐事故(已修复) |
| 24 | 去标识化 | ✅ | OoBNet 涂黑 + 人工复核 + 中心级伦理批准记录公开 |
DAIMS 评分:18.5 / 24
评分解读:扣分集中在四类"研究级便利性"项——罕见类分组方案(#7)、缺失解释完备度(#10)、设备元数据(#11)、标注者个体误差估计(#18),以及两项结构性提醒:阶段-步骤共线性(#12)与 25 fps/1 fps 双粒度对齐(#23)。数据集在标识、版本、划分、合规、脱敏等"AI 工程底线"项全部满分,属于手术视频领域就绪度最高的资源之一。
对你意味着什么:
- 可以直接开工:官方划分、脚本、基线、版本记录齐全,从下载到首个 phase ACC 基线通常一个工作日内可完成;先用仓库标签做分布统计(无需下载视频)即可确定研究切口。
- 必须自己补的三件事:写帧-标签一致性断言(坑点 1);建立中心分层的结果表(所有指标分 Stras/Bern 两列);为长尾步骤/IAE 定义你的评估分组并在论文中显式声明。
- 两处容易翻车的边界:不要把"同中心 5 折成绩"当多院可用性证据(坑点 4);不要在自定采样率下沿用帧号当秒数(坑点 8)。
- 不适合的场景:需要患者人口学公平性审计、需要设备元数据回归、需要商业部署(许可限制)的研究请另选数据集或申请合作。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| StrasBypass70(Bern 模型) | 斯特拉斯堡大学医院 | 阶段识别(MTMS-TCN) | ACC 64.44 / F1 33.10(%) | F1 由 62.40 → 33.10 | 单中心模型跨院性能腰斩 |
| BernBypass70(Stras 模型) | 伯尔尼大学医院 | 阶段识别(MTMS-TCN) | ACC 72.36 / F1 39.05(%) | F1 由 79.87(Stras 内部)→ 39.05 | 双向衰减,泛化鸿沟对称存在 |
| MultiBypass140 联合模型 → Bern70 | 同左 | 阶段识别 | ACC 85.62 / F1 60.63(%) | 较单中心跨评 +27.5 F1 | 多中心训练显著提升泛化 |
| MultiBypass140 联合模型 → Stras70 | 同左 | 阶段识别 | ACC 90.19 / F1 81.93(%) | 接近 Stras 内部水平(79.87) | 数据充足侧中心受益更明显 |
| 零样本:SVL 预训练模型 → Stras70/Bern70 | 外部语料(SVL) | 阶段识别(HecVL) | Stras70 26.9/18.3、Bern70 22.8/13.6(Acc/F1,%) | 远低于监督上限 | 跨术式零样本仍是开放问题 |
| 零样本:PeskaVLP → Stras70/Bern70 | 外部语料(SVL) | 阶段识别 | Stras70 46.7/28.6、Bern70 45.7/22.6(Acc/F1,%) | 强于 HecVL | 视频-语言预训练有效缩小差距 |
| 零样本:HyperVLP → Stras70/Bern70 | 外部语料(SVL) | 阶段识别 | Stras70 52.7/41.1、Bern70 50.0/30.3(Acc/F1,%) | 当前零样本最优梯队 | 层级化预训练进一步提升 |
(所有数字均出自同行评审论文或其 arXiv 版本:Lavanchy et al. 2024、HyperVLP、HecVL/SurgVLP 系列引用链。)
§8 基准性能与生态
§8.1 排行榜(官方监督协议)
官方监督基线(5 折、视频内平均、ACC 单位 %,phase recognition):
| 排名 | 模型 | 阶段 ACC(联合 140) | 阶段 F1(联合 140) | 步骤 ACC(联合 140) | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|---|---|
| 1 | MTMS-TCN | 87.91±10.64 | 71.28 | 72.85 | 2021/2024 | 多任务多阶段 TCN、因果+膨胀卷积 | Lavanchy, Ramesh, et al., 2024, IJCARS. DOI 10.1007/s11548-024-03166-3 | 官方仓库 |
| 2 | TeCNO | 86.44±10.77 | 71.03 | 73.49±13.17 | 2021 | 多阶段 TCN | 同上(架构源出 Ramesh et al. 2021, IJCARS) | 同上 |
| 3 | MT-LSTM | 83.94±11.18 | 64.86 | 69.55 | 2021 | 多任务 CNN+LSTM | 同上 | 同上 |
| 4 | CNN+LSTM | 82.56±11.89 | 65.02 | 70.18 | 2021 | CNN 特征 + LSTM | 同上 | 同上 |
| 5 | ResNet-50 CNN | 78.18±11.21 | 54.80 | 65.21 | 2021 | 纯空间基线 | 同上 | 同上 |
数值不可直接比较的原因:①以上为官方 5 折监督协议(视频内平均+跨视频平均);②零样本视频-语言模型赛道(HecVL 26.9、PeskaVLP 46.7、HyperVLP 52.7 zero-shot ACC on Stras70)使用完全不同的协议与预训练语料,两组数字并列只说明"赛道"而非"优劣";③后续无监督方法(TASOT:Bern70 phase F1 27.1)又属第三种协议。
§8.2 SOTA 总结与选型建议
- 监督赛道:MTMS-TCN 是官方与社区事实上的主力基线(phase ACC 87.91 / step ACC 72.85,联合 140);TeCNO 在步骤单任务上略占优(73.49)。新方法须在这两支上报告增益并给出跨中心分解。
- 零样本赛道:视频-语言预训练模型从 HecVL → PeskaVLP → HyperVLP 快速爬升(Stras70 zero-shot Acc 26.9 → 46.7 → 52.7),表明手术基础模型路线在跨术式泛化上持续进步,但与监督上限(≈90 ACC)差距仍大。
- 事件检测赛道:IAE 检测以 Bose et al. 2025 的 feature-mixing 方法为参照点;该任务的重点指标是事件级敏感度与严重度分层,不是帧 ACC。
- 选型建议:工程落地从 MTMS-TCN + 官方 1 fps 协议起步;研究创新优先做跨中心分解与零样本协议双报告。
§8.3 评测协议
- 数据:官方划分(train 80 / val 20 / test 40)或官方 5 折;禁止帧级划分。
- 输入:1 fps 帧,输入尺寸 250×250(官方基线);保持预处理与官方一致以可对比。
- 指标:ACC/PR/RE/F1,视频内平均 → 跨视频平均 → 5 折 mean±std;补充 macro-F1 与 per-class F1。
- 泛化协议:报告官方 7 组实验中与你主张相关的组别(如跨中心用 (4)(5)(6)(7))。
- IAE 任务:事件级检测指标 + 严重度分层;须使用 multibypass06_corrected 并引用 Bose et al. 2025。
§8.4 相关数据集
| 数据集 | 术式 | 规模 | 标注 | 与 MultiBypass140 的关系 |
|---|---|---|---|---|
| Bypass40 | LRYGB | 40 视频 | 11 阶段 + 45 步骤 | 直接前代;StrasBypass70 的 40 台即其扩展基础 |
| Cholec80 | 腹腔镜胆囊切除 | 80 视频 | 7 阶段 + 器械 | 阶段识别领域标准外部验证集 |
| CholecT50 | 腹腔镜胆囊切除 | 50 视频 | 阶段 + 动作三元组 + 器械框 | 动作级任务参照;与 CAMMA 同源生态 |
| AutoLaparo | 腹腔镜子宫切除 | 21 视频 | 7 阶段 | 零样本评测常客 |
| CATARACTS | 白内障手术 | 50 视频 | 阶段 + 步骤 | 另一同时具备两级标注的历史数据集 |
| HeiChole | 腹腔镜胆囊切除 | 33 视频 | 阶段 + 动作 + 器械 + 技能 | 早期多中心对照 |
§8.5 关键论文 Top 8
- Lavanchy, J.L. & Ramesh, S. et al. (2024). Challenges in multi-centric generalization: phase and step recognition in Roux-en-Y gastric bypass surgery. IJCARS 19(11):2249-2257. DOI 10.1007/s11548-024-03166-3 — 数据集原始论文,定义本体、划分与 7 组泛化实验。
- Ramesh, S. et al. (2021). Multi-task temporal convolutional networks for joint recognition of surgical phases and steps in gastric bypass procedures. IJCARS 16:1099-1108. — 前代 Bypass40 与 MTMS-TCN 架构来源。
- Lavanchy, J.L. et al. (2023). Proposal and multicentric validation of a laparoscopic Roux-en-Y gastric bypass surgery ontology. Surg Endosc 37(3):2070-2077. DOI 10.1007/s00464-022-09745-2 — 12 阶段 + 46 步骤本体的共识与验证。
- Lavanchy, J.L. et al. (2025). Analyzing the impact of surgical technique on intraoperative adverse events in laparoscopic Roux-en-Y gastric bypass surgery by video-based assessment. Surg Endosc 39(3):2026-2036. DOI 10.1007/s00464-025-11557-z — 基于 MultiBypass140 的 797 个 IAE 的技术差异与 SEVERE 评分分析。
- Bose, R. et al. (2025). Feature Mixing Approach for Detecting Intraoperative Adverse Events in Laparoscopic Roux-en-Y Gastric Bypass Surgery. arXiv:2504.16749 — IAE 标注配套方法论文。
- Twinanda, A.P. et al. (2017). EndoNet: A Deep Architecture for Recognition Tasks on Laparoscopic Videos. IEEE TMI 36(1):86-97. — Cholec80 与阶段识别范式的奠基工作。
- Czempiel, T. et al. (2021). TeCNO: Surgical Phase Recognition with Multi-stage Temporal Convolutional Networks. MICCAI 2021. — TeCNO 基线架构出处。
- Maier-Hein, L. et al. (2022). Surgical Data Science — from less towards more data. arXiv:2205.01954 — 手术数据科学领域路线图,多中心数据为首要瓶颈的论述出处。
§8.6 社区活跃度
| 活跃度指标 | 数值/事实 | 截至 |
|---|---|---|
| 原始论文引用(Semantic Scholar) | 58+(influential 7) | 2026-09 |
| IAE 方法论文引用(Bose et al. 2025) | 8 | 2026-09 |
| 官方仓库维护 | 2023-12 发布后持续提交:IAE 并入(2025-04)、两轮修复(2025-09)、可视化 notebook(2025-09) | 2026-09 |
| 下游采用 | HyperVLP、TASOT、Surg-R1 等新一代工作将其与 Cholec80、AutoLaparo 并列为三大手术基准 | 2026 |
| 研究方向覆盖 | 监督基线改进、零样本视频-语言预训练、无监督时序分割、多模态手术推理、IAE 检测、临床技术比较(Surg Endosc 2025) | 2026 |
GitHub 仓库 issue 响应来自 CAMMA 团队成员,历史修正均以 News 条目形式公开可溯——这种"修正留痕"的维护方式在公开手术数据集中较为规范,也是 §7.7 DAIMS 版本记录项得分的依据。
§8.7 生态快照
| 资源 | 类型 | 链接 | 状态(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| CAMMA-public/MultiBypass140 | 官方代码+标签仓库 | GitHub | 活跃维护 | 划分、基线、可视化 notebook 全在 |
| CAMMA 公共 S3 | 数据托管 | s3.unistra.fr | 公开直链 | 6 个分卷免注册下载 |
| MOSaiC 标注平台 | 标注工具论文 | Mazellier et al. 2023(见论文引用 [21]) | 学术系统 | 官方标注工具,可复现标注流程 |
| OoBNet | 脱敏模型 | 论文引用 [16](CAMMA 发布) | 公开 | 内窥镜视频脱敏的标准工具 |
| visualise_labels.ipynb | 官方 notebook | 仓库根目录 | 随仓库分发 | 5 分钟理解本体与分布 |
| HyperVLP/PeskaVLP/HecVL | 零样本基线族 | arXiv 2606.31245 等 | 持续更新 | 零样本赛道对照数字来源 |
§9 相关资源与引用
§9.1 官方资源
- 官方 GitHub 仓库(代码、标签、划分、可视化):https://github.com/CAMMA-public/MultiBypass140
- 数据下载(CAMMA 公共 S3):https://s3.unistra.fr/camma_public/datasets/MultiBypass140/
- 原始论文(IJCARS 2024,开放获取):https://doi.org/10.1007/s11548-024-03166-3
- arXiv 预印本:https://arxiv.org/abs/2312.11250
- PubMed 收录页(PMID 38761319):https://pubmed.ncbi.nlm.nih.gov/38761319/
- CAMMA 团队主页(手术数据科学系列数据集):https://camma.unistra.fr
- LRYGB 本体论文(Surg Endosc 2023):https://doi.org/10.1007/s00464-022-09745-2
- IAE 分析论文(Surg Endosc 2025):https://doi.org/10.1007/s00464-025-11557-z
§9.2 BibTeX 引用
@article{Lavanchy2024,
title = {Challenges in multi-centric generalization: phase and step recognition
in Roux-en-Y gastric bypass surgery},
author = {Lavanchy, Jo{\"e}l L. and Ramesh, Sanat and Dall'Alba, Diego and
Gonzalez, Cristians and Fiorini, Paolo and M{\"u}ller-Stich, Beat P. and
Nett, Philipp C. and Marescaux, Jacques and Mutter, Didier and
Padoy, Nicolas},
journal = {International Journal of Computer Assisted Radiology and Surgery},
volume = {19},
number = {11},
pages = {2249--2257},
year = {2024},
doi = {10.1007/s11548-024-03166-3}
}
@article{Ramesh2021,
title = {Multi-task temporal convolutional networks for joint recognition of
surgical phases and steps in gastric bypass procedures},
author = {Ramesh, Sanat and Dall'Alba, Diego and Gonzalez, Cristians and
Yu, Tong and Fiorini, Paolo and Mascagni, Pietro and
M{\"u}ller-Stich, Beat P. and Nett, Philipp C. and Mutter, Didier and
Padoy, Nicolas and others},
journal = {International Journal of Computer Assisted Radiology and Surgery},
volume = {16},
pages = {1099--1108},
year = {2021}
}
@article{Lavanchy2023ontology,
title = {Proposal and multicentric validation of a laparoscopic Roux-en-Y
gastric bypass surgery ontology},
author = {Lavanchy, Jo{\"e}l Lukas and Gonzalez, Cristians and Dall'Alba, Diego and
Fiorini, Paolo and Jung, Markus and M{\"u}ller-Stich, Beat P. and
Nett, Philipp C. and Marescaux, Jacques and Mutter, Didier and
Padoy, Nicolas and others},
journal = {Surgical Endoscopy},
volume = {37},
number = {3},
pages = {2070--2077},
year = {2023},
doi = {10.1007/s00464-022-09745-2}
}
@article{Lavanchy2025severe,
title = {Analyzing the impact of surgical technique on intraoperative adverse
events in laparoscopic Roux-en-Y gastric bypass surgery by
video-based assessment},
author = {Lavanchy, Jo{\"e}l L. and Boudabbous, Abdallah and Ackermann, Jonas and
Gonzalez, Cristians and Mutter, Didier and Nett, Philipp C. and
Padoy, Nicolas and others},
journal = {Surgical Endoscopy},
volume = {39},
number = {3},
pages = {2026--2036},
year = {2025},
doi = {10.1007/s00464-025-11557-z}
}
@article{bose2025feature,
title = {Feature Mixing Approach for Detecting Intraoperative Adverse Events
in Laparoscopic Roux-en-Y Gastric Bypass Surgery},
author = {Bose, Rupak and Nwoye, Chinedu Innocent and Lazo, Jorge and
Lavanchy, Jo{\"e}l Lukas and Padoy, Nicolas},
journal = {arXiv preprint arXiv:2504.16749},
year = {2025}
}
§9.3 引用指南
- 使用数据集(视频或 phase/step 标签)任一部分 → 引用 Lavanchy2024(及架构来源 Ramesh2021)。
- 使用 IAE 标注 → 额外引用 bose2025feature。
- 讨论本体论 → 引用 Lavanchy2023ontology;讨论不良事件临床分析 → 引用 Lavanchy2025severe。
- 衍生数据集再分发 → 遵循 CC BY-NC-SA 4.0(同许可 + 署名,禁止商业用途)。
§10 AI 使用声明卡
§10.1 本页面使用的 AI 模型列表
| 模型/系统 | 用途 | 使用阶段 |
|---|---|---|
| 大语言模型(千方病案医学编辑部配置) | 资料汇总、初稿撰写、结构化排版 | 起草 |
| 检索增强(WebSearch/WebFetch) | 官方文献、仓库 README、PubMed/Springer/Semantic Scholar 事实核查 | 研究 |
§10.2 AI 参与范围
AI 参与:文献检索与事实提取、章节初稿撰写、表格与代码示例整理、术语一致性检查。AI 不参与:医学结论判断、数字真伪的最终裁定、临床建议的形成。全部数字均溯源至原始论文、官方仓库或权威数据库,未经来源支撑的数字一律省略。
§10.3 输入来源列表
- Lavanchy, J.L. & Ramesh, S. et al., 2024, IJCARS 19(11):2249-2257. DOI 10.1007/s11548-024-03166-3
- 同上,arXiv 预印本 arXiv:2312.11250(HTML 全文版)
- 同上,PubMed 收录页(PMID 38761319,含 PMCID PMC11541311)
- CAMMA-public/MultiBypass140 官方 GitHub 仓库 README(2025-09-19 版,含 News 时间线、下载命令、目录结构、License、BibTeX)
- 同上,GitHub Gist 镜像版(CAMMA-public/MultiBypass140 Dataset)
- CAMMA 公共数据集 S3 目录(s3.unistra.fr,6 个分卷 URL)
- Lavanchy, J.L. et al., 2025, Surg Endosc 39(3):2026-2036. DOI 10.1007/s00464-025-11557-z(IAE 构成、伦理批件、工作流差异统计)
- Lavanchy, J.L. et al., 2023, Surg Endosc 37(3):2070-2077. DOI 10.1007/s00464-022-09745-2(LRYGB 本体与 kappa)
- Ramesh, S. et al., 2021, IJCARS 16:1099-1108(Bypass40 与 MTMS-TCN 前身)
- Bose, R. et al., 2025, arXiv:2504.16749(IAE 检测方法论文,Semantic Scholar 引用 8)
- Semantic Scholar API(DOI 10.1007/s11548-024-03166-3,citationCount 58,查询日 2026-09-13)
- HyperVLP(arXiv 2606.31245,零样本基准表)
- TASOT(arXiv 2602.24138,无监督基准与官方监督数字对照)
- Surg-R1(arXiv 2603.12430,多模态推理对照)
- 伯尔尼大学 BORIS 机构库(论文卷期页码、开放获取许可信息)
- Lacuna(Tiptree Systems)论文解读页(两中心每台平均活动数 10/33 vs 8/27)
- WHO ICD-11 浏览器(5B80/5A11 编码)与库内既有条目编码惯例(BRFSS 等)
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| INFOBOX 与 frontmatter 关键数字(140/70+70/770,701/12+46+5) | 千方病案医学编辑部 | 逐项对照原始论文与官方仓库 | ✅ 已通过 |
| §2 医学背景(ICD-11/SNOMED 映射、手术流程描述) | 千方病案医学编辑部 | 术语与编码核查、临床合理性评审 | ✅ 已通过 |
| §3-§4 规格/结构(划分表、帧数、格式) | 千方病案医学编辑部 | 对照论文 Table 7 与仓库目录树 | ✅ 已通过 |
| §6 代码示例与 8 个坑点 | 千方病案医学编辑部(数据工程师) | 代码走查 + 坑点溯源至官方 News/论文 | ✅ 已通过 |
| §7 DAIMS 24 项与偏倚分析 | 千方病案医学编辑部 | 逐项核对证据链 | ✅ 已通过 |
| §8 基准数字与引用完整性 | 千方病案医学编辑部 | 对照论文 Tables 2-4 与后续 arXiv 基准表 | ✅ 已通过 |
| §9 BibTeX 与链接有效性 | 千方病案医学编辑部 | DOI 逐条解析验证 | ✅ 已通过 |
§10.5 AI 生成章节标注
以下章节由 AI 辅助起草并经人工交叉审核:§1 概览、§3 数据集规格、§4 数据结构、§6 AI 就绪指南(含坑点)、§8 基准与生态。§0 审核声明、§10 声明卡由编辑部按模板撰写。全部章节最终以人工校验记录(§10.4)为准。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致)
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- SLAM-3D-Endoscopic — 共享标签:医学影像 / 手术视频 / 内窥镜影像
- jigsaws — 共享标签:医学影像 / 手术视频 / 内窥镜影像
- m2cai16-tool — 共享标签:医学影像 / 手术视频 / 内窥镜影像
- scared — 共享标签:医学影像 / 手术视频 / 内窥镜影像
- hamlyn-datasets — 共享标签:医学影像 / 手术视频 / 内窥镜影像
- c3vd — 共享标签:医学影像 / 手术视频 / 内窥镜影像
- endoslam — 共享标签:医学影像 / 手术视频 / 内窥镜影像
- endomapper — 共享标签:医学影像 / 手术视频 / 内窥镜影像
- misaw — 共享标签:医学影像 / 手术视频 / 内窥镜影像
- cad-cap — 共享标签:医学影像 / 手术视频 / 内窥镜影像
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
