引言

手术场景中的精准点追踪一直受烟雾遮挡、镜面反光、组织变形等复杂视觉问题困扰,现有相关数据集仅提供坐标信息,缺失理解追踪失败机制的关键语义上下文。香港中文大学、深圳人民医院等联合团队构建了首个打通视觉追踪与手术场景点状态文本描述的大规模多模态数据集VL-SurgPT,还提出文本引导的TG-SurgPT追踪方法,有效提升了复杂视觉条件下的追踪准确性与可靠性,为计算机辅助手术的上下文感知追踪系统奠定了基础。

基本信息

文章标题:Bridging Vision and Language for Robust Context-Aware Surgical Point Tracking: The VL-SurgPT Dataset and Benchmark
期刊:AAAI 2026
发表时间:2025年11月15日
研究单位:香港中文大学;深圳市人民医院胃肠外科;香港大学;深圳大学;香港中文大学深圳研究院
Github地址:https://szupc.github.io/VL-SurgPT/
论文地址:https://arxiv.org/abs/2511.12026

研究内容与方法

1. VL-SurgPT多模态外科点追踪数据集构建

  • 目的
    解决现有外科点追踪数据集仅包含视觉坐标标注、缺乏语义上下文信息,无法支撑鲁棒的场景感知追踪算法开发的核心问题。
  • 实现逻辑
    • 数据采集:通过达芬奇Xi机器人系统采集胃肠道机器人手术的体内视频,经质量筛选后保留115分钟高质量手术 footage。
    • 真值锚点获取:术中使用吲哚菁绿(ICG)荧光染料标记组织关键点与器械预定义 keypoints,切换至UV成像模式记录首尾帧的ICG标记坐标作为高精度真值锚点,ICG标记提取代码如下:
      def extract_icg_markers(uv_frame, threshold=200):
          # 二值化提取ICG激活区域
          binary = cv2.threshold(uv_frame, threshold, 255, cv2.THRESH_BINARY)[1]
          contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
          markers = []
          for cnt in contours:
              M = cv2.moments(cnt)
              if M["m00"] != 0:
                  cX = int(M["m10"] / M["m00"])
                  cY = int(M["m01"] / M["m00"])
                  markers.append((cX, cY))
          return markers
      
    • 多模态标注:术后由临床医生通过自定义标注工具完成帧级标注,每一个标注点包含:
      • 2D像素坐标(不可见时标记为null)
      • 点类型标签:组织/器械
      • 点状态文本描述:从预定义词汇表中选择(如“Clear View”、“Smoke Obscuration”等)
      • 器械专属标签:器械类型、实例ID
  • 核心设计
    首次实现视觉坐标与语义状态标注的同步覆盖,包含5种组织追踪挑战场景、7类外科器械,为跨模态外科点追踪算法提供数据支撑。

2. TG-SurgPT文本引导外科点追踪模型:双分支跨模态融合架构

  • 目的
    解决纯视觉追踪模型烟雾遮挡、组织形变、器械遮挡等复杂外科场景下鲁棒性不足的问题,引入语义文本信息增强模型对场景上下文的理解能力。
  • 实现逻辑
    • 双分支特征提取模块
      • 文本分支:采用冻结的CLIP文本编码器编码点类型与点状态的文本描述,生成统一维度的文本特征嵌入Ft∈R2×512F_t \in \mathbb{R}^{2 \times 512}FtR2×512,实现代码如下:
        class TextEncoder(nn.Module):
            def __init__(self, clip_model_name="openai/clip-vit-base-patch32"):
                super().__init__()
                self.tokenizer = CLIPTokenizer.from_pretrained(clip_model_name)
                self.model = CLIPTextModel.from_pretrained(clip_model_name)
                for param in self.model.parameters():
                    param.requires_grad = False  # 冻结CLIP模型参数
        
            def forward(self, text_descriptions):
                inputs = self.tokenizer(text_descriptions, return_tensors="pt", padding=True, truncation=True)
                outputs = self.model(**inputs)
                return outputs.last_hidden_state[:, 0, :]  # <[BOS_never_used_51bce0c785ca2f68081bfa7d91973934]>token特征
        
      • 视觉分支:基于冻结的Track-On模型处理输入视频帧与查询点,输出4类视觉特征与初始预测坐标:
        • 查询点特征表示FqF_qFq
        • 当前帧密集视觉特征FhF_hFh
        • 粗粒度 patch 级匹配位置特征FpF_pFp
        • 初始预测坐标(XN,YN)(X_N, Y_N)(XN,YN)NNN为查询点数量)
          实现代码如下:
        class TrackOnBackbone(nn.Module):
            def __init__(self, track_on_ckpt="track_on_pretrained.pth"):
                super().__init__()
                self.track_on = torch.load(track_on_ckpt)
                for param in self.track_on.parameters():
                    param.requires_grad = False  # 冻结Track-On主干参数
        
            def forward(self, video_frames, query_points):
                # 输出Track-On的特征与初始预测结果
                F_q, F_h, F_p, init_pred = self.track_on(video_frames, query_points)
                return F_q, F_h, F_p, init_pred
        

TG-SurgPT模型整体架构在这里插入图片描述

3. 属性预测头模块:自主语义理解能力实现

  • 目的
    实现推理阶段的自主语义理解,无需手动输入文本描述,自动预测点的类型与当前视觉状态,为跨模态融合提供模型自主生成的语义特征。
  • 实现逻辑
    • 多尺度特征融合:通过多尺度关联模块融合FpF_pFpFhF_hFh,生成跨尺度融合特征Fp−hF_{p-h}Fph,代码如下:
      class MultiScaleCorrelation(nn.Module):
          def forward(self, F_p, F_h, scales=[1, 0.5, 0.25]):
              fused_features = []
              for scale in scales:
                  # 在多尺度下计算视觉特征关联
                  scaled_F_h = F.interpolate(F_h, scale_factor=scale, mode='bilinear', align_corners=False)
                  corr = torch.einsum('b c h w, b c n -> b n h w', scaled_F_h, F_p)
                  fused_features.append(F.interpolate(corr, size=F_h.shape[2:], mode='bilinear', align_corners=False))
              return torch.cat(fused_features, dim=1)
      
    • 可变形注意力编码:以查询点特征FqF_qFq为Query,融合特征Fp−hF_{p-h}Fph为Key/Value,通过多尺度可变形注意力提取语义感知的视觉特征。
    • 并行分类头设计
      • 点类型分类头:2分类线性层,输出“组织/器械”的分类概率
      • 点状态分类头:根据点类型选择对应维度的线性层(组织场景7类、器械场景4类),输出点视觉状态的分类概率
        实现代码如下:
      class AttributePredHead(nn.Module):
          def __init__(self, in_dim=1024):
              super().__init__()
              self.type_head = nn.Linear(in_dim, 2)  # 组织/器械二分类
              self.status_head = nn.Linear(in_dim, 7)  # 组织场景点状态分类
      
          def forward(self, fused_features):
              type_logits = self.type_head(fused_features)
              status_logits = self.status_head(fused_features)
              return type_logits, status_logits
      

4. 文本引导注意力融合模块:跨模态特征交互与轨迹精修

  • 目的
    语义文本特征与视觉追踪特征深度融合,为视觉轨迹预测提供上下文语义指导,提升复杂场景下的追踪鲁棒性。
  • 实现逻辑
    • 特征维度对齐:通过线性投影层将文本特征FtF_tFt投影至与视觉查询特征FqF_qFq相同的维度,代码如下:
      class TextVisualAlignment(nn.Module):
          def __init__(self, text_dim=512, visual_dim=256):
              super().__init__()
              self.proj = nn.Linear(text_dim, visual_dim)
      
          def forward(self, text_features):
              return self.proj(text_features)
      
    • 跨模态注意力计算:以FqF_qFq为Query,投影后的文本特征为Key/Value,计算交叉注意力得到文本-视觉融合特征Ft−qF_{t-q}Ftq
      Ft−q=Softmax(Fq⋅Ft−proj⊤dk)⋅Ft−proj F_{t-q} = \text{Softmax}\left(\frac{F_q \cdot F_{t-proj}^\top}{\sqrt{d_k}}\right) \cdot F_{t-proj} Ftq=Softmax(dk FqFtproj)Ftproj
    • 轨迹精修:将融合特征Ft−qF_{t-q}Ftq与视觉融合特征Fp−hF_{p-h}Fph再次通过可变形注意力融合,生成轨迹精修偏移量(aN,bN)(a_N, b_N)(aN,bN),最终预测坐标为:
      (X^N,Y^N)=(XN+aN,YN+bN) (\hat{X}_N, \hat{Y}_N) = (X_N + a_N, Y_N + b_N) (X^N,Y^N)=(XN+aN,YN+bN)
      整体模块实现代码如下:
      class TextGuidedAttention(nn.Module):
          def __init__(self, visual_dim=256, text_dim=512):
              super().__init__()
              self.align = TextVisualAlignment(text_dim, visual_dim)
              self.cross_attn = nn.MultiheadAttention(visual_dim, num_heads=4, batch_first=True)
              self.deform_attn = nn.MultiScaleDeformableAttention(embed_dim=visual_dim, num_heads=4)
              self.offset_head = nn.Linear(visual_dim, 2)
      
          def forward(self, F_q, F_t, F_p_h):
              F_t_proj = self.align(F_t)
              # 计算跨模态交叉注意力
              fused_tv, _ = self.cross_attn(F_q, F_t_proj, F_t_proj)
              # 多尺度可变形注意力精修特征
              refined_features = self.deform_attn(query=fused_tv, value=F_p_h, key=F_p_h)
              # 生成轨迹精修偏移量
              offset = self.offset_head(refined_features)
              return offset
      

5. 多任务损失函数:端到端联合优化

  • 目的
    联合优化点追踪精度、轨迹时序平滑性与语义状态分类精度,实现模型的端到端训练
  • 实现逻辑
    总损失由三部分加权组成:
    • 点距离损失Lp\mathcal{L}_pLp:采用Huber损失衡量预测坐标与真值坐标的偏差,降低异常值影响:
      Lp=∑t∈THδ(p^t−pt) \mathcal{L}_p = \sum_{t \in T} H_\delta(\hat{p}_t - p_t) Lp=tTHδ(p^tpt)
    • 轨迹平滑损失Ls\mathcal{L}_sLs:最小化预测轨迹的二阶差分,保证追踪结果的时序一致性
      Ls=∑t∈T∥Δ2p^t∥1 \mathcal{L}_s = \sum_{t \in T} \|\Delta^2 \hat{p}_t\|_1 Ls=tTΔ2p^t1
    • 语义分类损失Ltext\mathcal{L}_{text}Ltext:采用交叉熵损失优化点状态分类任务:
      Ltext=∑t∈TCE(s^t,st) \mathcal{L}_{text} = \sum_{t \in T} \text{CE}(\hat{s}_t, s_t) Ltext=tTCE(s^t,st)
      总损失函数为:
      L=Lp+Ls+Ltext \mathcal{L} = \mathcal{L}_p + \mathcal{L}_s + \mathcal{L}_{text} L=Lp+Ls+Ltext
      实现代码如下:
      class TGSurgPTLoss(nn.Module):
          def __init__(self, delta=1.0):
              super().__init__()
              self.huber_loss = nn.SmoothL1Loss(reduction='mean', beta=delta)
              self.ce_loss = nn.CrossEntropyLoss(reduction='mean')
      
          def forward(self, pred_coords, gt_coords, pred_status, gt_status, pred_trajectories):
              # 点距离损失
              Lp = self.huber_loss(pred_coords, gt_coords)
              # 轨迹平滑损失:计算预测轨迹的二阶差分
              delta2 = pred_trajectories[:, 2:] - 2 * pred_trajectories[:, 1:-1] + pred_trajectories[:, :-2]
              Ls = torch.mean(torch.abs(delta2))
              # 语义分类损失
              Ltext = self.ce_loss(pred_status, gt_status)
              return Lp + Ls + Ltext
      

实验结果分析

多模态与单模态方法基准对比

【8种视觉跟踪方法与TG-SurgPT在组织和器械点跟踪任务上的性能基准对比】在这里插入图片描述

