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

该研究探讨了如何使用CLIP解决图像分类中的领域泛化问题。提出了领域提示学习(DPL),通过训练轻量级提示生成器提高CLIP在未知领域的性能,避免微调带来的负面影响。DPL在多个标准数据集上显著提升了CLIP的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)提示学习,它在训练阶段训练一个提示生成器,并推断未知领域以生成特定于领域的提示。

### 低光照图像增强中的无监督图像先验与CLIP语义引导方法 在处理低光照图像增强任务时,一种有效的方法是利用无监督图像先验并通过提示学习结合CLIP模型实现语义引导。这种方法能够显著提升图像质量并保留更多细节。 #### 提示学习与CLIP语义引导机制 为了使扩散模型更好地理解输入图像的内容,在训练过程中引入了基于自然语言描述的条件约束。具体来说,通过预训练的语言-视觉对齐模型(如CLIP),可以将文本提示转换成特征向量作为额外指导信息注入到网络中[^1]。这种方式不仅增强了模型对于复杂场景的理解能力,还使得生成效果更加贴近人类感知习惯。 ```python import torch from clip import load as load_clip device = "cuda" if torch.cuda.is_available() else "cpu" model, preprocess = load_clip("ViT-B/32", device=device) def get_text_features(prompt): text_input = torch.cat([torch.tensor(preprocess(text=prompt))]).to(device) with torch.no_grad(): text_features = model.encode_text(text_input) return text_features / text_features.norm(dim=-1, keepdim=True) ``` #### 无监督图像先验的应用 针对低光条件下拍摄的照片普遍存在噪声大、对比度低等问题,研究者们提出了多种解决方案来构建有效的图像先验。其中较为突出的是采用自编码器结构来进行端到端的学习过程,即让神经网络自动发现数据内部规律而不依赖于标注样本。这种策略有助于挖掘隐藏模式,并为后续优化提供坚实基础[^3]。 ```python class AutoEncoder(nn.Module): def __init__(self): super(AutoEncoder, self).__init__() # 定义编码器部分 ... # 定义解码器部分 ... def forward(self, x): encoded = self.encoder(x) decoded = self.decoder(encoded) return decoded ``` #### 实现流程概述 整个工作流大致分为三个阶段: - **初始化设置**:加载必要的库文件以及配置参数; - **准备训练集**:收集大量未经过任何处理的真实世界图片用于迭代更新权重矩阵; - **执行推理操作**:当接收到新的测试实例后,调用上述定义好的函数完成最终预测输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值