属于图像的GPT来了?伯克利提出的LVM图像大模型的全文来啦!

 
 

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达
小白学视觉自己的高质量学习平台来啦!

计算机视觉的GPT时刻,来了!

最近,来自UC伯克利的计算机视觉「三巨头」联手推出了第一个无自然语言的纯视觉大模型(Large Vision Models),并且第一次证明了纯视觉模型本身也是可扩展的(scalability)。

除此之外,研究人员还利用超过420B token的数据集让模型可以通过上下文学习来理解并执行下游任务,并且统一了图片/视频、有监督/无监督、合成/真实、2D/3D/4D等几乎所有的数据形式。

456bcb7c97d81170cdf72e7dde2b3f75.png

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

摘要

我们引入了一种新颖的顺序建模方法,实现了在不利用任何语言数据的情况下学习大型视觉模型(LVM)。为了做到这一点,我们定义了一种通用格式,“视觉句子”,在其中我们可以表示原始图像和视频以及带注释的数据源,如语义分割和深度重建,而无需任何超出像素的元知识。一旦将这种多样的视觉数据(包括4200亿标记)表示为序列,就可以训练模型来最小化下一个标记预测的交叉熵损失。通过跨模型架构和数据多样性的各个尺度进行训练,我们提供了经验证据表明我们的模型具有有效的可扩展性。通过在测试时设计适当的视觉提示,可以解决许多不同的视觉任务。

1. 引言

大型语言模型(LLMs)如GPT [11] 和 LLaMA [80] 已经席卷全球。构建一个大型视觉模型(LVM)需要什么?从动物世界的角度,我们知道视觉能力并不依赖于语言。特别是,许多实验证明非人类灵长类动物的视觉世界与人类的非常相似。因此,虽然像LLaVA [54] 这样的视觉语言模型空间是有趣且值得追求的,但在本文中,我们追寻的是一个不同的问题——在仅有像素的情况下我们能走多远?

我们希望在LVM中模拟的当代LLMs的关键特征是:1)在大数据存在的情况下进行扩展,以及 2)通过提示(上下文学习)对任务进行灵活指定。我们如何实现这一点?像往常一样,有三个必须指定的主要组成部分:

数据:我们希望利用视觉数据中所有卓越的多样性。首先是原始未注释的图像和视频。接下来,我们希望利用过去几十年中产生的各种注释视觉数据源的多样性——语义分割,深度重建,关键点,3D对象的多个视图等等。我们定义了一种通用格式,“视觉句子”,用于表示这些不同的注释,而无需超出像素的任何元知识。我们的训练数据集的总大小为16.4亿个图像/帧。

架构:我们使用一个大型的transformer架构(30亿参数),它在表示为令牌序列的视觉数据上进行训练,使用一个学习的分词器,将每个图像映射到一个包含256个矢量量化令牌的字符串。

损失函数:我们从自然语言社区汲取灵感,其中遮罩令牌建模已经让位于序列自回归预测。一旦图像/视频/带注释的图像都可以表示为序列,我们就可以训练模型最小化交叉熵损失,以预测下一个标记。

通过这个极其简单的设计,我们展示了一些值得注意的行为:

• 在增加模型大小和数据大小时表现出适当的扩展行为。

• 现在,通过在测试时设计合适的提示,许多不同的视觉任务都可以被“解决”。虽然结果并没有显示出专门训练的模型那样高的性能,但一个单一的视觉模型可以解决如此多的任务的事实是相当令人鼓舞的。

• 我们看到无监督数据对各种标准视觉任务的性能有明显的好处。

• 我们看到一些关于一般视觉推理能力的暗示——处理分布之外的数据,并执行新颖的任务。但需要进一步的调查。

2. 相关工作

预训练视觉模型。使用预训练模型(例如ImageNet预训练的AlexNet [46])的价值早在2015年的R-CNN [35] 中就已经得到证明,后来在计算机视觉中成为了标准做法。自监督预训练被提出作为大幅增加用于预训练的数据量的一种方法 [17, 26, 38, 62, 63, 99]。不幸的是,这并不太成功,可能是因为当时基于CNN的架构没有足够的容量来吸收数据。随着具有更高容量的Transformers [84] 的引入,研究人员重新审视了自监督预训练,并显示基于Transformer的遮罩图像重建方法,如BEiT [7],MAE [39],SimMIM [91],远远优于它们的基于CNN的对应物 [63]。然而,尽管它们最近取得了成功,但目前的预训练视觉模型在真正大型的数据集上,比如LAION [72],扩展起来仍然有困难。

多任务学习和上下文学习。从经典的每个任务一个模型的设置,计算机视觉正慢慢转向单个模型执行多个不同任务。存在各种多任务学习方法 [25, 41, 44, 73, 97],但它们通常受限于固定的预定义任务数量。最近,受LLMs中上下文学习启发的方法放弃了任何任务的概念,而是让模型直接从输入提示中推断任务。例如,Visual Prompting [8, 87] 接受测试时的任务输入/输出示例对和查询图像,将它们连接成一个2x2的图像,并使用修补来生成所需的输出。但是,由于修补是使用MAE [39]的变体执行的,因此这些方法继承了与缩放相关的相同问题。

自回归视觉模型。使用自回归模型合成视觉数据的想法至少可以追溯到70年前。受到Shannon使用N-grams合成语言的启发 [74, 75],许多作品,从Attneave 1954年的开创性论文开始 [5],将这个想法应用于顺序合成像素 [29, 32, 40, 65],图像块 [28],视频帧 [69],以及运动捕捉数据 [4, 45, 49]。随着深度模型的流行,更新的作品用RNN或CNN替换了像素合成的N-grams [81, 82]。最近,提出了基于Transformer的自回归视觉生成方法 [16, 30, 94, 96],并且与语言结合起来,已经展示了令人印象深刻的图像合成结果,例如Parti [95]。

3. 数据

我们工作的一个核心贡献是朝着策划这样一个数据集的第一步,我们称之为Unified Vision Dataset v1 (UVDv1)。为了组装它,我们利用了许多不同的视觉数据源:(1) 未标记图像,(2) 具有视觉注释的图像,(3) 未标记视频,(4) 具有视觉注释的视频,以及(5) 3D合成对象。未标记图像,代表我们数据的80%以上,捕捉了我们视觉世界的巨大横截面,并提供了所需的多样性,但质量较低。带有注释的图像具有更受限的分布,但通常质量较高。视频数据更受限制(通常限制在人类中心的活动),但是是时间数据的宝贵来源。3D合成对象的渲染在多样性上最低,但可以为3D结构的行为提供有价值的线索。重要的是,UVDv1是一个纯粹的视觉数据集,没有包含任何非视觉元数据(例如文本)。总的来说,UVDv1包含了16.4亿个图像。

与大语言模型的另一个重要区别是,语言数据对于所有数据都具有自然、统一的一维结构——文本流。不幸的是,对于视觉数据来说,不同的来源具有不同的结构。在这项工作中,我们提出了“视觉句子”作为视觉数据的统一单元,它使我们能够从多样化的来源训练可扩展的模型。视觉句子只是一个包含一个或多个图像的序列,后面跟着一个句子结束(EOS)令牌。图1显示了各种数据来源如何被分成视觉句子。具体而言:

单个图像。单个图像本身就代表了视觉句子的最简单形式——{图像,EOS}。我们使用LAION

5B [71] 数据集中的1.49亿张图像的过滤子集 [88]。这是我们数据的最大部分,占据了88.5%。

b9504c7441eb43b46f20a303b952b9d4.png

图1. 视觉句子使我们能够将各种视觉数据格式化为图像序列的统一结构

图像序列。图像序列是视觉句子的自然形式。我们通过从各种现有数据集 [12, 13, 22, 36, 37, 47, 51, 52, 56, 58–60, 64, 68, 76–78, 92, 93] 中获取视频数据创建这样的序列。我们通过在三个不同的步幅(10、20和30)下随机采样视频来形成包含16帧的视觉句子。此外,我们还利用Objaverse数据集 [23] 中的合成3D对象,为各种对象生成以对象为中心的多视图序列。对于每个对象,我们在对象中心与相机之间的距离范围内(从1.5到2.2)采样一个半径长度,并从-45度到45度采样一个恒定的仰角,然后通过以15度步长更改方位角以及渲染24个视图来遍历对象的不同视图。我们总共为训练渲染了42000个这样的序列,测试渲染了8000个。最后,我们还可以将属于相同语义类别的图像表示为(部分)序列。我们使用ImageNet中的类别,将同一类别中的图像组(2、4、8或16张)连接到一个16张图像的序列中。

