想象一下你在看一张野餐的照片。照片里有三个柳条篮子,五十个红苹果,和两只小泰迪熊。如果有人让你“数一数熊”,你会立刻聚焦在那两个玩具上,而忽略那一堆苹果。这种根据语言过滤视觉信息的能力对人类来说是直觉,但对人工智能来说,这是一个出奇困难的任务。
在计算机视觉领域,这项任务被称为零样本物体计数 (Zero-Shot Object Counting) 。 其目标是构建一个模型,能够根据文本描述计算任意物体类别的数量,而无需针对该特定类别进行专门训练。
一直以来,模型在处理这个问题时都很吃力。它们经常被“多数类 (majority class) ”搞混。在我们的野餐例子中,标准模型可能看到成堆的苹果后就直接数苹果了,不管你问的是熊、篮子还是蚂蚁。
在这篇文章中,我们将深入探讨一篇引人入胜的论文: “T2ICount: Enhancing Cross-modal Understanding for Zero-Shot Counting” (T2ICount: 增强零样本计数的跨模态理解) 。 这项研究提出了一种新的框架,不再依赖标准的 CLIP 方法,而是利用文本到图像扩散模型 (如 Stable Diffusion) 中嵌入的丰富的像素级知识,从而实现了最先进的计数性能。
我们将拆解这个问题、架构、新颖损失函数背后的数学原理,以及那些表明机器在理解图文结合方面取得重大飞跃的实验结果。
问题所在: 视觉模型中的文本不敏感性
要理解为什么需要 T2ICount,我们首先需要看看当前方法的局限性。大多数最近的零样本计数方法都依赖于 CLIP (对比语言-图像预训练) 。CLIP 在将图像与标题进行全局匹配方面表现出色。然而,计数是一项局部的、像素级的任务 。
CLIP 倾向于关注图像中最显著的物体。如果你有一张由背景物体 (多数类) 主导的图像,基于 CLIP 的计数器通常会被它们“分心”。它表现出较差的文本敏感性——它看到了图像,也看到了文本,但无法严格地将计数过程与文本中提到的特定物体对齐。
让我们看一个论文中的具体例子来说明这种失败。

在上方的 Figure 1 中,请看左上角的图像。地面真值 (GT) 是 2.0 只熊。图像中包含几只熊和许多苹果。
- CLIP-Count (右上) : 它预测有 42.41 个物体。它完全忽略了“熊”的提示,而去数苹果,因为苹果在视觉上占主导地位。
- VLCounter (左下) : 它预测为 25.04。好一点,但仍然受到苹果的严重影响。
- T2ICount (右下) : 提出的方法正确地只关注了熊,预测为 2.0。
作者指出,这个问题源于 CLIP 主要在全局语义层面运作。为了准确计数,我们需要一个能够理解细粒度、局部视觉细节以及它们与文本之间关系的模型。
解决方案: 利用扩散先验
这就是扩散模型发挥作用的地方。像 Stable Diffusion 这样的文本到图像模型被训练用于根据文本提示逐像素地生成图像。为了做到这一点,它们必须拥有深刻的、局部化的理解,知道特定的词 (如“熊”) 如何转化为图像中的特定像素。
T2ICount 背后的研究人员假设,预训练扩散模型的内部特征图包含了准确计数所需的丰富“先验知识”。
效率的挑战
使用扩散模型进行计数并非直截了当。标准的扩散过程是通过许多步骤 (例如 50 或 100 步) 迭代地对图像进行去噪。仅仅为了数物体而运行这整个过程将会非常缓慢且计算昂贵。
为了使其具有实用性,作者提出使用单步去噪 (Single Denoising Step) 。 他们向输入图像添加噪声,并要求 U-Net (扩散模型的核心) 仅用一步预测噪声。然后,他们从这一步中提取特征图。
然而,效率是有代价的。正如我们在方法论部分将讨论的那样,单步操作通常导致文本和图像之间的对齐较弱。这篇论文的核心贡献在于他们如何修复这种弱对齐。
方法论: T2ICount 框架
让我们拆解一下架构。T2ICount 旨在从扩散模型中提取特征,对其进行优化以确保它们听从文本提示,然后输出一个密度图 (density map) 。 密度图是物体计数中的标准技术,模型预测一个热力图;将热力图中的值相加即可得到物体的总数。
这是该系统的高层概览:

