普通外科视觉Transformer:一种用于普通外科的视频预训练基础模型

约翰霍普金斯大学

2025年4月24日,还在arxiv

摘要

缺乏公开可用的数据和专门的基础模型是外科计算研究的主要障碍。为此,(i)我们开源了迄今为止最大的普通外科手术视频数据集,该数据集包含680小时的手术视频,涵盖28种手术的机器人和腹腔镜技术数据

(ii)我们提出了一种基于前向视频预测在手术视频上对普通外科视觉Transformer(GSViT)进行视频预训练的技术,该技术可用于实时手术应用,我们还开源了GSViT的代码和权重;

(iii)我们还发布了针对10种手术的GSViT特定手术微调版本代码和权重

(iv)我们在Cholec80阶段注释任务中展示了GSViT的性能,其性能优于最先进的单帧预测器。代码和数据可在https://github.com/SamuelSchmidgall/GSViT上获取。

关键词:基础模型;外科手术;视觉Transformer

 1 引言

通过开发可重用的通用模型,人工智能(AI)取得了巨大进展。这些模型的特点是在广泛多样的数据集上进行大规模训练,这使它们能够对各种主题和技能有广泛的理解。

基础模型的概念指的是一种通用的基础模型,可以针对特定应用进行调整或微调,使其在下游任务中具有高度的通用性。近年来,公开发布基础模型及其相应的数据集在很大程度上推动了语言和视觉模型的惊人进展。

虽然医学应用基础模型的构建进展稳定,但与医学以外的应用相比,其发展速度也较慢。导致进展较慢的一个因素,特别是在外科手术等领域,是训练这些模型需要大量的数据。

基础模型通常需要在从数千万到数万亿样本的巨大规模上进行训练。这种规模在医学应用中带来了重大挑战,因为医学数据受到严格的法律和伦理考量。收集如此大量的患者数据用于训练的过程具有挑战性,而使这些数据公开可用的过程则更具挑战性。

我们认为,外科AI领域向前迈进的一步是构建普通外科的基础模型。为此,我们引入了普通外科视觉Transformer(GSViT)。

我们的模型架构设计遵循几个原则:(i)我们旨在建立一个参数轻量化的基础模型,以便它可以在实际手术应用中实时使用,例如实时外科医生反馈或机器人控制;

(ii)我们旨在建立一个与广泛使用的模型具有高度兼容性的模型,注意到许多现有的基于视觉的Transformer架构利用预训练的卷积网络作为预处理步骤;

(iii)我们旨在建立一个从视频预测进行预训练的模型,我们认为这为外科手术的本质开发了有用的先验知识,编码了对理解组织变形有用的空间和时间信息。

我们还引入了GenSurgery数据集,这是一个手术过程视频的集合,用于对GSViT进行预训练。这是外科领域最大的数据集,包含来自机器人和腹腔镜技术的680小时普通外科手术演示。

我们通过从公共来源整理数据集来避免保密问题,避免了数据敏感性问题。我们将这个数据集公开提供给外科AI研究社区,旨在通过增加数据访问来加速该领域的研究。

 2 相关工作

2.1 医学中的基础模型

在医学领域,已经为放射学、内窥镜视频分析和X光诊断等应用开发了基础模型。这些基础模型在很大程度上可以分为三种架构:语言模型、视觉模型和视觉-语言模型

语言模型用于通过对话进行诊断的场景,例如医学检查中的案例研究[Sin+23;Sch+24a;ZS23;Nor+23]或从临床笔记中提取数据[Agr+22]。

视觉模型对于需要视觉感知的医学任务很有用,例如医学分割[Che+21b;Ma+24](例如器官、肿瘤、医疗工具)或疾病分类[Zho+23]。

视觉-语言模型结合了视觉和语言,使视觉输入能够与自然语言进行交互,例如对疾病图像提出问题[Hua+23;Li+23]。

基于视觉的基础模型可能特别有影响力,因为医学图像是高维的,并且大量获取更具挑战性,而基础模型可以用更少的数据解决医学任务。

 2.2 视觉Transformer

视觉Transformer(ViTs)将最初为自然语言处理任务设计的Transformer架构扩展到计算机视觉任务。ViTs背后的原理是将图像视为一系列补丁,类似于句子中的单词,从而能够应用自注意力机制来捕获图像内的长距离依赖关系。

ViT的架构从将输入图像划分为固定大小的补丁网格开始(见图1)。然后,这些补丁被线性嵌入到指定维度的向量中


【图1 GSViT训练过程的图形描述。基于视频预测的预训练,使用非对称解码器头进行视频帧重建(右)。使用具有冻结权重的GSViT和学习到的分类头进行特定应用微调的演示(左)。】

通常会添加一个额外的可学习嵌入,通常称为“类别令牌”,到这些补丁嵌入中以表示整个图像。还经常添加位置嵌入以保留空间信息,因为Transformer架构本身并不按顺序处理顺序数据。

更正式地说,给定一个输入图像\(X\),它被划分为\(N\)个补丁\(\{P_{1}, P_{2}, \ldots, P_{N}\}\),其中每个补丁\(P_{i}\)通过线性投影转换为向量\(v_{\bar{u}}\):
\(v_{i}=P_{i}W + b\)
其中\(w\)和\(b\)分别是线性投影层的权重矩阵和偏置向量。然后,这些向量与类别令牌\(c\)连接,并添加到位置嵌入\(E_{pos}\)中,形成Transformer的输入序列:
\(Z_{0}=[C; v_{1}; v_{2}; \ldots; v_{N}] + E_{pos}\)

ViT架构的核心是一系列Transformer块,每个块包含两个主要组件:多头自注意力(MSA)层和逐位置多层感知器(MLP)。每个块按如下方式处理序列:
\(Z_{l}' = MSA(LN(Z_{l-1})) + Z_{l-1}\)
\(Z_{l} = MLP(LN(Z_{l}')) + Z_{l}'\)
其中\(Z_{l}\)是第\(l\)个Transformer块的输出,\(LN\)表示层归一化,\(l\)的范围是从1到块的总数\(L\)。MSA中的自注意力机制允许每个补丁与其他每个补丁相互作用,捕获整个图像的全局依赖关系。在最后一个Transformer块之后,提取类别令牌\(c\)并通过分类头(通常是一个线性层)传递,以产生最终输出。

 2.3 外科数据集

工具分类在外科手术中有一些最大的数据集[Twi+16;Al +19],范围从86,000到900,000帧。也存在各种专注于从各种手术中进行工具分割的外科数据集[Szn+12;All+20;Hon+20],通常大小在100-10,000张图像之间。

也许最大的外科数据集是SurgToolLoc,有4400万帧[Zia+23],专注于工具存在分类。

我们的工作侧重于无监督预训练,这与内窥镜[Bat+23]和MRI数据[Pra+24]方面的工作最相关。我们注意到,与我们的工作相比,这些模型是在相对较小的数据集上进行训练的(307和700,000张图像,而我们的是7000万张图像)。


【图2 GSViT的架构图。】

 3 方法

3.1 GSViT:普通外科视觉Transformer

我们为GSViT选择的架构基于EfficientNet ViT结构[Liu+23a]。该模型的设计强调推理速度,在推理和训练期间最小化内存和计算量。我们认为这对于实时运行算法的外科应用很重要。下面,我们详细描述这个架构(也见图1):

三明治布局是一种独特的结构,其中单个自注意力层\(\Phi_{A}^{i}\)放置在多个多层感知器(MLP)层\(\Phi_{F}^{i}\)之间。这种配置的公式为:

\(X_{i + 1}=\Phi_{F}^{N}(\Phi_{A}^{i}(\Phi_{F}^{N}(X_{i})))\)

其中\(X_{i}\)是第\(i\)个块的输入特征,\(N\)表示MLP层的数量。这种安排有更多的MLP层和更少的自注意力层,旨在减少内存消耗并促进通道通信。

在级联组注意力(CGA)模块中,通过将不同的全特征集分割喂给每个注意力头来解决注意力头冗余问题,从而实现更高效的计算。这由以下公式给出:

\(X_{e_{ij}} = Attn(X_{ij}W_{Q_{ij}}, X_{ij}W_{K_{ij}}, X_{ij}W_{V_{ij}})\)
\(X_{e_{i + 1}} = Concat[X_{e_{ij}}]_{j = 1}^{h}W_{P_{i}}\)
其中\(X_{ij}\)是输入特征\(X_{i}\)的第\(j\)个分割,\(W_{Q_{ij}}\)、\(W_{K_{ij}}\)、\(W_{V_{ij}}\)是每个头的投影层。级联设计通过将每个头的输出添加到下一个头来逐步细化特征表示。这在数学上表示为:

\(X_{0_{ij}}' = X_{ij} + X_{e_{i(j-1)}}\)
对于\(1 < j \leq h\)。这种方法节省了计算资源并增加了特征表示的深度。

网络内的参数重新分配在内存节省中也起着重要作用。这一步涉及通过在关键模块中扩展通道宽度,同时在不太重要的模块中减小通道宽度来重新分配参数。

这种策略允许在更高维空间中更有效地学习表示,而不会丢失特征信息,同时通过去除冗余参数来加速推理。

非对称解码器的架构旨在从GSViT编码表示逐步重建高分辨率图像。它从初始表示阶段开始,其中一个全连接层将输入转换到更高维空间,然后进行批归一化并使用高斯误差线性单元进行激活。

这个过程通过扩展编码数据的维度并通过归一化稳定学习过程,为解码序列准备数据。

在解码器中,一系列转置卷积层逐步增加处理数据的空间维度以重建原始图像大小。每个转置卷积层之后是批归一化和ReLU激活。

该架构采用不同大小的滤波器和步长来控制上采样过程。除了基本的解码层,该架构还在两个不同尺度上集成了带有挤压激励(SE)注意力模块的残差连接,旨在通过重新校准通道特征响应来细化特征表示,从而增强模型在重建过程中关注相关特征的能力。

与其他为图像重建而训练的医学基础模型的应用不同,外科手术具有空间和时间特性。大多数图像预训练技术,如直接图像重建或掩码技术,在某个时间点单个图像进行训练。

然而,我们认为外科问题的潜在空间嵌入应该捕获空间和时间属性,并且需要开发考虑空间和时间的模型。最近的工作探索了使用视频预测进行预训练[Gup+22],在时空问题上显示出改进的结果。

我们在GSViT中采用类似的方法,使用1帧输入和1秒预测(1帧)进行下一帧重建预训练。我们发现,如[Gup+22]中那样添加掩码并没有提高性能,因此选择了[Gao+22]中展示的下一帧重建方法。

 4 结果

4.1 从公开YouTube视频创建GenSurgery数据集

我们使用公开可用的腹腔镜和机器人手术视频,建立了用于计算机视觉的最大外科手术数据集。在数据收集过程中,使用与手术相关的关键词从YouTube上的手术演示特定播放列表中筛选出一系列视频。

记录这些播放列表中的视频频道,之后,从原始视频集的创建者那里获取更多视频。数据收集完成后,通过编程方式删除重复视频,并对每个视频进行手动筛选,以确保内容是手术演示,而不是其他常见的手术相关内容,如讲座视频。

此外,每个视频都被分类到具体进行的手术操作,以及它是腹腔镜手术还是机器人手术。每种手术操作的视频数量以及每种手术操作的总帧数在图2中直观展示。

们注意到,总帧数最多的手术类型与视频总数最多的手术类型有很大差异,因为不同手术的时长可能差异很大(例如,疝气修复平均时长为90.8分钟[Qab+21],肝切除术平均时长为424.4分钟[JKK22])。GenSurgery数据集总共包含7000万帧


【图3 GenSurgery数据集。】

 4.2 针对外科手术进行微调

除了基础模型GSViT,我们还发布了针对十种外科手术的微调模型。这些手术是根据GenSurgery数据集中帧数最多来选择的。微调过程与预训练相同,只是下一帧预测仅在特定手术的数据上进行优化。

我们为以下手术生成模型:阑尾切除术、胆囊切除术、结肠切除术、胃切除术、疝气修复术、食管切除术、结肠造口术、半结肠切除术、肝切除术、脾切除术。

模型命名遵循以下结构:GSViT-手术类型(例如,GSViTColostomy)。每个模型在数据集上进行一个epoch的微调,学习率为\(1e-4\)。

 4.3 GSViT可用于实时应用

与医学的其他领域不同,手术辅助工具必须能够在外科医生手术时实时运行。如前所述,GSViT的设计考虑到了这一点,并针对计算效率进行了优化。简要地说,我们展示了GSViT与其他替代架构相比的运行时性能指标结果。

我们比较了以下每个模型在来自Cholec80数据集的输入图像上的运行时推理时间(无梯度累积)。

在此,我们注意到GSViT每秒能够处理10621张图像[Liu+23a],即每毫秒处理10.6张图像。在非并行化过程中,在单个12GB的NVIDIA RTX A5500 GPU上,我们获得的运行时平均时间为\(12.1 \pm 0.1\)毫秒。

我们可以将其与两种最先进的高效架构EfficientNet-B0 [TL19]和GLiT-Tiny [Che+21a]进行比较,它们的吞吐量平均分别为每秒4532张和3516张图像(推理时间分别为每毫秒4.5张和3.5张图像)。

 4.4 手术阶段检测

我们在Cholec80手术阶段检测基准测试中比较了GSViT的性能。我们将微调后的GSViT-Cholecystectomy(胆囊切除术)模型用于分类,从预训练阶段分离出非对称解码器,并在模型上附加一个MLP分类器,将GSViT的潜在表示作为输入(见图1)。

附加了三个带有ELU激活函数的MLP层,然后进行批归一化。在训练过程中,我们在每个隐藏层使用概率为10%的随机失活(dropout)来提高泛化能力。我们还在训练过程中引入了几种图像变换来扩充数据集,例如光度失真和高斯模糊(完整列表见代码库)。

我们使用学习率为\(3e-4\)并带有指数衰减,批大小为128。MLP分类器头输出一个7维的分类向量,有两层,分别有2048和512个隐藏神经元。隐藏神经元具有指数线性单元(ELU)激活函数[CUH15],然后是层归一化[BKH16]。

在Cholec80上训练的GSViT-Cholecystectomy的结果如表1所示。我们展示了与先前模型相当的性能,准确率达到86.3%,同时计算成本显著降低,可调整参数数量减少。

我们还注意到,我们的方法仅通过查看当前帧来识别阶段,而其他方法,如TeCNO [Cze+20],则在阶段分类中考虑整个视频历史。考虑到这一点,我们的模型是性能最高的单帧模型。我们将此特性纳入其中,使其在实时手术应用中更具可行性。
【表1 Cholec80手术阶段注释任务的模型性能。】

 5 讨论

在这项工作中,我们引入了普通外科视觉Transformer(GSViT),这是一种参数高效的预训练视觉Transformer,在数百万个手术视频帧上进行视频预测训练。

我们还引入了GenSurgery数据集,包含来自28种不同手术的680小时手术视频。我们开源了GSViT的代码和权重,以及针对10种不同手术的微调版本。我们展示了GSViT能够在实时运行的同时,在Cholec80手术阶段分类任务中获得相当的性能。

未来的工作可以通过纳入时空掩码重建来扩展预训练。此外,可以探索在Cholec80数据集上获得更高性能的方法,如时间卷积[Cze+20]、长视频[Liu+23b]或循环卷积[Jin+20]。

我们还注意到,我们的数据集可用于构建更通用的医学基础模型,该模型不仅包括手术数据,还涵盖MRI和CT图像等其他模态[Sch+24b; SKK24]。

我们相信外科AI有潜力塑造外科手术的未来,希望这项工作是朝着这一宏伟愿景迈出的一步。

6 数据集代码调试

在github的仓库中看到了所有youtube链接的总类如下:

英文文件名 中文文件名
IBS.txt 肠易激综合征.txt
anal_surgery.txt 肛门手术.txt
appendectomy.txt 阑尾切除术.txt
cardiomyotomy.txt 心肌切开术.txt
cholestectomy.txt 胆囊切除术.txt
colectomy.txt 结肠切除术.txt
colon_cancer.txt 结肠癌.txt
colorectal_disease.txt 结直肠疾病.txt
davinci_instructions.txt 达芬奇手术机器人操作指南.txt
esophagectomy.txt 食管切除术.txt
fundoplication.txt 胃底折叠术.txt
gastrectomy.txt 胃切除术.txt
gastrojejunostomy.txt 胃空肠吻合术.txt
heller_myotomy.txt 赫勒肌切开术.txt
hemicolectomy.txt 半结肠切除术.txt
hernia.txt 疝.txt
ladds_procedure.txt 拉兹手术(治疗胆道闭锁).txt
liver_resection.txt 肝切除术.txt
rectal_cancer.txt 直肠癌.txt
rectal_prolapse.txt 直肠脱垂.txt
rectopexy.txt 直肠固定术.txt
robotic_chole.txt 机器人辅助胆囊切除术.txt
sigmoidectomy.txt 乙状结肠切除术.txt
splenectomy.txt 脾切除术.txt
superior_mesenteric_artery.txt 肠系膜上动脉.txt
unsorted.txt 未分类.txt
video_atlas.txt 手术视频图谱.txt

使用了提供的代码,需要下载对应的youtube链接的视频数据,需要kexue上网,另外还需要注意会报错的是需要登录,视频的播放受年龄限制。所以需要使用浏览器的这个插件,去获取登录的cookies

 

保存下来,然后

for _video in video_list:
    try:
        print(_video)
        capid = _video.split("/")[-1]
        if capid in existing: continue
        ydl_opts = {
            'outtmpl': 'videos/{}.%(title)s.%(ext)s'.format(capid),
            'writesubtitles': True,
            'subtitle': '--write-sub --sub-lang en',
            'cookiefile': cookie_file  # 设置Cookie文件
        }
        with YoutubeDL(ydl_opts) as ydl:
            ydl.download([_video])

设置一下就可以下载了,下载下来的视频文件大概是这样

 但是目前我没有看到视频对应的字幕文件,和自己手动下载好像没有太多区别。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