带有注释的图像。为了以统一的方式处理不同类型的图像注释,我们选择将所有注释表示为图像。一些数据类型,例如语义分割图 [100],边缘图 [79],深度 [66] 和法线图 [6],已经以这种方式表示。对于其他数据类型,我们针对每种具体的注释类型应用定制的方法:1)目标检测:我们通过在每个对象周围叠加彩色边界框来创建注释,遵循 [15] 中的方法;2)人体姿势:采用OpenPose格式在像素空间中呈现人体骨架,利用MMPose [20];3)深度估计、表面法线和边缘检测:鉴于ImageNet和COCO图像,我们按照 [55] 的协议生成注释。3)风格转移 [9]、去雨 [98]、去噪 [85]、低光增强 [89] 和立体数据集 [34]:这些都表示为图像对(例如输入/输出)。4)着色:我们将ImageNet图像转换为灰度,生成图像对。5)修补:该过程涉及在图像中随机添加黑色方框以模拟破坏,从而生成图像对。对于上述所有注释类型,我们可以通过将同一注释类型的8个图像对连接到一个16图像的视觉句子中来创建视觉句子。对于包含同一图像的k种不同注释的数据集,我们使用不同的方法:对于每组1 + k个图像(输入加上k个注释),我们随机选择m个元素,其中m ≤ n + 1 ≤ 16。然后,这些m元组被连接起来形成视觉序列。

带注释的图像序列。将带注释的视频数据(VIPSeg [57]、Hand14K [31]、AVA [60]、JHMDB [42])转换为视觉句子时,我们采用了两种互补的策略。第一种类似于我们处理带有配对注释的图像数据的方法:每个视觉句子由帧和其注释连接而成——{frame1,annot1,frame2,annot2,...}。第二种方法涉及将多个帧及其相应的注释分组——{frame1,frame2,annot1,annot2,...}。我们在附录中详细总结了UVDv1的所有数据来源、注释类型和数据统计。

4. 方法

在这一部分中,我们描述了我们自回归大视觉模型的设计。不同于自然呈现离散顺序结构的文本数据,模拟图像像素在视觉句子中并不直观。在这项工作中,我们采取了两阶段的方法:1)训练一个大型视觉标记器(作用于单个图像),将每个图像转换为一系列视觉标记;2)对视觉句子进行自回归变换模型的训练,每个句子都表示为一系列标记。我们在图2中总结了我们的方法。

4.1 图像标记化

虽然视觉句子在相邻图像之间展现了序列结构,但我们在图像内部没有这样自然的序列结构。因此,为了将变换器模型应用于图像,先前的工作通常执行以下操作之一:要么按扫描线顺序将图像划分为补丁,并将其视为序列 [27],要么使用预训练的图像标记器,例如VQVAE [83] 或VQGAN [30],将图像特征聚类到离散标记的网格中,然后再将其按扫描线顺序转换为序列。我们采用了后一种方法,因为模型的离散分类输出自然形成一个概率分布,可以轻松采样,实现在视觉句子中对新图像的灵活条件生成。

具体来说,我们采用由Esser等人引入的VQGAN模型生成的语义标记 [30]。该框架包括一个编码和一个解码机制,具有一个将输入图像分配给已建立的码书中的一系列离散标记的量化层。我们的编码器和解码器纯粹由卷积层构成。编码器配备了多个下采样模块,以缩小输入的空间尺寸,而解码器则配备了一系列等效的上采样模块,将图像恢复到其初始大小。对于给定的图像,我们的VQGAN标记生成256个离散标记。

值得注意的是,我们的标记器独立地作用于单个图像,而不是一次处理整个视觉句子。这种独立性允许我们将标记器的训练与下游的Transformer模型分离,使标记器能够在单个图像的数据集上进行训练,而无需考虑视觉句子的分布。

实现细节:我们采用了Chang等人的现成VQGAN架构 [14]。我们遵循了Chang等人 [14]的确切配置,其中使用下采样因子f=16和码书大小8192。这意味着对于大小为256×256的图像,我们的VQGAN标记生成16×16 = 256个标记,其中每个标记可以取8192个不同的值。我们发现使用了Esser等人的VQGAN模型的结果。

145f56f66f6937cf7ac36616b06d1dc4.png

