文章链接:
https://arxiv.org/pdf/2403.07874.pdf
代码和模型:
https://github.com/zh460045050/V2L-Tokenizer
今天和大家分享的这项工作非常有创意,研究和挖掘了大语言模型(LLM)直接理解视觉信号的潜力,而无需在多模态数据集上进行微调。方法的基础概念将图像视为一种语言实体,并将其翻译成LLM词汇表中派生的一组离散单词。为了实现这一点,本文提出了一种名为视觉到语言Tokenizer(Vision-to-Language Tokenizer,简称V2L Tokenizer)的工具,它通过编码器-解码器、LLM词汇表和CLIP模型的共同帮助,将图像转换为一种“外语”。通过这种创新的图像编码,LLM不仅获得了视觉理解的能力,而且还能够以自回归的方式进行图像去噪和恢复————关键是,无需任何微调。严格的实验验证发现,包括图像识别、图像描述、视觉问答等理解任务,以及包括修复、扩展、去模糊和位移恢复等图像去噪任务。
介绍
在自然语言处理(NLP)领域,通过部署大语言模型(LLMs),如GPT、PaLM和LLaMA,已经取得了显著的进步。为了解决需要结合文本和视觉理解的复杂挑战,学者们正在扩展现成LLMs的能力。这种增强涉及整合额外的视觉处理组件,以促进对视觉内容的理解或从文本生成图像。随后,这些改进的模型会使用各种多模态数据集进行额外的再训练或微调,以使视觉潜在空间与语言潜在空间对齐。然而,这种精炼过程通常需要大量的训练资源。
如上图1所示,我们的目标是为大语言模型赋予理解视觉信号的内在能力,重要的是,无需微调。在本方法中,将每个图像视为来自“外语”的语言实体,使其适应普通LLM的输入要求。因此,这种对齐发生在输入(token)空间而不是特征空间中,这区别于以前的多模态方法 ,这些方法需要微调来进行模态对齐。因此,在我们的方法论中,可以避免在多模态数据集上进行微调或再训练的过程。我们的技术将图像翻译成一组离散的token,这些token在LLM的词汇表中。一旦翻译完成,这些token就可以输入到LLM中,使其能够处理和理解视觉信息,从而促进一系列涉及图像理解和去噪的任务。
将图像翻译成一组冻结LLM可以理解的token是一项挑战。这项工作中介绍了一种 Tokenizer ,旨在将图像(一种非语言模态)映射到冻结LLM的输入(token)空间。这种 Tokenizer 被称为视觉到语言 Tokenizer (Vision-to-Language Tokenizer,简称V2L Tokenizer)。V2L Tokenizer的设计灵感来自于VQ-GAN 的成功,采用了编码器-量化器-解码器结构。然而,它的目标是将视觉信息翻译到LLM的token空间,这与它的灵感来源不同,后者旨在学习一个独立的潜在空间,仅用于图像生成。我们的V2L Tokenizer放弃了优化随机初始化的量化器codebook的标准过程;相反,它在整个训练过程中利用LLM的现有词汇作为其量化器codebook。在量化损失函数的指导下,图像在优化过程完成后被转换为一组LLM tokens。
通常,LLM的词汇表由完整的单词和子词单元组成,这是由于使用了诸如BPE和SentencePiece这样的语言Tokenizer。不失一般性,这个词汇表的广度影响其将图像编码为LLM tokens的能力————更大的词汇表通常提供更强大的表示能力。在我们的方法中,我们通过组合其词汇项形成二元组或三元组来扩展LLM的词汇表,这在将图像映射到LLM tokens时显著增加了表示能力。除了将每个图像块转换为语言token外,我们的V2L Tokenizer 还包括提取整个图像的全局表示。我们通过使用来自扩展LLM词汇表的子词、二元组或三元组的组合来实现这一点,以封装图像的全面信息。
在LLM中,上下文学习已被证明对zero-shot推理非常有益。这是通过在LLM推理过程中,在指令文本前加上一些特定领域的示例来实现的。我们的方法避免了LLM微调的必要性,而是采用上下文学习来指导LLM模仿给定的少数样本中的模式。这使得模型能够更好地理解“外语”(即视觉模态)。
从实验上看,我们的工作在这种新场景中超越了以前的尝试 ,其中LLM能够在没有任何微调或再训练的情况下理解视觉信号,包括图像描述和视觉问答等理解任务,以及包括修复、扩展、去模糊和图像恢复等图像去噪任务。
相关工作
图像量化:
图像量化过程旨在将图像转换为一系列来自codebook的离散token。VQ-VAE是该领域的著名工作,该方法采用编码器-解码器结构,将图像量化为一系列潜在的离散code,然后用于重建图像。VQ-GAN通过引入对抗性和感知损失来增强codebook学习过程,使codebook能够捕捉更精确和细致的表示。同时,将图像量化为一系列token使得可以使用GPT以自回归方式进行图像生成。RQ-VAE 采用了一种残差量化方法,其中每个图像块由多个codebook token表示,以更准确地反映原始图像特征。DQ-VAE 进一步提出了可变长度的token来编码图像,从而实现更精确和高效的量化。Reg-VQ 旨在通过利用先验分布正则化来提高codebook的利用率并防止其崩溃。
大语言模型(LLMs):
大语言模型,尤其是那些采用Transformer-解码器架构的模型,在自然语言处理领域取得了显著进展。开发有效的大语言模型(LLM)的过程通常包括多个阶段,包括初始预训练,随后的监督微调,奖励模型的训练,以及使用人类反馈的强化学习(RLHF)来实现与指令的对齐。LLaMA 系列一直处于提供开源LLMs的前沿,提供了一系列规模的对齐和非对齐版本。例如,LLaMA 2 提供了7B、13B和70B参数的模型。
使用LLMs进行视觉信号理解:
尽管LLMs天生具备自然语言理解的能力,但它们也可以作为各种视觉-语言应用中的解码器,通过使用模态桥接模块将视觉特征与语言特征对齐。例如,Flamingo 使用数十亿的图像-文本对来训练门控交叉注意力层,以促进冻结的视觉编码器和冻结的LLM之间的同步。类似地,BLIP-2 通过引入轻量级QFormer来弥合模态差距。这个QFormer在两个相应的阶段进行训练:一个用于代表性学习,另一个用于生成性学习。此外,MiniGPT-4 和LLaVA 都证实,通过在高质量的指令数据上调整单个线性层,就足以实现特征对齐。虽然这些方法为多模态理解任务提供了令人满意的结果,但它们缺乏生成视觉内容的能力,并且需要收集额外的图像-文本对来训练视觉-语言对齐模块。
不同于在特征空间中执行多模态对齐,一些方法通过将图像视为“外语”,将图像映射到LLMs的token(输入)空间。例如,LQAE 训练了一个VQVAE Tokenizer ,使用冻结的LLM codebook来量化图像,将其转换为一组语言token。为了使LLM执行图像理解和生成任务,SPAE通过引入分层量化技术和CLIP提供的语义指导,进一步提高了来自冻结LLM codebook的量化图像token的质量。然而,由于视觉特征和语言token embedding之间存在显著差异,这些方法难以将语义语言token分配给图像。这一限制阻碍了LLMs在给定上下文中充分理解视觉信号。与上述方法相比,我们的方法在共享的多模态空间内引入了图像量化,为给定图像分配了语义上有意义的语言token。此外,我们将图像token分为两类:全局token,用于图像理解任务,以及局部token,用于图像生成任务。这种分离是通过使用两种不同类型的量化器以及两个独立codebook来实现的。
方法
问题表述
我们将图像视为一种 “外语” 。给定一个包含
个语言 token的LLM词汇表
, 我们将图像转换为
个离散token, 每个token都属于
。这种转换是通过我们的V2L Tokenizer完成的, 如下图2所示。在我们的实现中, 图像被分割成
个全局token以用于理解任务, 以及
个局部token以用于去噪任务, 其中
。
随后,如下图3所示,可以执行一系列任务,如图像分类、图像描述、视觉问答和图像去噪。这是通过将任务指令、上下文学习样本以及全局或局部token的串联输入到冻结的LLM中以自回归方式完成的。
视觉到语言 Tokenizer (V2L Tokenizer)
V2L Tokenizer采用编码器-量化器-解码器结构。一共使用两个量化器: 一个局部量化器和一个全局量化器。每个量化器都与一个独立的、来自LLM词汇表的冻结codebook相关联。然后, 图像被量化为
个全局token和
个局部token, 分别从全局和局部codebook中提取。
全局codebook
。LLM词汇表包括由语言Tokenizer生成的一组子词。这些子词元素通常具有有限的语义意义。为了增强LLM词汇表
中实体的语义表示, 我们引入了一种词汇扩展技术。这种技术通过组合
中的两个或三个词汇项来创建二元组和三元组。然而, 需要注意的是, 由此产生的二元组和三元组可能不一定传达有意义的语义。例如, 它们可能包括像 “#” 和 “! ”这样的符号。此外,生成二元组和三元组会导致大量可能的组合——
个二元组和
个三元组一一这在后续的量化过程中提出了挑战。
为了解决这个问题, 我们引入了一个简单的过滤策略。具体来说, 使用一个图像量化数据集 (如 ImageNet)和扩展的LLM词汇表,计算数据集中每个图像与LLM词汇表中每个词汇项之间的CLIP相似度。然后, 记录每个图像得分最高的前 5 个词汇项。最后, 将所有图像的这些前 5 个词汇项聚合起来, 形成最终的扩展LLM词汇表, 作为我们的全局codebook。
局部codebook
。局部codebook的目标是使用codebook中的一个条目来表示图像的一部分(例如,一个图像块)。我们使用原始LLM词汇表作为局部codebook。
全局和局部codebook的Embeddings
。如前图2所示, 通过CLIP文本编码器将全局codebook (即扩展的LLM词汇表)和局部codebook(即LLM词汇表)投影到embedding中。全局和局部codebook的 embedding分别称为LLM embedding和E-LLM embedding。此外, 我们使用一个可训练的投影器, 它被实现为一个线性层, 进一步将LLM embedding投影以与视觉空间对齐。量化器, 稍后将介绍, 进一步利用投影的LLM embedding (P-LLM embedding) 和E-LLM embedding来编码输入图像的局部和全局信息。
编仍器
。我们的编码器由一个可训练的CNN编码器和一个冻结的CLIP视觉编码器组成。CNN编码器与VQ-GAN 中使用的一个相同, 但对下采样率进行了修改。将输入图像的尺寸缩小了8倍。CNN编码器旨在提取局部信息, 而CLIP视觉编码器专注于编码全局信息。有关编码器的详细信息, 请参见原文的补充材料。
量化器
。使用
来表示 CNN编码器编码的特征图, 其中
是空间尺寸。同样,
表示CLIP视觉编码器编码的全局特征,
表示
的维度。让
表示LLM词汇表
的P-LLM embedding集合,
表示扩展LLM词汇表
的E-LLM embedding集合。
如前面图2所示, 局部量化器通过识别每个元素
在
中最近的embedding来工作, 其中
指定空间位置
且
。识别基于欧几里得距离。这个过程产生了一个与
大小相同的token化映射
, 其中
的每个元素
表示与T中的一个语言token相关的P-LLM embedding。总共有
个局部token。
类似地, 全局量化器通过识别全局特征
中
个最近的embedding在
中来工作, 基于它们的欧几里得距离。量化后,
由
个E-LLM embedding
表示, 与相应的语言 token
相关联。值得注意的是, 在量化器的训练过程中, LLM embedding和E-LLM embedding 以及CLIP模型保持冻结, 如图2所示。
解仍器
。解码器的目标是使用局部embedding
和全局embedding
作为输入来重建原始图像。我们的解码器基于 VQ-GAN 采用的解码器构建, 它使用自注意力层和一系列转置卷积层沿空间维度上采样
。关键的区别在于引入了
: 通过交叉注意力层将
的信息注入到解码过程中。在我们的实现中, 这个交叉注意力层位于
的自注意力层之后, 其中
作为query,
作为键。这种修改不影响 VQ-GAN采用的原始解码器的结构。因此, 解码器的最终输出是一个与输入图像大小匹配的张量。
损失函数
。如图2所示, 我们只优化编码器、解码器和投影器, 同时冻结LLM/E-LLM embedding、 LLM/E-LLM词汇表和CLIP模型。遵循VQ-GAN, 定义目标函数为:
其中
和
分别代表向量量化损失、感知损失和GAN损失, 如VQ-GAN引入的那样;
和
表示相应损失的权重。我们将
设为
设为 0.1 。有关每种损失类型的更多详细信息, 请参见原始的VQ-GAN 。
视觉信号理解
将与
和
相关的语言 token分别称为全局token (记为
) 和局部token (记为
), 后者在展平后。注意,
, 其中
表示CNN编码器产生的特征图的空间尺寸。给定一个图像, 我们首先将其输入到我们的V2L Tokenizer中以生成其全局token
和局部token
。随后, 可以通过结合特定任务的介绍、上下文学习样本以及全局或局部 token来设计各种提示, 并将提示输入到冻结的LLM中以执行一系列理解和生成任务, 如图3所示。我们为每项任务提供以下提示。
N-Way K-Shot图像分类
。我们以 2 -Way K-Shot分类为例, 目标是将图像分类为 “法国斗牛犬” 或 “岩石美人”。提示的结构如下: [对于以下每对输入-输出对, 输出是 [ “法国斗牛犬”, “岩石美人” ]之一。{样本
输入:
, 输出: ], 其中
表示测试图像的全局语言 token, “{样本}” 表示
Way
-Shot样本。每个样本遵循 “输入:
, 输出:
。” 的格式, 其中
和
分别表示每个样本的相应全局token和标签(无论是“法国斗牛犬”还是“岩石美人”)。
图像描述
。如下结构化提示: [根据描述图像的单词生成描述。{样本
输入: