CVPR2022 | ZeroCap:零样本图像到文本生成的视觉语义算法

ZeroCap结合视觉语义匹配模型与大型语言模型,无需训练即可生成图像描述。该方法利用CLIP评估文本与图像的相关性,通过调整语言模型生成符合图像内容的句子。此外,还展示了通过图像嵌入空间的算术操作执行语义分析的能力。

CVPR2022 | ZeroCap:零样本图像到文本生成的视觉语义算法

【写在前面】

最近的文本到图像匹配模型将对比学习应用于大量未经管理的图像和句子对。虽然此类模型可以为匹配和后续的zero-shot任务提供强大的分数,但它们无法在给定图像的情况下生成标题。在这项工作中,作者重新利用这些模型来在推理时生成给定图像的描述性文本,而无需任何进一步的训练或调整步骤。这是通过将视觉语义模型与大型语言模型相结合来完成的,受益于这两种网络规模模型中的知识。由此产生的字幕比通过监督字幕方法获得的字幕限制要少得多。此外,作为一种零样本学习方法,它非常灵活,展示了它执行图像运算的能力,其中输入可以是图像或文本,输出是一个句子。这实现了新颖的高级视觉功能,例如比较两个图像或解决视觉类比测试。

1. 论文和代码地址

ZeroCap: Zero-Shot Image-to-Text Generation for Visual-Semantic Arithmetic

论文地址:https://arxiv.org/abs/2111.14447

代码地址:https://github.com/YoadTew/zero-shot-image-to-text

2. 动机

深度学习至少导致了计算机视觉的三大革命:(1)机器在多个领域中比预期更早地实现了被认为是人类水平的性能,(2)有效的迁移学习,支持新领域的快速建模,以及(3)通过使用对抗性和自监督学习实现无监督学习的飞跃。

当前正在发生的第四次革命是零样本学习。 OpenAI 的一项开创性工作提出了基于变压器的GPT-3 模型。该模型在非常大的文本语料库上进行训练,然后可以根据提示生成文本。如果提示包含指令,GTP-3 通常可以执行它。例如,给定提示“将英语翻译成法语:typical → typique→house → . . .”会生成“maison”这个词。

后来 OpenAI 在计算机视觉中也展示了令人印象深刻的零样本能力。虽然最先进的计算机视觉模型通常被训练为推断固定数量标签的任务特定模型,但 Radford 等人提出了 CLIP 图像-文本Transformer模型,该模型可以执行数十个下游任务,无需进一步训练,其准确性可与现有技术相媲美。这是通过在给定图像的情况下从“这是 X 的图像”形式的句子中选择最佳匹配来完成的。

在这项工作中,作者使用 CLIP 来执行 DALL-E 的逆任务,即零样本图像字幕。给定一张图像,作者使用 CLIP 和 GPT-2 语言模型(无法访问 GPT-3)来生成输入图像的文本描述。除了 Radford 等人展示的固定提示零样本学习之外,这为 CLIP 添加了新的图像分析功能。
作为一种零样本方法,本文的方法不涉及任何训练。有人可以争辩说,底层 CLIP 模型是用与图像字幕方法训练的完全相同类型的监督来训练的,即成对的匹配图像和字幕。然而,图像字幕方法是从精选来源训练的,例如 MSCOCO 或 Visual Genome,而 CLIP 是在 Web Image Text (WIT) 上训练的,这是一个自动收集的网络规模数据集。以前在 WIT 上训练字幕模型的尝试导致在识别图像中的对象方面表现不佳。

由于方法和基础数据的差异,本文的方法产生的字幕与监督字幕方法获得的字幕非常不同。虽然监督方法可以模仿人类注释器并提供相似的句子,但就常规 NLP 指标(例如 BLEU )而言,本文的结果在视觉语义 CLIP 嵌入中表现出更大的自由度并更好地匹配图像空间。此外,合并到 CLIP 和 GPT-2 中的语义知识体现在生成的标题中,见上图。
除了获得的字幕的不同性质之外,本文的方法也更加灵活,因为所有计算都发生在推理时间。具体来说,作者展示了通过使用一种新的算术形式在图像空间中执行语义分析的能力。NLP 中概念算术的一个著名示例是检索词“queen”作为嵌入空间中最接近涉及与“king”、“man”和“woman”相关的嵌入向量的方程, 在从第一个减去第二个并添加第三个之后。作者展示了一种新颖的能力,仅使用图像而不是单词,因此结果生成为短句,而不仅仅是单词,见上图。

作为推论,例如,可以询问两个场景之间的区别是什么。这种在语义上比较两个图像的能力是一种新颖的计算机视觉能力,它进一步展示了零样本学习的力量。

3. 方法

视觉字幕是为图像生成描述性句子的过程。它可以形式化为给定输入图像 I 的序列生成问题,即作为句子的第 i 个单词 xi 的条件概率推断。

这通常以有监督的方式完成,通过优化权重来重现真实句子。然而,由于精心策划的数据集很小,并且无法充分描述所有图像,因此生成的句子通常描述场景中存在的对象的基本级别的内容,并且听起来很人工。使用网络规模的数据集可以缓解此类问题。作者提出了一种使用大规模文本图像对齐模型来引导大规模语言模型的零样本方法。

Overview

