前言
真没想到,距离视频生成上一轮的集中爆发才过去三个月,没想OpenAI一出手,该领域又直接变天了
- 自打2.16日OpenAI发布sora以来,不但把同时段Google发布的Gemmi Pro 1.5干没了声音,而且网上各个渠道,大量新闻媒体、自媒体(含公号、微博、博客、视频)做了大量的解读,也引发了圈内外的大量关注
很多人因此认为,视频生成领域自此进入了大规模应用前夕,好比NLP领域中GPT3的发布 - 一开始,我还自以为视频生成这玩意对于有场景的人,是重大利好,比如在影视行业的
对于没场景的人,只能当热闹看看,而且我司去年年底还考虑过是否做视频生成的应用,但当时想了好久,没找到场景,做别的应用去了
可当我接连扒出sora相关的10多篇论文之后,觉得sora和此前发布的视频生成模型有了质的飞跃(不只是一个60s),而是再次印证了大力出奇迹,大模型似乎确实可以在力大砖飞的情况下开始建模整个物理世界了,使得我司大模型项目组也愿意重新考虑开发视频生成的相关应用
本文主要分为三个部分
- 第一部分,侧重sora的核心技术解读
方便大家把握重点,且会比一切新闻稿都更准确,此外
如果之前没有了解过DPPM、ViT的,建议先阅读下此文《从VAE、扩散模型DDPM、DETR到ViT、Swin transformer》
如果之前没有了解过图像生成的,建议先阅读下此文《从CLIP到DALLE1/2、DALLE 3、Stable Diffusion、SDXL Turbo、LCM》 - 第二部分,侧重背后技术的发展演变
把sora涉及到的关键技术在本文中全部全面、深入、细致的阐述清楚,毕竟如果人云亦云就不用我来写了 - 第三部分,根据sora的32个reference以窥探其背后的更多细节
由于sora实在了太火了,除了专业的解读外,还有大量解读显得真假难辨(看似很有道理,其实在胡说八道),为方便大家辨别什么样的解读是不对的,特把一些更深入的细节也介绍下
第一部分 Sora的核心技术解读
1.1 Sora的处理思路:把视觉数据转为Patches
1.1.1 ViT:把整个图片切分成一个个图片块,让块与块之间做注意力交互
简单讲,OpenAI把对NLP中token的处理思路迁移到了对视频生成中patch的处理
- 预测token时,根据当前已有的tokens,预测下一个token
- 预测视频运动时,可以根据当前已有的视频运动(一帧帧静态图像组成)去预测接下来的视频运动,相当于根据已有的一帧帧静态图像去预测之后的一帧帧图像
- 但一张图像和一个token不一样,因为像素的关系,一张图像有着比较大的维度(比如250 x 250),故为降低处理的复杂度,ViT把一张图像划分为九宫格(如下图的左下角),如此,处理9个图像块总比一次性处理250 x 250个像素维度 要好不少吧
类似的,OpenAI 训练了一个降低视频数据维度的网络(关于视频压缩网络,Sora可能采用的就是VAE架构,区别就是经过原始视频数据训练,而VAE一般是一个ConvNet)
- 具体而言,给定一个原始视频,视觉压缩网络将视频压缩到较低维的潜在空间(潜在空间这个概念在stable diffusion中用的可谓炉火纯青了,详见此文的第三部分),然后把视频分解为在时间和空间上压缩的潜在表示,即所谓的一系列时空Patches
当然,这里的patch数量就不止上面提到的九宫格那般大小了,比如上图的横切面已是16 x 9个格了 - Sora 在这个压缩的潜在空间中接受训练
- OpenAI 还训练了相应的解码器模型,将生成的潜在表示映射回像素空间,从而生成视频
1.1.2 如何理解时空编码SpaceTime latent patch
当我们理解了一张静态图像的patch表示之后(比如是九宫格,还是16 x 9个格),再来理解所谓的时空Patches就简单多了,无非就是在纵向上加上时间的维度,比如t1 t2 t3 t4 t5 t6,其实际处理时,可以每三个时间点聚合下,当然 也可以每五个时间点聚合下,如下图所示
那我们的任务就变成了:对于视频的左上角而言,便是已知当前“时轮碎块” :推测下一个“时轮碎块”,组合视频画面中各个位置的推测结果,便得到了整个视频画面的持续运动
而这种 “时空patch” 最大的好处, 是可以兼容所有的数据素材:一个静态图像不过是时间=0的一系列时空patch,不同的像素尺寸、不同的时间长短,都可以通过组合一系列 “时空patch” 得到
总之,OpenAI 基于 patches 的表示,使 Sora 能够对不同分辨率、持续时间和长宽比的视频和图像进行训练。在推理时,OpenAI 可以通过在适当大小的网格中排列随机初始化的 patches 来控制生成视频的大小
而过去的图像和视频生成方法通常需要调整大小、进行裁剪或者是将视频剪切到标准尺寸,例如 4 秒的视频分辨率为 256x256。相反,该研究发现在原始大小的数据上进行训练,最终提供以下好处:
- 首先是采样的灵活性:Sora 可以采样宽屏视频 1920x1080p,垂直视频 1920x1080p 以及两者之间的视频。这使 Sora 可以直接以其天然纵横比为不同设备创建内容。Sora 还允许在生成全分辨率的内容之前,以较小的尺寸快速创建内容原型 —— 所有内容都使用相同的模型
- 其次是改进帧和内容组成:研究者通过实证发现,使用视频的原始长宽比进行训练可以提升内容组成和帧的质量。将 Sora 在与其他模型的比较中,后者将所有训练视频裁剪成正方形,这是训练生成模型时的常见做法。经过正方形裁剪训练的模型生成的视频(如下图左侧),其中的视频主题只是部分可见。相比之下,Sora 生成的视频具有改进的帧内容(如下图右侧)
1.1.3 用于视频生成的扩散型Transformer
有的新闻稿说,Sora 是个扩散模型,原因在于它类似扩散模型那一套流程,给定输入噪声 patches(以及文本提示等调节信息),训练出的模型来预测原始的「干净」patches
也有的新闻稿会说,Sora 是一个扩散 Transformer,原因在于它把图像打散成块后,计算块与块之间的注意力,从而基于已有的「块」去预测接下来的「块」,而这套计算模式便是transformer的流程
总之,总的来说,Sora是一个在不同时长、分辨率和宽高比的视频及图像上训练而成的扩散模型,同时采用了Transformer架构,是一种扩散型Transformer
至于想更好的理解这个扩散Transformer,请看下文第二部分
1.2 DALLE 3的重字幕技术:为文本-视频数据集打上详细字幕
训练文本到视频生成系统需要大量带有相应文本字幕的视频,研究团队将 DALL・E 3 中的重字幕(re-captioning)技术应用于视频
- 具体来说,研究团队首先训练一个高度描述性的字幕生成器模型,然后使用它为训练集中所有视频生成文本字幕
- 与DALLE 3类似,研究团队还利用 GPT 将简短的用户 prompt 转换为较长的详细字幕,然后发送到视频模型,这使得 Sora 能够生成准确遵循用户 prompt 的高质量视频
关于DALLE 3的重字幕技术更具体的细节请见此文2.3节《AI绘画与多模态原理解析:从CLIP到DALLE1/2、DALLE 3、Stable Diffusion、SDXL Turbo、LCM》
2.3 DALLE 3:Improving Image Generation with Better Captions
2.3.1 为提高文本图像配对数据集的质量:基于谷歌的CoCa微调出图像字幕生成器
2.3.1.1 什么是谷歌的CoCa
2.1.1.2 分别通过短caption、长caption微调预训练好的image captioner
2.1.1.3 为提高合成caption对文生图模型的性能:采用描述详细的长caption,训练的混合比例高达95%
..
第二部分 Sora相关技术的发展史:ViViT、DiT、MAGVIT v2、VideoPoet
2.1 ViT是视频上的应用:ViViT
Transformer在NLP领域大获成功,ViT(Vision Transformer)将Transformer架构应用到视觉领域,它将图片按给定大小分为不重叠的patches,再将每个patch线性映射为一个token,随位置编码和cls token(可选)一起输入到Transformer的编码器中
而Google于2021年提出的「ViViT: A Video Vision Transformer」便要尝试在视频中使用ViT模型,探究Video Vision Transformer的优化方式
视频作为输入会产生大量的时空token,处理时必须考虑这些长范围token序列的上下文关系,同时要兼顾模型效率问题,作者在空间和时间维度上分别对Transformer编码器各组件进行分解,在ViT模型的基础上提出了三种用于视频分类的纯Transformer模型(ViViT)
2.2 DiT:将 U-Net 架构逐渐转换成 transformer
对于基于 transformer 的工作,不管是 latent diffusion 还是 language model,它们之间的区别很小,都是 token-based,最大的区别在于基于 diffusion 的生成是连续的 token,language model 处理的是离散的 token
2022年年底,William Peebles, Saining Xie两人通过论文《Scalable Diffusion Models with Transformers》提出了一种叫 DiT 的神经网络结构
其结合了视觉 transformer 和 diffusion 模型的优点,即DiT = VAE encoder + ViT + DDPM + VAE decoder
对于 DiT 在 Sora 中的应用,DiT 作者之一 Saining Xie 在推文中提到:
- 由 batch size 大小相关的计算推导,Sora 可能有大约 30 亿个参数。 “训练 Sora 模型可能不需要像人们预期的那样多的 GPU;我预计未来会有非常快的迭代。”
- Sora“可能还使用了谷歌的 Patch n’ Pack (NaViT) 论文成果,使其能够适应可变的分辨率/持续时间/长宽比。”
2.3 MAGVIT v2:用好tokenizer可以超越diffusion
Google和CMU于2023年10月份联合发布的MAGVIT v2(这是其论文Language Model Beats Diffusion -- Tokenizer is Key to Visual Generation),首次证明了LLM不仅擅长文本方面的任务,而且在视觉任务上也能取得比扩散模型更好的效果
而其中的关键在于一个好的 tokenizer 接入到语言模型后,能够立即可以获得比当时最好的 diffusion 还要好的效果
2.4 Google VideoPoet:基于MAGVIT V2和Transformer而来
2023年年底,Google推出了VideoPoet(这是其论文:VideoPoet: A Large Language Model for Zero-Shot Video Generation),包含两个阶段:预训练和微调(pretraining and task-specific adaptation)
与通常使用外部交叉注意力网络或潜在混合进行风格化基于扩散的方法相比(In contrast to the diffusion-based approaches that usually use external cross-attention networks or latent blending for styliza-tion),Google的这个方法更加类似于利用大型语言模型进行机器翻译,因为只需将结构和文本作为语言模型的前缀
2.4.1 通过自然语言随心所欲的编辑视频,且其zero-shot能力强悍
如下图所示,其可以将输入图像动画化以生成一段视频,并且可以编辑视频或扩展视频
在风格化方面,该模型接收表征深度和光流的视频,以文本指导的风格绘制内容
2.4.2 视频生成器:借鉴LLM离散化token的处理思路
LLM在过去一年已经取得了巨大成功,那可否用于视频生成领域呢
- 然而,LLM 是在离散 token 上运行的,好在一些「视频和音频 tokenizer(比如用于视频和图像的 MAGVIT V2 和用于音频的 SoundStream)」,可以将视频和音频剪辑编码为离散 token 序列,并且也可以转换回原始表征形式
- 如此,通过使用多个 tokenizer,VideoPoet 便可以训练自回归语言模型来学习跨视频、图像、音频和文本的多个模态
一旦模型生成以某些上下文为条件的 token,就可以使用 tokenizer 解码器将它们转换回可视化的表征形式
如下图所示,VideoPoet将所有模态编码映射到离散的标记空间中,以便能够直接利用大型语言模型架构进行视频生成,特定标记使用<>表示,其中
- 深红色代表模态不可知部分
蓝色代表文本相关组件,即text tokens (embeddings): the pre-extracted T5 embed-dings for any text.
黄色代表视觉相关组件,即visual tokens: the MAGVIT-v2 tokens representing the images, video subsection, or COMMIT encoded video-to-video task.
绿色代表音频相关组件,即audio tokens: the SoundStream tokens representing au-dio - 上图左侧的浅黄色区域表示双向前缀输入
而上午右侧的深红色区域则表示带有因果注意机制的自回归生成输出
2.4.3 Tokenization:图像视频标记MAGVIT-v2与音频标记SoundStream
图像和视频分词器(Image and video tokenizer)是生成高质量视频内容的关键
具体而言,它将图像和视频编码为一串整数,并通过解码器将其映射回像素空间,作为标记和像素空间之间的桥梁
- 视觉分词器的性能决定了视频生成质量的上限。同时,为了实现有效且高效的任务设置,压缩比决定了LLM序列长度
- MAGVIT-v2对8 fps采样率下17帧、2.125秒、128×128分辨率的视频进行分词,产生(5, 16, 16)形状,并扁平化为1280个标记,词汇表大小为2-18
MAGVIT-v2tokenizes17-frame2.125-second128×128 resolution videos sampled at 8 fps to pro-duce a latent shape of (5, 16, 16), which is then flattenedinto 1280 tokens, with a vocabulary size of 2-18 - 此外,在移动端生成短形式内容时,我们还将视频按纵横比分割成128×224分辨率,并产生(5, 28, 16)形状或2240个标记。在评估协议中使用16帧时,我们会舍弃最后一帧以制作16帧视频
第三部分 根据sora的32个reference以窥其背后更多技术细节
3.1
3.2
3.3
参考文献与推荐阅读
- OpenAI sora的技术报告:Video generation models as world simulators
- 我在模拟世界!OpenAI刚刚公布Sora技术细节:是数据驱动物理引擎
- 爆火Sora参数规模仅30亿?谢赛宁等大佬技术分析来了
- 请教英伟达小哥哥,解读 Sora 真正的技术突破
- Sora 的一些个人思考
- ViViT论文阅读
- 专访 VideoPoet 作者:视频模型技术会收敛,LLM 将取代diffusion带来真正的视觉智能