1.6.llm_multimodal
最后更新于
这有帮助吗?
最后更新于
这有帮助吗?
研究人员提出了一种名为 ViLBERT(图文 BERT)模型。这是一个可以学习任务未知的、图像内容和自然语言联合表征的模型。研究人员将流行的 BERT 架构扩展成一个 multi-modal two-stream 模型上。在这个模型上,模型用两个分开的流处理图像和文本输入,但他们彼此用联合注意力层交互。研究人员在两个代理任务上,使用 Conceptual Captions 数据集(数据集很大,而且是自动收集的数据)预训练这个模型,然后将模型秦阿姨到多个建立好的图像-文本任务上。这些任务包括图像问答、图像常识推理、引述表达、指称成分,以及基于捕捉的图像提取。这些只需要在基本架构上进行微小的补充。研究人员观察到,相比现有的针对任务的特定模型,新模型在这些任务上都有了相助的性能提升——在每个任务上都取得了 SOTA。
Visual-Linguistic BERT,简称 VL-BERT
此预训练过程可以显著提高下游的视觉-语言任务的效果,包含视觉常识推理、视觉问答与引用表达式理解等。值得一提的是,在视觉常识推理排行榜中,VL-BERT 取得了当前单模型的最好效果。
之前的视觉-语言模型分别使用计算机视觉或自然语言处理领域中的预训练模型进行初始化,但如果目标任务数据量不足,模型容易过拟合从而损失性能。并且对于不同的视觉-语言任务,其网络架构一般是经过特殊设计的,由此很难通过视觉-语言联合预训练的过程帮助下游任务。
VL-BERT 的主干网络使用 TransformerAttention 模块,并将视觉与语言嵌入特征作为输入,其中输入的每个元素是来自句子中的单词、或图像中的感兴趣区域(Region of Interests,简称 RoIs)。在模型训练的过程中,每个元素均可以根据其内容、位置、类别等信息自适应地聚合来自所有其他元素的信息。在堆叠多层 TransformerAttention 模块后,其特征表示即具有更为丰富的聚合与对齐视觉和语言线索的能力。
为了更好地建模通用的视觉-语言表示,作者在大规模视觉-语言语料库中对 VL-BERT 进行了预训练。采用的预训练数据集为图像标题生成数据集,Conceptual Captions,其中包含了大约 330 万个图像标题对。
VL-BERT 的预训练主要采用三个任务:
屏蔽语言模型(Masked Language Modeling),即随机屏蔽掉语句中的一些词,并预测当前位置的词是什么;
屏蔽 RoI 分类(MaskedRoIClassification),即随机屏蔽掉视觉输入中的一些 RoIs,并预测此空间位置对应 RoI 的所属类别;
图像标题关联预测(Sentence-Image Relationship Prediction),即预测图像与标题是否属于同一对。
在预训练结束后,使用微调来进行下游任务的训练。本文中主要在三个视觉-语言下游任务中进行微调,即视觉常识推理(VisualCommonsenseReasoning)、视觉问答(VisualQuestionAnswering)与引用表达式理解(ReferringExpressionComprehension),下面将分别介绍。
视觉常识推理任务即给定图片与相关问题,机器不仅需要回答问题,还需要提供理由来证明答案的正确性。此任务(Q->AR)被分解为两个子任务,即视觉问答(Q->A,给定图片与问题,输出正确答案),以及视觉推理(QA->R,给定图片、问题与答案,输出正确的理由)。
对于一张的图像,假设每个patch是,那就分成个patch(即),每个patch的维度是,最后加上[CLS]
这个token,就是。
输入图像,经过编码器得到z,z通过前向扩散不断加噪声得到(正向扩散)
输入条件,经过条件编码器(原文是BERT,到了DALL-E2就改成CLIP了)得到
在的指导下不断去噪(反向扩散),得到新的,再通过解码器得到最终生成的图像
其中的正向扩散和反向扩散一般用U-Net
粗略看了下代码,带condition的训练原理大概是训练语料中有图+文本(例如imagenet的class_label,这里可以映射到一个classid也可以直接拿明文),然后condition和图片一起作为输入去训练auto-eocnder和ldm
在/latent-diffusion/ldm/data/imagenet.py
这个代码里,把class_label加进来了
DALL-E3:
现有的文本->图像模型面临的一个基本问题是:训练数据集中的文本-图像pair对中的文本质量较差。
学习一个图像文本生成器,可以生成详细、准确的图像描述
将此文本生成器应用到数据集以生成更详细的文本
在改进的数据集上训练文本 - 图像模型
用户只需上传一张照片,就能轻松定制出多种风格的 AI 写真
当前多模态学习研究的两个潜在问题:
过度且过早地依赖语言,这是一个捷径,能弥补学习有效视觉表征的不足之处
现有基准可能无法为真实世界场景提供足够的指导 —— 视觉定基对于稳健的多模态理解至关重要
(toread)
一般来说,多模态生成模型需要能够感知、处理和生成离散元素(如文本或代码)和连续元素(如图像、音频和视频数据)。
离散模态领域:以预测下一个词为目标的语言模型占据主导地位
连续模态方面:扩散模型及其泛化形式则是当前最先进技术
研究者一直试图将语言模型与扩散模型结合:
方法一:直接扩展语言模型,使其能够利用扩散模型作为一个工具,或者将一个预训练的扩散模型嫁接到语言模型上。
方法二:是对连续模态进行量化处理,然后在离散的token上训练一个标准的语言模型,虽然简化了模型架构,但也会造成信息的丢失。
本文通过训练单个模型来预测离散文本 token 和扩散连续图像,从而实现两种模态的完全集成,且不会丢失任何信息。引入了一个训练模型的新方法 Transfusion,能够无缝地生成离散和连续的模态,将语言模型损失函数与扩散相结合,在混合模态序列上训练单个transformer。
该研究还在文本和图像数据混合基础上从头开始预训练多个 Transfusion 模型,最多可达到 7B 参数量,并针对各种单模态和跨模态基准建立扩展定律。
基于对比视觉-语言预训练技术的大型多模态模型目前已成为人工智能领域研究的热点课题。但这一预训练技术仍然以经典的CLIP模型为基础,缺乏进一步的发展。此外,鉴于CLIP模型通过将图像及其caption映射到单个向量这样的底层机制,可以认为限制了对比预训练模型描述图像各种其他方面的能力。
提出了一种名为Llip的架构(Latent Language Image Pretraining),以图像字幕生成(Image Caption)任务作为出发点,用来模拟自然场景中与单张图像进行匹配caption的多样性。Llip仍然采用双塔特征提取模式,其视觉编码器可以对给定图像输出一组视觉特征,这些特征可以总结与当前图像匹配的多样式captions中的文本信息,来得到最终的表示。
数据:比一代 DeepSeek-VL 多一倍优质训练数据,引入梗图理解、视觉定位、视觉故事生成等新能力
架构:视觉部分使用切图策略支持动态分辨率图像,语言部分采用MoE架构低成本高性能
训练:继承DeepSeek-VL的三阶段训练流程,同时通过负载均衡适配图像切片数量不定的困难,对图像和文本数据使用不同流水并行策略,对MoE语言模型引入专家并行,实现高效训练
猜想1:自回归 + 扩散
先生成视觉token,再由扩散模型将其解码到像素空间。
猜想2:非扩散的自回归生成
是一种自回归模型,通过多次通过来逐像素地生成图像,而不是像扩散模型那样执行去噪步骤。
(toread)
先看vq的改进版:
magvit-v2提出了LFQ,也优化了vq-vae
claude-2-100k的回答。。
设视频有帧,其形状为。
3D VQ编码器会把视频量化为一个token序列,其中,是码本,是token序列长度。
3D VQ解码器则可以从latent token 重构回视频像素。
每一帧图像I先通过一个2D VQ编码器f编码为一个token序列,其中,是2D码本。
然后,对时间序列上的token 应用一个1D卷积网络,以捕获时间信息。
再通过2D VQ解码器解码回每一帧图像。
均匀地在时间轴上抽样个帧,然后把每帧处理成个patch,最终把所有patch连接起来
整体感觉:
latent diffusion的隐空间
vit和swin transformer的patch
现有的视频生成方法大多只能用于少数分类的视频、比较短的视频,或者固定长度的视频。
recurrent networks
generative adversarial networks
autoregressive transformers
diffusion models
前两类太古老了,sora把后面两个(autogressive transformers和diffusion models)结合在一起了,而且能同时处理不同时长、分辨率的视频和图像
Vivit
整体受ViT的启发
先分patch,再分别过时间的transformer(temporal transformer)和空间的transformer(spatial transformer)
具体的分patch方式如上图
latent空间上的patch
将视频映射成隐空间(latent space)的表示
把隐空间的表示切分成spacetime patches
预估时,可以通过在一个合适大小的grid里排列随机初始化的patches(we can control the size of generated videos by arranging randomly-initialized patches in an appropriately-sized grid.)来控制生成视频的大小。估计是参考了下面这篇:
DiT=VAE编码器+ ViT + DDPM + VAE解码器
sora是一个扩散模型,输入加了噪声的patches,还可以加上一些如text prompt的条件,预测原本『干净』的patches。
之前的做法大多将视频全裁成相同长度和大小的,例如4s的,sora可以直接用原始视频
此外,还用上了GPT,将用户输入的短的prompt改写成更长更详细的视频描述用于生成。
图像转动画:可以让静止的图像动起来
扩展视频:可以对视频进行扩展(extend),在时间轴上向前或者向后进行延展(比如同样是一个石头落地,能生成4个视频,每个视频里的石头从不同的地方飞过来,落在同一个地面上)
连接视频:输入两个看似毫不相关的视频,能通过很自然的方式把这两个视频衔接在一起
图像就是一帧的视频,可以通过在时间范围为一帧的空间grid中排列高斯噪声patches(arranging patches of Gaussian noise in a spatial grid with a temporal extent of one frame)来生成图像,同样能生成不同分辨率的图像,最多
3D一致性:随着镜头的移动,视频中的人物或物体在3d空间中能在移动中保持一致
Long-range coherence and object permanence(远程连贯性和物体持久性):sora能对短期和长期依赖关系进行建模,例如:
可以保留人物体,即使它们被遮挡或离开当前帧。
可以在单个样本中生成同一角色的多个镜头,并在整个视频中保持其外观的不变
与世界交互:例如画家可以在画布上留下新的笔触,并随着时间的推移而持续存在,人吃东西能留下齿痕
模拟数字世界:可以同时通过基本策略控制《我的世界》中的玩家,同时以高保真度渲染世界及其动态,只需要在prompt里提到“我的世界”的标题就可以实现。
不能准确地模拟许多基本相互作用的物理过程,例如玻璃破碎。
其他交互(例如吃食物)并不总是会产生对象状态的正确变化,例如长时间样本中出现的不连贯性或对象的自发出现。
VAE部分
sora用了spatial-temporal VAE来降低temporal的维度,但并没有开源且高质量的spatial-temporal VAE:
以下是latte的4个变种
STDiT(sequential)和latte的变种3类似,STDiT(parallel)和latte的变种4类似,在的视频上,发现效果如下,最终采用了STDiT(sequential)。
生成部分
训练
大规模视频预训练:在质量相对差的366K的预训练数据集(HD-VG-130M数据集)上训练,这里的16指的是16帧
高质量视频数据微调:在高质量的20K的数据集(Pexels数据集)上训练、和。
由于使用了scaled position embedding,这个策略极大地减少了训练消耗。此外,对于16帧的训练,每3帧降采样一次,对于64帧的训练每2帧降采样一次。
数据标注方法:抽取3帧,然后设计prompt,用LLaVA生成高质量的标题:
学习率:1e-4太大了,改成了2e-5
batchsize比较大的时候,fp16比bf16更不稳定,而且可能导致生成错误,所以对于使用bf16
提供了便捷的视频数据预处理脚本,可以轻松地在自己的数据集上快速生成训练所需的视频 / 文本对,包括公开视频数据集下载,长视频根据镜头连续性分割为短视频片段,使用开源LLaVA生成精细的提示词。
VLM(vision lm)虽然有很多,但和gemini、gpt-4等的差距还是比较大,作者认为主要原因是高分辨率视觉标记不够、vision推理数据质量不高。
作者利用额外的视觉编码器进行高分辨率细化,构建了一个高质量的数据集。构建了一个Mini-Gemini架构,支持一系列从2B到34B的密集和MoE LLM,在zero-shot测试集上超过了私有模型。
UniDiffuser 主要擅长图文任务,能支持图文模态间的任意生成和转换。UniDiffuser 的实现有一项重要的价值 —— 首次验证了融合架构在大规模训练任务中的可扩展性(Scaling Law),相当于将 U-ViT 架构在大规模训练任务中的所有环节流程都跑通。
这些在图文任务中积累的工程经验为视频模型的研发打下了基础。因为视频本质上是图像的流,相当于是图像在时间轴上做了一个扩增。因此,在图文任务上取得的成果往往能够在视频任务中得到复用。Sora 就是这么做的:它采用了 DALL-E 3 的重标注技术,通过为视觉训练数据生成详细的描述,使模型能够更加准确地遵循用户的文本指令生成视频。这种效应也必然会发生在「Vidu」上面。
根据此前的消息推测,「Vidu」也复用了生数科技在图文任务的很多经验,包括训练加速、并行化训练、低显存训练等等,从而快速跑通了训练流程。据悉,他们通过视频数据压缩技术降低输入数据的序列维度,同时采用自研的分布式训练框架,在保证计算精度的同时,通信效率提升 1 倍,显存开销降低 80%,训练速度累计提升 40 倍。
数据集:Koala-36M
(toread)
完整示例代码
代码库:
下面3个工作都在这里有介绍:
BM3:
EM3:
.. KDD24
使用的扩散方法是类似于Rolling Diffusion()的分组扩散解码器(),会以从上到下的顺序进行解码。参考
,VideoBert模型。
VideoGPT:,结合了VQ-VAE,而且是自回归的transformer
magvit:
magvitv2:,
提出了fsq,码本大小是
:使用了3D向量量化(3D VQ)自动编码器来将视频量化为离散token
:使用了2D向量量化(2D VQ)方法
:使用tubelet-embedding
2015年的
2017年的
2018年的
2016年的
2018年的
2019年的
2022年的
2021年的
2022年的
2022年的
2023年的
参考stable-diffusion,即,把patch切分改成在latent空间上进行
论文参考了这个,可以使下面提到的DiT适应各种分辨率/持续时间/宽高比。
提出了DiT,替换stable diffusion中的u-net
参考DALL-E3 (),训练了一个highly descriptive的视频描述生成器,拿这个生成器给训练集中的所有视频重新生成描述,再拿来训练。
编辑视频:输入视频和一个文本prompt,能够对视频进行编辑,例如把场景从沙漠替换成树林,类似
v1版本:
v2版本:
:的的VAE并没有开源
:的的VAE在实验中效果不好
因此,使用的2D VAE
对于24fps的1min视频,有帧,用4倍的VAE下采样和2倍的patch size下采样,有大约的token。对这些token算全部的attention的计算开销很大,所以参考(代码)的方案,使用spatial-temporal attention来减小计算量。
使用T5作为条件的DiT结构,能生成高质量的图像。用PixArt-α对模型初始化,并对插入的temperal attentioin用0初始化,能够让模型一开始就保留图片生成的能力。插入的attention让参数量从580M涨到了724M。
参考PixArt-α和Stable Video Diffusioin(),采用了progressive的训练策略:
大规模图像预训练:前面提到的,直接使用的2D VAE
模型地址: 数据地址:
采用了和 Sora 完全一致的 Diffusion 和 Transformer 融合的架构,底层基于的 U-ViT 架构。
基于 U-ViT 架构,2023 年 3 月,团队在开源的大规模图文数据集 LAION-5B 上训练了 10 亿参数量的多模态模型 ——UniDiffuser,并将其开源(参见)。
视频生成领域的 Scaling Law:
通用世界模型: