【prompt四】Domain Prompt Learning for Efficiently Adapting CLIP to Unseen Domains

motivation

领域泛化(DG)是一个复杂的迁移学习问题,旨在学习未知领域的可泛化模型。最近的基础模型(FMs)对许多分布变化都具有鲁棒性,因此,应该从本质上提高DG的性能。在这项工作中,我们研究了采用视觉语言基础模型CLIP来解决图像分类中的DG问题的通用方法。虽然ERM使用标准DG基准极大地提高了更大的主干和训练数据集的准确性,但在许多实际情况下,微调fm是不切实际的。我们提出了DPL(领域提示学习)作为一种以条件提示生成形式进行领域推理的新方法。

DPL只需要训练一个轻量级的提示生成器(三层MLP),其参数与之前DG文献中的分类投影仪的规模相当,就可以显著提高DPL的精度。DPL与CLIP的结合提供了令人惊讶的性能,在几个标准数据集(即PACS, VLCS, OfficeHome和TerraIncognita)上将zero-shotCLIP的准确率从73.7%提高到79.3%。

1.introduce

像对比语言图像预训练(CLIP)这样的大型预训练视觉语言模型是一种新兴的模型,在学习跨许多视觉任务的可转移表征方面显示出巨大的潜力。CLIP的核心是通过将图像的表示与图像的文本描述的表示进行对比来学习图像表示,例如“一张{类名}的照片”。文本描述通常被称为提示,其设计对于提高CLIP性能至关重要。值得注意的是,CLIP可以处理看不见的类,而无需通过使用目标类名适当地更改文本描述来对它们进行微调。

本文使用DomainBed研究了CLIP对各种分布变化的鲁棒性,DomainBed是最近提出的DG设置基准。虽然之前的工作在基准测试中测试了各种DG方法,但研究最多的是集中在中等规模的预训练模型上,如ResNet18或ResNet50。在DG设置中利用CLIP有两种最简单的方法(图2)。第一种方法是对CLIP训练的图像编码器进行微调,类似于ResNet和ViT等其他视觉模型。CLIP训练的骨干网络大大优于许多仅在图像上训练的骨干网络,如ResNet、big transfer和vision transformer 。然而,与此同时,微调有时会降低某些领域的性能,这表明微调可能会扭曲预训练特征的良好特性。另一个简单方法是设计模板提示符,例如“一个{类名}的照片”。这种方法的明显优点是,它不需要优化任何网络,因此,通过预训练保持表征学习。尽管它很简单,但zero-sho CLIP在许多DG基准上仍然比在源域上微调的视觉骨干(例如ResNet18, ResNet50, ViT-B16)更稳健,而它不如由CLIP训练的微调视觉骨干。

在DG中应用CLIP的三种方法的概念说明。

(1)微调用可训练的分类器更新CLIP的图像编码器。

(2)在不更新训练域参数的情况下,在测试时使用手工提示进行zero-sho CLIP对比预测。

(3)提示学习训练一个提示优化器,然后利用优化后的提示进行预测。

DPL分属于(3)提示学习,它在训练阶段训练一个提示生

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

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

相关文章

uniapp开发小程序使用x-www-form-urlencoded; charset=UTF-8 编码格式请求案例

使用x-www-form-urlencoded,header要放在前面,第一行位置。 uni.request({ header: { content-type: application/x-www-form-urlencoded; charsetUTF-8},url: ,method:POST, //请求方式POST\GETdata:that.loginData,success: funct…

音视频开发之旅——音频基础概念、交叉编译原理和实践(LAME的交叉编译)(Android)

本文主要讲解的是音频基础概念、交叉编译原理和实践(LAME的交叉编译),是基于Android平台,示例代码如下所示: AndroidAudioDemo 音频基础概念 在进行音频开发的之前,了解声学的基础还是很有必要的。 声音…

NumPy数据处理详解的笔记3

NumPy数据处理详解的笔记3 第1章NumPy基础 NumPy是用于处理多维数组的数值运算库,不仅可用于 机器学习,还可以用于图像处理,语言处理等任务。 1.4 切片 python编程语言对数组切片功能有支持, NumPy 的ndarray 的切片功能是类似的&#xf…

K线实战分析系列之二十二:圆形顶部和圆形底部形态

K线实战分析系列之二十二:圆形顶部和圆形底部形态 一、圆形顶部形态二、圆形顶部和圆形底部形态的总结 一、圆形顶部形态 市场多空一方被逐渐击退,跳空的缺口是一方突然发力,体现出一方对市场掌握了控制权 二、圆形顶部和圆形底部形态的总结…

IDEA切换JDK版本超详细步骤

😀 IDEA切换JDK版本详细教程,全网步骤最详细,实测可用。 文章目录 第一步、选择SDKs切换SDK版本:第二步、选择Modules切换Sources和Dependencies版本:第三步、选择Project切换SDK和Language Level版本:第四…

MySQL中触发器的使用

触发器 模板 -- BEFORE|AFTER表是在数据库事件发生之前或之后执行 -- INSERT|UPDATE|DELETE表是发生什么数据库事件 -- FOR EACH ROW表示为每一行trigger_body数据都执行该触发器 CREATE TRIGGER trigger_name BEFORE|AFTER INSERT|UPDATE|DELETE ON table_name FOR EACH ROW…

算法训练营day40(补),动态规划8

//139. 单词拆分 func wordBreak(s string, wordDict []string) bool { wordMap : make(map[string]bool) n : len(s) for _, word : range wordDict { wordMap[word] true } dp : make([]bool, n1) dp[0] true for i : 1; i < n; i { // 遍历背包 for j : 0; j < i; …

2024年冲刺年薪40w,java面试常问知识点

前言 刚刚过去的双十一&#xff0c;让“高性能”“高可用”“亿级”这3个词变成了技术热点词汇&#xff0c;也让很多人再次萌发成为「架构师」的想法。先问大家一个问题&#xff1a;你觉得把代码熟练、完成需求加上点勤奋&#xff0c;就能成为架构师么&#xff1f;如果你这么认…

LeetCode1039. Minimum Score Triangulation of Polygon——区间dp

文章目录 一、题目二、题解 一、题目 You have a convex n-sided polygon where each vertex has an integer value. You are given an integer array values where values[i] is the value of the ith vertex (i.e., clockwise order). You will triangulate the polygon in…

MySQL:索引的优化方法

索引是帮助存储引擎快速获取数据的一种数据结构&#xff0c;形象的说就是索引是数据的目录。 索引创建的时机&#xff1a; 索引并不是越多越好的&#xff0c;虽然他再查询时会提高效率&#xff0c;但是保存索引和维护索引也需要一定的空间和时间成本的。 不创建索引&#xff1a…

从一个word里面复制表格到另一个word时,表格变形的问题

复制过来保留源格式&#xff0c;检查段落、页边距里面的格式都和原始word一致后&#xff0c;仍然表格变形。 这时点页边距-自定义页边距-文档网格 看字符数是不是一致的

C/C++ 笔试(一)

以下程序的运行结果是&#xff08;&#xff09; int main(void) {printf("%s , %5.3s\n", "computer", "computer"); return 0; }A computer , puter B computer , com C computer , computer D computer , compu.ter B %m.ns 输出占m列&#…

BigDecimal比较两数大小

文章目录 关于BigDecimal 关于BigDecimal 在Java中&#xff0c;可以使用compareTo方法来比较两个BigDecimal类型的数据的大小。该方法会返回一个整数&#xff0c;表示两个数的大小关系。 如果返回值小于0&#xff0c;表示第一个数小于第二个数。 如果返回值等于0&#xff0c;表…

【Logback】Logback 中的 Appenders

目录 1、什么是 Appenders&#xff1f; 2、解说 AppenderBase.doAppend() 方法 3、logback-core 模块中的 Appenders &#xff08;1&#xff09;OutputStreamAppender &#xff08;2&#xff09;ConsoleAppender &#xff08;3&#xff09;FileAppender &#xff08;4&a…

乐观锁存在哪些问题?

乐观锁存在哪些问题&#xff1f; 文章目录 乐观锁存在哪些问题&#xff1f;ABA 问题循环时间长开销大只能保证一个共享变量的原子操作 文章来自Java Guide 用于学习如有侵权&#xff0c;立即删除 ABA 问题是乐观锁最常见的问题。 ABA 问题 如果一个变量 V 初次读取的时候是 A…

SpringCloud微服务-DockerCompose(初识、安装、部署)

DockerCompose&#xff08;初识、安装、部署&#xff09; 文章目录 DockerCompose&#xff08;初识、安装、部署&#xff09;初识DockerCompose&#xff1f;DockerCompose安装DockerCompose部署微服务问题解决&#xff08;重要&#xff01;&#xff01;&#xff01;&#xff09…

final修饰符、多态、抽象类以及抽象类与接口的区别

final修饰符作用&#xff1a; 修饰变量&#xff1a;被final修饰的变量不能被重新赋值&#xff0c;即变为常量。对于基本数据类型的变量&#xff0c;其数值一旦在初始化后就不能更改&#xff1b;对于引用类型的变量&#xff0c;其引用不能更改&#xff0c;但是指向的对象内容可以…

小白跟做江科大51单片机之DS1302按键可调时钟

1.引入上一个程序的代码 2.引入Key和Timer0文件 3.获取按键值 定义全局变量unsigned char keynum main函数中 keynumKey(); 4.设置第一个按键的两种模式&#xff0c;以此来控制时钟的设定和显示 if(keynum1) { if(MODE0) { …

c++ primer学习笔记(二)

目录 第三章 一、命名空间的using声明 二、标准库的string类型 1、string对象的定义和初始化 2、string对象的读写 3、string对象的操作 4、string对象中字符的处理 三、标准库的vector类型 1、vector对象的定义和初始化 2、vector对象的操作 四、迭代器简介 1、简…

前端复选框问题-节点赋值未选中最后显示时确变成选中状态?

问题&#xff1a; 前两天一同事请教我&#xff1a;前端复选框问题-节点赋值未选中最后显示时确变成选中状态&#xff1f; 还有就是明明传过为的是false&#xff0c;在控制台上打印确变成选中状态&#xff0c;如下图&#xff1a; 以下是前端vue代码&#xff1a; <Scroll h…