图2. LVM的架构。我们首先使用VQGAN编码器将视觉句子中的单个图像转换为离散标记。然后,将所有图像的生成标记连接成1D序列,并输入到自回归Transformer模型中,以预测序列中的下一个标记。预测的视觉标记使用VQGAN解码器解码为图像。

4.2 视觉句子的序列建模

在使用VQGAN将图像转换为离散标记后,我们通过将多个图像的离散标记连接成一维序列,将视觉句子视为一个统一的序列。重要的是,所有视觉句子都被平等对待,我们不使用任何特殊的标记来指示特定的任务或格式。我们使用因果Transformer模型进行训练,采用交叉熵损失的下一个标记预测目标,类似于语言模型的标准方法 [11]。在所有视觉句子上以相同的方式训练模型使模型能够从上下文中推断图像之间的关系,而不是从任务或格式特定的标记中推断。这使得模型有机会推广到其他未见过的视觉句子结构。

实施细节:在将视觉句子中的每个图像令牌化为256个标记后,我们将它们连接起来形成一个一维标记序列。在视觉标记的序列之上,我们的Transformer模型实际上与自回归语言模型相同,因此我们采用了LLaMA [80]的Transformer架构,这是一个流行的开源语言模型,具有广泛可用的实现。我们使用4096个标记的上下文长度,该长度可以适应我们的VQGAN标记生成器下的16个图像。与语言模型类似,我们在每个视觉句子的开头添加了一个[BOS](句子开头)标记,并在末尾添加了一个[EOS](句子末尾)标记,并在训练时使用序列连接 [19] 以提高效率。我们在整个UVDv1数据集上训练我们的模型(4200亿标记),使用一个时期进行训练(简单时期训练是语言模型中的标准做法,以避免潜在的过拟合)。我们训练了4个具有不同参数数量的模型:3亿、6亿、10亿和30亿,遵循相同的训练配置。我们在附录6中提供了详细的训练超参数。所有模型均在420B标记上进行训练,对应1.64B图像。训练随着模型规模的增加而良好缩放。

c8c0eaf807647615aaad085043191a0c.png

图3. 300M、600M、1B和3B模型的训练损失。

所有模型均在420B标记上进行训练,对应1.64B图像。训练随着模型规模的增加而良好缩放。

4.3. 通过视觉提示进行推理

由于我们模型中的自回归Transformer输出了在先前标记条件下下一个标记的概率分布,我们可以轻松从该分布中进行采样,生成完成视觉句子的新视觉标记。为了在下游任务中使用该模型,可以在测试时构建一个定义任务的部分视觉句子,并应用模型生成输出。这类似于语言模型中的上下文学习 [10] 或计算机视觉中的视觉提示 [8, 40]。

5. 实验结果与分析

在这一部分,我们评估了我们训练模型的规模能力,以及其理解和回答各种不同提示任务的能力。

5.1. 可伸缩性

我们在训练中逐渐增加模型大小以及训练期间看到的标记数量时,研究了我们模型的可伸缩性行为,包括训练损失和下游任务性能。

训练损失。我们首先检查了LVM在不同参数大小下的训练损失,如图3所示。由于我们所有的模型都只在数据集上进行了一个时期的训练,因此模型只看到了给定的数据样本一次,因此训练损失在训练过程中的任何时间点都与验证损失非常相似。可以观察到随着训练的进行:1)无论模型的大小如何,模型的训练损失(困惑度)持续下降;2)随着模型大小(参数数量)的增加,损失下降得更快。这些观察结果表明,LVM在较大的模型和更多数据方面表现出强大的可扩展性。

下游基准测试的可伸缩性。虽然LVM的整体损失在训练过程中具有良好的可伸缩性,但不能保证整体模型在特定的下游任务上表现更好。因此,我们在4个下游任务上评估了不同大小的模型:语义分割、深度估计、表面法线估计和边缘检测。我们在ImageNet验证集上评估这些任务,并使用第3节中描述的相应方法生成所有注释。对于每个任务,我们提供了5对输入和相应的地面实况注释,以及查询图像作为输入提示,并评估我们模型对下一个256个标记(一个图像)的地面实况注释的困惑度。我们在图4中报告了结果。我们看到更大的模型在所有任务上的困惑度确实更低,显示出我们可伸缩的整体性能在各种下游任务中都能转化。

数据集删减。虽然LVM在更大的模型和更多的数据上取得了更好的性能,但自然而然的问题是我们在UVDv1中收集的每个数据组件是否都有帮助。为了回答这个问题,我们对我们的数据集进行了一个消融研究,通过在数据集的子集上训练几个3B模型,并比较它们在下游任务上的性能。

我们使用与前文相同的4个下游任务和设置,并在图5中呈现了结果。我们观察到每个数据组件都对下游任务产生了积极的影响。LVM不仅受益于更大的数据,而且还随着数据集中更多多样性的改善而提高,其中包括注释和无监督的图像和视频数据。

4.3. 通过视觉提示进行推理

由于我们模型中的自回归Transformer输出了在先前标记条件下下一个标记的概率分布,我们可以轻松从该分布中进行采样,生成完成视觉句子的新视觉标记。为了在下游任务中使用该模型,可以在测试时构建一个定义任务的部分视觉句子,并应用模型生成输出。这类似于语言模型中的上下文学习 [10] 或计算机视觉中的视觉提示 [8, 40]。

5. 实验结果与分析

在这一部分,我们评估了我们训练模型的规模能力,以及其理解和回答各种不同提示任务的能力。

5.1. 可伸缩性

我们在训练中逐渐增加模型大小以及训练期间看到的标记数量时,研究了我们模型的可伸缩性行为,包括训练损失和下游任务性能。

训练损失。我们首先检查不同参数大小的LVM的训练损失,如图3所示。由于我们所有的模型都只在数据集上进行了一个时期的训练,模型仅看到给定的数据样本一次,因此训练中的任何时间点的训练损失与验证损失非常相似。可以观察到随着训练的进行:1)所有模型的训练损失(困惑度)都持续下降,而不论它们的大小;2)随着模型大小(参数数量)的增加,损失减小得更快。这些观察结果表明,LVM在更大的模型和更多的数据方面表现出很强的可伸缩性。

397be9d9ab529ace84e3622406f61bfc.png

图4. 更大的LVM在下游任务上表现更好。

我们在ImageNet验证集上评估了不同大小的LVM模型,进行了4个不同的下游任务,按照5个示例的设置,报告了困惑度。我们发现在所有任务上,困惑度随着模型大小的增加而减小,表明LVM具有很强的可伸缩性。

下游基准测试的可伸缩性。虽然LVM的整体损失在训练过程中具有良好的可伸缩性,但不能保证整体模型在特定的下游任务上表现更好。因此,我们在4个下游任务上评估了不同大小的模型:语义分割、深度估计、表面法线估计和边缘检测。我们在ImageNet验证集上评估这些任务,并使用第3节中描述的相应方法生成所有注释。对于每个任务,我们提供了5对输入和相应的地面实况注释,以及查询图像作为输入提示,并评估我们模型对下一个256个标记(一个图像)的地面实况注释的困惑度。我们在图4中报告了结果。我们看到更大的模型在所有任务上的困惑度确实更低,显示出我们可伸缩的整体性能在各种下游任务中都能转化。

数据集删减。虽然LVM在更大的模型和更多的数据上取得了更好的性能,但自然而然的问题是我们在UVDv1中收集的每个数据组件是否都有帮助。为了回答这个问题,我们对我们的数据集进行了一个消融研究,通过在数据集的子集上训练几个3B模型,并比较它们在下游任务上的性能。

我们使用与前文相同的4个下游任务和设置,并在图5中呈现了结果。我们观察到每个数据组件都对下游任务产生了积极的影响。LVM不仅受益于更大的数据,而且还随着数据集中更多多样性的改善而提高,其中包括注释和无监督的图像和视频数据。

Figure 5. 我们在不同数据集子集上训练的4个模型在多个任务上的困惑度评估,使用ImageNet验证集。所有模型均为3B参数,并且所有评估都是在5-shot设置下进行的。我们可以看到模型从单个图像、视频和注释中受益,展示了我们培训数据集多样性的重要性。

f5df39ee35f3f15b6a079f64650d0ebf.png

图5. 我们通过在数据集的子集上训练几个3B模型,并比较它们在下游任务上的性能,来进行了关于我们数据集的消融研究。我们使用与前文相同的4个下游任务和设置,并在图5中呈现结果。我们观察到每个数据组件对下游任务都有积极的贡献。LVM不仅受益于更大的数据,而且在数据集的多样性更强的情况下表现更好,其中包括注释和无监督的图像和视频数据。

