想象一下你是一个正在参加考试的学生。你遇到了一道题,图片显示的是一片草地,里面有一只模糊的小动物。你并不完全确定那是什么动物,但你知道牛通常待在草地上。所以,你猜了“牛”。结果你答对了。

但是,如果下一张图片是一片草地,上面却是一艘呢?如果你完全依赖“草地”这个捷径,你可能还是会猜“牛”。

这正是目前最先进的人工智能,特别是像 CLIP 这样的视觉语言模型 (VLMs) 所发生的情况。这些模型非常强大,但它们也很“懒”。它们学习“捷径”——即背景 (如水) 和物体 (如鲸鱼) 之间的关联——而不是真正去识别物体本身。

在 AI 安全领域,这对于分布外 (Out-of-Distribution, OOD) 检测来说是一个巨大的问题。如果一辆自动驾驶汽车在熟悉的道路 (分布内背景) 上看到了一个未知的物体 (OOD) ,我们要它说“未知”,而不是因为它在马路上就说它是“汽车”。

在这篇文章中,我们将深入探讨一篇 CVPR 论文,题为 “Overcoming Shortcut Problem in VLM for Robust Out-of-Distribution Detection” 。 我们将探索华中科技大学的研究人员如何提出一种名为 OSPCoOp 的巧妙方法,迫使模型停止作弊并开始关注实际物体。


1. 问题所在: “聪明”但偷懒的模型

在解决问题之前,我们必须先理解它。像 CLIP 这样的视觉语言模型 (VLMs) 是在互联网上海量的图像-文本对上训练出来的。它们学会了将视觉特征与文本概念联系起来。

虽然这使它们能够执行未经明确训练的任务 (零样本学习) ,但也引入了一个缺陷: 耦合 (Coupling) 。 前景 (物体) 和背景 (场景) 的语义信息通常在训练数据中耦合在一起。

研究人员发现,这种耦合导致了捷径学习 (shortcut learning) 。 当 VLM 遇到一张图像时,它通常会忽略前景物体,并根据背景做出决定。

图 1 展示了捷径问题,CLIP 仅凭水背景就预测出了‘灰鲸’。

图 1 所示,即使把真正的鲸鱼移除,只留下水,CLIP 依然确信图像中包含“灰鲸 (Grey Whale) ”。模型不是在找鲸鱼;它是在找水。

为什么这很危险?

分布外 (OOD) 检测中,目标是将熟悉的数据 (ID) 与未知异常 (OOD) 区分开来。

  • ID (In-Distribution,分布内) : 模型已知的事物 (例如,狗) 。
  • OOD (Out-of-Distribution,分布外) : 模型不应该分类的事物 (例如,宇宙飞船) 。

如果一艘“宇宙飞船” (OOD) 出现在“公园” (与狗相关的背景) 中,依赖捷径的模型会看一眼公园,忽略宇宙飞船,然后自信地说: “这是一只狗!”

这种检测异常的失败正是作者旨在解决的问题。


2. 解决方案: OSPCoOp

研究人员提出了一种名为 OSPCoOp 的方法 (该名称代表包含背景解耦和掩码引导的区域正则化的方法) 。

核心理念很简单: 为了阻止模型关注背景,我们必须明确地教导它背景并不是物体。

这需要三个主要步骤:

  1. 背景解耦 (Background Decoupling) : 将物体与场景分离以创建训练数据。
  2. 增强 (Augmentation) : 创建高难度的“伪”OOD 样本。
  3. 掩码引导的区域正则化 (Mask-Guided Region Regularization) : 一种训练模型忽略背景的新方法。

在详细拆解之前,让我们先看看下面的整个流程图。

图 2. OSPCoOp 流程图,展示了解耦、增强和正则化步骤。

第 1 步: 背景解耦

第一个挑战是获取数据。我们有物体图像 (ID) ,但我们没有标记为“纯背景”的图像。研究人员利用分割和重绘技术自动化了这一过程。

对于包含物体 (如青蛙) 的分布内 (ID) 图像 \(x^{id}\),他们使用分割模型 (如 Segment Anything Model, SAM) 创建一个覆盖青蛙的掩码 \(m^{id}\)。

然后,他们移除青蛙,并使用图像修复 (inpainting) 模型用背景纹理填充空缺。这创建了一个新图像 \(x^{ood}\),它是纯背景。

该过程的数学公式为:

用于创建 OOD 样本的分割和修复方程。

这里, Seg 是分割模型, Inp 是修复模型,\(B\) 代表膨胀核 (使掩码稍大一些,以确保不残留青蛙的边缘) 。

过滤器: 有时,分割并不完美。可能会残留青蛙的一部分。为了确保新图像真的只是背景,他们将其通过 CLIP 处理。如果 CLIP 仍然认为图像看起来太像青蛙 (高相似度得分) ,他们就会丢弃它。

基于相似度得分过滤 OOD 样本的方程。

这确保了生成的“OOD”数据纯粹是背景噪声,不包含任何与类别相关的特征。

第 2 步: 增强策略

现在研究人员有了“纯背景”图像,他们将其用作伪 OOD 监督 (Pseudo-OOD supervision) 。 这意味着他们通过这样告诉模型来训练它: “如果你看到这张图 (背景) ,答案不是青蛙。”

为了使模型更加鲁棒,他们不仅使用修复后的背景。他们还通过提取图像的小块并重复它们来生成纹理 OOD 样本 。 这模拟了图像可能具有物体纹理 (如毛皮) 但没有形状的情况。

在下方的图 5 中,你可以看到生成的 OOD 样本 (橙色和绿色) 如何分布在真实数据分布 (蓝色) 的边缘。这有助于为什么是“分布内”定义一个更紧密的边界。

特征空间中 ID 样本与生成的 OOD 样本的可视化。

第 3 步: 掩码引导的区域正则化

这是论文中最具技术含量和创新性的部分。标准训练看的是整个图像。OSPCoOp 看的是区域

作者将图像分成小图块 (patches) 。利用第 1 步生成的掩码,他们将每个图块分类为ID 相关 (物体的一部分) 或ID 无关 (背景的一部分) 。

根据掩码确定图块是 ID 还是 OOD 的方程。

如果一个图块包含足够多的物体掩码像素 (\(m^{id}\)) ,它就是一个 ID 图块 (\(P\)) 。否则,它就是一个 OOD 图块 (\(P^{ood}\)) 。

损失函数 (模型如何学习)

训练过程涉及最小化一个结合了三个特定目标的总损失函数。

目标 1: 识别物体 (ID 全局相关性) 模型仍然必须正确分类原始图像。这是标准的交叉熵损失。

标准 ID 分类损失的方程。

目标 2: 忽略背景 (OOD 区域无关性) 这是改变游戏规则的地方。模型被迫注视背景图块 (\(P^{ood}\)) 并对它们保持不确定

在信息论中, 熵 (Entropy) 是衡量不确定性的指标。如果模型预测“狗: 99%,猫: 1%”,熵很低 (它是确定的) 。如果它预测“狗: 50%,猫: 50%”,熵很高 (它不确定) 。

研究人员希望背景图块具有高熵 。 他们希望模型看着草地时会说: “我完全不知道这是什么类别。”

OOD 区域损失方程,最大化背景图块的熵。

目标 3: 拒绝纯背景 (OOD 全局无关性) 最后,对于第 1 步中生成的完全修复的背景图像,模型在全局上也应该是不确定的。

全局 OOD 损失方程,最大化完整背景图像的熵。

汇总

最终的目标函数将这些总结在一起。通过最小化这个方程,模型学会了:

  1. 识别物体。
  2. 忽略背景图块。
  3. 忽略全背景图像。

结合了 ID、区域 OOD 和全局 OOD 损失的最终损失方程。


3. 新的挑战: ImageNet-Bg

作者发现现有研究的一个问题是,标准基准测试并没有专门针对背景干扰进行测试。为了证明他们的观点,他们建立了一个新数据集: ImageNet-Bg

他们采用了 ImageNet 的验证集,移除了所有前景物体,只留下了背景。

图 3 对比了原始 ImageNet 图像与新的 ImageNet-Bg 数据集。