通过对主流视觉跟踪方法与本文提出的TG-SurgPT进行全指标对比,核心结论如下:

  • 传统流基方法(RAFT、SEA-RAFT)在手术场景中性能显著不足,平均Jaccard分数均低于30%,无法应对复杂组织形变与视觉干扰
  • Transformer基方法表现更优,其中Track-On在精度与速度间实现最优平衡(10.85fps),但仍逊于多模态方法
  • TG-SurgPT在所有指标上均超越单模态基线,组织跟踪AJ提升至62.88%,器械跟踪AJ提升至49.52%,同时保持9.72fps的实用推理速度,语义文本引导有效填补纯视觉方法的信息缺口

场景特异性与视觉状态分析

【5种手术场景下各方法的<δx_avg指标对比(数值越高性能越好)】在这里插入图片描述

针对手术场景的专项分析与视觉状态预测结果显示:

  • 场景难度分层组织形变是最具挑战性的场景,烟雾场景因独特时序特征反而让注意力机制更易发挥作用;TG-SurgPT在所有场景下均保持性能领先,尤其在器械遮挡、相机抖动等动态场景提升显著
  • 视觉状态预测:组织点中“牵拉”“清晰视野”分类准确率达85.1%和78.5%,但遮挡类状态识别难度较高;器械点中自遮挡、外部遮挡识别准确率尚可,但“移出视野”状态仅48.1%,是未来优化方向

优势与局限

优势

首创多模态语义标注数据集:VL-SurgPT是首个融合视觉点轨迹与语义状态文本标注的大规模在体外科点追踪数据集,填补了现有数据集的语义空白,支持细粒度追踪行为分析。
文本引导追踪性能更优:TG-SurgPT通过跨模态注意力融合视觉与语义信息,在所有评估指标上均超越纯视觉基线,尤其在遮挡、烟雾等复杂手术场景下提升显著,同时保持实用推理速度。
构建全面领域基准:基于8种主流追踪方法建立了外科点追踪基准,涵盖多手术场景与器械类型的条件特异性分析,为领域提供统一评估框架。

局限

数据集场景覆盖有限:VL-SurgPT主要聚焦达芬奇系统下的胃肠手术,未涵盖其他手术类型与机器人系统,场景多样性不足。
推理速度未达临床实时要求:TG-SurgPT的推理速度为9.72fps,虽接近实时标准,但仍无法满足临床手术对实时性的严格需求
语义状态分类精度不均:TG-SurgPT的视觉状态分类在部分类别(如器械移出视野)上准确率较低,影响复杂场景下的语义引导效果。

参考文献

  1. Track-On: Transformer-based Online Point Tracking with Memory Aydemir, G. et al., 2025:本文提出的TG-SurgPT方法基于该Transformer在线点跟踪框架构建,在其视觉分支基础上扩展了文本引导的跨模态注意力机制,是实现视觉-语言融合手术点跟踪的核心基础架构。
  2. TAP-Vid: A Benchmark for Tracking Any Point in a Video Doersch, C. et al., 2022:该论文构建了通用视频点跟踪基准并定义了标准评估指标,本文在VL-SurgPT数据集的实验中采用了其中的Average Position Accuracy、Average Jaccard等核心指标,确保评估结果的规范性与可比性。
  3. STIR: Surgical Tattoos in Infrared: A Dataset for Quantifying Tissue Tracking and Mapping Schmidt, A. et al., 2024b:该论文提出了结合红外标记的手术组织跟踪数据集,本文参考其红外标记获取地面真值的方法,用于VL-SurgPT数据集中手术组织与器械关键点的高精度坐标标注
  4. Learning Transferable Visual Models from Natural Language Supervision Radford, A. et al., 2021:该论文提出的CLIP文本编码器被本文用于将手术点状态的语义描述编码为文本特征嵌入,为TG-SurgPT的跨模态注意力模块提供关键的语义特征支撑。
  5. SurgMotion: Tracking Everything in Robotic-Assisted Surgery Zhan, B. et al., 2024:该论文构建了包含组织与器械的手术点跟踪数据集,本文VL-SurgPT数据集在多目标跟踪标注上参考了该工作的思路,并通过新增视觉状态语义标注弥补了其单模态的不足。

更多推荐