赞
踩
Author: Sijin Yu
本文已同时在github发布: https://yusijin02.github.io/notes-LVM/
导读
大语言模型无疑是2023年最大的热点之一. 当前, 包括视觉在内的几乎所有方向, 人们都热衷于加入语言的引导. 在此背景下, 一篇纯视觉的大模型无疑吸引人眼球. 该模型吸取大语言模型的成功经验, 创新性地定义了视觉句子, 并几乎抛弃了此前 CV 的所有训练任务, 仿照大语言模型, 使用序列自回归任务训练视觉模型, 并统一了几乎所有的视觉任务. 虽然该模型在下游任务中还不能超越对应任务的 SOTA, 但是这一新颖的方案为接下来的研究提供了大量思路, 称之为又一开山之作毫不为过.
论文信息:
- 标题: Sequential Modeling Enables Scalable Learning for Large Vision Models
- arXiv: https://arxiv.org/abs/2312.00785
- GitHub: https://github.com/ytongbai/LVM (但代码还未开源)
该论文发表于2023年12月1日, 本博客作于2023年12月7日.
本文参考了 LLM 的成功经验, 在以下三个方面做出了努力:
借助上述的设计, 发现了一些值得注意的有趣行为:
“Data! Data! Data! I can’t make bricks without clay!”
本工作尝试像语言模型一样, 提出一个包含多种任务的通用的数据集, 称为统一视觉数据集v1 (Unified Vision Dataset v1, UVDv1). 包含: (1) 未标记的图像, (2) 带视觉注释的图像, (3) 未标记的视频, (4) 带视觉注释的视频, (5) 3D合成对象. 这些数据不包含非视觉的数据 (如文本). UVDv1 包含16.4亿张图像.
语言数据具有一个自然的、统一的一维结构, 但是视觉数据并非如此. 这项工作提出, 将视觉句子 (Visual Sentences) 作为视觉数据的统一单元. 简单来说, 一个视觉句子包含一个或多个图像的序列, 后面跟着一个句子结束标记 (EOS).
单张图片 (Single images). 视觉句子中的最简单形式: {图像, EOS}. 这里使用了从 LAION 5B 数据集中筛选的14.9亿上图片, 占本工作数据的 88.5%.
图像序列 (Image sequences). 这里占本工作的数据的 4.24%.
从现有的视频数据集中获取视频数据, 并采用三种不同的步幅 (10, 20, 30) 随机下采样视频, 形成16帧的视觉句子.
利用来自 Objaverse 数据集合成的3D对象, 生成一对象为中心的多视角序列, 涵盖各种对象. 从1.5到2.2之间采样一个半径长度, 从-45度到45度之间采样一个恒定的仰角, 以15度的步长便利对象的不同视图, 渲染24个视图, 总共生成了42000个训练序列和8000个测试序列.
使用来自 ImageNet 的类别, 将相同类别的图像组合在一起, 形成一个16帧的视觉句子.
带标注的图像 (Images with annotations). 这里占本工作数据量的 7.15%. 为了以统一的方式处理不同类型的图像注释, 将所有注释表示为图像. 一些任务的数据类型其实已采用这种表示, 如语义分割图、边缘图、深度图、法线图. 对于其它的注释类型:
对于上述所有注释类型, 可以用下面方法产生视觉句子:
带标注的图像序列 (Image sequences with annotations). 占数据量 0.06%. 采用两种互补策略:
数据的详细构成如下表所示.
训练分为两个阶段:
在一个图像内, 我们并没有自然的序列结构. 先前的做法有两种: (1) 像 ViT 一样将图像打成 patches, 并将它们当作序列; (2) 使用预训练的 image tokenizer, 例如 VQVAE 和 VQGAN, 将图像的特征提取为离散的 tokens 网格, 并将它们当作序列.
本工作采用后者, 因为模型离散类别的输出自然地形成了一个概率分布, 这可以更方便的在视觉句子中条件生成新图像时采样.
本文使用 VQGAN 生成 tokens. VQGAN 由 Encoder 和 Decoder 组成, 给定一个图像, VQGAN tokenizer 产生 256 个离散的 tokens.
值得注意的是, VQGAN tokenizer 独立地在各个图像上操作, 而不是以证词在整个视觉句子上操作. 这种独立性使 tokenizer 的训练与下游的 Transformer 模型分开, 使得 tokenizer 可以在单个图像的数据集上进行训练, 而不必考虑视觉句子的分布.
实现细节: downsampling factor 为 f = 16 f=16 f=16, codebook size 为 8192 8192 8192. 实验发现在 ImageNet 上预训练的 tokenizer 不能泛化到数据集以外, 因此在 LAION 5B 数据集上的 1.5B 子集上预训练.
将图像转换为 VQGAN 的离散 tokens 后, 将多个图像的离散 tokens 连接成一维序列, 将视觉句子视为统一序列. 所有的句子都被平等的对待, 不使用任何特殊 tokens 来特定任务或格式. 使用交叉熵损失训练一个因果 Transformer 模型, 器目标是预测下一个 tokens. 注意是预测下一个 tokens, 而不是下一个图像. 这与语言模型中的标准方法相同.
以相同的方式训练模型处理所有的视觉句子, 使得模型能够从上下文而不是任务或特定的 tokens 中推断图像之间的关系, 这让模型更有机会推广到其它未见过的视觉句子结构.
实现细节: 采用了 LLaMA 的 Transformer 架构, 使用4096个 tokens 的上下文长度, 即可以容纳16幅图像组成的视觉句子. 在每个视觉句子的开头添加一个开始 token ([BOS]), 结束添加一个句子结束 token ([EOS]). 本工作训练了四个模型: LVM-300M, LVM-600M, LVM-1B, LVM-3B, 超参数设计如下:
训练损失 (Train Loss). 如下图所示. 所有模型仅在数据集上训练了一个 epoch, 因此训练损失和验证损失非常相似. 可以观察到随着训练的进行:
在下游基准测试的可扩展性 (Scalability on downstream benchmarks). 分别在语义分割、深度估计、表面法线估计、边缘检测四个下游任务上评估. 对于每个任务, 给出五对输入-输出的样例, 并紧接着一个待测试的图像, 并评估其困惑度. 实验结果如下图所示.
数据集消融实验 (Dataset ablation). 虽然 LVM 在更大的模型和更多的数据上获得了更好的性能, 但自然会问为我们在 UVDv1 中手机的每个数据组建是否都有助于此. 因此在数据集上做了消融实验. 通过在数据集的子集上训练几个 3B 模型, 并比较它们在下游任务上的表现. 结果展示如下, 其证明了 LVM 不仅从更大的数据中受益, 嗨随着数据集中的多样性提高而改善.
从最直观、最简单的方法开始, 即使用视觉提示来引导 LVM 进行顺序推理. 这里的提示构建非常简单: 向模型展示 7 幅图像的序列, 并要求它预测下一幅图像.
视频帧预测 (Video frame prediction). 在 Kinetics-700 验证集上预测, 结果如下图所示.
旋转和类别预测 (Rotation and Category prediction). 旋转和类别预测的结果如下两图所示.
上下文长度分析 (Context length analysis). 接下来探讨这么一个问题: 准确预测后续帧需要多少时间上下文? 实验评估了在不同长度 (1到15帧) 的上下文提示下模型生成帧的困惑度, 如下图所示.
实验研究通过评估一种更复杂的提示结构而取得进展, 我们称之为类比提示 (Analogy Prompting). 这种方法挑战模型理解任意长度和复杂度的类比, 从而测试其高级解释能力.
定性结果 (QualitativeResults). 下图展示了使用类比实验的一些定性结果样本.
未见过的任务和数据集 (Unseen Tasks and Dataset). 实验展示了在 Pascal 3D+ 上进行关键点检测的结果, 使用标准的正确关键点百分比 (PCK) 指标评估, 阈值为 0.1. 值得注意的是, LVM 在没有在这个数据集上训练的情况下实现了81.2的 PCK, 展示了令人印象深刻的泛化能力. 相比之下, 我们展示了一些现有的特定任务模型: StackedHourglass 的得分是 68.0 PCK, MSS-Net 实现了 68.9 PCK, StarMap 达到了 78.6 PCK.
与其它视觉提示模型的比较 (Comparison with Visual Prompting). 下表对比了各种视觉提示模型在小样本分割、物体检测、着色任务上的表现, LVM 几乎在所有的任务上都超过了之前的方法.
任务合成 (Task Compositing). 下图展示了旋转任务、关键点任务的结合.
在这里, 我们尝试看看我们的模型在面对之前未见过的各种提示时能够达到何种程度.
下图展现了一些恰好表现相当不错的提示.
下图展示了一些用语言不易描述的提示. 这些是 LVM 可能最终超越 LLM 的任务类型.
下图展示了在 非语言人类智力测试 (Raven’s Progressive Matrices) 的推理结果.
下图展示了一些失败的案例. 一个共同的元素是, 使用视觉提示来定义任务往往受到不充分的约束 (比语言更甚, 因为图像是非常高维的), 或者所请求的任务可能超出了当前系统的能力. 其他更普通的失败包括分词器问题和缺乏高质量视频训练数据.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。