正如你在图 3 中所见,“海蛇 (Sea Snake) ”的图像 (左上) 有明显的蓝色海水和沙子。在 ImageNet-Bg 中,只有海水和沙子留下了。依赖捷径的模型仍然会将这些空图像归类为“海蛇”。而鲁棒的模型会意识到这里没有蛇。

这个数据集充当了捷径学习的终极试金石。


4. 实验与结果

那么,OSPCoOp 真的有效吗?作者将其与几种最先进的方法进行了测试,包括 LoCoOp , 它是此前少样本 OOD 检测的最佳方法。

标准基准测试的表现

首先,他们查看了标准 OOD 数据集 (iNaturalist, SUN, Places, Texture) 。

表 1 显示 OSPCoOp 在标准基准测试中优于其他方法。

表 1 中,你可以看到结果。

  • AUROC (受试者工作特征曲线下面积) : 越高越好。它衡量模型区分 ID 和 OOD 的能力。
  • FPR95 (95% 真阳性率下的假阳性率) : 越低越好。它衡量模型将 OOD 误认为 ID 的频率。

OSPCoOp (Ours) 取得了最佳的平均性能,特别是在 SUNPlaces 等以场景为主且容易产生背景偏差的数据集上表现出色。

ImageNet-Bg 上的表现 (真正的考验)

在新的纯背景数据集上的结果更具说明力。

表 3 显示了在具有挑战性的 ImageNet-Bg 数据集上的结果。

观察 表 3 :

  • CLIPN-A 的 AUROC 降至 81.67%。
  • LoCoOp 达到 90.01%。
  • OSPCoOp 达到了 91.37%

这证实了 OSPCoOp 在意识到*“嘿,这里没有物体”*方面明显更好,而其他模型仍然被风景所欺骗。

少样本鲁棒性

这项研究的限制条件之一是“少样本学习”,意味着模型在训练期间每类只能看到 1、2、4、8 或 16 个样本。

图 4 图表显示 OSPCoOp 在不同样本数量设置下的性能。

图 4 显示,OSPCoOp (绿线) 始终优于 LoCoOp (橙色) 和标准 CoOp (蓝色) ,尤其是在数据极度稀缺 (1 或 2 个样本) 的情况下。这表明明确地教导模型应该忽略什么是一种非常数据高效的学习方式。

为什么它比 LoCoOp 更好?

LoCoOp 也试图利用局部区域进行训练。然而,LoCoOp 是基于与类别文本的特征相似度来决定哪些区域是“背景”的。

问题在哪里?由于捷径问题,模型可能认为“水”的特征与“鲸鱼”的文本很相似。因此,LoCoOp 可能会意外地将水视为前景的一部分!

OSPCoOp 通过使用明确的分割掩码避免了这个问题。它确凿地知道物体在哪里。

图 7 对比了 LoCoOp 与 OSPCoOp 的得分分布。

图 7 可视化了 ID (绿色) 和 OOD (蓝色) 得分之间的分离。

  • (a) LoCoOp 中,存在显著重叠。模型很困惑。
  • (b) Ours 中,峰值相距更远。模型可以清晰地分辩物体和异常。

5. 结论与启示

论文 “Overcoming Shortcut Problem in VLM for Robust Out-of-Distribution Detection” 强调了现代人工智能中的一个关键缺陷: 模型往往因为错误的原因而答对问题。通过依赖背景捷径,VLM 在开放世界环境中变得脆弱且不可靠。

OSPCoOp 的主要启示是:

  1. 不要相信背景: 前景和背景之间的耦合是捷径问题的根源。
  2. 创建你自己的 OOD 数据: 通过移除物体和修复背景,我们可以生成强大的负面训练样本。
  3. 引导注意力: 使用掩码迫使模型对背景区域具有高熵 (不确定性) ,可以有效地打破捷径依赖。

这项工作是使视觉语言模型不仅强大,而且鲁棒且值得信赖的重要一步。对于进入该领域的学生和研究人员来说,它提醒我们: 测试集上的准确率数字并不总是能说明全部问题。你必须确保模型实际上是在看你认为它在看的东西。