Figure 6. 帧预测。LVM在给定先前视频帧作为提示的情况下预测下一帧(标为红色)。结果显示LVM能够在考虑动态对象和摄像机运动的情况下预测视频帧。

5.2. 顺序提示

我们从最直观和直接的LVM视觉提示方法开始:顺序推理。在这里,提示的构建非常简单:我们向模型呈现一个包含7个图像的序列,并要求它预测下一个图像(256标记)。

0b763335981dccc801db5ba6ca393d94.png

图7。更长的上下文有助于模型更好地理解。

视频帧预测。顺序提示的最直接任务是视频预测。图6呈现了几个下一帧预测示例,由来自Kinetics-700验证集的序列作为提示。在顶部,7帧提示(蓝色边框)后跟预测的帧(红色边框)。我们观察到一定程度的推理能力,包括空间定位、视点和对象理解。在Kinetics验证集上的预测困惑度为49.8。最后的4行显示了具有更长上下文(15帧)和更长预测(4帧)的预测。在附录的图17到图22中,有更多的例子。

旋转和类别预测。相同类型的顺序提示可以用于执行旋转和类别预测。我们在图7中展示了随着上下文帧数的增加,模型对任务的理解变得更好。

791b13fb27d9d79a59fd52fdd06ca9c2.png

Figure 8. 内外分布提示示例。每一行都是一个提示,包含一系列图像与注释交替出现,然后是一个查询。模型预测的是最后一个图像(标为红色)。最后的5行显示了查询图像对于其训练任务而言属于分布之外的示例(绘画、素描等)。

顺序提示的例子。同样,顺序提示的示例也可以有其他用途。例如,图16展示了如何通过以任意轴为中心提示模型使用合成对象的3D旋转序列来预测进一步的旋转。或者,我们可以将给定类别的物品列表视为一个序列,并预测该类别中的其他想法,如图15所示。请注意,虽然系统是在来自同一ImageNet类别的图像组上训练的,但这里的提示由素描组成,这在任何注释数据中都没有看到。

上下文长度分析。接下来,我们要问的是,需要多少时间上下文才能准确预测接下来的帧?我们评估了在提示下下文长度不同(1到15帧)时模型的帧生成困惑度。如图7所示,在Kinetics-700验证集上,我们看到在1到11帧后,困惑度明显提高,之后趋于稳定(从62.1→48.4)。

5.3. 类比提示

我们的研究通过评估一种更复杂的提示结构继续进行,我们称之为“类比提示”。该方法挑战模型理解任意长度和复杂性的类比,从而测试其先进的解释能力。

定性结果。图8展示了在多个任务上使用类比提示的一些定性结果的示例。提示由一系列包含各种任务示例的14个图像组成,后跟第15个查询图像。给定每个提示,模型预测的是结果。图的上半部分显示了几个示例提示,定义了训练集中的任务(但这些实际图像在训练中从未见过)。图的下半部分展示了对训练中未显示的任务的泛化。附录中有更多的定性示例。

c19fb6ff329d71bf1f1a12fd8256489e.png

Figure 9. 任务的组合性。结合两个不同任务的提示示例——对象旋转和关键点跟踪。

Figure 10. 杂项提示。通过适当选择的视觉句子提示,表达任务给LVM,可以简单地指定各种简单的视觉任务,如对象复制(顶部)、调光(中部)和缩放(底部)。

Figure 11. 接下来是什么?有时不容易用语言描述的任务。

Table 1. 与Visual Prompting [8]的比较。对于前景分割和单一对象检测,我们报告mIOU分数。对于着色,我们报告MSE和LPIPS。

Figure 9 展示了一个提示中结合了两个不同任务的示例。在这里,我们将旋转任务与新颖的关键点对应任务一起演示,并要求模型继续模式。该模型能够在测试时成功地组合这两个任务,展示了一定程度的组合性。

未见任务和数据集。我们展示了在Pascal 3D+ [90]上进行的关键点检测的结果,使用标准的Correct Keypoints百分比(PCK)指标,阈值为0.1。值得注意的是,LVM在未在此数据集上训练的情况下实现了81.2的PCK,展示了令人印象深刻的泛化能力。相比之下,我们展示了一些现有的任务特定模型:StackedHourglass [61]获得68.0的PCK,MSS-Net [43]实现68.9的PCK,而StarMap [101]注册78.6的PCK。

与视觉提示的比较。与我们最接近的方法,也允许定义任意任务的方法是Visual Prompting [8]。在表1中,我们比较了各种视觉提示模型在少样本分割、对象检测和着色任务上的表现。请注意,我们的顺序LVM在几乎所有任务上都超过了以前的方法。

5.4. 杂项提示

在这里,我们尝试通过向模型提供各种以前未见过的提示来测试模型的极限。图10展示了一些效果尚可的这类提示。图11展示了一些不容易用语言描述的提示——这是LVM可能最终超越LLM的任务类型。图13展示了在非语言人类智商测试中(Raven的渐进矩阵[67])发现的典型视觉推理问题的初步定性结果。在认真观察的情况下,人们可以想象LVM具有抓取抽象视觉模式并将其应用于推断所示视觉序列的潜在能力。这一激动人心的结果值得进一步研究。

e38765f5aa766d820bbe2a6ff9727b0a.png

图12. 失败案例。该图展示了当前模型的七个典型失败案例:(1)任务混淆:模型将计数任务解释为风格转移,导致梨形苹果。 (2)任务纠缠:模型将提示视为整个图像的高频,而不仅仅是图像的某些部分(对象)。 (3)错误的实例:模型正确识别旋转但错误地生成了画刷而不是蝠鲼。 (4)异常检测与生成:模型不是检测异常,而是直接生成它。 (5)数字:模型未能表示数字序列。 (6)分词器:在某些分布之外的合成数据生成方面性能差(错误的背景)。 (7)序列退化:有时帧预测偏离了正轨。

dac624645407d4a42e21a28ed7cbb8ba.png

图13. "AGI的火花?"我们用一个带有掩码推理的视觉句子提示LVM,以推断在智商测试中普遍存在的非语言推理问题的解决方案(掩码图像,从右边数第二个)。我们发现该模型通常能够正确地推断和应用抽象的视觉模式。因此,我们慷慨地交给您,我们亲爱的读者,思考我们谦逊的LVM是否也表现出了备受推崇的“AGI的火花”。

6. 局限性

图12展示了当前模型的一些典型失败案例。一个常见的元素是使用视觉提示来定义任务通常是欠约束的(比语言更甚,因为图像是非常高维的),或者所请求的任务可能超出了当前系统的能力。其他更普通的失败涉及分词器的问题和缺乏高质量的视频训练数据。有限的计算资源给予了我们极大的限制,使我们无法探索一系列引人入胜的问题,包括不同数据集和详细的消融研究的影响。重要的是要注意,尽管这是迄今为止最大的视觉模型之一,但与现代大型语言模型相比,它仍然相对较小。因此,在大型视觉模型中出现和真正泛化的问题仍然是开放的,并且值得进一步研究。

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要使用GPT Mentions调用GPT模型,您可以按照以下步骤进行操作: 1. 安装OpenAI Python库:首先,您需要安装OpenAI Python库。您可以使用pip命令在终端中运行以下命令进行安装: ``` pip install openai ``` 2. 导入必要的库和设置API密钥:在Python脚本中,您需要导入openai库并设置您的API密钥。您可以使用以下代码完成这一步骤: ```python import openai # 设置API密钥 openai.api_key = 'YOUR_API_KEY' ``` 3. 调用GPT模型:使用openai.Completion.create()方法来调用GPT模型。您需要提供一个prompt(提示)来指导模型生成响应。以下是一个示例代码: ```python response = openai.Completion.create( engine="text-davinci-003", prompt="Once upon a time", max_tokens=50, n=1, stop=None, temperature=0.7 ) ``` 在上面的示例中,我们使用了"text-davinci-003"引擎,设置了一个简单的提示"Once upon a time",并指定了生成的最大标记数为50。您可以根据需要调整其他参数,如stop(停止标记)、temperature(温度)等。 4. 提取生成的响应:从API响应中提取生成的文本。以下是一个示例代码: ```python generated_text = response.choices[0].text.strip() print(generated_text) ``` 在上面的示例中,我们提取了生成的文本,并使用print语句将其打印出来。 这样,您就可以使用GPT Mentions调用GPT模型了。请确保您已经获得了OpenAI的API密钥,并将其替换为代码中的"YOUR_API_KEY"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白学视觉

您的赞赏是我们坚持下去的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值