本文的方法使用基于Transformer的 LM(例如 GPT-2)从初始提示中推断下一个单词,例如“a 的图像”,如上图所示。为了将图像相关知识纳入自回归过程,校准的 CLIP 损失 L CLIP  \mathcal{L}_{\text {CLIP }} LCLIP  会刺激模型生成描述给定图像的句子。一个额外的损失项 L C E \mathcal{L}_{\mathrm{CE}} LCE 用于维护类似于原始语言模型的下一个token分布。

此外,本文方法的灵活性能够通过 CLIP 嵌入空间中的视觉线索的简单算术来捕获语义关系。最后,将多模态编码器与本文的方法相结合,可以以一种在文本和图像之间混合的新方式提取知识。

Language models

近年来,LM 有了显着提高,并且越来越接近 AI 完备的能力,包括广泛的外部知识和在有限监督下解决各种各样的任务。基于 Transformer 的 LM 通常在每个时间步对生成的token和过去的token之间的交互进行建模。

transformer 块具有三个嵌入函数 K、Q、V 。前两个,K,Q,学习决定 V 分布的token交互。注意力机制基于查询和键之间的相似性来汇集值。具体来说,每个token i 的池化值取决于与此token Q i Q_{i} Qi关联的查询,该查询是使用函数 Q 在此token的当前嵌入上计算的。基于 Q i Q_{i} Qi和与所有token $ K_{j} $关联的键之间的余弦相似度,作为值向量的加权平均值获得结果。

虽然 K 和 V 是函数,但在生成文本时会重复使用获得的键和值 $ K_j $和 V j V_j Vj,一次一个词。因此,$ K_j $和 V j V_j Vj可以存储在所谓的上下文缓存中,以便跟踪 K 和 V 的过去嵌入输出。

其中 X i \mathcal{X}_{i} Xi 是生成句子的第 i 个词, K j l , V j l K_{j}^{l}, V_{j}^{l} Kjl,Vjl是上下文Transformer的第 j 个标记的键和值,l 表示Transformer层的索引,总共 L 层。本文的方法采用 GPT-2,它有 L = 24 层。

接下来描述如何将本文的 LM 与输入图像对齐。通过在推理过程中修改上下文缓存的值来保持 LM 不变。

CLIP-Guided language modelling

本文的目标是在每一代步骤中引导 LM 朝着期望的视觉方向前进。提出的指导有两个主要目标:(i)与给定图像对齐; (ii) 维护语言属性。第一个目标是通过 CLIP 获得的,CLIP 用于评估token与图像的相关性并相应地调整模型(或者更确切地说,缓存)。对于第二个目标,将目标规范化为与原始目标输出相似,即在修改之前。

求解的优化问题在每个时间点调整上下文缓存 C i C_{i} Ci

06-22
### 得物技术栈及开发者文档分析 得物作为一家专注于潮流商品的电商平台,其技术栈和开发者文档主要围绕电商平台的核心需求展开。以下是对得物技术栈及相关开发资源的详细解析: #### 1. 技术栈概述 得物的技术栈通常会涵盖前端、后端、移动应用开发以及大数据处理等多个领域。以下是可能涉及的主要技术栈[^3]: - **前端开发**: 前端技术栈可能包括现代框架如 React 或 Vue.js,用于构建高效、响应式的用户界面。此外,还会使用 Webpack 等工具进行模块化打包和优化。 - **后端开发**: 后端技术栈可能采用 Java Spring Boot 或 Node.js,以支持高并发和分布式架构。数据库方面,MySQL 和 Redis 是常见的选择,分别用于关系型数据存储和缓存管理。 - **移动应用开发**: 得物的移动应用开发可能基于原生技术(如 Swift/Kotlin)或跨平台框架(如 Flutter)。这有助于确保移动端应用的性能和用户体验一致性。 - **大数据云计算**: 在大数据处理方面,得物可能会使用 Hadoop 或 Spark 进行数据挖掘和分析。同时,依托云服务提供商(如阿里云或腾讯云),实现弹性扩展和资源优化。 #### 2. 开发者文档分析 类似于引用中提到的 Adobe 开发者文档模板[^2],得物也可能提供一套完整的开发者文档体系,以支持内部团队协作和外部开发者接入。以下是开发者文档可能包含的内容: - **API 文档**: 提供 RESTful API 或 GraphQL 的详细说明,帮助开发者快速集成得物的功能模块,例如商品搜索、订单管理等。 - **SDK 集成指南**: 针对不同平台(如 iOS、Android 或 Web)提供 SDK 下载和集成教程,简化第三方应用的开发流程。 - **技术博客**: 分享得物在技术实践中的经验成果,例如如何优化图片加载速度、提升应用性能等。 - **开源项目**: 得物可能将部分技术成果开源,供社区开发者学习和贡献。这不仅有助于提升品牌形象,还能吸引更多优秀人才加入。 #### 3. 示例代码 以下是一个简单的示例代码,展示如何通过 RESTful API 调用得物的商品搜索功能(假设接口已存在): ```python import requests def search_items(keyword, page=1): url = "https://api.dewu.com/v1/items/search" headers = { "Authorization": "Bearer YOUR_ACCESS_TOKEN", "Content-Type": "application/json" } params = { "keyword": keyword, "page": page, "size": 10 } response = requests.get(url, headers=headers, params=params) if response.status_code == 200: return response.json() else: return {"error": "Failed to fetch data"} # 调用示例 result = search_items("Air Jordan", page=1) print(result) ``` 此代码片段展示了如何通过 Python 请求得物的 API,并获取指定关键词的商品列表。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值