czsl总结
troika模型,训练ut-zappos数据集,cmt_layers为2
增加obj,attr损失,权重设置为0.1
开始训练可达到0.531,但seen指标很低,
思考:有没有办法在保持0.53下,提升seen
clip+soft_prompt + (img_linear + img_cross_attention,txt_cross_attention,layers= 1,attention增加残差连接,)
代码:
def img2txt_block(self, img_batch, text_feature): b = img_batch.shape[1] # [all_pairs, 768]->[all_pairs, batch, 768] text_feature = text_feature.unsqueeze(1).repeat(1, b, 1) img_linear_feature1 = self.img2txt_linear1(img_batch) fusion_feature_1 = self.img2txt_crossblock1(text_feature, img_linear_feature1) # fusion_feature_1 = self.txt_fusion_norm1(fusion_feature_1 + text_feature) fusion_feature_1 = fusion_feature_1 + text_feature #切片 fusion_feature_1 = fusion_feature_1[:, 0, :].squeeze(1) fusion_feature = fusion_feature_1 return fusion_feature
clip+soft_prompt + (img_linear + cross_attention,layers= 3,attention增加残差连接)
结果:无大突破
clip+soft_prompt + (img_linear + cross_attention,layers= 1,增加残差连接)
结果:增加残差连接后,un参数有提升,训练中发现,un的最好结果往往在训练中间出现,而seen的最好结果出现在后半段,猜测是随着训练的进行,模型更偏向于见过的类别
clip+soft_prompt + (img_linear + cross_attention,layers= 3)
结果:各项参数都有所提升
clip+soft_prompt + (img_linear + cross_attention,layers= 1)
结果:各项参数都有所提升,接近0.53
clip+soft_prompt
增加自回归次数,为3,权重设置为5
有较小提升,减小权重尝试
增加att与onj独立qkv
增加att与onj独立全连接层
初步综合a o与c
原版
DFSP
Decomposed Soft Prompt Guided Fusion Enhancing for Compositional Zero-Shot Learning
组合零样本学习(CZSL)旨在识别训练过程中由已知状态和对象形成的新概念。现有方法要么学习组合的状态-对象表示,这对未见组合的泛化提出了挑战,要么设计两个分类器分别从图像特征中识别状态和对象,忽略了它们之间的内在关系。为了共同解决上述问题并构建更稳健的CZSL系统,我们提出了一种新颖的框架,称为分解融合软提示(DFSP)1,通过引入视觉-语言模型(VLMs)进行未见组合的识别。具体来说,DFSP构建了可学习软提示的状态和对象的向量组合,以建立它们的联合表示。此外,设计了一个跨模态分解融合模块,位于语言和图像分支之间,它将状态和对象分解在语言特征中,而不是图像特征中。值得注意的是,与分解特征融合后,图像特征能更有效地学习与状态和对象的关系,分别提高未见组合在配对空间中的响应,从而缩小可见集和不可见集之间的领域差距。在三个具有挑战性的基准测试上的实验结果表明,我们的方法显著优于其他最先进的方法,优势明显。
CSP
LEARNING TO COMPOSE SOFT PROMPTS FORCOMPOSITIONAL ZERO-SHOT LEARNING
我们引入了组合式软提示(CSP),这是一种参数高效的学习方法,用于提升大规模预训练的视觉-语言模型(如CLIP)的零样本组合性。我们为组合式零样本学习开发了CSP,这项任务是对未见属性-对象组合(例如,老猫和幼虎)进行预测。VLMs拥有一个灵活的文本编码器,能够将任意类别表示为自然语言提示,但它们在组合式零样本基准数据集上的表现通常不如特定任务的架构。CSP将定义类别的属性和对象视为可学习的词汇标记。在训练过程中,词汇表被调整以识别以多种方式组合标记的类别(例如,老猫和白猫)。在测试时,我们重新组合已学习的属性-对象词汇,以识别新类别。我们显示,CSP在基准数据集上的表现平均比CLIP的AUC高10.9个百分点。CSP还平均比CoOp(一种微调前缀上下文标记的软提示方法)的AUC高5.8个百分点。我们进行了额外的实验,以显示CSP在提高高级属性-属性-对象组合(例如,老白猫)以及预训练属性与微调对象的组合的泛化能力方面有所改进。代码可在https://github.com/BatsResearch/csp获取。
将每个属性和对象的名字用soft_embedding来代替,而不是英文单词
伪代码:
#1.生成soft_embedding ,用原来单词的embedding平均值来初始化 soft_embedding = torch.zeros((len(attributes) + len(classes), embedding_dim) #用平均值填充初始化 for idx, rep in enumerate(orig_token_embedding): eos_idx = tokenized[idx].argmax() soft_embedding[idx, :] = torch.mean(rep[1:eos_idx, :], axis=0) #2.使用soft_embedding产生所有组合,假使n个attr,m个object,这有nm个组合 #使用模板产生所有组合的模板embedding all_composition_embedding = self.clip_model.token_embedding(tokenizer("a photo of X X")).repeat(nm) #将对应的attr,object的soft_embeding替换掉X all_composition_embedding[:, eos_idx - 2, :] = soft_embeddings[attr_idx] all_composition_embedding[:, eos_idx - 1, :] = soft_embeddings[object_idx] 3.返回 return all_composition_embedding
解耦式
From Red Wine to Red Tomato: Composition with Context(2017)
问题:
- 现有的视觉识别方法缺乏对组合性和上下文的建模。
- 组合性是指通过组合已知概念来生成新的复杂概念。
- 上下文是指概念的含义会随着环境的不同而改变。
创新点: - 提出了一种直接在模型空间中推理来组合视觉概念分类器的方法。
- 通过变换网络学习将已知概念的分类器转换为复杂概念的分类器。
- 该方法尊重上下文,因为它将所有视觉概念一起建模,而不是孤立地建模。
- 能够泛化到未见过的视觉概念组合,甚至未见过的概念。
方法:
- 模型空间假设: 认为模型空间是平滑的,并捕捉视觉相似性。例如,番茄分类器比汽车分类器更接近浆果分类器。
- 变换网络: 使用一个深度网络作为变换函数,将已知概念的分类器转换为复杂概念的分类器。
- 训练: 使用少量已知的视觉概念组合进行训练,学习变换网络。
- 测试: 使用变换网络组合未见过的视觉概念,生成复杂概念的分类器。
实验:
- 在MITStates数据集上,将属性和对象分类器进行组合,取得了比基线方法更好的性能。
- 在Stanford VRD数据集上,将主语、谓语和对象分类器进行组合,同样取得了比基线方法更好的性能。
- 通过分析,验证了变换网络不会简单地复制输入,而是会对其进行修改。
- 通过实验,验证了该方法能够泛化到未见过的视觉概念组合,甚至未见过的概念。
Attributes as Operators: Factorizing Unseen Attribute-Object Compositions(2018)
这篇论文提出了一种新的视觉属性建模方法。该方法旨在解决现有技术在处理属性与对象组合时的局限性,特别是当遇到新的属性-对象组合时。
要解决的问题:
- 现有方法通常将属性视为与对象类似的实体,通过训练分类器来识别属性(例如,“切片”的属性),就像识别对象(例如,“苹果”)一样。然而,这种方法在训练过程中未能将观察到的属性与其组合的对象分离开来,导致在遇到新的属性-对象组合时效果不佳。
- 属性通常与特定对象紧密相关联,因此可能不存在一个理想的属性向量编码,能够独立于对象来表示属性(例如,“旧”的属性对“教堂”和“鞋”的影响是不同的)。
提出的方法: - 论文建议将属性视为操作符(operators)而不是将其编码为嵌入空间中的点。属性作为操作符,可以学习如何转换对象编码以适当地改变其外观。
- 通过制定一个嵌入目标,使得属性-对象组合和图像都能投影到同一语义空间中,从而可以python -u evaluate.py
--dataset mit-states
--clip_model ViT-L/14
--soft_embeddings data/model/mit-states/sample_model/soft_embeddings_epoch_20.pt
--context_length 16
--text_encoder_batch_size 36
--eval_batch_size 16
--experiment_name csp识别新颖图像中未见过的属性-对象对。 - 在训练过程中引入了新的正则化器,利用属性作为操作符的概念。例如,一个正则化器要求应用一个属性及其反义词到对象上应该使对象编码产生最小的变化(例如,“钝”应该“撤销”“锋利”的效果)。
通过这种方法,作者们能够更好地泛化到新的、未见过的对象和属性的组合,并在两个具有挑战性的数据集上验证了他们的方法,显示出比现有技术水平更高的准确性和鲁棒性。
Revisiting Visual Product for Compositional
Zero-Shot Learning(2021)
问题: 传统的 Compositional Zero-Shot Learning (CZSL) 基线模型 Visual Product (VisProd) 表现不佳,被忽视。
创新点:
- 提升模型容量: 识别 VisProd 表现不佳的原因之一是网络容量不足,无法学习复杂的分类函数。通过使用更深层的非线性分类器,VisProd++ 模型展现出更好的性能。
- 消除偏差: VisProd 模型存在对训练集已知组合的偏差,导致在未见组合上的预测准确率下降。通过在评估时从已知组合的得分中减去一个标量,可以有效消除这种偏差,提高未见组合的预测准确率。
- 有效处理开放世界设置: VisProd++ 模型在开放世界 CZSL (OW-CZSL) 设置下表现出色,优于其他方法。OW-CZSL 设置中,测试集包含未知的组合,VisProd++ 模型能够有效处理巨大的输出空间,并取得优异的性能。
方法:
- 模型架构: VisProd++ 使用深度卷积神经网络提取图像特征,并使用多层感知器 (MLP) 作为对象和状态分类器。
- 训练过程: 使用交叉熵损失函数分别训练对象和状态分类器。
- 预测过程: 使用公式 (1) 进行预测,并考虑已知组合的偏差。
- 消融实验: 通过实验验证了分类器深度和偏差对模型性能的影响。
结论: VisProd++ 模型在 CZSL 任务中展现出优异的性能,尤其是在 OW-CZSL 设置下。这项工作重新审视了 VisProd 模型,并证明了将其作为 CZSL 基线模型的有效性。
A causal view of compositional zero-shot recognition(2021)
问题:
- 组合泛化: 学习系统难以识别由已知组件组成的新视觉类别,即使这些组件的组合在现实世界数据中很常见。
- 分布偏移: 训练数据中未见过的新组合会导致模型在测试时出现误分类。
- 纠缠: 训练数据中的组合标签导致模型难以区分“元素”组件,从而难以泛化到新的组合。
创新点:
- 因果视角: 将零样本推理视为寻找“哪个干预导致了图像”的问题,从而揭示图像特征和标签之间的独立结构,使学习过程更容易。
- 因果启发的嵌入模型: 学习视觉对象基本组件的解耦表示,即使训练数据中存在相关性(混淆)。
- 独立性和可逆嵌入损失: 鼓励模型学习属性和对象的表示,使其对其他属性的干预具有鲁棒性,并保持标签嵌入映射的信息。
方法: - 因果生成模型: 建立一个因果图,将属性和对象视为生成图像的原因,并学习它们在语义空间中的表示。
- 干预分析: 将零样本推理视为寻找最可能的干预分布,即找到导致图像的属性和对象组合。
- 损失函数: 结合数据似然损失、独立性损失和可逆嵌入损失,鼓励模型学习解耦的表示,并保持标签嵌入映射的信息。
- 实验: 在 AO-CLEVr 和 Zappos 数据集上进行实验,验证该方法在识别未见过的属性-对象组合方面的有效性。
优势:
- 在两个基准数据集上,与现有方法相比,该方法在识别未见过的属性-对象组合方面取得了更好的准确率。
- 该方法对干预具有鲁棒性,能够更好地泛化到未见过的组合。
局限性: - 模型假设图像特征服从正态分布,这可能是限制性的。
- 模型假设属性和对象具有独立的生成过程,这在某些情况下可能不成立。
未来方向: - 放松对图像特征分布的假设。
- 处理属性和对象之间可能存在的依赖关系。
- 将该方法扩展到多标签设置。
本文作者:seekwhale13
本文链接:https://www.cnblogs.com/seekwhale13/p/18647711
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步