1. ​背景与问题定义

  • 视觉语言模型(如CLIP)在单标签识别中表现出色,但在零样本多标签识别(MLR)任务中表现不佳。MLR要求模型识别图像中多个对象(例如,图像包含“猫”和“沙发”),而无需任何特定训练数据或微调。
  • 现有方法依赖于提示调优(prompt tuning)或架构修改,这限制了其零样本适用性。VLMs的分数存在图像级偏差(image-level bias,即同一图像在不同提示下分数变化)和提示级偏差(prompt-level bias,即同一提示在不同图像下分数变化),这些偏差导致MLR性能下降,尤其是在基于平均精度均值(mAP)的排名任务中。
  • 核心挑战包括:VLMs对复合提示(如“猫和沙发”)表现出“OR-like”行为(即高分数可能仅因一个对象存在),而非理想的“AND-like”行为(即仅当所有对象同时存在时高分数)。

 

2. ​核心贡献

SPARC的核心创新包括两个主要部分:

  • 分数标准化(Score Normalization)​​:研究发现,VLM分数受图像级和提示级偏差影响,导致mAP显著下降。简单标准化(即减去平均值并除以标准差)能有效去除这些偏差。例如:
    • 图像级标准化​:针对单个图像,对所有提示分数进行归一化,消除图像特定偏差。
    • 提示级标准化​:针对单个提示,对所有图像分数进行归一化,消除提示特定偏差。
      实验证明,仅标准化就能提升mAP 6-10%在COCO、VOC和NUSWIDE数据集上。标准化后,分数更可靠,便于比较和融合。

 

复合提示与自适应融合(Compound Prompts and Adaptive Fusion)​​:

  • 复合提示生成​:基于现实对象组合(如“猫和沙发”)创建提示,利用上下文关联增强检测。提示包括成对(“A and B”)和三元组(“A, B, and C”)形式,并通过大语言模型(LLM)生成自然句子。提示选择使用粗略共现概率(例如,过滤掉低概率组合),平均每类生成≤20个提示。
  • 自适应融合​:研究发现,最大复合分数(如最高排名的提示分数)常因“OR-like”行为导致假阳性(即高分数可能仅因一个对象存在)。相反,第二高分数更可靠,因它捕捉对象组合的“AND-like”行为(即仅当所有对象存在时高分数)。SPARC引入基于主成分分析(PCA)的自适应融合:
    • 提取复合分数的顺序统计量(如第k高分数)。
    • 计算最大化方差方向(即第一主成分)作为权重,融合顺序统计量和单例提示分数。
    • 最终分数通过合并原始单例分数和融合分数获得。

 

3. ​方法细节

SPARC算法(Algorithm 1)分为三步:

  • 输入​:图像集和类名。
  • 步骤​:
    1. 生成复合提示​:使用类名创建复合提示,基于共现概率过滤(例如,阈值τ₂=0.05用于成对提示)。
    2. 获取分数并标准化​:查询VLM获取单例提示分数和复合提示分数,然后应用图像级和提示级标准化(公式1-2)。
    3. 自适应融合​:对每类计算顺序统计量,使用PCA融合(公式3-5),例如,最终分数ζᵢᵗ = sᵢᵗ + 融合分数。
  • 噪声模型​:VLMs分数可建模为sᵢⱼᵗ = θ₁ᵗ · f(yᵢᵗ, yⱼᵗ) + θ₀ᵗ + ε,其中f函数显示“OR-like”行为(高分数因单对象)和“AND-like”行为(高分数因所有对象)。标准化有效处理θ₀ᵗ和θ₁ᵗ偏差,而融合减轻f函数的歧义。

4. ​实验验证

实验在三个数据集(COCO、VOC、NUSWIDE)和九个CLIP骨干(如ViT-L/14、RN50)上进行:

  • 基准比较​:SPARC相比Vanilla ZSCLIP(单例提示),平均mAP提升12.6%(COCO)、8.8%(VOC)、7.9%(NUSWIDE)。改进一致,所有骨干提升6-15%。
  • 互补性​:SPARC与现有方法(如TagCLIP、TaI-DPT)集成,进一步提升mAP(平均1.6-1.7%)。例如,在TagCLIP上集成后mAP从81.3%升至82.9%。
  • 消融实验​:
    • 标准化模块​:单独标准化提升单例提示mAP 7.7%;与复合提示结合提升8.6%。
    • 融合策略​:自适应融合优于固定策略(如k-th最高分数或平均值)。第二高分数比最高分数更可靠,因最高分数易受假阳性影响。

 

5. ​结论与意义

  • SPARC是一种完全零样本方法,无需训练数据或VLM内部访问,通过系统性提示设计和分数解释提升MLR性能。关键发现包括:标准化有效去除偏差;复合提示的第二高分数优于最大分数;自适应融合优化排名。
  • 该方法揭示了VLM评分行为的新见解(如“OR/AND”歧义),并为零样本MLR提供可扩展框架。SPARC互补现有方法,代码公开于GitHub。
  • 总体意义:SPARC展示了通过分数分析而非架构修改实现鲁棒MLR的潜力,适用于机器人、医学影像等零样本场景。

总结而言,SPARC通过标准化和自适应融合解决了VLMs在零样本MLR中的核心偏差问题,显著提升mAP,同时保持模型无关和数据集独立特性。

论文地址:https://openaccess.thecvf.com/content/CVPR2025/papers/Miller_SPARC_Score_Prompting_and_Adaptive_Fusion_for_Zero-Shot_Multi-Label_Recognition_CVPR_2025_paper.pdf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/93528.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/93528.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/93528.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025创始人IP如何破局?

内容持续更新却无人点赞,课程精心打磨却无人报名,直播卖力讲解却无人停留 —— 明明有内容、有经验、有成果,却始终难以打动用户。问题的核心,或许在于你尚未打造出真正的 “创始人IP”。‌一、创始人IP:不止标签&…

告别配置混乱!Spring Boot 中 Properties 与 YAML 的深度解析与最佳实践

一、Spring配置文件 1.1、什么是Spring配置 Spring配置指的是在Spring框架中定义和管理应用程序组件(如Bean)及其依赖关系的过程 作用: 配置文件主要用于解决硬编码问题,它将可能变更的信息集中存放。程序启动时,会从…

无人机喷洒系统技术要点与难点解析

一、 模块运行方式1. 任务规划与加载模块:输入:农田边界、障碍物信息、作物类型、病虫害信息、所需喷洒量、天气条件。运行:利用地面站软件或移动APP,规划最优飞行路径,设定飞行高度、速度、喷洒参数、作业区域。将规…

mongodb源代码分析createCollection命令创建Collection流程分析

