跳转至

Boosting Quantitive and Spatial Awareness for Zero-Shot Object Counting

会议: CVPR 2026
arXiv: 2603.16129
代码: 即将开源
领域: LLM效率
关键词: zero-shot counting, vision-language model, prompt tuning, cost aggregation, quantity awareness

一句话总结

提出QICA框架解决零样本目标计数中的数量感知缺失和空间不敏感问题,通过数量条件化的协同提示策略(SPS)联合适配视觉-语言编码器,结合在相似度图上直接操作的代价聚合解码器(CAD)保持零样本迁移能力,在FSC-147上达到零样本SOTA(MAE 12.41)并展现强跨域泛化。

研究背景与动机

  1. 领域现状:零样本目标计数(ZSOC)旨在仅通过文本描述枚举任意类别物体。主流方法利用CLIP等VLM计算视觉-文本相似度图,再用CNN/Transformer解码器预测密度图。
  2. 现有痛点:(1) 缺乏数量感知——文本提示仅指定类别不包含数量信息,模型擅长识别"是什么"但不理解"有多少",特别是密集场景下精度受限;(2) 空间不敏感+特征空间畸变——直接fine-tune VLM编码器导致严重过拟合训练类别,破坏预训练特征空间,损害零样本泛化。
  3. 核心矛盾:要精确计数就需适配编码器学习数量敏感特征,但fine-tuning又会破坏零样本泛化能力——这形成了适配vs泛化的两难困境。
  4. 本文要解决什么:(1) 让模型具备细粒度数量区分能力;(2) 在不破坏预训练特征空间的前提下实现有效适配。
  5. 切入角度:引入数量条件化提示让编码器隐式学习数量信息,同时在相似度图(而非特征空间)上操作来避免特征畸变。
  6. 核心idea一句话:训练时用factual/counterfactual数量提示教模型区分不同数量,推理时仅用类别提示实现零样本计数。

方法详解

整体框架

输入为图像 \(I\) 和文本描述 \(T\),输出为密度图 \(D\)。框架包含三个核心模块:(1) SPS通过数量条件化可学习提示联合适配冻结的CLIP视觉和语言编码器;(2) CAD在视觉-文本相似度图上进行空间聚合和多尺度上采样预测密度图;(3) \(\mathcal{L}_{MQA}\) 在编码器和解码器两级强制数量一致性。关键设计:训练时包含数量信息的路径在推理时被关闭,仅保留类别语义路径。

关键设计

  1. 协同提示策略(Synergistic Prompting Strategy, SPS)
  2. 做什么:通过数量条件化的可学习提示联合适配视觉和语言编码器
  3. 核心思路:将数量值 \(q\) 映射为连续嵌入 \(\epsilon_q\),与每层的可学习提示 \(\Pi^j\) 相加生成数量感知文本提示 \(\hat{\Pi}^j_k = \Pi^j + \epsilon_{q_k}\mathbf{1}^T\)。通过耦合函数 \(\Phi^j\) 将语言提示投影为视觉提示 \(\Psi^j_k = \Phi^j(\hat{\Pi}^j_k)\),实现双向梯度流。训练时为每张图生成factual(真实数量)和counterfactual(偏离数量)提示
  4. 设计动机:独立的单模态提示无法实现跨模态的数量感知协调。耦合函数建立了语言→视觉的直接梯度通路,使两个编码器联合向数量感知方向适配

  5. 代价聚合解码器(Cost Aggregation Decoder, CAD)

  6. 做什么:直接在视觉-文本余弦相似度图上操作,通过空间聚合产生密度图
  7. 核心思路:先计算密集视觉特征 \(\mathbf{V}\) 与类别文本嵌入 \(\mathbf{T}^{\text{cat}}_k\) 的逐位置余弦相似度,得到相似度图 \(\mathbf{S}_k\);再通过嵌入层→Swin Transformer空间聚合→多尺度上采样(带skip connection和相似度门控)→预测头生成最终密度图
  8. 设计动机:在特征空间操作会破坏预训练manifold导致过拟合,而在相似度图(一个标量场)上聚合保持了嵌入空间的完整性,既能fine-tune编码器又不损害泛化

  9. 多级数量对齐损失(\(\mathcal{L}_{MQA}\)

  10. 做什么:在编码器和解码器两级强制数量一致性约束
  11. 核心思路:编码器级用ranking loss确保真实数量假设的全局相似度最高 \(\alpha_0 > \alpha_i\),且数量越接近真实值相似度越高;解码器级用辅助MSE损失约束各数量假设的密度图积分匹配对应数量值。总损失 \(\mathcal{L}_{MQA} = \|D^0 - D^{GT}\|_2^2 + \lambda_1 \mathcal{L}^{qty}_{enc} + \lambda_2 \mathcal{L}^{qty}_{dec}\)
  12. 设计动机:仅在解码器端监督是不够的,编码器级的ranking约束让特征空间在训练阶段就隐式编码数量信息,使得推理时不需要数量提示也能准确计数

损失函数 / 训练策略

  • 密度图MSE + encoder ranking loss (\(\lambda_1=0.1\)) + decoder counting loss (\(\lambda_2=0.05\))
  • 训练时每张图生成 \(K\) 个数量假设(factual + counterfactual),独立前向传播共享编码器参数
  • 推理时完全不需要数量信息,仅输入类别文本

实验关键数据

主实验

FSC-147 零样本计数

方法 Backbone Val MAE↓ Val RMSE↓ Test MAE↓ Test RMSE↓
CounTX ViT-B/16 17.76 65.21 16.70 105.21
VLCounter ViT-B/16 18.06 65.13 17.05 106.16
T2ICount SD-v1.5 13.78 58.78 11.76 97.86
CountGD GDINO-Swin-B 12.14 47.51 14.76 120.42
QICA ViT-B/16 13.82 60.24 13.05 104.17
QICA† ViT-L/14 12.98 56.35 12.41 -

消融实验

配置 Val MAE Test MAE 说明
Baseline (CLIP + Conv decoder) ~18 ~17 无数量感知
+ SPS (仅文本提示) ~16 ~15 单模态提示有限改进
+ SPS (协同提示) ~15 ~14 双模态耦合显著提升
+ CAD ~14 ~13.5 空间聚合进一步优化
+ \(\mathcal{L}_{MQA}\) (完整模型) 13.82 13.05 多级约束最终效果

关键发现

  • QICA在相同backbone(ViT-B/16)下显著超越所有零样本方法(CounTX MAE 16.70 → QICA 13.05)
  • 跨域泛化测试(CARPK、ShanghaiTech-A)上超越所有基线,证明没有过拟合
  • SPS中耦合函数比独立prompting提升约1.5 MAE,说明双模态协同很关键
  • CAD比直接在特征空间解码的方案MAE低约1-2点,同时保持了零样本能力
  • 数量ranking loss的贡献在密集场景(物体数多)中更加显著

亮点与洞察

  • 训练-推理一致性的精巧设计:训练时用数量感知的完整嵌入 \(T^{full}\) 通过投影得到类别嵌入 \(T^{cat}\),推理时自然产生语义等价的类别嵌入——数量知识被"蒸馏"进了视觉编码器的隐式表示中
  • 在相似度图而非特征空间操作:这个设计选择非常关键——CAD作用于一个标量场(相似度图),对预训练特征空间零破坏,解决了fine-tuning VLM的老大难问题
  • Factual/Counterfactual数量提示:用"正确数量"和"错误数量"的对比学习方式教模型数量感知,比简单加数量标签更有区分度

局限性 / 可改进方向

  • 仍依赖预训练VLM的类别识别能力,对VLM未见过的极其罕见物体可能失效
  • K个数量假设的多次前向传播增加了训练开销
  • 密度图MSE损失在极端稀疏/极端密集场景下可能不平衡
  • 可以探索将数量感知机制扩展到开集检测/分割任务

相关工作与启发

  • vs CLIP-Count/CounTX: 它们冻结编码器避免过拟合但也放弃了适配能力,QICA通过CAD在相似度图操作解决了这个两难
  • vs CountGD: CountGD使用更大的GDINO backbone + visual exemplar,QICA仅用文本+ViT-B就接近其性能
  • vs T2ICount: 基于Stable Diffusion的方法有更强的生成先验,但推理开销大且backbone不同难以公平比较

评分

  • 新颖性: ⭐⭐⭐⭐ 数量感知提示和代价聚合解码器的结合很有创意,训练-推理一致性设计精巧
  • 实验充分度: ⭐⭐⭐⭐ FSC-147 + 跨域验证 + 丰富消融
  • 写作质量: ⭐⭐⭐⭐ 动机清晰,方法描述详细
  • 价值: ⭐⭐⭐⭐ 零样本计数方向的实用贡献