w~多模态~合集1

我自己的原文哦~    https://blog.51cto.com/whaosoft/12663226

#Vista-LLaMA

Vista-LLaMA 在处理长视频内容方面的显著优势,为视频分析领域带来了新的解决框架。AI解读视频张口就来?这种「幻觉」难题给解决了

近年来,大型语言模型如 GPT、GLM 和 LLaMA 等在自然语言处理领域取得了显著进展,基于深度学习技术能够理解和生成复杂的文本内容。然而,将这些能力扩展到视频内容理解领域则是一个全新的挑战 —— 视频不仅包含丰富多变的视觉信息,还涉及时间序列的动态变化,这使得大语言模型从视频中提取信息变得更为复杂。

面对这一挑战,字节跳动联合浙江大学提出了能够输出可靠视频描述的多模态大语言模型 Vista-LLaMA。Vista-LLaMA 专门针对视频内容的复杂性设计,能够有效地将视频帧转换为准确的语言描述,从而极大地提高了视频内容分析和生成的质量。

论文主页:https://jinxxian.github.io/Vista-LLaMA/

技术创新路径

现有多模态视觉与语言模型在处理视频内容时,通常将视频帧转化为一系列的视觉 token,并与语言 token 结合以生成文本。然而,随着生成文本长度的增加,视频内容的影响往往逐渐减弱,导致生成的文本越来越多地偏离原视频内容,产生所谓的 “幻觉” 现象。

Vista-LLaMA 通过创新的方式处理视频和文本间的复杂互动,突破了传统视频语言模型的限制。Vista-LLaMA 的核心创新在于其独特的视觉与语言 token 处理方式。不同于其他模型,它通过维持视觉和语言 token 间的均等距离,有效避免了文本生成中的偏差,尤其是在长文本中更为显著。这种方法大幅提高了模型对视频内容的理解深度和准确性。

图 2

Vista-LLaMA 采用了一种改良的注意力机制 —— 视觉等距离 token 注意力(EDVT),它在处理视觉与文本 token 时去除了传统的相对位置编码,同时保留了文本与文本之间的相对位置编码。EDVT 机制通过特定的函数处理隐藏层输入,有效区分视觉 token 来源。

具体而言,它首先对输入进行查询、键和值的映射转换,接着对查询和键输入应用旋转位置编码(RoPE),分别计算带 RoPE 和不带 RoPE 的注意力权重。随后,根据视觉 token 的存在与否合并这两种注意力权重,通过 softmax 函数实现注意力的归一化,并最终通过基于注意力权重的线性映射更新表示,生成输出结果。这种创新使得多模态大语言模型能够更加关注视频的内容,尤其在复杂的视频场景中,能够有效地捕捉关键视觉元素,提升了文本生成的质量和相关性。

图 3

同时,该模型引入的序列化视觉投影器为视频中的时间序列分析提供了新的视角,它不仅能够处理当前视频帧,还能利用前一帧的信息,从而增强视频内容的连贯性和时序逻辑。

视觉投影器的作用是将视频特征映射到语言嵌入空间,以便大型语言模型融合和处理视觉与文本输入。如图 4 所示,早期的视觉投影器通常使用线性层或查询转换器(Q-Former)直接将帧特征转换为语言 token。然而,这些方法忽略了时间关系,限制了语言模型对视频的全面理解。Vista-LLaMA 中引入了序列化视觉投影器,它通过线性投影层编码视觉 token 的时间上下文,增强了模型对视频动态变化的理解能力,这对于提升视频内容分析的质量至关重要。

图 4

基准测试结果

Vista-LLaMA 在多个开放式视频问答基准测试中展现了卓越性能。它在 NExT-QA 和 MSRVTT-QA 测试中取得了突破性成绩,这两个测试是衡量视频理解和语言生成能力的关键标准。在零样本 NExT-QA 测试中,Vista-LLaMA 实现了 60.7% 的准确率。而在 MSRVTT-QA 测试中达到了 60.5% 的准确率,超过了目前所有的 SOTA 方法。这些成绩在行业中属于先进水平,显著超越了其他 SOTA 模型,如 Video-ChatGPT 和 MovieChat。

图 5

这些测试结果证明了 Vista-LLaMA 在视频内容理解和描述生成方面的高效性和精准性,Vista-LLaMA 能够准确理解和描述视频内容,显示了其强大的泛化能力。这些成绩不仅展示了 Vista-LLaMA 在理解复杂视频内容方面的能力,还证明了其在多模态语言处理领域的领先地位。

数据集:CineClipQA

图 6

与 Vista-LLaMA 一同提出的还有 CineClipQA 新数据集。

CineClipQA 包含了 153 个精选视频片段,这些片段来自五部风格和叙事手法各异的电影。每个片段代表电影情节的一个或多个独特部分,并附有 16 个量身定制的问题,共计 2448 个问题。问题分为系统提示和问题两部分:

  • 系统提示提供了当前视频片段中关键角色的基本信息,并在必要时为角色的初始行动提供提示。
  • 问题主要分为五类:识别、时间性(预测)、空间性(互动)、意图和感知。具体来说,识别包括地点和行动的问题;时间性涉及下一个行动、之前的行动、同时发生的行动和预测行动的问题;空间性涉及物体与人之间的空间信息问题;意图涉及行动目的地三种相似问题;最后,感知检查情感识别和询问 “如何”(方式、态度等)。

该研究还提供了所有 16 种类型的详细解释和相应案例。在 CineClipQA 数据集中,Vista-LLaMA 也表现出了卓越的性能。

图 7

简言之,Vista-LLaMA 在处理长视频内容方面的显著优势,为视频分析领域带来了新的解决框架,推动人工智能在视频处理和内容创作方面的发展,预示着未来多模态交互和自动化内容生成领域的广泛机遇。

更多详情,请访问项目页面 [https://jinxxian.github.io/Vista-LLaMA]。

#EMMS~

作者提出EMMS(Efficient Multimodal Multitask Model Selector)。EMMS是一个高效的多模态多任务预训练模型选择器,可以快速为包括图像分类,图像描述,视觉,文本问答,视觉定位任务等任务选择最合适的预训练模型,已被NeurIPS 2023会议接收,代码已在Github开源。 

神经信息处理系统大会(Neural Information Processing Systems, NeurIPS)是国际人工智能顶会之一,今天为大家介绍通用视觉团队的中稿论文之一Foundation Model is Efficient Multimodal Multitask Model Selector,一作为我团队与上海交通大学的2023级联培博士孟繁青同学,指导老师 罗平教授,邵文琪博士。

模型优选,指的是给定数据集以及一簇预训练模型后,选择一个最适合的预训练模型可以在下游任务上微调后得到最好的结果。尤其在大模型蓬勃发展的今天,模型优选能作为多任务处理模型TaskMatrix[1]的高效API选择器。在迁移学习的框架下,一个最简单的手段是把所有的预训练模型全部进行微调,最后选择最适合的那一个,但是微调的时间与物力成本过高。所以这一任务的难点在于如何准确且高效的完成多个预训练模型的下游任务效果预测。现有工作[2,3]都聚焦于特定任务的模型优选,比如图像分类。且由于方法设计包括了任务的先验信息,无法有效的扩展到其他任务比如图像描述等。

为了解决这个问题,我们提出EMMS(Efficient Multimodal Multitask Model Selector)。EMMS是一个高效的多模态多任务预训练模型选择器,可以快速为包括图像分类,图像描述,视觉,文本问答,视觉定位任务等任务选择最合适的预训练模型

论文:​​https://arxiv.org/abs/2308.06262​​

代码:​​https://github.com/OpenGVLab/Multitask-Model-Selector​​

贡献

  • 我们提出了一种通用的预训练模型的下游任务性能估计技术,即高效多任务模型选择器(EMMS)。EMMS配备了基础模型提供的统一标签嵌入和简单的加权线性平方回归 (WLSR),可以快速、有效地评估预训练模型在各种下游任务中的可迁移性。
  • 我们提出了一种新颖的交替最小化算法,有效地求解WLSR,我们证明了该算法的收敛性并提供了算法的加速版本。
  • 对 24 个数据集的 5 个下游任务进行的广泛实验证明了EMMS的有效性。具体来说,EMMS 在图像识别,视觉定位任务,图像描述,视觉问答和文本问答方面实现了 9.0%、26.3%、20.1%、54.8%、12.2% 的性能提升,同时与通过我们的标签嵌入增强的最先进方法LogME[4]相比,带来  5.13×, 6.29×, 3.59×, 6.19× 和 5.66× 的加速。
  • 相比于其他方法,EMMS首次实现了通用的多任务多模态模型优选算法。

方法详述

在本节中,我们介绍高效多任务模型选择器(EMMS)。我们认为统一多任务模型优选问题的关键是统一不同任务中的标签格式,为了克服标签格式多样化的困难,EMMS 采用基础模型将各种标签转换为的统一标签嵌入。通过将多个基础模型提供的标签嵌入视为真实标签的噪声版本,EMMS 可以在简单加权线性平方回归(WLSR)框架下计算可转移性度量。同时我们设计了一种交替最小化算法来有效地求解 WLSR。

标签嵌入

一般来说,标签嵌入应该对语义信息进行编码,使得语义相似度较低的两个标签被分组的机会较低。一种常见的方案是将 标签表示为 one-hot 向量。然而,one-hot 表示无法在图像描述任务中的文本格式的标签等。所以 我们将不同格式的标签视为文本序列,可以通过预训练的基础模型进行编码,记为F-Label。与one-hot 标签相比,F-Label 具有多项优势。首先,它嵌入了比one-hot标签更丰富的语义信息,从而可以准确地建模不同标签之间的语义关系。其次,与one-hot 标签相比,F-label可以在多种任务中获得。我们使用多个基础模型提取F-label,借助F-Labels,可以在多任务场景下建立模型选择。

加权线性回归

求解算法以及加速算法

实验结果

表1:ViT 模型在图片分类任务上的模型优选实验上关于 和挂钟时间的不同可转移性指标的比较,其中 EMMS(One) 表示具有 one-hot 标签的 EMMS。   

我们研究仅提供单一基础模型时 EMMS 受到的影响。为此,进行了图像分类和图像描述的实验。如表4所示,我们考虑使用单一基础模型的 EMMS,我们有几个观察结果。(1)不同的下游任务更喜欢从不同的基础模型获得的F-Label。没有一个基础模型在所有目标任务中占主导地位。特别是,CLIP 并不是提取 F-Label的最佳模型。(2) 对于图像描述任务,多模态基础模型比语言基础模型更适合提取 F -label。(3)我们的EMMS可以通过结合从多个基础模型获得的F-Label来达到最佳结果。

表4:使用不同基础模型提取F-Label对于结果的影响

与GPT4对比

我们将模型优选任务的定义,数据集的描述(包括数据集的规模,数据集包括的场景等),待选择预训练模型的描述(包括模型架构,常用领域,具体的组成等),发现根据纯文本信息,GPT4无法成功的完成模型优选任务,甚至其选择的结果是完全错误的。例如对于CIFAR10数据集的CNN预训练模型的模型优选,根据微调后的结果,其表现最好的预模型应当是ResNet-152,EMMS正确预测出了表现最好的模型是ResNet-152,然而GPT4预测最好的前三个模型分别是MobileNetV2,MobileNetV1,ResNet-34。本应该是效果最好的预训练模型ResNet34被GPT4预测到了最后一位。可见GPT4无法处理模型优选任务,说明了该任务的重要性,以及我们方法的必要性,有效性。

总结

如何快速有效地针对不同任务选择预训练模型是迁移学习领域的一个重要问题。本文提出了一种高效的多任务模型选择器(EMMS),可以应用于多种类型的任务。EMMS 使用标签嵌入的基础模型,以便将不同任务的不同标签格式转换为相同的形式,并将它们视为噪声标签。为了估计模型的可转移性,EMMS 将此问题建模为简单的加权线性回归,可以使用交替最小化算法来解决。与现有方法相比,EMMS首次实现了多任务场景下的模型选择,包括图像描述、问答和视觉定位任务等,速度快,效果好。

#Instruct-Imagen

谷歌图像生成AI掌握多模态指令,Google DeepMind 和 Google Research 提出可将多模态指令方法用于图像生成。该方法可将不同模态的信息交织在一起来表达图像生成的条件。 

用图 2 的风格画图 1 的猫猫并给它戴上一顶帽子。谷歌新设计的一种图像生成模型已经能做到这一点了!通过引入指令微调技术,多模态大模型可以根据文本指令描述的目标和多张参考图像准确生成新图像,效果堪比 PS 大神抓着你的手助你 P 图。

在使用大型语言模型(LLM)时,我们都已经见证过了指令微调的重要性。如果应用得当,通过指令微调,我们能让 LLM 帮助我们完成各种不同的任务,让其变成诗人、程序员、剧作家、科研助理甚至投资经理。

现在,大模型已经进入了多模态时代,指令微调是否依然有效呢?比如我们能否通过多模态指令微调控制图像生成?不同于语言生成,图像生成一开始就涉及到多模态。我们可否有效地让模型掌握多模态的复杂性?

为了解决这一难题,Google DeepMind 和 Google Research 提出可将多模态指令方法用于图像生成。该方法可将不同模态的信息交织在一起来表达图像生成的条件(图 1 左图给出了几个示例)。

具体来说,多模态指令可增强语言指令,比如用户可让生成模型按照指定参照图像的风格对所生成的图像进行渲染。如此一来,就能以对人类而言很直观的交互界面有效地为图像生成任务设定多模态条件。

基于这一思路,该团队打造了一个多模态指令图像生成模型:Instruct-Imagen。

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

该模型使用了一种两阶段训练方法:首先增强模型处理多模态指令的能力,然后忠实地遵循多模态的用户意图。

在第一阶段,该团队采用了一个预训练的文本到图像模型,其任务是处理额外的多模态输入;之后再对其进行微调,使其能准确地响应多模态指令。具体而言,他们采用的预训练模型是一个扩散模型(diffusion model),并使用相似的 (图像,文本) 上下文对其进行了增强,这些上下文取自一个网络规模级的 (图像,文本) 语料库。

在第二阶段,该团队在多种图像生成任务上对模型进行了微调,其中每个任务都搭配了对应的多模态指令 —— 这些指令中囊括了各自任务的关键要素。经过以上步骤,所得到的模型 Instruct-Imagen 可以非常娴熟地处理多种模态的融合输入(比如草图加用文本指示描述的视觉样式),从而可以生成准确符合上下文且足够亮眼的图像。

如图 1 所示,Instruct-Imagen 表现卓越,能够理解复杂的多模态指令并生成忠实遵照人类意图的图像,甚至能很好地处理之前从未见过的指令组合。

根据人类的反馈表明,在许多实例中,Instruct-Imagen 不仅能媲美针对特定任务的模型处理对应任务的表现,甚至还能超越它们。不仅如此,Instruct-Imagen 还表现出了强大的泛化能力,可以用于未曾见过和更复杂的图像生成任务。

用于生成的多模态指令

该团队使用的预训练模型是扩散模型并且用户可以为其设定输入条件,具体请参看原论文。

对于多模态指令,为了保证通用性和泛化能力,该团队提出了一种统一的多模态指令格式,其中语言的作用是明确陈述任务的目标,多模态条件则是作为参考信息。

这种新提出指令格式包含两个关键组件:(1) 有效负载文本指令,其作用是详细描述任务目标并给出参考信息标识,比如 [ref#?]。(2) 多模态的上下文,带有配对的 (标识 + 文本,图像)。然后,该模型使用一个共享的指令理解模型来处理文本指令和多模态上下文 —— 这里并不会限定上下文的具体模态。

图 2 通过三个示例展示了这一格式可以如何表示之前的各种生成任务,这说明这种格式可以兼容之前的图像生成任务。更重要的是,语言很灵活,因此无需针对模态和任务进行任何专门设计,就能将多模态指令扩展用于新任务。

Instruct-Imagen

Instruct-Imagen 的基础是多模态指令。基于此,该团队基于一种预训练的文本到图像扩散模型设计了模型架构,即级联扩散模型(cascaded diffusion model),使其可以完全采用输入的多模态指令条件。

具体来说,他们使用了 Imagen 的一个变体版本,参阅论文《Photorealistic text-to-image diffusion models with deep language understanding》,并基于他们的内部数据源进行了预训练。其完整模型包含两个子组件:(1) 文本到图像组件,其任务是仅使用文本 prompt 生成 128×128 分辨率的图像;(2) 文本条件式超分辨率模型,其可将 128 分辨的图像提升至 1024 分辨率。

至于对多模态指令的编码,可见图 3(右),其中展示了 Instruct-Imagen 编码多模态指令的数据流。

以两阶段方法训练 Instruct-Imagen

Instruct-Imagen 的训练流程分为两个阶段。

第一阶段是检索增强式文本到图像训练,即使用经过增强的检索到的近邻 (图像,文本) 对继续训练文本到图像的生成。

第二阶段则是对第一阶段的输出模型进行微调,这会用到混合的多样化的图像生成任务,其中每个任务都搭配了对应的多模态指令。具体来说,该团队使用了 5 个任务类别的 11 个图像生成数据集,见表 1。

在这两个训练阶段中,模型都是端到端优化的。

实验

该团队对新提出的方法和模型进行了实验评估,并深度分析了 Instruct-Imagen 的设计和失败模式。

实验设置

该团队在两种设置下对模型进行了评估,即领域内任务评估和零样本任务评估,其中后一种设置比前一种设置更具挑战性。

主要结果

图 4 比较了 Instruct-Imagen 和基准方法及之前的方法,结果表明其在领域内评估和零样本评估上足以媲美之前的方法。

这表明多模态指令训练可以增强模型在训练数据有限的任务(比如风格化生成)上的性能,同时还能维持在数据丰富的任务(比如生成像照片的图像)上的效果。如果没有多模态指令训练,多任务基准往往会得到较差的图像质量和文本对齐效果。

举个例子,在图 5 的上下文风格化(in-context stylization)示例中,多任务基准难以分辨风格与物体,于是在生成结果中复现了物体。出于类似的原因,其在风格迁移任务上也表现很差。这些观察凸显了指令微调的价值。

不同于依赖针对特定任务的当前方法或训练,Instruct-Imagen 通过利用组合不同任务的目标的指令并在上下文中执行推理,可以高效地管理组合式任务(无需微调,每个示例需要 18.2 秒)。

如图 6 所示,Instruct-Imagen 在指令跟随和输出质量方面总是优于其它模型。

不仅如此,在多模态上下文中存在多个参考的情况下,多任务基准模型无法将文本指令与参考对应起来,导致一些多模态条件被忽略。这些结果进一步展现了新提出的模型的有效性。

模型分析和消融研究

该团队对模型的限制和失败模式进行了分析。

比如该团队发现,微调后的 Instruct-Imagen 可以编辑图像。如表 2 所示,通过比较之前的 SDXL-inpainting、在 MagicBrush 数据集上微调过的 Imagen 以及微调后的 Instruct-Imagen,可以发现微调后的 Instruct-Imagen 大幅优于专门为基于掩码的图像编辑设计的模型。

但是,微调后的 Instruct-Imagen 却会在编辑后的图像中生成伪影,尤其是超分辨率步骤之后的高分辨率输出,如图 7 所示。研究者表示,这是由于该模型之前没有学习过直接从上下文准确地复制像素。

该团队还发现,检索增强式训练有助于提升泛化能力,结果如表 3 所示。

对于 Instruct-Imagen 的失败模式,研究者发现,当多模态指令更复杂时(至少 3 个多模态条件),Instruct-Imagen 难以生成遵从指令的结果。图 8 给出了两个示例。

下面再展示一些在训练中未曾见过的复杂任务上的结果。

该团队也进行了消融研究证明其设计组件的重要性。

不过,出于安全性考虑,谷歌目前还没有发布该研究的代码和 API。

#VLMEvalKit

OpenCompass 团队开发了 VLMEvalKit,一个全新的开源多模态评测框架,旨在提供可靠、可复现的评测结果,助力社区更准确地比较不同多模态模型在各种任务上的性能。 

随着 OpenFlamingo, LLaVA, MiniGPT-4 等一系列多模态理解先驱项目的推出,我们见证了超过一百种创新多模态模型和众多评测数据集的诞生。面对这一领域的迅速扩张,我们意识到一个挑战:

不同的多模态模型通常会提供不同评测集上的测试结果,但迄今为止,尚无一个统一的开源评测框架来全面覆盖这些多样化的模型和评测集。

为此,OpenCompass 团队开发了 VLMEvalKit,一个全新的开源多模态评测框架,旨在提供可靠、可复现的评测结果,助力社区更准确地比较不同多模态模型在各种任务上的性能。

GitHub:https://github.com/open-compass/VLMEvalKit

主要特性

我们将 VLMEvalKit 的主要特性总结如下:

1. 适用范围:

目前的 VLMEvalKit 主要适用于图文多模态模型的评测,基于模型能力范围,可以支持单对图文输入或是任意数量的图文交错输入。下面的代码展示如何基于 VLMEvalKit 进行单对图文或任意交错图文的推理:

from vlmeval.config import supported_VLM
model = supported_VLM['idefics_9b_instruct']()
# 基于 VLMEvalKit 进行单对图文推理
ret = model.generate('apple.jpg', 'What is in this image?')
# ret: "The image features a red apple with a leaf on it."
# 基于 VLMEvalKit 进行任意交错图文推理
ret = model.interleave_generate(['apple.jpg', 'apple.jpg', 'How many apples are there in the provided images? ']
)
# ret: "There are two apples in the provided images."

2. 丰富的模型与评测集支持:

  1. 支持三个主流多模 API 模型:GPT-4v,GeminiPro,QwenVLPlus
  2. 支持包括 llava-v1.5,mPLUG-Owl2, XComposer, CogVLM 等模型在内的超过三十个开源多模态模型
  3. 支持包括 MME, MMBench, SEEDBench, MMMU 等评测集在内的十余个开源多模态评测集
  4. 基于支持的模型和评测集进行了翔实的评测,结果发布在 OpenCompass 多模态整体榜单:https://opencompass.org.cn/leaderboard-multimodal

3. 便捷的一站式评测:

  1. 对于所有 VLMEvalKit 支持的数据集,均无需进行手动数据预处理
  2. 只需一条命令即可完成对多个多模态模型和评测集的评测

4. 易于扩展:基于 VLMEvalKit 框架,你可以轻松添加新的多模态模型 / 评测集。并且,当你完成了模型 / 评测集添加后,任意原有的 评测集 / 模型都可适用于新的 模型 / 评测集 的评测

  1. 添加新的评测集:基本上,只需要将自定义评测集转化为 VLMEvalKit 支持的 TSV 格式,并提供相应的自定义 prompt 构建方式,即可在 VLMEvalKit 中添加新的评测集。[AI2D](https://github.com/open-compass/VLMEvalKit/pull/51) 提供了一个可供参考的例子。
  2. 添加新的多模模型:为添加新的多模模型,你需支持一个新类,该类只需支持简单的 generate(image, prompt) 接口即可满足要求。这种方式同时适用于 API 模型 (QwenVLPlus,参考:https://github.com/open-compass/VLMEvalKit/pull/27/) 与开源模型 (Monkey,参考:https://github.com/open-compass/VLMEvalKit/pull/45)。
  3. 为不同评测集选用自定义 prompt:我们理解开发者可能为不同的评测集选择不同的 prompt 模板以达到最佳效果,因此,我们在 VLMEvalKit 中支持了这一功能。

如何使用

安装

git clone git@github.com:open-compass/VLMEvalKit.git
cd VLMEvalKit
pip install -e .

Demo 检查是否安装成功

rom vlmeval.config import supported_VLM
model = supported_VLM['idefics_9b_instruct']()
ret = model.generate('apple.jpg', 'What is in this image?')
# ret: "The image features a red apple with a leaf on it."
ret = model.interleave_generate(['apple.jpg', 'apple.jpg', 'How many apples are there in the provided images? ']
)
# ret: "There are two apples in the provided images."

进行评测

# 模型:qwen_chat; 评测集范围:MME; 机器配置:2 卡 A100
torchrun --nproc-per-node=2 run.py --data MME --model qwen_chat --verbose
# 模型:IDEFICS-9B-Instruct, Qwen-VL-Chat, mPLUG-Owl2
# 评测集范围:MMBench_DEV_EN, MME, SEEDBench_IMG
# 机器配置:8 卡 A100
torchrun --nproc-per-node=8 run.py --data MMBench_DEV_EN MME SEEDBench_IMG \--model idefics_80b_instruct qwen_chat mPLUG-Owl2 --verbose

评测结果

我们将测试结果公布在 OpenCompass 多模态大模型性能整体榜单:https://opencompass.org.cn/leaderboard-multimodal。目前,榜单上包含了 VLMEvalKit 中所有多模模型在 9 个评测集上的性能。下图截取了部分评测结果:

定量结果

整体而言,我们有以下发现:

  1. 闭源多模态 API 模型整体性能仍处于领先地位:计算各个模型在不同评测集上的平均排名,可以发现,排名前三的 GeminiPro,GPT-4v,QwenVLPlus 均为闭源 API 模型。
  2. 开源多模态模型在推理能力上存在欠缺:在一些需要较强推理能力的测试集上 (如 MMMU,MMVet,MathVista 等),开源模型(如 InternLM-XComposer)尚与闭源模型存在一定差距。
    为便于用户对多模态模型的性能进行比较,我们选取了 9 个主流的多模态模型,进行了性能可视化:

定性结果

为了解目前的多模态模型尚有哪些不足之处,我们选取了在上图九个评测集中,所有多模态模型均无法正确答对的题目进行可视化,以下是部分结果:  1. 需要外部知识才能回答的题目

题目:What is the age gap between these two people in image? (Unit: years)
答案:11

题目:In the Section of left leg, identify the 170 structure.   
选项:A. Tibialis anterior B. Tibialis posterior C. Flexor hallucis longus D. Peroneus longus
答案:D

题目:The maximum number of stereoisomers that could exist for the compound below ?
选项:A. 6 B. 8 C.10 D.16
答案:C

题目:Is the person inside the red bounding box called Michael Keaton? Please answer yes or no.  
答案:Yes

  1. 复杂的多模态推理

题目:如图,在ABCD中,AB=AC,∠CAB=40°,则∠D的度数是()选项:(A) 40° (B) 50° (C) 60° (D) 70°
答案:(D) 70°

题目:How many Triangles do you see in the picture?
答案:12

3.  复杂的图表分析

题目:What is the difference between genres of tv shows watched by highest female and lowest female?
答案:39

附录

VLMEvalKit 项目地址:​​https://github.com/open-compass/VLMEvalKit​​MMBench 性能榜单:​​https://mmbench.opencompass.org.cn/leaderboard​​OpenCompass 多模态大模型性能整体榜单:https://opencompass.org.cn/leaderboard-multimodal
如何加入 MMBench 性能榜单:

  • 发送 MMBench 评测集上的预测结果 或 官网评测 ID 至 opencompass@pjlab.org.cn;
  • 官网评测 ID 可以通过提交预测结果至评测服务 (https://mmbench.opencompass.org.cn/mmbench-submission) 获得。

如何加入多模态大模型性能整体榜单:
提交 PR 至 VLMEvalKit 项目,榜单会随后更新。参考:

  • 【支持新模型】Support Monkey (#45):https://github.com/open-compass/VLMEvalKit/pull/45/files
  • 【支持新数据集】Support AI2D (#51):https://github.com/open-compass/VLMEvalKit/pull/51/files

#MVBench

作者提出了MVBench,多模态视频理解能力的全面评测,由20项单帧无法有效解决的视频任务组成,用于全面评测现有多模态模型的视频理解能力。基于对已有视频多模态模型的缺陷分析,作者提出了更强大的基线模型VideoChat2,其不仅在MVBench上取得15个任务的领先,更在流行的视频问答、对话、推理数据集上取得有竞争力的性能。

[CVPR2024] MVBench 多模态视频理解能力的全面评测!

Paper: MVBench: A Comprehensive Multi-modal Video Understanding Benchmark
https//arxiv.org/abs/2311.17005

Code: MVBench & VideoChat
https//github.com/OpenGVLab/Ask-Anything/tree/main/video_chat2

Online Demo: Hugging Face
https//huggingface.co/spaces/OpenGVLab/VideoChat2
OpenXLab
https//openxlab.org.cn/apps/detail/yinanhe/VideoChat2

Benchmark Data: OpenGVLab/MVBench
https//huggingface.co/datasets/OpenGVLab/MVBench

Instruction-tuning Data: OpenGVLab/VideoChat2-IT
https//huggingface.co/datasets/OpenGVLab/VideoChat2-IT

我们提出了MVBench,由20项单帧无法有效解决的视频任务组成,用于全面评测现有多模态模型的视频理解能力。基于对已有视频多模态模型的缺陷分析,我们提出了更强大的基线模型VideoChat2,其不仅在MVBench上取得15个任务的领先,更在流行的视频问答、对话、推理数据集上取得有竞争力的性能。所有的代码、模型权重、训练数据、评测数据均已开源!

VideoChat2性能

Motivation

五月份做完VideoChat[1]之后,我们遇到了图像对话模型一样的窘境,应该如何科学全面地评测多模态对话模型的能力呢?

  • 最直接有效的方法是用人类评测,这也是在Multi-Modality Arena[2]中使用的,但是人类评测效率低下,且存在认知偏差,很难公平地评判不同的模型。
  • 一种间接的方式是使用大语言模型评价,但这种方式更公正,但大前提是语言模型足够聪明、强大、鲁棒,换句话说,足够“像人类”。目前常用的做法是使用ChatGPT(默认为3.5)甚至是GPT-4,且需要精心设计评价prompt,如VideoChatGPT[3]和MMVet[4]。
  • 最后一种方式是使用传统的评价方式,如multiple-choice QA。但传统数据集往往侧重角度单一,无法较为全面地评价、诊断对话模型的能力。因此,最近的图像对话模型评测,倾向于从不同的感知和认知角度,考虑模型的多种能力,并基于不同的能力设计评测任务,再通过人工采集、标定数据。最后使用multiple-choice QA的方式,计算不同任务的准确率,从而实现全面的评测。

我们最终决定采用的也是最后一种方式,那么问题便来到了,如何确定合适的评测任务呢?

Temporal Task Definition

通过思考图像和视频任务的本质区别,我们确定了一种简单可扩展的方案:首先总结基本的图像评测任务,再由这些任务出发,思考无法通过单帧有效解决的视频任务

我们首先从图像benchmark[5][6]里总结了上述9项空间理解任务,再思考延伸出20项时间理解任务如下:

Action. (1) Action Sequence: Retrieve the events occurring before or after a specific action. (2) Action Prediction: Infer the subsequent events based on the current actions. (3) Action Antonym: Distinguish the correct action from two inversely ordered actions. (4) Fine-grained Action: Identify the accurate action from a range of similar options. (5) Unexpected Action: Detect surprising actions in videos characterized by humor, creativity, or magic.

Object. (6) Object Existence: Determine the existence of a specific object during a particular event. (7) Object Interaction: Identify the object that participates in a particular event. (8) Object Shuffle: Locate the final position of an object in an occlusion game.

Position. (9) Moving Direction: Ascertain the trajectory of a specific object’s movement. (10) Action Localization: Determine the time period when a certain action occurs.

Scene. (11) Scene transition: Determine how the scene transitions in the video.

Count. (12) Action Count: Calculate how many times a specific action has been performed. (13) Moving Count: Calculate how many objects have performed a certain action.

Attribute. (14) Moving Attribute: Determine the appearance of a specific moving object at a given moment. (15) State Change: Determine whether the state of a certain object changes throughout the video.

Pose. (16) Fine-grained Pose: Identify the accurate pose category from a range of similar options.

Character. (17) Character Order: Determine the order in which the letters appear.

Cognition. (18) Egocentric Navigation: Forecast the subsequent action, based on an agent’s current navigation instructions. (19) Episodic Reasoning: Perform reasoning on the characters, events, and objects within an episode of a TV series. (20) Counterfactual Inference: Consider what might happen if a certain event occurs.

下面列举了具体每个任务的例子

20项任务举例

Automatic QA Generation
有了评测任务定义之后,下一个问题便是如何制定评测数据,为了最大化地减少人力开销,我们收集了多个开源的视频数据集,利用开源的高质量数据标注,设计了一套自动生成评测数据的pipeline如下所示

自动化生成pipeline

具体地我们从任务出发,敲定任务所需要的数据集,之后进行数据过滤

  • 考虑到视频多样性,我们尽可能地对不同的视频设计独立的问题;
  • 考虑到时序敏感性,我们采取每个数据集中合适的视频长度,过短的视频往往动作幅度较小,而过长的视频包含过于复杂的上下文,问题过难会导致无法区分不同模型的能力;
  • 考虑到问题复杂度,我们采取难度适中的问题,如在CLEVRER中,我们采取适当条件限制的问题;如对于时间定为问题,我们不采用精细的秒级别定位任务,而采用粗略的时间段定位,如发生在视频的开始、中间还是结束。

之后便来到生成多选题的问题及选项,对于已有多选QA的数据,我们直接采用。但对于没有多选QA的数据,我们接住ChatGPT来生成:

  • 对于问题,我们基于ChatGPT任务的定义,并生成3-5个对应的问题随机选其一;
  • 对于选项,我们设计两种策略:(a)基于模版的构造,我们设计固定的选项模版,结合GT匹配生成;(b)基于LLM的生成,我们将原始QA输入ChatGPT,并让ChatGPT生成新的问题以及选项。

具体对不同任务,我们处理如下所示:

不同任务处理

在得到多选题的问题和选项后,我们还会额外进行一步后处理,对选项进行随机打乱,以及检查不同选项的长度,避免答案过长导致“答案泄露”,对过长的选项我们使用ChatGPT进行改写。

通过这种方式,我们为每个任务自动生成了200条问答,最后得到4000条数据用于高效评测。

Prompt Design for Evaluation

对于具体的评测,我们设计了合理的system prompt和高效的answer prompt,其中system prompt用于激发模型的时间理解能力:

Carefully watch the video and pay attention to the cause and sequence of events, the detail and movement of objects and the action and pose of persons. Based on your observations, select the best option that accurately addresses the question.

由于对话模型的输出倾向于输出完整的句子,难以直接输出选项,如何从对话的输出中抽取选项也成了一个难题。MMBench[6]中使用多个模版匹配选项,对于无法匹配的选项,使用ChatGPT进行抽取,然后这种抽取效率低下, 和人类相比,只取得了87%的对齐率。SEED-Bench[7]则比较不同选项的似然,选择最大似然对应的选项作为最终答案,然后这种方式仍不够直接,并且需要人为修改不同模型的forward函数。

我们采取一种更简单直接的方式,通过构造带括号"()"的选项,接着显著地通过控制对话模型输出的起始字符"Best Option: (",即answer prompt,在我们的实验里,这种方式不仅可以100%地保证不同模型地输出选项,同时能够提高答案的准确率。

VideoChat2

我们在MVBench上评价了现有的图像和视频对话模型,结果发现即便是最佳的视频对话模型VideoChat[1],性能与随机猜测相比也相差无几。分析原因可以发现,目前的视频对话模型存在两大缺陷:

  • 缺乏多样的指令微调数据:由于视频数据难以标注,开源的指令微调数据扔规模较小;
  • 缺乏强视频编码器:目前主流的方法仍是选强的多模态图像编码器CLIP-ViT,在上面进行时序改良,这难以本质地处理时序理解。

我们针对这两大缺陷进行了设计,首先我们借鉴了InstructBLIP[8]、M3IT[9]的思路,从现有的图像和视频数据集中转化出了1.9M统一形式的指令微调数据,如下所示

1.9M指令微调数据

这些数据主要分为6大类:Conversation, Classification, Simple Caption, Detailed Caption, VQA和Reasoning。并且都以右下角所示的形式进行统一,主要包括instruction任务提示、question问题和answer答案。对于instruction,我们借助ChatGPT进行自动生成,避免了M3IT[9]中的人工编写。而具体对不同的数据集,我们采用了不同的处理方式,详情可见:

https//huggingface.co/datasets/OpenGVLab/VideoChat2-IT

对于模型架构,我们采用了BLIP2结构,基于强多模态视频编码器UMT[10],设计了渐进式跨模态训练流程

渐进式多模态训练

在第一阶段,我们将冻结的视觉编码器和QFormer对齐,用于将冗余的视频信息压缩,这里采用了BLIP2训练的三种损失VTC/VTM/VTG。在第二阶段,我们打开视觉编码器,并引入冻结的LLM,使用VTG损失进行视觉文本链接。在最后一阶段,我们使用准备好的1.9M指令微调数据,并在LLM中插入LoRA模块进行高效微调。借鉴InstructBLIP,我们在QFormer中也插入了instruction,用于引入QFormer对视觉信息进行压缩。

Experiments

开源对话模型评测

MVBench评测结果

从结果中我们可以发现,现有对话模型在MVBench性能表现很不理想,最强的图像对话模型LLaVA和视频对话模型VideoChat,相比随机的27.7%准确率只高了不到9个点。而我们提供的强大基线模型VideoChat2相比前述最强模型,提升将近15个点。值得一提的是,这里的VideoChat2_text,输入为空白视频,即QFormer输出噪声embedding,模型仅靠文本上下文进行输出,结果居然与前述最强模型接近。这个结果也揭示了目前对话模型,在时序理解任务上,仍有很大的不足

GPT-4V评测

MVBench子集评测结果

我们也在一个小的子集上评测了GPT-4V的性能,结果显示GPT-4V具备较好的时序理解能力

完整Leadeboard

Leaderboard

我们的VideoChat2在15个任务上取得最佳性能,但也能看到,它在处理移动方向、动作定位、计数等任务上仍有不足。最近的一些图像对话模型,已经开始引入grouding数据增强相关能力,这也是后续视频对话模型可以突破的方向。

VideoChatGPT对话Benchmark

VideoChatGPT Benchamrk

在VideoChatGPT对话Benchmark上的结果显示,我们的VideoChat2在各方面能力上都有大幅度提升

零样本传统QA

零样本传统QA

零样本传统QA任务上,VideoChat2同样优于其他视频对话模型,且在长时ActivityNet QA上有显著提升

视频问答推理

视频问答推理

在视频问答推理任务上,VideoChat2同样取得了很强的零样本性能。

消融实验

指令微调数据

在指令微调数据上的实验表明,更多样的指令数据、图像视频联合训练,都提升了模型性能。考虑到simple caption数据的冗余,我们简单进行了随机压缩,性能差异不明显。

模型结构

在模型结构上的实验表明,使用强视频编码器相比图像编码器,提升显著。LoRA微调对于对话模型能力的提升十分关键,而使用更大更新的LLM,提升不明显。 

训练方式

我们同样探索了不同的冻结训练方式,结果表明,在第二第三阶段,均打开视觉编码器和QFormer效果最好

使用精心设计的system prompt,能较好地激发模型的时序理解能力。

使用我们设计的简单answer prompt,不仅可以100%提取选项,同时显著提升答案准确率

对于QFormer,我们在第二第三阶段引入了额外可学习的token,用于和LLM对齐,结果显示额外引入64个token效果最佳。并且在QFormer中插入instruction引导,结果提升明显,而继续插入question则有副作用。

对于训练和测试输入,实验表明训练使用8帧,测试使用16帧效果较好,训练开销也较小。但使用大分辨率,在MVBench上并没有提升,侧面验证了MVBench更依赖于模型的时序理解能力

定性结果

MVBench结果可视化

定性描述例子

Conclusion

总而言之,在MVBench中我们提出了较为全面的视频理解能力评测方案,针对现有视频对话模型的缺陷,构造了更丰富的指令微调数据,训练了更强大的基线模型VideoChat2。目前所有数据、模型、代码均已开源,期待更通用更智能的多模态对话模型涌现!

参考

1.VideoChat 
​​​ https://github.com/OpenGVLab/Ask-Anything/tree/main/video_chat​​

2.Multi-Modality Arena
​​​  https://github.com/OpenGVLab/Multi-Modality-Arena​​

3.VideoChatGPT 
​​​ https://github.com/mbzuai-oryx/Video-ChatGPT/tree/main/quantitative_evaluation​​

4.MM-Vet 
​​​ https://github.com/yuweihao/MM-Vet​​

5.MME 
​​​ https://github.com/bradyfu/awesome-multimodal-large-language-models/tree/Evaluation​​

6.MMBench
​​​  https://opencompass.org.cn/mmbench​​

7.)SEED-Bench 
​​​ https://github.com/AILab-CVC/SEED-Bench/blob/main/DATASET.md​​

8.InstructBLIP 
​​​ https://github.com/salesforce/LAVIS/tree/main/projects/instructblip​​

9.M3IT
​​​  https://huggingface.co/datasets/MMInstruction/M3IT​​

10.UMT
​​​  https://github.com/OpenGVLab/unmasked_teacher​​

#CLIP3

CLIP 是由 OpenAI 提出的一种多模态神经网络,它能有效地借助自然语言的监督来学习视觉的概念。典型的视觉数据集是劳动密集型的,创建成本很高,且使用它们训练得到的标准视觉模型只擅长一项任务,导致适应新的任务并不容易。而 CLIP 在各种各样的图像上进行训练,同时依赖于互联网上大量自然语言的监督。CLIP 可以用自然语言指示进行大量的分类基准:我们只需要提供要识别的视觉类别的名称,无需再在目标基准上面进行专门的训练,这有点类似于 GPT-2 和 GPT-3 的 "Zero-Shot" 的能力。比如,CLIP 在 ImageNet-1K 上的性能与专门有监督训练的 ResNet-50 相当,但是却没有使用 1.28M 的 ImageNet-1K 训练数据集。事实上,CLIP 也可以 "Zero-Shot" 地有效转移到大多数任务上面,并且能获得与完全监督的基线相竞争的性能。

CLIP:大规模语言-图像对比预训练实现不俗 Zero-Shot 性能

论文名称:Learning Transferable Visual Models From Natural Language Supervision (ICML 2021)

论文地址:

​​https://arxiv.org/pdf/2103.00020.pdf​​

官方博客:

​​https://openai.com/research/clip​​

CLIP 这篇论文讲了一个很长的故事。

[NLP 领域 "Zero-Shot" 能力的诞生] 在过去的几年 (2018-2020,以 GPT 到 GPT-3 为代表) 里,直接从原始文本中进行自监督预训练的方法彻底改变了 NLP 这个领域。NLP 领域自监督预训练的方法一般是采用自回归 (Autoregressive),或者掩码文本建模 (Masked Language Modeling),其特点是在模型容量,数据规模方面扩展了许多数量级,使得模型能力稳步提高,并发现模型开始具备了 "Zero-Shot" 能力,也叫零样本学习的能力,即无需在目标下游任务上面进行专门的训练,即获得对应的能力。旗舰产品比如 GPT-3,通过精心设计的大模型,在多数下游任务 (比如动作识别,OCR,ImageNet-1K 图像分类,细粒度图像分类任务) 上获得了极具竞争力的性能,博客链接如下。

​​https://zhuanlan.zhihu.com/p/622067372​​

[CV 领域当时没这个能力] 这些结果说明,使用超大规模的文本集合训练出的 NLP 模型性能是足以超越高质量,密集标注数据集训练的结果的。但是,反观 CV 领域,当时大家还在使用高质量,密集标注数据集 (如 ImageNet-1K) 进行预训练。

[CV 领域借助文本监督方法的性能很差] 我们不禁要问:能不能使用类似的方法,从大规模文本中学习,从而在计算机视觉领域取得类似的突破?前人已经有大量的探索,这里不再赘述。虽然这些探索可以证明这个概念可以实现,但是使用自然语言来监督,进行图像表征学习的工作仍然很少。这可能是因为借助本文监督方法的性能很差,在当时,ImageNet-1K 的 "Zero-Shot" 性能[1]仅有 11.5%,远低于当时 SOTA 的 88.5%。

[借助文本的监督方法属于有监督和无监督的一个中间地带] 借助文本的监督方法属于:"借助有限的标注数据进行有监督训练" 和 "借助几乎无限量的原始文本进行无监督训练" 二者之间的中间地带。相同的是,这两种方式都使用静态的 Softmax 分类器来执行预测,缺乏动态输出的机制。这严重限制了它们的灵活性和 "Zero-Shot" 能力。

[CLIP 方法及其结果] 在本文中作者研究了借助大规模自然语言监督训练图像分类器。互联网上存在大量公开可用的无标注文本数据集,作者创建了一个包含4亿对 (图像,文本) 的新数据集,并通过对比语言-图像预训练的方式训练了 CLIP 模型,是一种从自然语言监督中学习视觉模型的有效新方法。作者发现 CLIP 类似于 GPT 家族,在预训练期间学习执行一系列任务,包括动作识别,OCR,地理定位,ImageNet-1K 图像分类,细粒度图像分类任务等。作者通过在30多个现有数据集上对 CLIP 的 "Zero-Shot" 迁移学习性能进行测试,并发现 CLIP 可以与有监督训练得到的模型性能相当。比如,CLIP 在 ImageNet-1K 上的性能与专门有监督训练的 ResNet-50 相当,但是却没有使用 1.28M 的 ImageNet-1K 训练数据集。

自然语言的监督

本文方法的核心是从自然语言的监督中获得感知能力。只要是你的方法具备这一特点,都可以称之为 "接受了自然语言的监督"。那这种方法有哪些优势呢?其一就是可扩展性。因为它不需要经典机器学习方法中大量的有标签数据。

CLIP 的数据集

本文的一个主要特点是想利用互联网上大量公开可用的数据。由于现有的数据集 (MS-COCO 约100,000张,YFCC100M 高质量的仅仅约 15M 张,和 ImageNet-1K 大小相似) 不够大,可能会低估这一研究领域的潜力。

为了解决这个问题,作者构建了一个新的数据集,其中包含4亿对 (图像,文本) 对,这些数据来自互联网上各种公开可用的资源。而且这个数据清理得非常好,质量是非常高的,这也可能是 CLIP 这么强大的主要原因之一。结果数据集的总字数与用于训练 GPT-2 的 WebText 数据集相似,因此作者将此数据集称为 WebImageText (WIT)。

CLIP 的预训练方法

本文采取基于对比学习的高效预训练方法。作者的思路是这样的:一开始的方法是联合训练了一个处理图像的 CNN 和一个处理文本的 Transformer 模型,来预测图像的 caption。这个实验结果如下图1的蓝色曲线所示,可以看到其 Scalability 是很差的。橘红色曲线是预测文本的词袋,其效率是蓝色曲线的3倍。这两种方法都有一个关键的相似性,即试图去预测每幅图片对应的文字的确切单词是什么。但我们知道这可不是一件容易的事,因为与同一幅图像对应的描述、注释和相关文本种类繁多。

1:不同方法的 Zero-Shot ImageNet-1K 精度

基于最近的图像对比表征学习方面的研究,可以仅预测整个文本与哪个图像配对,而不是该文本的确切单词,实验结果如下图1的绿色曲线所示,其效率是橘红色曲线的4倍。具体的做法是:

图2:CLIP 的对比学习阶段

伪代码如下图3所示。

图3:CLIP 对比学习伪代码

那么我们不禁要问:其他任务可以像这样使用 prompt 吗?或者什么样的 prompt 可以带来 Zero-Shot 的性能提升? 作者做了实验发现:

  • 对于细粒度图像分类任务,比如 Oxford-IIIT Pets 数据集,prompt 就可以设置为:"A photo of a {label}, a type of pet."。比如 Food101 数据集,prompt 就可以设置为:"A photo of a {label}, a type of food."。比如 FGVC Aircraft 数据集,prompt 就可以设置为:"A photo of a {label}, a type of aircraft."
  • 对于 OCR 任务,加上一些文本或者数字的引号可以提升性能。
  • 对于卫星图像分类数据集,prompt 就可以设置为:"a satellite photo of a {label}."。

图4:CLIP 的 Zero-Shot Transfer

作者还开脑洞尝试了通过使用多个上下文的 prompt 来 Ensemble 多个 Zero-Shot 分类器,比如一个 prompt 是 'A photo of a big {label}",另一个 prompt 是 'A photo of a small {label}"。作者观察到这样可以可靠地提高性能。在 ImageNet 上,作者集成了 80 个不同的上下文提示,这比上面讨论的单个默认提示提高了 3.5% 的性能。当一起考虑时,如下图5所示是 Prompt 工程和 Ensemble 策略如何改变一组 CLIP 模型的性能,可以看到 Prompt 工程和 Ensemble 策略将 ImageNet 精度提高了近 5%,其中蓝色的线代表直接嵌入类名的结果。

图5:prompt 工程和 Ensemble 对 Zero-Shot 性能的影响

CLIP 的模型选择

对于 Image Encoder,作者尝试了改进版的 ResNet-50 和 ViT,对于 Text Encoder,作者使用改进版的 Transformer,作者使用了一个带有8个注意头的 63M 参数的12层512宽 Transformer 模型,其输入是一个大小为49152的词汇表的 BPE[2]小写表征。为了计算效率,最大序列长度为76。文本序列用 [SOS] 和 [EOS] 令牌括起来,[EOS] 处 Transformer 末层的输出被视为文本的特征,然后通过 LN,后接 Linear 层投影到多模态空间中。

至于模型缩放的问题,作者发现对于图像编码器 ResNet,同时缩放其深度,宽度,和输入分辨率的效果是最优的。而对于文本编码器 Transformer,作者只缩放模型的宽度,使其与 ResNet 宽度的计算增量成正比,而无需缩放深度,因为作者发现 CLIP 的性能对文本编码器的容量不太敏感。

零样本迁移 (Zero-Shot Transfer) 实验结果

本节中的 Zero-Shot 是指研究对未见过的数据集的泛化性能,也就是说一个模型训练号以后,在它从未见到过的新数据集上的性能如何。

CLIP 与 Visual N-Grams 的对比

作者这里对比了另外一种方法 Visual N-Grams,如下图6所示。最佳 CLIP 模型将 ImageNet 上的准确率从 11.5% 提高到 76.2%,并且与原始 ResNet-50 的性能相匹配。注意到 ResNet-50 是完全监督训练出来的,使用了全部的 ImageNet 训练集,而 CLIP 却没使用任何一张 ImageNet 训练集,这俩结果能力基本一致。CLIP 在其他2个报告的数据集上也优于 Visual N-Grams。在 Yahoo 上,CLIP 将错误数量减少了 95%,在 SUN 上,CLIP 将 Visual N-Grams 的准确性提高了一倍以上。

图6:CLIP 与 Visual N-Grams 的对比

Zero-Shot CLIP 与完全监督的基线相比具有竞争力

除此之外,作者进一步探索 CLIP 的 Zero-Shot 性能。为了说明这一点,作者比较了 CLIP 与基于 ResNet-50 完全监督的、正则化的逻辑回归分类器的性能。实验结果如下图7所示,在一共对比的27个数据集中,Zero-Shot CLIP 在16个数据集上面战胜了全监督的 ResNet-50 模型。

在细粒度分类任务上,可以观察到性能上的广泛差异。在其中两个数据集 (Stanford Cars 和 Food101) 上,Zero-Shot CLIP 在 ResNet-50 特征上的表现比逻辑回归好 20% 以上,而在另外两个数据集 (Flowers102 和 FGVCAircraft) 上,Zero-Shot CLIP 的表现比逻辑回归差 10% 以上。在 OxfordPets 和 Birdsnap 上,二者的表现更为接近。

在 ImageNet、CIFAR10/100、STL10 和 PascalVOC2007 等 "更广义的" 分类数据集上,二者的性能相对相似,在所有情况下,Zero-Shot CLIP 都有轻微的优势。在 STL10 上,CLIP 在不使用任何训练样本的情况下达到了 99.3% 的精度。在 Kinetics70 上,CLIP的表现比ResNet-50高出14.5%,在 UCF101 上,Zero-Shot CLIP 的性能也比 ResNet-50 的性能高出 7.7%。作者推测这估计是因为与 ImageNet 中以名词为中心的对象监督相比,自然语言对涉及动词的视觉概念提供了更广泛的监督。

也可以看到,Zero-Shot CLIP 在一些专业、复杂或抽象的任务上相当弱,如卫星图像分类 (EuroSAT 和RESISC45)、淋巴结肿瘤检测 (PatchCamelyon)、合成场景中的物体计数 (CLEVRCounts)、与自动驾驶相关的任务,如德国交通标志识别 (GTSRB)、识别到最近汽车的距离 (KITTI distance)。这些结果突出了 Zero-Shot CLIP 在更复杂任务中的较差能力。

图7:Zero-Shot CLIP 与完全监督的基线相比具有竞争力

CLIP 零样本迁移的 Data Efficiency

除此之外,作者还进行了一个有趣的实验,即探究 CLIP 的零样本迁移的性能与其他模型的少样本学习性能的比较。这里的其他模型,作者使用的是 ImageNet-21K 数据集上面预训练的 BiT-M ResNet-152x2。如下图8所示的结果是零样本迁移 (Zero-Shot Transfer) 的 data efficiency,即少样本学习 (Few-Shot Learning) 在样本量为多少时的性能能够跟上 CLIP 零样本迁移的性能。可以发现每个数据集的效率差异很大,从有的数据集不到一个标记到有的数据集需要184个标记。比如,Flowers102 数据集可以在 1-shot 的情况下就能够跟上 CLIP 零样本迁移的性能,但是像 FER2013 数据集在 184-shot 的情况下才能够做得到。平均估计数据效率为每个类 20.8 个示例。对于 ImageNet 数据集,CLIP 零样本迁移的结果与在相同特征空间上训练的 16-shot 线性分类器的结果相当。

图8:CLIP Zero-Shot Transfer 的 data efficiency

表征学习 (Representation Learning) 实验结果

为了更全面地评估 CLIP 模型的效果,作者进一步评估了它的表征学习能力。关于表征学习的评估方法,有很多方法来评估某个表征的质量,以及一个 "理想" 的表征应该具有哪些属性。一种比较常见的方法是冻住模型的骨干部分,只训练最后的分类器,通过在某个数据集上的精度来衡量提取到的特性的好坏。

如下图9所示是本文关于表征学习研究结果。作者首先研究了[3]论文的12个数据集,虽然像 ResNet-50 和 ResNet-101 这样的小型 CLIP 模型比在 ImageNet-1K 上训练的其他 ResNet 表现更好,但它们比在 ImageNet-21K (BiT-M) 上训练的 ResNet 表现更差。这些小型 CLIP 模型在具有类似计算需求的情况下,也不如 EfficientNet 系列的模型。作者继续在27个更多的数据集上做了相关研究,在这个更广泛的评估套件上,CLIP 的优势更加明显。所有 CLIP 模型,无论规模如何,在计算效率方面都优于其他模型。最佳模型的平均分数的提高从 2.6% 增加到 5%。

图9:CLIP 模型与最先进的计算机视觉模型 Linear Probe 性能的比较

作者还研究了 CLIP 的特征在各种各样的数据集上与最佳 ImageNet 模型的特征的比较。最佳 ImageNet 模型的特征用的是 Noisy Student EfficientNet-L2 的最佳模型的特征。结果发现在27个数据集上,CLIP 取得了21个数据集的优势。CLIP 在需要 OCR (SST2,HatefulMemes) ,地理定位和场景识别 (Country211, SUN397) 的任务上改进最多。此外,CLIP 在细粒度的汽车和交通标志识别方面也做得更好 (Stanford Cars 和 GTSRB)。  

图10:CLIP 的特征在各种各样的数据集上优于最佳 ImageNet 模型的特征 

#HairCLIPv2

这是多模态头发编辑工作。该工作以代理特征混合的方式将各种输入模态统一在了一个框架内,支持各种交互模态(如:文本、参考图像、遮罩、草图、RGB值等)来完成相应的头发编辑任务。 AI Tony老师来了!中科大&微软提出HairCLIPv2:大一统多模态头发编辑

图1 HairCLIPv2以空前的交互模态支持发型、发色单独地或联合地编辑。

用自己的照片定制适合自己的专属发型!

论文标题: HairCLIPv2: Unifying Hair Editing via Proxy Feature Blending

作者单位: 中国科学技术大学,微软云AI,香港城市大学, 西安交通大学

录用信息: ICCV 2023

代码链接: https://github.com/wty-ustc/HairCLIPv2

论文链接: https://openaccess.thecvf.com/content/ICCV2023/papers/Wei_HairCLIPv2_Unifying_Hair_Editing_via_Proxy_Feature_Blending_ICCV_2023_paper.pdf

一、针对问题

在介绍HairCLIPv2之前首先来回顾下该团队的前作HairCLIP。HairCLIP首次将文本和参考图像统一在一个框架内完成头发编辑任务。尽管提出了第一个跨膜态头发编辑方法,HairCLIP依然存在一些不足,比如:

1)它不支持细粒度编辑交互方式,如:草图、遮罩等

2)在执行头发编辑的时候,因为潜空间(latent space)不完美的解耦,它不可避免地会修改其他无关属性

3)对于远离训练集分布的测试文本表现不佳,比如训练集中使用的文本是爆炸头,当测试文本是卷发的时候它表现还可以,但当测试文本换为完全不相关的文本比如锅盖头,它的表现就不能使人满意了

因此,该团队向前更进一步,提出了一个统一的头发编辑框架HairCLIPv2,解决了前面提到的所有问题,空前地支持任意交互模态,包括文本、参考图像、草图、遮罩、RGB值等,以及它们之间的组合。

二、核心思想

本方法依然使用在大规模人脸数据集上预训练的StyleGAN作为生成器。StyleGAN的合成过程涉及多个潜空间,每个潜空间都有很好的性质。而本文主要关注于F空间以及W+空间。

lF空间:StyleGAN的第7层空域特征组成的空间。它为了增加嵌入空间对于细节的表征能力以及允许图像特征的空域控制而提出。F空间有完美的重构能力同时支持真实的特征融合,也就是说我们在F空间把一个图像的脸与另一张图像的头发以mask blending的方式进行特征融合最后合成的结果是非常自然的,这也成为了目前头发转移(Hair Transfer)任务的主流范式。

lW+空间:W+空间是被GAN inversion方法从W空间扩展出来的一个空间。W+空间编码了丰富的解耦语义,适合编辑。

因此本方法思考能不能同时享受这两个空间最优秀的性质来为头发编辑任务所用呢?

因此,本方法为头发编辑任务提出了一个全新的视角和头发编辑范式。该方法核心的想法是将所有的头发编辑任务转化为头发转移任务,将输入图像转化为秃头代理从而去遮挡方便特征混合,将不同的编辑条件转化为相应的转移代理。即:先合成满足编辑条件的头发代理特征,然后将相应的头发编辑效果通过在发型或发色特征空间执行代理特征混合的方式转移到输入图像上完成头发编辑。这样不同的代理只需要负责自己那部分的任务,从而大大减轻了各自的压力,带来了更好的编辑效果和无关属性保留。

三、代理设计

图2 HairCLIPv2概述图。

该例子以发型文本描述、草图、遮罩以及发色RGB值作为条件输入完成头发编辑。相应的代理图像只是为了方便理解。本方法通过将不同条件输入转化为不同的代理,通过在StyleGAN的特征空间以代理特征混合的方式完成头发编辑。

介绍完本方法的核心思想,下面的问题就是如何设计不同的代理。本方法为不同的代理根据它们自己独特的性质和负责的任务针对性的定制了生成方式。 

  • 秃头代理:它是为了去除头发区域的遮挡,完美保留非头发区域,从而方便后续与各种头发编辑代理进行特征混合。
  • 文本代理:本方法把文本编辑代理的生成形式化为在W+空间中执行的基于CLIP损失指导的编辑任务。没有了无关属性保持的压力,该方法可以自由地选择更适合编辑的优化起点,从而带来了更好的编辑效果。
  • 参考图像代理:通过完成非对齐的头发转移任务来生成该代理。
  • 草图代理:本方法形式化它的生成为基于StyleGAN的图像翻译任务。另外,通过结合StyleGAN语义分层的机制,该方法首次在基于StyleGAN的框架内实现了局部头发编辑。
  • 色彩代理:以优化的方式支持多种发色条件输入,比如文本、参考图像、RGB值等。

四、实验结果

与相关工作的定性对比见图3-图7。本方法高质量地完成了相应的头发编辑任务。

图3 在HairCLIP训练集内,基于文本描述的头发编辑的定性对比

图4 在HairCLIP训练集外,基于文本描述的头发编辑的定性对比

图5 基于参考图像的头发编辑的定性对比 

图6 基于草图的局部头发编辑的定性对比

图7 跨模态头发编辑的定性对比

五、总结

本工作提出了一个统一的头发编辑系统,它首次尝试同时支持简洁的交互方式(如文本、参考图像)以及细粒度的局部交互方式。该方法创新地将所有的头发编辑任务转化为头发转移任务,将相应的编辑条件转化为转移代理。在这种范式下,它不仅可以取得高质量的头发编辑效果,同时很好的保持了无关属性免受影响。未来,该团队希望以纯前传的方式来产生所有代理,从而实现实时的高质量头发编辑。

#xxx

#xxx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/501302.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年第五届控制理论与应用国际会议 | Ei Scopus双检索

会议简介 Brief Introduction 2025年第五届控制理论与应用国际会议(ICoCTA 2025) 会议时间:2025年9月19 -21日 召开地点:中国成都 大会官网:www.icocta.org 控制理论作为一门科学技术,已经广泛地运用于我们社会生活方方面面。随着…

SASS 简化代码开发的基本方法

概要 本文以一个按钮开发的实例,介绍如何使用SASS来简化CSS代码开发的。 代码和实现 我们希望通过CSS开发下面的代码样式,从样式来看,每个按钮的基本样式相同,就是颜色不同。 如果按照传统的方式开发,需要开发btn &…

项目:停车场车辆管理系统

这个代码实现了一个停车场管理系统,主要功能包括车辆信息的添加、删除、修改、查找、显示所有车辆信息、排序以及计算停车费用。系统使用双向链表来存储车辆数据,并提供了菜单驱动的界面供用户选择不同的操作。 主要功能描述: 添加车辆信息&…

RS485方向自动控制电路分享

我们都知道RS485是半双工通信,所以在传输的时候需要有使能信号,标明是发送还是接收信号,很多时候就简单的用一个IO口控制就好了,但是有一些低成本紧凑型的MCU上,一个IO口也是很珍贵的,因此,如果…

《代码随想录》Day24打卡!

《代码随想录》回溯算法:复原IP地址 本题的完整题目如下: 本题的完整思路如下: 1.本题使用递归以及回溯来做,所以依然分为三部曲: 2.第一步:确定递归的参数和返回值:无返回值,参数为…

uboot ,s5pv210 ,bootm分析

先来看看 bootm 的逻辑。 1、 首先是 两 zimage 加上一个头, 变成 Uimage 2、然后是将 uimage 烧写到 TF 卡上去。 3、 然后是 TF 卡上的 uimgae 拷贝到 内存的一段位置上。 4、 然后就是 跳转到 内存的 这个位置上 去运行代码了。 uboot中 将 zimage 变成 uimage…

JS基础 -- 数组 (对象 / 数组 / 类数组 / 对象数组)的遍历

一、数组: 数组是复杂数据类型,用于存储一组有序的数据。 1、创建数组: ① 使用 new 关键字: let arr new Array() // 创建一个长度为0的空数组 let arrLength new Array(5) // 创建一个长度为5的空数组② 字面量形式&#…

利用 AI 高效生成思维导图的简单实用方法

#工作记录 适用于不支持直接生成思维导图的AI工具;适用于AI生成后不能再次编辑的思维导图。 在日常的学习、工作以及知识整理过程中,思维导图是一种非常实用的工具,能够帮助我们清晰地梳理思路、归纳要点。而借助 AI 的强大能力&#xff0c…

嵌入式学习(21)-正点原子脱机下载器Mini-Pro的使用

一、概述 通过脱机下载器可以脱离电脑给电路板下载程序,方便在产线上给PCB烧录程序。 二、程序烧录到脱机下载器 1、驱动及软件下载: https://download.csdn.net/download/A18763139629/90215719 2、软件安装 3、烧录程序 通过USB线与脱机下载器连…

二维码文件在线管理系统-收费版

需求背景 如果大家想要在网上管理自己的文件,而且需要生成二维码,下面推荐【草料二维码】,这个系统很好。特别适合那些制造业,实体业的使用手册,你可以生成一个二维码,贴在设备上,然后这个二维码…

【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 一、循环控制 / 跳转语句的使用 1. 循环控制语句(for 循环) 2. 循环控制语句(while 循环) 3. 跳转语句(break 语句) 4. 跳转语句(continue 语句&…

【Multisim用74ls92和90做六十进制】2022-6-12

缘由Multisim如何用74ls92和90做六十进制-其他-CSDN问答 74LS92、74LS90参考

计算机的错误计算(二百)

摘要 用三个大模型计算 exp(123.456). 结果保留10位有效数字。三个大模型的输出均是错误的,虽然其中一个给出了正确的 Python代码。 例1. 计算 exp(123.456). 保留10位有效数字。 下面是与第一个大模型的对话。 以上为与一个大模型的对话。 下面是与另外一个大模…

自行下载foremos命令

文章目录 问题描述其他小伙伴的成功解决方案,但对我不适用解决思路失败告终 最终解决成功解决思路解决步骤 问题描述 在kali系统终端中输入foremost,显示无此命令 其他小伙伴的成功解决方案,但对我不适用 解决思路 正常来说使用命令 apt-g…

docker 安装influxdb

docker pull influxdb mkdir -p /root/influxdb/data docker run -d --name influxdb -p 8086:8086 -v /root/influxdb/data:/var/lib/influxdb influxdb:latest#浏览器登录:http://192.168.31.135:8086,首次登录设置用户名密码:admin/admin1…

Leetcode打卡:我的日程安排表II

执行结果:通过 题目 731 我的日程安排表II 实现一个程序来存放你的日程安排。如果要添加的时间内不会导致三重预订时,则可以存储这个新的日程安排。 当三个日程安排有一些时间上的交叉时(例如三个日程安排都在同一时间内)&#…

创龙3588——debian根文件系统制作

文章目录 build.sh debian 执行流程build.sh源码流程 30-rootfs.sh源码流程 mk-rootfs-bullseys.sh源码流程 mk-sysroot.sh源码流程 mk-image.sh源码流程 post-build.sh 大致流程系统制作步骤 build.sh debian 执行流程 build.sh 源码 run_hooks() {DIR"$1"shiftf…

拟声 0.60.0 | 拟态风格音乐播放器,支持B站音乐免费播放

「拟声」是一款音乐播放器,不仅支持音视频的本地播放,还提供了账号注册功能,登录后可享受自动同步歌单、歌词等。它支持播放绝大多数音频格式,具备固定输出采样率、独占输出、内置均衡器和音调调整等功能。同时,它也支…

计算机网络 (16)数字链路层的几个共同问题

一、封装成帧 封装成帧是数据链路层的一个基本问题。数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。封装成帧就是在一段数据的前后分别添加首部和尾部,构成了一个帧。接收端在收到物理层上交的比特流后…

Linux Shell 脚本编程基础知识篇—awk的条件判断(3)

ℹ️大家好,我是练小杰,今天周五了,又是一周过去了😆 本文是有关Linux shell脚本编程的awk命令的条件语句,后续我会不断增加相关内容 ~~ 回顾:【awk字符串函数和内置变量】 更多Linux 相关内容请点击👉【Li…