0%

论文地址:https://arxiv.org/pdf/2109.11797
代码地址:https://github.com/thunlp/CPT

摘要


预训练视觉语言模型在视觉语义定位任务(Visual Grounding)中表现出优良性能,促进了跨模态任务的发展。然而,由于预训练任务和下游任务的目标形式之间存在着显著差异,必须使用大量带标签的数据对模型进行微调才能在下游任务上激发模型的视觉语义定位能力。为了解决这种困境,作者提出了一种色彩微调方法(Colorful Prompt Tuning)。这是一种全新的跨膜态微调范式,它将原本的视觉语义定位任务重构为色彩填空任务,显著减少了预训练任务和下游任务的目标形式的差异。

背景介绍


作者首先介绍了传统的多模态大模型的训练范式(即pre-training-then-fine-tuning)的不足。作者提到,在传统的预训练范式中,往往采用一种跨模态的填空任务,类似于BERT的训练方法,模型尝试从上下文的多模态token中预测被遮挡的token。而在微调阶段,则多是对未遮挡的token进行语义分类。作者认为预训练阶段和微调阶段的目标形式不同抑制了模型在预训练过程中获得的视觉语义定位能力,从而必须采用大量的监督数据在下游任务上微调预训练模型。

作者提出的模型CPT核心在于将在图像中进行语义定位的任务重新表述为填空问题,从而最大程度上减少预训练阶段和微调阶段的差异。
CPT包括两个组件,其一是视觉子提示(visual sub-prompt),采用颜色块唯一地表示图像中的区域;其二是文本子提示(textual sub-prompt),将query构造成一个基于色彩的问题模板。这样一来,在目标图像中定位语义区域便可以转变为从带有掩码的query模板中预测出相应的颜色标记。
传统方法和作者提出的方法

作者的工作可以概括为:1.提出了跨模态提示微调范式(CPT);2.提出了高质量的跨模态提示配置方式;3.做了一系列实验测试CPT的性能。

模型架构


视觉子提示(VISUAL SUB-PROMPT)

给定一张图像$I$和其感兴趣区域$R={v_1,v_2,…,v_n}$,视觉子提示的目标是用自然视觉标记唯一地表示每个图像区域。作者由先前的研究工作用色彩块来唯一表示图像中的目标得到启发,用一个色彩集合$C$将图像区域和文本联系在一起。$c_i = (c_v^i,c_w^i)\in C$由其色彩的视觉表示和色彩的文本表示定义。之后,作者将图像区域$v_i$与其唯一色彩表示$c_v^i$联系起来,得到了一个有色图像区域集合$\Psi(R;C)$,该集合中的一个元素便称为视觉子提示。

作者还讨论了视觉子提示的形状对模型性能的影响。作者在实验中发现实心的色彩块或者目标分割掩码要优于色彩边界框,作者认为其原因是现实世界中实心色彩的物体更常见。

文本子提示(TEXTUAL SUB-PROMPT)

作者首先将数据集中的图像文本对中的文本转为手工定义的色彩文本模板,即:

$$
\tau_g(q) = [CLS] : q: is: in:[MASK]: color: [SEP]
$$

其中的$[MASK]$就是模型尝试填空的目标。
模型根据下述公式决定$[MASK]$中所填的颜色:

$$
P(v=v_i|R,q)=P([MASK]=c_w^i|\Psi(R;C),\tau_g(q)) = \frac{\exp(h_{[MASK]}^Tc_w^i)}{\sum_{c_j\in C}{\exp(h_{[MASK]}^T)c_w^j}}
$$

训练和推断

训练目标采用的是多分类交叉熵。
如何决定色彩集合的配置是训练过程的关键。作者提出了跨模态提示检索方法(CPS)解决这个问题。

CPS算法过程

(1) 候选集生成

  • 颜色文本候选集($C^w$):从文本模态中提取一组颜色相关的文本候选,例如“红色”、“蓝色”等。
  • 视觉外观候选集($C^v$):从视觉模态中提取一组颜色相关的视觉外观候选,例如纯色块。

(2) 伪数据实例构建

对于每个视觉外观候选 $c^v∈C^v$,构建一个伪数据实例:

  • 视觉输入:一个纯色的颜色块,颜色为 $c^v$。
  • 文本输入:一个固定的模板文本,例如 "[CLS] a photo in [MASK] color [SEP]",其中 [MASK] 是需要模型预测的颜色词。

(3) 解码分数计算

将伪数据实例输入到视觉-语言预训练模型(VL-PTMs)中,计算每个颜色文本候选 $c^w∈C^w$ 的解码分数 $s(c^v,c^w)$。解码分数表示视觉外观 $c^v$ 和颜色文本 $c^w$ 之间的相关性,分数越高,相关性越强。

(4) 颜色文本筛选

保留对每个视觉外观候选 $c^v$ 解码分数最高的颜色文本

(5) 视觉外观筛选

根据颜色文本 $Cw$,筛选出对每个颜色文本解码分数最高的视觉外观

(6) 透明度调整

为了保留图像区域的原始内容,对视觉外观应用透明度超参数 α∈(0,1),使得颜色块与原始图像内容混合。

图像区域整合

由于图像感兴趣区域数量往往远多于色彩集合大小,所以需要对图像区域进行分组整合。作者将图像区域分为许多组,每一个组只有适当的交叉区域,然后用一个视觉子提示标识整个组。

论文地址:https://arxiv.org/pdf/2407.15819

项目地址:https://chain-of-sight.github.io/

摘要


由于受到计算资源的限制,个体研究者们难以自行预训练多模态大模型,往往都是加载已经预训练好的模型权重,然后再根据自己的任务进行微调。这限制了模型架构的发展,因为研究者们往往需要对自己的模型进行修改以适配预训练的多模态大模型。但是如果能够降低预训练阶段的计算资源消耗,使得研究人员能够负担的起预训练的开销,那么上述问题便能迎刃而解。这篇论文提出了一种多尺度视觉特征重采样器,以减少预训练阶段的视觉token的数量,从而大幅度降低预训练成本,并且对性能的影响较小。

方法


作者首先介绍了视觉重采样器(Visual resamplers)。视觉重采样器是一种类似于感知器的结构,它采用可学习的query和交叉注意力机制将视觉知识压缩成一定数量的视觉token。由于注意力机制的特性,输出token的数量由输入的query数量决定,这样可以使得视觉token的数量不受输入图像分辨率和滑动窗口大小的影响,而由设计者本人决定。当然这种方法会带来一定的信息损失。

然后作者介绍了自己的多尺度视觉特征重采样器(Multi-scale visual resamplers)。作者借鉴了在计算机视觉中的视觉金字塔思想,用不同大小的窗口对一张图像进行多次采样,然后再使用视觉重采样器将每一个尺度的滑动窗口产生的视觉token的数量压缩到$N$个,最后按照从粗粒度到细粒度的顺序将这些token依次送入语言模型进行预训练。粗粒度的视觉token由尺度较大的滑动窗口产生,细粒度的视觉token由尺度较小的滑动窗口产生。作者特别强调,视觉token的顺序很重要,从粗粒度token到细粒度token的顺序的预训练性能要明显优于从细粒度token到粗粒度token。

显然,压缩预训练阶段模型的视觉token数量会带来模型在下游任务上的性能下降。为了缓解这个问题,作者提出了一种后预训练token缩放策略( Post-pretrain token scaling strategy)来进行微调。由于更改滑动窗口大小和图像分辨率将会平方地改变视觉token的数量,所以作者提出了缩放滑动窗口大小和图像分辨率的混合缩放策略,这样可以增加微调阶段视觉token的数量,从而保证模型的性能。

Chain of Sight模型架构图

为什么作者要调整预训练阶段视觉token的数量而不是文本token的数量?

多模态大模型的参数主要集中在语言模型,语言模型消耗了大部分计算资源。为了减少语言模型的计算资源消耗,就必须减少预训练阶段的token数量,包括视觉token和文本token。由于视觉token的数量往往显著多于文本token的数量,所以作者要减少视觉token的数量,从而降低预训练计算资源消耗。

实验


论文中做了各种实验,在此不一一赘述,感兴趣的读者可以去读原论文。

局限性


作者提到使用LoRa方法微调的模型相对于直接监督微调所有参数的模型通用性会降低,这是由于计算资源限制的无奈之举。作者希望能够探索更好的预训练方法突破计算资源的限制。

test

This is a test post !

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment