读论文笔记-CoOp:对CLIP的handcrafted改进

读论文笔记-Learning to Prompt for Vision-Language Models

Problems

现有基于prompt engineering的多模态模型在设计合适的prompt时有很大困难,从而设计了一种更简单的方法来制作prompt。

Motivations

  1. prompt engineering虽然促进了视觉表示的学习,实现了zero-shot迁移到其他任务上,但设计合适的prompt耗时费力。
  2. NLP领域提供了用连续提示词来改善离散prompt的方法,但也有无法解释到底学到了什么词的缺陷。

Methods

在这里插入图片描述
Key:初始化连续向量建模上下文,并通过大量数据进行学习,实现prompt的自动学习。提出统一上下文unified context和特定类别上下文specific context两种prompt。

  • unified context的形式
    t = [ v ] 1 [ v ] 2 [ v ] 3 . . . [ v ] M [ C L A S S ] t=[v]_1[v]_2[v]_3...[v]_M[CLASS] t=[v]1[v]2[v]3...[v]M[CLASS]
    [ v ] M [v]_M [v]M是与词嵌入相同维度的向量,个数M是一个超参数, [ C L A S S ] [CLASS] [CLASS]是类别标签对应的词嵌入向量,也可以放在中间。可学习向量和类别对应的词向量是concatenate从而形成提示词t的。
  • specified context的形式
    t = [ v ] 1 i [ v ] 2 i [ v ] 3 i . . . [ v ] M i [ C L A S S ] t=[v]_1^i[v]_2^i[v]_3^i...[v]_M^i[CLASS] t=[v]1i[v]2i[v]3i...[v]Mi[CLASS]

对于不同的类别所使用的可学习向量都是不同的。
网络结构:和CLIP类似,利用text encoder处理每个类别的prompt t i t_i ti,就是基于一个Transformer的结构,从[EOS]token中得到能表示视觉概念的分类权重 g ( t i ) g(t_i) g(ti)。image encoder可以是ResNet或ViT,得到特征f。计算相似度、预测概率:
p ( y = i ∣ x ) = e x p ( c o s ( g ( t i ) , f ) / t ) ∑ j = 1 K e x p ( c o s ( g ( t j ) , f ) / t ) p(y=i|x)=\frac{exp(cos(g(t_i),f)/t)}{\sum_{j=1}^Kexp(cos(g(t_j),f)/t)} p(y=ix)=j=1Kexp(cos(g(tj),f)/t)exp(cos(g(ti),f)/t)
训练过程:encoders都是冻结参数的,使用的是交叉熵损失函数(是图文对比学习方法,我理解的就是余弦相似度+交叉熵损失=对比学习损失),反向传播更新context的参数。

Experiments

  1. 比较在少样本学习设置下,模型的小样本学习能力
    • 数据集:和CLIP一样的1个图像分类数据集,组成了一个综合的benchmark;
    • 模型结构:vision encoder用的ResNet50,对上下文使用的是均值为0,标准差为0.02的高斯分布初始化,用SGD优化器,使用余弦退火和warmup的技巧。
    • 比较的基线模型:零样本的CLIP和线性探针的CLIP
    • 对比角度:(1)与使用handcrafted prompt的模型相比(CLIP),在特定任务、细粒度数据集和场景、行为识别的数据集上有更好的效果,但在pest\food这两个数据上提升不明显且有过拟合倾向(作者认为这是因为有脏数据);(2)与线性探针CLIP专门对比:大部分都显著好于,在2个细粒度和特定任务上相当,其中CSC方法能完全超越线性探针模型;(3)比较通用类别和特定类别上下文:通用类别更适合对通用物体、场景和行为上的检测,特定类别上下文适合细粒度的数据集且需要更大的训练数据。
      在这里插入图片描述
  2. 在有Domain gap设定下,模型的泛化能力
    • 数据集:源域数据是ImageNet,目标域数据是4个风格不同的ImageNet变体;
    • 模型结构:vision encoder是ResNet50/101, ViT-B32/16;
    • 结果:CoOp能显著提升模型的泛化能力,而线性探针模型不擅长有域迁移domain shift的场景
      在这里插入图片描述
  3. 超参数选择
    • 不同上下文长度(M的大小):更长有更好的效果,当M很大时,[CLASS]在中间位置有更好的效果。但性能好会面对鲁棒性下降。
    • 不同vision encoders:更好的vision encoders,CoOp效果更好。
    • 与Prompt Ensembling对比:设计连续可学习prompt效果更好。
      在这里插入图片描述
    • 与其他微调方法相比:与原始CLIP、使用线性探针(就是一个线性层,这里可以理解成提取CLIP的特征后输入线性层,训练线性层进行分类)、添加image encoder微调、在text encoder后添加变形层微调、在文本输出添加偏置项的方法进行比较,CoOp的优化上下文方法是最好的色;
      在这里插入图片描述
    • 上下文初始化方法:对CoOp上下文随机初始化和使用CLIP的hand-crafted比较,发现效果差不多,都是很好的上下文,不过后续对CoOp上下文通过学习优化会有更好的效果。
    • 对上下文的解释:暂时无法给出解释,因为用距离度量向量的语义是不准确的。

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

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

相关文章

从零构建 MCP Server 与 Client:打造你的第一个 AI 工具集成应用

目录 🚀 从零构建 MCP Server 与 Client:打造你的第一个 AI 工具集成应用 🧱 1. 准备工作 🛠️ 2. 构建 MCP Server(服务端) 2.1 初始化服务器 🧩 3. 添加自定义工具(Tools&…

Django 自定义celery-beat调度器,查询自定义表的Cron表达式进行任务调度

学习目标: 通过自定义的CronScheduler调度器在兼容标准的调度器的情况下,查询自定义任务表去生成调度任务并分配给celery worker进行执行 不了解Celery框架的小伙伴可以先看一下我的上一篇文章:Celery框架组件分析及使用 学习内容&#xff…

蓝桥杯 1. 确定字符串是否包含唯一字符

确定字符串是否包含唯一字符 原题目链接 题目描述 实现一个算法来识别一个字符串的字符是否是唯一的(忽略字母大小写)。 若唯一,则输出 YES,否则输出 NO。 输入描述 输入一行字符串,长度不超过 100。 输出描述 输…

a-upload组件实现文件的上传——.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.txt

实现下面的上传/下载/删除功能&#xff1a;要求支持&#xff1a;【.pdf,.ppt,.pptx,.doc,.docx,.xls,.xlsx,.txt】 分析上面的效果图&#xff0c;分为【上传】按钮和【文件列表】功能&#xff1a; 解决步骤1&#xff1a;上传按钮 直接上代码&#xff1a; <a-uploadmultip…

.NET Core 数据库ORM框架用法简述

.NET Core ORM框架用法简述 一、主流.NET Core ORM框架概述 在.NET Core生态系统中&#xff0c;主流的ORM(Object-Relational Mapping)框架包括&#xff1a; ​​Entity Framework Core (EF Core)​​ - 微软官方推出的ORM框架​​Dapper​​ - 轻量级微ORM​​Npgsql.Entit…

halcon打开图形窗口

1、dev_open_window 参数如下&#xff1a; 1&#xff09;Row(输入参数) y方向上&#xff0c;图形窗口距离左上角顶端的像素个数 2&#xff09;Column(输入参数) x方向上&#xff0c;距离左上角左边的像素个数 3&#xff09;Width(输入参数) 图形窗口宽度 4&#xff09;He…

2025东三省D题深圳杯D题数学建模挑战赛数模思路代码文章教学

完整内容请看文章最下面的推广群 一、问题一&#xff1a;混合STR图谱中贡献者人数判定 问题解析 给定混合STR图谱&#xff0c;识别其中的真实贡献者人数是后续基因型分离与个体识别的前提。图谱中每个位点最多应出现2n个峰&#xff08;n为人数&#xff09;&#xff0c;但由…

iView Table 组件跨页选择功能实现文档

iView Table 组件跨页选择功能实现文档 功能概述 实现基于 iView Table 组件的多选功能&#xff0c;支持以下特性&#xff1a; ✅ 跨页数据持久化选择✅ 当前页全选/取消全选✅ 自动同步选中状态显示✅ 分页切换状态保持✅ 高性能大数据量支持 实现方案 技术栈 iView UI 4…

家庭服务器IPV6搭建无限邮箱系统指南

qq邮箱操作 // 邮箱配置信息 // 注意&#xff1a;使用QQ邮箱需要先开启IMAP服务并获取授权码 // 设置方法&#xff1a;登录QQ邮箱 -> 设置 -> 账户 -> 开启IMAP/SMTP服务 -> 生成授权码 服务器操作 fetchmail 同步QQ邮箱 nginx搭建web显示本地同步过来的邮箱 ssh…

Tauri v1 与 v2 配置对比

本文档对比 Tauri v1 和 v2 版本的配置结构和内容差异&#xff0c;帮助开发者了解版本变更并进行迁移。 配置结构变化 v1 配置结构 {"package": { ... },"tauri": { "allowlist": { ... },"bundle": { ... },"security":…

对js的Date二次封装,继承了原Date的所有方法,增加了自己扩展的方法,可以实现任意时间往前往后推算多少小时、多少天、多少周、多少月;

封装js时间工具 概述 该方法继承了 js 中 Date的所有方法&#xff1b;同时扩展了一部分自用方法&#xff1a; 1、任意时间 往前推多少小时&#xff0c;天&#xff0c;月&#xff0c;周&#xff1b;参数1、2必填&#xff0c;参数3可选beforeDate(num,formatter,dateVal); befo…

TimeDistill:通过跨架构蒸馏的MLP高效长期时间序列预测

原文地址&#xff1a;https://arxiv.org/abs/2502.15016 发表会议&#xff1a;暂定&#xff08;但是Star很高&#xff09; 代码地址&#xff1a;无 作者&#xff1a;Juntong Ni &#xff08;倪浚桐&#xff09;, Zewen Liu &#xff08;刘泽文&#xff09;, Shiyu Wang&…

DeepSeek最新大模型发布-DeepSeek-Prover-V2-671B

2025 年 4 月 30 日&#xff0c;DeepSeek 开源了新模型 DeepSeek-Prover-V2-671B&#xff0c;该模型聚焦数学定理证明任务&#xff0c;基于混合专家架构&#xff0c;使用 Lean 4 框架进行形式化推理训练&#xff0c;参数规模达 6710 亿&#xff0c;结合强化学习与大规模合成数据…

如何用AI生成假期旅行照?

以下是2025年最新AI生成假期旅行照片的实用工具推荐及使用指南&#xff0c;结合工具特点、研发背景和适用场景进行综合解析&#xff1a; 一、主流AI旅行照片生成工具推荐与对比 1. 搜狐简单AI&#xff08;国内工具&#xff09; • 特点&#xff1a; • 一键优化与背景替换&…

ElaticSearch

ElaticSearch: 全文搜索 超级强&#xff0c;比如模糊查询、关键词高亮等 海量数据 高效查询&#xff0c;比传统关系数据库快得多&#xff08;尤其是搜索&#xff09; 灵活的数据结构&#xff08;Schema灵活&#xff0c;可以动态字段&#xff09; 分布式高可用&#xff0c;天…

Android开发,实现一个简约又好看的登录页

文章目录 1. 编写布局文件2.设计要点说明3. 效果图4. 关于作者其它项目视频教程介绍 1. 编写布局文件 编写activity.login.xml 布局文件 <?xml version"1.0" encoding"utf-8"?> <androidx.appcompat.widget.LinearLayoutCompat xmlns:android…

机器学习:【抛掷硬币的贝叶斯后验概率】

首先,抛硬币的问题通常涉及先验概率、似然函数和后验概率。假设用户可能想通过观察一系列的正面(H)和反面(T)来更新硬币的偏差概率。例如,先验可能假设硬币是均匀的,但随着观察到更多数据,用贝叶斯定理计算后验分布。 通常,硬币的偏差可以用Beta分布作为先验,因为它…

Echarts 问题:自定义的 legend 点击后消失,格式化 legend 的隐藏文本样式

文章目录 问题分析实现步骤代码解释问题 如下图所示,在自定义的 legend 点击后会消失 分析 我把隐藏的图例字体颜色设为灰色,可以借助 legend.formatter 和 legend.textStyle 结合 option.series 的 show 属性来达成。以下是具体的实现步骤和示例代码: <!DOCTYPE ht…

光谱相机如何提升目标检测与识别精度

光谱相机&#xff08;多光谱/高光谱&#xff09;通过捕捉目标在多个波段的光谱特征&#xff0c;能够揭示传统RGB相机无法感知的材质、化学成分及物理特性差异。以下是提升其目标检测与识别精度的核心方法&#xff1a; ‌1. 硬件优化&#xff1a;提升数据质量‌ ‌(1) 光谱分辨…

springboot项目配置nacos,指定使用环境

遇到这样一个问题&#xff0c;在开发、测试、生成环境之间切换的问题。 大多数的操作是通过修改spring.profiles.active来确定指向使用的环境配置文件&#xff0c;对应项目中需要增加对应的配置文件。 但是现在几乎所有公司都会有代码管理不管是SVN、git&#xff0c;这样就会涉…