CVPR 2024|大视觉模型的开山之作!无需任何语言数据即可打造大视觉模型

小白学视觉

共 10875字,需浏览 22分钟

 ·

2024-05-02 10:05

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

重磅干货,第一时间送达

作者丨科技猛兽
编辑丨极市平台

极市导读

 

本文提出一种序列建模 (sequential modeling) 的方法,不使用任何语言数据,训练大视觉模型。

本文目录

1 序列建模打造大视觉模型
(来自 UCB,Johns Hopkins University)
1 LVM 论文解读
1.1 大视觉模型的特点是什么?
1.2 LVM 数据集
1.3 LVM 方法1:视觉 tokenizer
1.4 LVM 方法2:自回归 Transformer 模型
1.5 LVM 方法3:推理过程
1.6 LVM 评测1:缩放性
1.7 LVM 评测2:序列提示
1.8 LVM 评测3:类比提示
1.9 LVM 评测4:杂项提示

太长不看版

本文的首发日期是 2023.12,属于大视觉模型的开山之作行列。本文提出一种序列建模 (sequential modeling) 的方法,不使用任何语言数据,训练大视觉模型 (Large Vision Model, LVM)

作者定义了一种 "视觉句子 (Visual Sentences)",它可以用于表征图像,视频,语义分割和深度重建,同时只需要像素信息。作者构造了一个包含 420B tokens 的数据集,通过 Next Token Prediction 和交叉熵损失来训练大视觉模型。

最后得到的模型具有对于数据规模和模型容量很好的缩放性。而且在测试时通过设计合适的视觉提示,可以拿来解决许多不同的视觉任务。

本文的结论有哪些

随着数据量和模型容量的增加,展示出缩放性质。

通过在测试时设计合适的提示来 "解决许多不同的视觉任务"。虽然结果不像定制、专门训练的模型那样表现出高性能,但单个视觉模型都解决了如此多的任务这一事实非常令人鼓舞。

作者发现无监督数据量对各种标准视觉任务的性能有明显的好处。

作者看到了通用视觉推理能力的痕迹,即处理分布外数据并执行新任务。但是这一点需要进一步研究。

1 序列建模:大视觉模型的先驱

论文名称:Sequential Modeling Enables Scalable Learning for Large Vision Models (CVPR 2024)

论文地址:http://arxiv.org/pdf/2312.00785.pdf

1.1 大视觉模型的特点是什么?

GPT 和 LLaMA 等大型语言模型 (LLM) 已经席卷了世界。构建大视觉模型 (Large Vision Model, LVM) 需要什么?

在动物的世界里,我们都知道视觉能力不依赖于语言。许多实验表明,非人类灵长类动物的视觉世界与人类的视觉世界非常相似。因此,虽然 LLaVA[1]等视觉语言模型很有趣,但是本文从纯视觉像素的角度进行探索:我们仅仅依赖视觉像素可以走多远?

本文作者从当代的 LLM 中寻找一些关键的特征来制作 LVM 模型,找了2个关键特征:

  1. Scalability: 对于大数据集的可扩展性。
  2. Prompting: 通过提示 (in-context learning) 来灵活地适配下游任务。

为了实现这2个特征,作者指出了3个关键组件:

  1. 数据: 作者希望利用好视觉数据的多样性。首先,要使用不带标注的图像和视频。接下来,作者希望利用 semantic segmentations, depth reconstructions, keypoints, multiple views of 3D objects 等等这些在过去几十年里生产了不少的数据。作者定义了一种通用的数据格式 "视觉句子 (Visual Sentences)",它可以在无需标注的情况下,用于表示这些不同的数据。本文的训练数据集大小为 1.64B 个 images/frames。
  2. 架构: 使用一个在视觉数据上训练的大 Transformer 架构 (3B 参数量)。使用一个预训练的 tokenizer 将图片映射成 256 个离散向量 tokens。
  3. 损失函数: 从 LLM 中获得灵感,采用序列自回归预测的损失函数。因为 images/videos/annotated images 都可以视为 tokens 序列,因此以最小化交叉熵损失来预测下一个令牌作为损失函数。

1.2 LVM 数据集

任何大的预训练模型的一个关键要求就是它必须在大规模数据集上进行训练。对于语言模型,我们可以很轻易地获得非常大且不同的数据集。比如,流行的 Common Crawl[2]存储库包含跨越整个 Web 的 250 亿个网页,非常多样化,并且自然地包含有一些演示,像语言翻译,问答等等的数据。

在计算机视觉中,我们仍然远未拥有相当大小和多样性的数据源。本文工作的核心贡献是策划这样一个数据集的第一版,作者称之为统一视觉数据集 (Unified Vision Dataset v1, UVDV1)。作者利用了许多不同的视觉数据来源:

  1. 无标注图片 (unlabelled images)
  2. 带有视觉标注的图片 (images with visual annotations)
  3. 无标注视频 (unlabelled videos)
  4. 带有视觉标注的视频 (videos with visual annotations)
  5. 3D 合成数据 (3D synthetic objects)

无标注图片占总数据量的 80%,以较低质量为代价提供了较丰富的多样性。带有注释的图像具有更多的约束分布,但通常质量更高。视频数据更受约束 (因为通常以人为为中心),但是时间数据的宝贵来源。3D合成对象的渲染多样性最低,但可以提供关于3D结构行为的提示。UVDV1 是一个纯视觉数据集,不包含非视觉数据 (比如文本)。UVDV1 包含 1640 亿张图像。

与 LLM 的另一个重要的区别是,文本数据都有一个自然、统一的一维结构,即文本流。但是视觉数据并非如此。不同的数据来源都具有不同的结构。因此,本文提出 "视觉句子 (Visual Sentences)" 作为统一的视觉数据单元。这个好处就是便于作者把不同来源,不同特点的数据给集合起来,用于训练视觉模型。Visual Sentences 指的是包含一张或多张图片的序列,并以 End-Of-Sentence (EOS) token 作结尾。

如下图1所示是如何将各种数据源划分为 Visual Sentences。图2是本文数据集的具体组成。

图1:visual sentence 将不同的视觉数据格式化为图像序列的统一结构
图2:LVM 训练数据集的具体组成

作者给出了如何将下面几种数据变为 Visual Sentence:

单图像: 单图像本身代表了 Visual Sentence 的最简单形式:{图像,EOS}。作者使用来自 LAION5B[3]数据集的1.49 亿张图像的过滤子集[4]。这是本文数据集的最大部分,共占 88.5%。

图像序列: 图像序列是 Visual Sentence 的自然形式。作者通过从广泛的现有数据集中获取视频数据来创建这样的序列。16 帧的 Visual Sentence 是通过在三个不同的 stride (10、20 和 30) 中随机采样视频来形成的。

此外,作者利用 Objaverse 数据集[5]中的合成 3D 对象为各种对象生成以对象为中心的多视图序列。对于每个对象,作者从 1.5 到 2.2 采样对象中心和相机之间的一个半径长度,并从 -45 度采样一个恒定仰角到 45 度,然后通过以 15 度的步长改变方位角并渲染 24 个视图遍历对象的不同视图。总共有 42000 个这样的序列用于训练,8000 个用于测试。

最后,作者还把语义类别一样的图片表示为 Visual Sentences,使用来自 ImageNet 的类别,将来自同类别的图片组 (2,4,8 或 16) 连接在一起成为 16 个图片长度的 Visual Sentence。

带有注释的单图像: 为了以统一的方式处理不同类型的图像注释,作者将所有注释都表示为图像。像 semantic segmentation maps,edge maps,depth 和 normal images 的数据已经是图像格式了。对于其他的,作者为每种特定的注释类型量身定制方法:

1) 目标检测:通过在每个对象周围覆盖一个颜色编码的边界框来创建注释。

2) 人体姿态:人体骨骼在像素空间中渲染,遵循 OpenPose 的格式。

3) 深度估计,曲面法线和边缘检测:给定 ImageNet 和 COCO 图像,根据特定的协议[6]生成注释。

4) 风格迁移,降噪,去雨,低光照图像增强和立体声数据集:这些都被表示为输入和输出的图像对。

5) 着色:作者将 ImageNet 图像转换为灰度,生成图像对。

6) 修复:在图像中随机添加黑色方框以模拟损坏,从而产生图像对。

对于以上所有的注释类型,作者通过将相同注释类型的 8 个图像对连接,成为一个包含 16 个图像的 Visual Sentence。

对于一张图片有 个不同注释的图片采用不同的方法:对这组的 个图片, 随机采用 个样本,其中 。用这 个样本来构建 Visual Sentence。

带有注释的图像序列: 当将带注释的视频数据 (VIPSeg、Hand14K、AVA、JHMDB) 转换为 Visual Sentence 时,作者应用了两种互补的策略。

