想象一下,走进一个拥挤的房间。几乎在瞬间,你就能分辨出谁在和谁说话,谁在看钟表等着离开,谁在盯着桌上美味的蛋糕。这种能力——视线跟随 (gaze following) ——是人类社会互动的基本组成部分。它让我们能在分秒之间推断出意图、注意力和社会动态。

对于计算机来说,这项任务却出奇地困难。要理解一个人在看哪里,模型必须理解两件截然不同的事情: 人的物理朝向 (头部姿态、眼睛位置) 和场景的语义语境 (物体在哪里?它们有多远?) 。

历史上,解决这个问题需要构建复杂、沉重的深度学习架构,就像“弗兰肯斯坦”式的模型——将用于头部分析、场景分析、深度估计和姿态估计的独立神经网络拼凑在一起。

在这篇文章中,我们将深入探讨 Gaze-LLE , 这篇论文彻底简化了这一过程。作者没有从头训练庞大复杂的流水线,而是提出了一个简单的问题: 我们能不能直接问一个通用的基础模型,某人在看哪里?

答案是肯定的,但正如我们将看到的,这需要一个巧妙的架构技巧,称为“头部提示 (Head Prompting) ”。

先前方法的问题

要欣赏 Gaze-LLE 的优雅之处,我们需要先看看视线目标估计传统上是如何解决的。标准方法被称为 多分支融合 (Multi-Branch Fusion) 架构。

在这种范式中,模型被分为两个 (或更多) 并行流:

  1. 头部分支 (Head Branch) : 获取头部的高分辨率裁剪图来分析视线方向。
  2. 场景分支 (Scene Branch) : 获取完整图像来理解环境。
  3. 辅助分支 (可选) : 许多最近的最先进 (SotA) 模型还添加了用于深度图或 3D 姿态估计的独立分支。

然后,这些特征在“融合模块”中混合在一起,以预测一个人在看哪里的热力图。

此图比较了两种视线估计方法。先前的方法使用多个编码器 (头部、场景、深度、姿态) 进行融合。Gaze-LLE 使用带有头部提示的单个冻结场景编码器。

如上图 1 上半部分所示,这种方法变得非常混乱。它需要同时训练多个编码器。它需要复杂的损失函数来平衡不同的分支。更重要的是,这会导致模型拥有巨大的参数量 (通常 50M 到 100M+ 参数) ,且训练缓慢。

Gaze-LLE 的解决方案

研究人员提出了 Gaze-LLE (Gaze estimation via Large-scale Learned Encoders,基于大规模学习编码器的视线估计) 。其核心理念是 精简

与其在一个小型视线数据集上从头训练场景编码器,为什么不使用 基础模型 (Foundation Model) 呢?像 DINOv2 (一种大型视觉 Transformer) 这样的模型已经在数百万张图像上进行过训练,能够理解视觉语义。它们已经“知道”场景长什么样了。

Gaze-LLE 冻结了这个巨大的骨干网络,并在其之上构建了一个轻量级的解码器。结果是一个具备以下特点的模型:

  • 轻量级: 它只有约 2.8M 个可学习参数 (相比之下,先前的工作有 50M+) 。
  • 快速: 它在不到 1.5 个 GPU 小时内完成训练。
  • 准确: 它实现了最先进的性能。

让我们逐步拆解这个架构。

Gaze-LLE 的架构图,显示了冻结的骨干网络、头部位置嵌入和 Transformer 解码器块。

1. 冻结的骨干网络 (The Frozen Backbone)

过程始于输入图像。该图像被送入冻结的 DINOv2 编码器。作者选择 DINOv2 是因为它在开箱即用的密集预测任务 (如分割或深度估计) 上表现出色。

这个编码器输出一组特征 token (可以将它们视为图像的压缩智能表示) 。关键在于,这个骨干网络的权重 从未更新 。 这节省了大量的计算资源,并防止模型“遗忘”其在预训练期间学到的丰富通用视觉知识。

2. 创新点: 头部提示 (Head Prompting)

这里存在主要的挑战。如果你将图像输入 DINOv2,它会给你 整个 场景的表示。但视线估计是特定于人的。如果房间里有五个人,模型需要知道我们对 个人感兴趣。

先前的工作通过裁剪头部并运行一个独立的神经网络 (“头部分支”) 来解决这个问题。Gaze-LLE 完全消除了头部分支。

相反,他们引入了 头部提示 (Head Prompting) 。 他们获取目标人物头部的边界框并创建一个二值掩码 \(M\)。然后,他们学习一个特定的向量,称为 位置嵌入 (\(p_{\text{head}}\)) 。他们将这些信息直接注入到场景特征中。

在数学上,如果 \(x_{\mathcal{F}}\) 是来自骨干网络的特征图,新的表示 \(S\) 为:

\[ S = x _ { \mathcal { F } } + \left( M * p _ { \mathrm { h e a d } } \right) \]

这是一个微妙但强大的转变。模型不再单独处理头部,而是有效地“高亮”特征图中对应于该人的区域,并告诉 Transformer: “关注位于此处的人。”

3. Transformer 解码器

一旦特征被头部位置提示后,它们会被传递给一个由 3 个 Transformer 层组成的轻量级模块。

为什么要用 Transformer?视线通常是一个 长程依赖 问题。图像最左边的人可能正看着最右边的物体。卷积神经网络 (CNN) 通常只关注像素的局部邻域,往往难以连接这些遥远的点。而 Transformer 及其自注意力机制正是为此设计的——允许模型将“头部”token 与图像中任何位置的“目标”token 关联起来。

对于需要知道人是否在看摄像机帧 外部 物体的任务,作者附加了一个特殊的可学习 token:

\[ [ \underbrace { t _ { \mathrm { i n / o u t } } } _ { \mathrm { t a s k ~ t o k e n } } , \underbrace { s _ { 1 } , s _ { 2 } , . . . , s _ { H \times W } } _ { \mathrm { s c e n e ~ t o k e n s } } ] \]

这个任务 token \(t_{\text{in/out}}\) 收集整个场景的信息,最终用于分类视线目标是可见的还是在屏幕外。

4. 损失函数

因为架构如此精简,训练目标也非常简单。先前的工作使用复杂的多任务损失来监督深度、姿态和显著性分支,而 Gaze-LLE 使用的是热力图损失 (点在哪里?) 和二元分类 (是否在帧内?) 的简单组合:

\[ \mathcal { L } = \mathcal { L } _ { \mathrm { h m } } + \lambda \mathcal { L } _ { \mathrm { i n / o u t } } \]

为什么简单的替换行不通

你可能会想: “如果 DINOv2 这么好,我们能不能直接拿一个旧模型 (比如 2020 年的 Chong 等人的模型) ,把它的 ResNet 编码器换成 DINOv2?”

作者实际上尝试过这样做,结果非常有趣。

表格显示,简单地将现有方法中的编码器替换为 DINOv2 会导致性能下降。

如上表 1 所示,简单地将 DINOv2 插入现有架构 (如 Chong 等人、Miao 等人或 Gupta 等人的架构) 实际上会让性能 变差 , 即使对骨干网络进行了微调也是如此。

这揭示了一个关键见解: 架构至关重要。 旧架构依赖于卷积解码器和为 ResNet 特征设计的特定融合技术。DINOv2 特征是不同的——它们是基于 Patch 的且语义密集的。它们需要一个能理解其语言的解码器 (即 Transformer) 和一个能无缝集成的提示机制。

设计分析: 成功的秘诀

作者进行了严格的消融研究,以证明他们的简化设计实际上是最优的。他们测试了三个设计维度:

  1. 头部集成: 我们应该在早期 (编码器中) 还是晚期 (解码器中) 合并头部信息?
  2. 解码器类型: 我们应该使用卷积 (CNN) 还是 Transformer?
  3. 分支: 我们真的需要一个独立的头部分支吗?

比较设计选择的表格。F 行 (晚期集成、Transformer 解码器、仅场景分支) 产生最佳结果。

表 2 (上图) 用数字讲述了这篇论文的故事:

  • 行 (a): 这模仿了先前的工作 (早期集成、卷积解码器、独立头部分支) 。性能还不错 (AUC 0.854) 。
  • 行 (c): 切换到“晚期”集成有显著帮助 (AUC 0.932) 。
  • 行 (d) vs (f): 这是决定性的一击。行 (d) 使用了一个独立的头部分支。行 (f) 没有 。 性能几乎相同 (AUC 0.954 vs 0.953) 。

结论: 如果你使用 Transformer 解码器和强大的骨干网络, 你就不需要独立的头部分支。 只要你告诉模型头在哪里,骨干网络就已经捕捉到了足够的关于头部朝向的细节来解决这个问题。

实验结果

那么,Gaze-LLE 与该领域的重量级模型相比表现如何?结果是无可争辩的。

比较 Gaze-LLE 与先前最先进技术的主要结果表。Gaze-LLE 以显著更少的参数实现了更高的 AUC 和更低的 L2 误差。

在表 3 中,看看 Learnable Params (可学习参数) 这一列。大多数具有竞争力的模型都有 30M 到 100M 个参数。Gaze-LLE (ViT-B) 只有 2.8M

尽管小了一个数量级,它在 GazeFollow 和 VideoAttentionTarget 基准测试上都实现了更高的 AUC (曲线下面积) 和更低的距离误差 (L2) 。它击败了使用辅助深度和姿态估计器的复杂模型。

训练效率

这种复杂度的降低带来的最大实际好处之一是训练速度。因为繁重的工作由预先计算好的、冻结的骨干网络完成,梯度更新只发生在小型的解码器中。

绘制 AUC 与 GPU 小时数关系的图表。与其他方法相比,Gaze-LLE 几乎立即收敛到高精度。

图 4 展示了这种巨大的差异。当其他方法需要 6 个以上的 GPU 小时才能收敛到较低的精度时,Gaze-LLE 在不到 1.5 小时内就飙升至最先进的性能。

定性示例

该模型不仅指标好看;它也经得起肉眼检验。它在不同领域的泛化能力非常出色,例如 ChildPlay 数据集 (互动中的儿童) 和 GOO-Real (零售环境) ,即使没有进行微调。

跨不同数据集的视线预测视觉示例,显示源自人头部的热力图。

在上面的可视化中,你可以看到模型根据输入的人 (边界框) 正确识别了视线目标 (热力图) 。它能处理复杂的场景——比如拥挤的房间或杂货店过道——在这些场景中,简单地猜测“中心偏差”是行不通的。

结论

Gaze-LLE 代表了我们在基础模型时代处理计算机视觉任务方式的转变。多年来,趋势是增加 更多: 更多的分支,更多的模态 (深度、姿态) 和更复杂的融合模块。

这篇论文证明了 少往往即是多 。 通过利用 DINOv2 等冻结模型中嵌入的海量知识,并设计一个能正确利用该知识的解码器 (通过头部提示和 Transformer) ,我们可以超越复杂的专用架构。

对学生和研究人员的启示是明确的:

  1. 不要重新造轮子: 使用预训练的基础模型。
  2. 专注于接口: 魔法往往在于你如何查询模型 (提示) ,而不是模型结构本身。
  3. 简单即规模: 更小、更简单的模型更容易训练、调试和部署。

Gaze-LLE 有效地将视线估计从一个复杂的多模态融合问题转变为一个简化的“提示并解码”任务,为高效的视觉理解树立了新标准。