MongoDB 提供两种方式创建集合:隐式创建 和 显式创建。方式 1:隐式创建(推荐)当你向不存在的集合中插入文档时,MongoDB 会自动创建该集合。示例在 db中隐式创建 users 集合:javascriptdb.users.insertOne({…

c++注意点(13)----设计模式(抽象工厂)

创建型模式抽象工厂模式(Abstract Factory Pattern)是一种创建型设计模式,它提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定它们具体的类。简单说,它就像一个 "超级工厂"&#xff…

【大语言模型入门】—— Transformer 如何工作:Transformer 架构的详细探索

Transformer 如何工作:Transformer 架构的详细探索Transformer 如何工作:Transformer 架构的详细探索什么是 Transformer?什么是 Transformer 模型?历史背景从 RNN 模型(如 LSTM)到 Transformer 模型在 NLP…

iOS安全和逆向系列教程 第20篇:Objective-C运行时机制深度解析与Hook技术

iOS安全和逆向系列教程 第20篇:Objective-C运行时机制深度解析与Hook技术 引言 在上一篇文章中,我们深入学习了ARM64汇编语言的基础知识,掌握了从寄存器操作到指令分析的完整技能体系。现在,我们将把这些底层知识与iOS应用的高层逻辑联系起来,深入探讨Objective-C运行时…

IDEA中全局搜索快捷键Ctrl+Shift+F为何失灵?探寻原因与修复指南

在软件开发中,高效地查找和管理代码是提升生产力的关键。IntelliJ IDEA,作为一款功能强大的集成开发环境(IDE),提供了丰富的搜索功能,帮助开发者迅速定位代码、资源、甚至是IDE功能本身。 在 IntelliJ IDE…

【学习笔记】Lean4 定理证明 ing

文章目录概述Lean4 定理证明初探示例:证明 1 1 2示例:证明 2 * (x y) 2 * x 2 * yLean4 定理证明基础命题与定理命题(Proposition)定理(Theorem)量词策略概述 Lean证明是指在Lean环境中,通…

墨者:SQL注入漏洞测试(HTTP头注入)

墨者学院:SQL注入漏洞测试(HTTP头注入)🚀 1. 什么是HTTP头注入?🔍 HTTP头注入是指攻击者通过篡改HTTP请求头部的字段(如User-Agent、Referer、Cookie、Host等),将恶意SQL代码插入到后端数据库查…

linux_前台,后台进程

*在用户访问端口时,操作系统会形成对应的session,在其的内部进一步形成bash等进程 *一个会话只有一个前台进程,可以有多个后台进程,前台与后台进程的区别在于谁拥有键盘的使用权*前台与后台进程都可以访问显示器但是后台无法访问标准输入获取…

spring data mongodb 入门使用手册

<!--pom.xml引入依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>文档映射类Student.java import lombok.Data; import lombok.NoArgsCons…

Fastjson2常用操作大全:对象、字符串、集合、数组、Map与JSON互转实战

高性能&#xff1a; 核心解析器和生成器经过深度优化&#xff0c;性能远超许多同类库。 功能丰富&#xff1a; 支持标准JSON、JSONPath查询、泛型处理、日期格式化、自定义序列化/反序列化等。 易用性&#xff1a; API 设计简洁直观&#xff0c;JSON 工具类提供了最常用的 toJS…

大模型——字节Coze重磅开源!Dify何去何从

大模型——字节Coze重磅开源!Dify何去何从 想必很多人盼了很久,就在昨晚,字节Coze终于开源了!Coze Studio 是字节跳动新一代 AI Agent 开发平台扣子(Coze)的开源版本。 提供 AI Agent 开发所需的全部核心技术:Prompt、RAG、Plugin、Workflow,使得开发者可以聚焦创造 A…

NaVid——基于单目RGB捕获的视频让VLM规划「连续环境中VLN」的下一步:无需地图/里程计/深度信息(含MP3D/R2R/RxR,及VLN-CE的详解)

前言 因为我司「七月在线」准备于25年7月底复现下NaVILA&#xff0c;而在研究NaVILA的过程中&#xff0c;注意到了这个NaVid 虽然NaVid目前已经不是VLN sota了&#xff0c;但其首次展示了VLM在无需地图、里程计或深度输入的情况下&#xff0c;能够实现优秀的导航性能且对后来…

【Vue2】结合chrome与element-ui的网页端条码打印

所有文章都是免费查看的&#xff0c;如果有无法查看的情况&#xff0c;烦请联系我修改哈~ 序言 为什么要做这个呢&#xff1f;因为所需要的条码打印功能比较简单&#xff0c;符合需要即可&#xff0c;但是呢网上查看了发现并没有合适的开源项&#xff0c;其他成熟的软件收费又超…

循环神经网络——动手学深度学习7

环境&#xff1a;PyCharm python3.8 &#x1f449;【循环神经网络】(recurrent neural network&#xff0c;RNN) RNN通过 引入状态变量存储过去的信息和当前的输入&#xff0c;从而可以确定当前的输出。状态变量捕捉序列的时序依赖&#xff0c;是处理文本、时间序列等数据的…

Java面试宝典:MySQL8新特性底层原理

一、降序索引的革新 1.1 降序索引的核心概念 MySQL 8.0 实现了真正的降序索引(Descending Index) 支持,这是数据库引擎层面的重大改进: 存储引擎支持:仅 InnoDB 存储引擎支持降序索引,且仅适用于 B+Tree 索引结构 语法显式声明:通过 DESC 关键字显式指定字段的排序方向…

前端-html+CSS基础到高级(三)html基础和开发工具

一、html语法规范什么是注释?在同学上课学习时&#xff0c;我们会在书本段落间记录内容的注解&#xff0c;方便下次看到此处理解。问题&#xff1a;我们在书本段落间记录下的注解是为了给谁看的&#xff1f; 下次的阅读课本者&#xff08;自己&#xff09;。程序员在写代码时也…

-Dspring.output.ansi.enabled=ALWAYS 设置彩色日志不生效

-Dspring.output.ansi.enabledALWAYS 设置彩色日志不生效 问题原因&#xff1a;使用的自定义的 logback-spring.xml日志需要改一下 <?xml version"1.0" encoding"UTF-8"?> <configuration><appender name"STDOUT" class"c…