如 Figure 2 所示,该过程如下运作:
- 输入: 一张图像和一个文本提示 (例如,“键盘按键”) 。
- 编码器: 图像被编码到潜在空间 (使用 VAE) ,文本被编码 (使用 CLIP) 。
- 去噪 U-Net: 系统执行单次去噪步骤。它从 U-Net 的解码器中提取多尺度特征图 (\(F_1, F_2, F_3, F_4\))。
- HSCM: 这些特征被送入分层语义校正模块 (Hierarchical Semantic Correction Module) 。 这是操作的大脑,负责优化特征以匹配文本。
- 输出: 一个计数器头生成最终的密度图。
1. 基础: 单步去噪
该框架使用了扩散前向过程的标准公式。给定初始压缩图像表示 \(z_0\),添加噪声以创建 \(z_t\)。

在这个方程中:
- \(z_t\) 是带噪声的潜在变量。
- \(\bar{\alpha}_t\) 控制噪声调度。
- \(\epsilon\) 是随机噪声。
模型试图以文本为条件预测噪声 \(\epsilon\)。作者使用了这次尝试中的特征。然而,因为为了保持快速,他们只使用了一步 (\(t=1\)),所以原始特征比较混乱。
2. “单步”问题的可视化
为什么我们需要一个特殊的校正模块?请看下方的 Figure 3 (面板 a-c) 。

面板 (a)、(b) 和 (c) 显示了仅使用单步时,不同分辨率下的扩散模型原始交叉注意力图 (cross-attention maps) 。注意到它们是多么模糊和不准确了吗?它们高亮了物体的大致区域,但也高亮了背景噪声,并且未能将特定的物体类别 (如“笔”或“球”) 与周围环境清晰地区分开来。
如果我们直接将这些特征输入计数器,结果将是不准确的。这使得分层语义校正模块 (HSCM) 成为必要。
3. 分层语义校正模块 (HSCM)
HSCM 旨在获取那些混乱的多尺度特征,并逐步清理它们。它以级联方式工作,从较小的、高层特征图移动到较大的、详细的特征图。
在每个阶段,该模块执行两个关键动作: 融合和校正 。
特征融合: 首先,来自前一 (较小) 层级的特征被上采样并与当前层级结合。

这里,\(F'_i\) 是融合后的特征图。它结合了来自更深层的上采样特征 (\(V_{i+1}\)) 和当前层特征 (\(F_i\))。
语义增强与校正: 这是关键步骤。模型计算一个文本-图像相似度图 (Text-Image Similarity Map) (\(S_i\))。这张图告诉模型: 哪些像素实际上匹配文本描述?

这个简单的视觉特征 \(V_i\) 和文本嵌入 \(c'\) 之间的点积创建了一个相关性热力图。
然后,模块使用这个相似度图来“校正”特征。它强制模型更多地关注那些与文本具有高相似度的区域。

如上式所示,特征 \(F'_i\) 通过加上由相似度图加权的先前特征 (\(V_{i+1} \odot S_{i+1}\)) 得到增强。这就像聚光灯一样,放大了我们想数的物体的信号,并抑制了背景。
4. 表征区域一致性损失 (\(\mathcal{L}_{RRC}\))
我们如何训练这个模块?标准的计数数据集通常只提供点标注 (每个物体上一个点) 。它们不给我们分割掩码,所以我们不知道确切哪些像素属于物体,哪些属于背景。
在不知道背景的情况下,很难教模型区分“前景”和“背景”。
作者通过回到扩散模型解决了这个问题。还记得 Figure 3 吗?虽然单步注意力图 (a-c) 对于精确计数来说太乱了,但作者注意到它们实际上非常擅长寻找大致的前景 。
他们通过结合不同层级的图创建了一个融合交叉注意力图 (Fused Cross-Attention Map) (\(\mathcal{A}^{cross}\)):

使用这张图和地面真值点标注 (\(D^{gt}\)),他们生成了一个“正-负-模糊” (PNA) 图。这张图自动将像素标记为三类:
- 正样本 (1): 地面真值中的高密度区域 (肯定是物体) 。
- 负样本 (0): 交叉注意力图中的低值区域 (肯定是背景) 。
- 模糊样本 (-1): 其他所有区域 (边缘、不确定的区域) 。

这个 PNA 图充当“伪掩码”来监督训练。损失函数,即表征区域一致性损失 (\(\mathcal{L}_{RRC}\)) , 强制模型的预测相似度图 (\(S\)) 与这个 PNA 图相匹配。

损失分为正样本和负样本两部分:
正样本损失: 确保正区域具有高相似度。

负样本损失: 确保背景区域的相似度为零。

关键在于,“模糊”区域被忽略了。这防止了模型因物体之间模糊边界的不确定性而受到惩罚。
最终损失函数: 总的训练目标结合了标准计数回归损失 (\(\mathcal{L}_{reg}\)) 和这个新的一致性损失。

实验与结果
作者在标准的 FSC-147 数据集上评估了 T2ICount,该数据集包含 147 个物体类别。然而,他们发现了该基准的一个主要缺陷: 偏差。
在 FSC-147 中,文本提示几乎总是指图像中的多数类。如果有 100 只鸟和 1 只狗,提示通常是“鸟”。这并不能测试模型是否在听从文本;它只测试了模型是否能数出最明显的重复模式。
引入 FSC-147-S
为了修正这个问题,作者整理了一个名为 FSC-147-S 的新子集。在这个数据集中,他们专门标注了少数类别 。 例如,在一张有许多主导物体的图像中,提示可能会要求数一个不太频繁出现的物体。这是一个更难的、“反偏差”的测试。
定量性能
1. 标准 FSC-147 上的性能 即使在标准数据集上,T2ICount 也优于现有方法。

在 Table 1 中,你可以看到 T2ICount 在测试集上实现了最低的平均绝对误差 (MAE) 11.76 , 显著击败了之前的最佳模型 CounTX (15.88)。
2. 更难的 FSC-147-S 上的性能 当在新的、无偏差的数据集上测试时,模型的真正实力显现出来。

Table 2 显示了巨大的差异。
- CLIP-Count: MAE 48.42
- VLCounter: MAE 35.24
- T2ICount: MAE 4.69
这是超过 85% 的提升。当其他模型完全无法数出少数类别 (很可能数成了多数类) 时,T2ICount 成功地遵循了文本描述。
3. 泛化能力 (CARPK 数据集) 为了确保模型不仅仅是记住了 FSC-147,他们在完全不同的停车场数据集 (CARPK) 上进行了测试。

Table 3 显示 T2ICount 具有良好的泛化能力,尽管它是一个零样本模型,但其性能与专门为汽车计数设计或调整的方法相当甚至更好。
定性分析
视觉结果证实了这些数字。让我们在 Figure 4 中对比 T2ICount 和 VLCounter。

- 草莓 (上) : VLCounter (21.6) 严重少计。T2ICount (40.2) 非常接近地面真值 (38.0)。相似度图 (右列) 显示 T2ICount 清晰地激活在红色的浆果上。
- 瓶子 (中) : 这是一个有眩光的困难场景。T2ICount 计数完全准确 (2.0)。
- 狗 (下) : VLCounter 在窗户中看到了图案并认为那是狗 (预测 10.4) 。T2ICount 正确识别了那一只狗 (预测 1.2) 。
我们可以在 Figure 5 中看到模型精度的更多示例。

右侧类似热成像的图是文本-图像相似度图 。 注意它们是多么干净。
- 在蓝莓示例 (左上) 中,该图高亮了深色的浆果,而忽略了旁边的红草莓。这正是论文旨在实现的“跨模态理解”。
- 在羊示例 (右上) 中,模型在复杂的背景下挑出了白色的小点。
消融实验
模型的每个部分都很重要吗?作者进行了消融实验 (移除模型的部分以查看什么会失效) 。

Table 4 揭示了:
- 基线 (B): 仅使用扩散特征对于标准任务还可以,但在困难的 FSC-147-S 数据集上表现糟糕 (MAE 24.34) 。
- B + \(\mathcal{L}_{RRC}\): 添加一致性损失极大地提高了困难数据集的得分 (MAE 降至 9.59) 。这证明了来自注意力图的监督至关重要。
- 完整模型 (+ HSCM): 添加分层校正将误差降至 4.69。这两个组件对于高精度都是必不可少的。
结论与启示
“T2ICount” 论文代表了零样本计数领域的重大成熟。它超越了像 CLIP 这样的视觉语言模型的“朴素”应用,并证明了扩散模型内部的生成先验对于像计数这样的判别性任务具有难以置信的威力。
核心要点:
- 对于像素任务,扩散 > CLIP: 扩散模型比 CLIP 更好地理解局部像素语义,而 CLIP 偏向于全局摘要。
- 校正是关键: 单步特征提取效率高但噪声大。分层语义校正模块有效地弥合了文本和视觉特征之间的差距。
- 智能监督: \(\mathcal{L}_{RRC}\) 损失巧妙地利用模型自身的内部注意力图来创建“免费”的背景掩码,解决了点标注数据集中弱监督的问题。
- 基准测试很重要: FSC-147-S 的引入暴露了先前研究中隐藏的偏差,表明真正的“文本引导”计数需要在少数类别上进行测试。
对于学生和研究人员来说,这篇论文是如何重新利用生成模型 (Stable Diffusion) 进行感知任务的一个绝佳范例。它表明“生成”图像和“理解”图像之间的界限正变得越来越模糊。展望未来,我们可以期待通过解锁生成式基础模型中的潜在知识来解决更多的判别性任务 (分割、检测、计数) 。
](https://deep-paper.org/en/paper/2502.20625/images/cover.png)