第1种是连接帧及其对应的注释:{frame1,annot1,frame2,annot2,...}。

第2种是连接所有的帧,并把注释排列在其后面:{frame1,frame2,annot1,annot2,...}。

1.3 LVM 方法1:视觉 tokenizer

不像文本数据能够自然地表现出离散的结构,视觉句子中对图像像素进行建模其实并不简单。本文的方法包含2步:

  1. 训练一个大型视觉 tokenizer (对单个图像进行操作),将每个图像转换为一系列视觉 tokens。这步类似于 NLP 中的 tokenizer。
  2. 在 Visual Sentence 数据集上训练一个自回归的 Transformer 模型。数据集中的每张图片都表示为一系列视觉 tokens。

虽然图像与图像之间有人为的序列结构,但是图像结构内部并不包含天然的序列结构。因此,为了将 Transformer 模型应用到图像中,一般有下面两种方式:

  • ViT:把图片分成 Patch,按照扫描线顺序排成一排序列。
  • VQVAE[7] 或者 VQGAN[8]:将图像特征聚类成离散的 tokens,再按照扫描线顺序排成一排序列。

在本文中,作者使用 VQGAN[8]中的 Encoder 来把图像转化成 tokens。VQGAN 由 Encoder 和 Decoder 组成,而且具有量化层,通过自己建立的 codebook 将输入图像变为离散的 token 序列。Encoder 和 Decoder 全部使用卷积层组成。Encoder 由几个下采样模块组成,以收缩输入的空间维度。Decoder 由等效的上采样模块组成,用于将图像恢复到其初始大小。对于给定的图像,本文使用的 VQGAN tokenizer 产生 256 个离散 tokens。

需要注意的是,本文使用的 VQGAN tokenizer 独立地对单个图像进行操作,而不是一次对整个 Visual Sentence 进行操作。这样的独立性使我们能够将 tokenizer 训练与下游 Transformer 模型解耦,以便 tokenizer 可以在单个图像数据集上进行训练,而无需考虑 Visual Sentence 的分布。

作者采用的 VQGAN 架构来自[9]。下采样率 ,codebook 大小 8192。这意味着对于大小为 256×256 的图像,VQGAN 分词器产生 16×16 = 256 个 tokens,其中每个 token 都可以取 8192 个不同的值。

作者在 LAION 5B 数据集的 1.5B 子集上训练本文的 VQGAN 分词器。

1.4 LVM 方法2:自回归 Transformer 模型

在使用 VQGAN 将图像转换为离散的 tokens 后,作者将来自多个图像的离散标记连接成1个一维序列,将 Visual Sentence 视为一个统一的序列。作者使用交叉熵损失,和 Next Sentence Prediction 的目标训练一个 casual Transformer 模型。

在所有视觉句子上训练模型,使模型能够从上下文中推断出图像之间的关系,而不是从特定于任务的标记或特定于格式的标记中推断出来。这使模型能够泛化到其他看不见的 Visual Sentences。

本文使用的 Transformer 模型与自回归语言模型几乎相同,因此作者采用 LLaMA 的架构。上下文长度使用 4096,这样可以使用分词器容纳下 16 张图片。与语言模型类似,作者在每个视觉句子的开头添加一个 [BOS] (begin of sentence) token,最后添加一个 [EOS] (end of sentence) token。

在整个 UVDv1 数据集 (420 亿个标记) 上训练模型 1Epoch。模型大小有 300M, 600M, 1B 和 3B 这四种。详细的架构如图3所示。

图3:LVM 模型架构

1.5 LVM 方法3:推理过程

由于自回归 Transformer 输出下一个 token 的概率分布,因此可以很容易地从这个分布中采样以生成新的 tokens。为了将模型用于下游任务,可以在测试时构建一个定义任务的 Visual Sentence 的一部分,并应用模型生成输出。这类似于语言模型中的 in-context learning[10]或计算机视觉中的 visual prompting[11]。

1.6 LVM 评测1:缩放性

对验证集损失的缩放性

如下图4所示是不同参数大小的 LVM 训练损失。由于所有的模型都只训练 1 Epoch,因此模型只看到给定的数据样本1次,因此训练期间任何点的训练损失与验证集损失很像。可以观察到,随着训练的进行:

  1. 模型的训练损失,无论其大小如何,都会逐步减少。
  2. 随着模型的大小的增加,损失下降得更快。

这些观察结果表明,LVM 在更大模型和更多数据方面表现出强大的缩放性。

图4:4种不同大小模型的训练曲线:每个模型都在 420B tokens (对应 1.64B 图像) 的 Visual Sentence 数据上训练

对下游任务的缩放性

作者在 4 个下游任务上评估不同大小的模型:语义分割 (semantic segmentation)、深度估计 (depth estimation)、表面法线估计 (surface normal estimation) 和边缘检测 (edge detection)。作者在 ImageNet 验证集上评估这些任务,并使用1.2节所描述的相应方法生成注释。对于每个任务给出5对 (输入,对应的 GT 注释) 以及查询图像作为输入,并使用 LVM 模型预测下 256 个 tokens (对应一张图片) 下评估困惑度。

实验结果如下图5所示,可以看到更大的模型确实在所有任务中获得了较低的困惑度,表明 LVM 对于下游任务的缩放性。

图5:较大的 LVM 在下游任务上表现更好

对数据集的缩放性

作者在 UVDv1 数据集的子集上训练几个 3B 模型,并比较它们在下游任务上的表现,以探究数据集缩放性对 LVM 的影响。实验结果如下图6所示,可以观察到每个数据组件都对下游任务做出了积极贡献。LVM 不仅受益于更大的数据,而且性能随着数据集的多样性逐步提升。

图6:数据集的缩放性实验结果。作者使用 ImageNet 验证集评估在 UVDv2 数据集的不同子集上训练的 4 个模型的困惑度。所有模型都是 3B 参数,所有评估均在 5-shot 设置中进行

作者在 UVDv1 数据集的子集上训练几个 3B 模型,并比较它们在下游任务上的表现,以探究数据集缩放性对 LVM 的影响。实验结果如下图5所示,可以观察到每个数据组件都对下游任务做出了积极贡献。LVM 不仅受益于更大的数据,而且随着数据集的多样性逐步提升。

1.7 LVM 评测2:序列提示

给模型传入 7 images 的序列,并要求其输出下一张图片 (256 tokens)。如下图7所示是视频预测任务的结果,是一些下一帧预测的示例。它的 prompt 来自于 Kinetics-700 的验证集。蓝色边框是7帧的 Prompts,红色边框生成的预测结果。可以观察到空间定位、视点和对象理解的一定程度的推理能力。Kinetics-700 验证集上预测的困惑度为 49.8。最后 4 行显示了使用较长上下文 (15 帧) 和较长预测 (4 帧) 的预测。

图7:视频预测任务实验结果

1.8 LVM 评测3:类比提示

这一节作者评估了更加复杂的提示结构。这种方法挑战模型理解任意长度的类比和复杂性,从而测试其高级解释能力。实验结果如图8所示。Prompt 由 14 张图像组成,给出各种任务的示例,然后是第 15 个查询图像。顶部是 In distribution 实验结果,意思是 Prompts 是训练集一部分 (但这些图像实际在训练中从未见过)。底部是 Out of distribution 实验结果,意思是 Prompts 这些图泛化到训练中没有见过的任务。

图8:类比提示实验结果

1.9 LVM 评测4:杂项提示

图9是各种简单的视觉任务,例如对象复制、重新照明和放大的实验结果。

图9:各种简单的视觉任务,例如对象复制、重新照明和放大

图10展示了一些不容易用语言描述的提示的实验结果。

图10:一些不容易用语言描述的任务的结果

在下图11中,作者展示了人类 IQ 测试 (Raven's Progressive Matrices[12]) 中视觉推理问题的定性结果。可以想象 LVM 具有提取抽象视觉模式的潜能,并将其用来推断视觉序列。这个令人兴奋的结果值得进一步研究。

参考

  1. ^Visual Instruction Tuning
  2. ^https://commoncrawl.org/
  3. ^LAION-5B: An open large-scale dataset for training next generation image-text models
  4. ^On the De-duplication of LAION-2B
  5. ^Objaverse: A Universe of Annotated 3D Objects
  6. ^Prismer: A Vision-Language Model with An Ensemble of Experts
  7. ^Neural Discrete Representation Learning
  8. ^abTaming Transformers for High-Resolution Image Synthesis
  9. ^MaskGIT: Masked Generative Image Transformer
  10. ^Language Models are Few-Shot Learners
  11. ^Visual Prompting via Image Inpainting
  12. ^STANDARDIZATION OF PROGRESSIVE MATRICES, 1938
    
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

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

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

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


浏览 94
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报