TextRefiner: Internal Visual Feature as Efficient Refiner for Vision-Language Models Prompt Tuning 收录会议:
论文链接:
https://arxiv.org/abs/2412.08176 代码链接:
https://github.com/xjjxmu/TextRefiner
背景
传统的视觉表示学习依赖于预定义的标签集,难以扩展到未见类别。然而,对比视觉语言模型,以自然语言作为监督信号,利用对比损失将图像与文本对齐到统一的嵌入空间,成功实现了视觉表示与语言的高度关联与泛化,代表性方法如 ALIGN 和 CLIP。
得益于大规模数据和对比学习目标,这些模型在目标检测、语义分割和深度估计等下游任务中表现卓越。
在 CLIP 推理阶段,只需要利用图像编码器和文本编码器将图像和文本分别映射到一个联合的嵌入空间,并计算它们的相似度以进行匹配,就可以得到下游的预测结果。 为了进一步提高 CLIP 在下游任务上的性能,Prompt Tuning 技术开始被引入 CLIP 来提升模型适配性,主要通过优化上图中 CLIP“a photo of {class_name}”文本部分描述,通过向其中插入 learnable prompt token,通过仅微调这些少量 prompt token,去学习下游任务中对应任务信息,以生成更适配任务的下游任务的文本描述。
实验效果动机
尽管上述 prompt learning 可以完成 CLIP 在下游任务的迁移,但难以捕捉下游细粒度描述信息,也容易过拟合到下游任务泛化性差。
针对这一问题,最近 CVPR 2024 中的两篇文章提出的解决方案是借助 LLM 广泛的先验知识来为 class 产生大量属性描述内容,然后作为额外的细粒度信息输入到 text-encoder 中:
▲ LLaMP
▲ ArGue
其中 LLaMP 是借助 LLM 输出对类别进行细致描述的段落的 hidden state / KV cache,而 ArGue 是利用 LLM 输出的属性描述来作为额外的 textual prompt token。这些方法具有两个显著缺点:
1. 需要额外的参数 / 操作来保证 LLM 输出的知识符合对应 class 的分布,例如 LLaMP 得到 h 所需要的额外可训练 module 以及 ArGue 的属性采样过程。
2. 引入了额外的文本 token 来实现细粒度信息的注入增加了 TextEncoder 的计算开销,再加上 1 中需要的额外操作,从而使得推理时间大大增加。 例如 LLaMP 比原始只具有 soft prompt 的 CoOp 慢了 8 倍。
尽管引入大模型提供的外部知识能够细化类别级信息,但推理效率和成本问题成为新的瓶颈。我们认为细粒度的描述信息其实已经蕴藏在图像分支中,我们只需要对图像分支的视觉特征进行合理利用,也可以实现对文本分支信息密度的丰富 ,与之而来有两个优点: 1. 图像分支的知识完全来自于下游 class 自身,我们如果能利用好图像分支天然的视觉属性知识,就不需要上述提到的额外的过滤操作。 2. 我们也只需要设计一个操作让图像分支知识能够注入,就可以完成对文本信息的丰富,不需要增 加额外的 prompt token,极大减少了额外的参数存储和计算开销。
因此我们提出了 TextRefiner,通过挖掘图像分支中的局部特征,将丰富的视觉属性注入到文本嵌入中,从而提升模型的表示能力和泛化性 。该方法不同以往依赖外部专家辅助的方式来注入属性知识,突破视觉-语言模型在细粒度信息表示中的瓶颈,实现了局部对齐。
TextRefiner 围绕三个核心模块展开:Local Cache 、Feature Aggregation 和 Feature Alignment 。 Local Cache:捕获局部视觉属性
图像编码器(如 ViT)会将输入图像划分为不重叠的 patch,并通过不断堆叠的 transformer block 来对 patch 特征进行聚合,这些聚合后的特征包含了丰富的视觉属性,如纹理、边缘等细粒度信息。我们通过设计 Local Cache 模块,将这些局部特征以结构化的方式存储起来,用于表征图像中的关键视觉概念。 具体来说,Local Cache 包含固定数量的条目,每个条目表示某类视觉属性。为了提高效率,我们不直接存储所有局部特征,而是通过计算它们与条目的相似度,将相似的特征聚合到对应的条目中。 例如,当处理一张老虎图像时,其标志性的黑黄条纹会被分配并聚合到一个"纹理"条目中。而这一特性不仅对老虎有效,还能够泛化到其他具有类似纹理的物体(如同样具有黑黄间隔条纹的蜜蜂)。 这种泛化性使得 Local Cache 能够实现知识的跨类迁移。具体实现如方法途中的 Local Cache 部分所示,设局部特征为 ,Local Cache 为 (M 为条目数量,d 为特征维度)。我们通过余弦相似度计算每个局部特征 与条目 的匹配程度:
其中 为动量系数, 表示与条目 j 最匹配的特征集合。 Feature Aggregation:注入视觉属性知识 为了将 Local Cache 中存储的视觉知识注入到文本模态中,我们设计了一个特征聚合模块,将 Local cache 中与文本当前表示的内容相关的的局部属性与文本全局表示进行结合。 1. 视觉知识查询 :我们根据类别文本嵌入 与 Local Cache 中条目的相似度,计算视觉属性的加权特征:2. 特征融合 :将 与文本的全局特征 在通道维度拼接,通过线性层完成最终聚合。这种方式避免了引入额外 token,也能完成细粒度信息注入,得益于我们知识直接来自图像分支,不存在分布偏移问题,简单的操作就可以完成信息注入,降低开销的同时有效提升了文本的细粒度描述能力。Feature Alignment:局部特征模态对齐
由于视觉模态中的局部特征 在训练过程中并未直接对齐文本模态,这可能导致模态间的差距,影响视觉知识的查询效果。为此,我们引入了特征对齐模块。通过简单的两层 MLP,将局部特征V转换到文本嵌入空间,使其能够与文本模态对齐。通过模态对齐,显著提升了局部特征在视觉模态和文本模态间的适配能力。 通过上述三哥设计,TextRefiner 具有了以下特点 从而实现了细粒度视觉知识的高效注入,让视觉与文本的协同表达更加精细且自然。
验证了视觉特征作为属性 / 细粒度知识的来源是可以和外部专家知识实现相同的泛化性。
TextRefiner 和 LLaMP 在不同数据集上的表现具有差异。 针对 DTD 和 EuroSAT 数据集的性能差异,我们进行了深入分析。 EuroSAT 数据集,图像分辨率较低,细节模糊,主要依赖于全局特征理解。 LLaMP 提供的外部知识(如“景观上有一条细长的暗线”)更适合这种图像类型,因此表现优于 TextRefiner,而 DTD 数据集图像质量高、分辨率清晰,细粒度特征(如纹理和边缘)至关重要。 TextRefiner 的局部特征聚合在此类任务中展现显著优势,因此优于 LLaMP。 我们也验证了 TextRefiner 在增强 LLaMP 表现方面的能力。 例如,在 EuroSAT 数据集中,即使对于依赖全局特征的任务,结合局部信息的策略依然能够带来性能提升。 这进一步证明了 TextRefiner 是一种 灵活且通用的插件策略 ,能够为多种任务赋能。 得益于 Local cache 的构建原则和简单的信息注入方式,TextRefiner 的 FPS 显著高于 CoCoOp 和 LLaMP,显示其在推理速度上的高效性。
CoCoOp 和 LLaMP 因为都需要设计复杂的模块获取聚合了额外信息的 prompt token 再作为输入影响 attention 计算,FPS 较低。
换个角度 相比于Conditional prompt learning,是一个更高效的防止 prompt learning 在少样本上过拟合的方式。 CoOpOp 是 CoOp 的同作者延续性工作,提出了 Conditional prompt learning 的概念,通过使用一个 meta-net 来提取出 instance-wise 的特征,作为 prompt token 的初始化,来防止 prompt learning 在少样本情况下的过拟合到训练样本的问题。 这类方法无论是训练还是推理通常都需要进行两遍前向传播,第一遍得到 instance-wise 的 prompt token 初始化信息,第二遍才是进行正常前向过程。 而 TextRefiner 这种知识存储的方式,消除了第一遍前向的过程,训练和推理相比于 CoCoOp 这种方式更高效,泛化性也更好。 也是一种 Concept Bottlenecks Models 。上一周在听到一个 talk 里谈到一篇ICML 2020文章《Concept Bottlenecks Models》,当下就发现 TextRefiner 实际上也能算是 Concept Bottlenecks Models 变种。Concept Bottlenecks Models 通过将模型预测划分为两个步骤:先预测高层次的人为设置的属性概念,再基于这些概念预测最终的目标。而 TextRefiner 相当于把人为设置的属性变成了以图像分支的先验知识。 TextRefiner 整个框架不复杂 ,主要验证了原生的视觉信息可以作为泛化性的细粒度知识,还有很多结构上的探索和设计等探索 ,包括某些 patch features 可能给内部知识带来噪音,local cache 中条目的初始化和动态设计等等。另外,在这个架构上也可以进一步去考虑如何仅在推理时更新内部知识。欢迎大家基于 textrefiner 框架去进行后续的探索工作。最后,因为资源限制我们主要探索的是少样本的 setting,希望后续有人可以探索数据量 scale 后的效果。
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读 ,也可以是学术热点剖析 、科研心得 或竞赛经验讲解 等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品 ,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬 ,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱: [email protected]
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02 )快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」 也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」 订阅我们的专栏吧