2024年2月16日凌晨,全球人工智能模型领跑者OpenAI推出了一款能根据文字指令即时生成短视频的Text to Video模型,命名为Sora。此前在2023年轰轰烈烈的多模态AI模型竞赛中,谷歌、Meta和初创公司Runway、Pika Labs都发布过类似的模型。但本次OpenAI展示的视频仍然以高质量获得关注。
目前OpenAI官网上Sora相关的信息有限,OpenAI没有给出训练模型的素材来源,仅表示:“我们正在教AI理解和模拟运动中的物理世界,目的是训练模型,帮助人们解决需要真实世界交互的问题。”并称Sora能够从文本说明中生成长达60秒的视频,并能够提供具有多个角色,特定类型的动作和详细的背景细节的场景。Sora还能在一个生成的视频中创建多个镜头,体现人物和视觉风格。
认识SORA
长期关注AI文生视频领域的创作者,肯定非常清楚,在这一领域长期以来openAI并不是最受关注的哪一个。2023年国外最火的三个公司应该是runway,PIKA和Pixverse。作为文生视频领域的后期之秀,openAI这次发布的SORA有哪些特别之处?让我们先从宏观视角来一探究竟。
Sora能够创造出包含多个角色、特定动作类型以及与主题和背景相符的详细场景。这款模型不仅能理解用户的指令,还能洞察这些元素在现实世界中的表现。 Sora对语言有着深刻的理解,能够精准地捕捉到用户的需求,并创造出充满生命力、情感丰富的角色。此外,Sora还能在同一视频中创造出多个画面,同时保持角色和视觉风格的一致性。 当然,Sora还不是完美的。比如在模拟复杂场景的物理效应,以及理解某些特定因果关系时,它可能会遇到难题。举个例子,视频中的人物可能会咬一口饼干,但饼干上可能看不到明显的咬痕。 在处理空间细节,比如分辨左右时,Sora也可能会出现混淆;在精确描述一段时间内发生的事件,如特定的摄影机移动轨迹时,也可能显得力不从心。
首先,先来看看SORA生成视频的效果究竟如何。
提示词: 一位时髦的女士穿行在东京的街头,街道充满了温暖的霓虹灯光和动感的城市标志。她穿着一件黑色皮夹克,一条长红裙和黑色靴子,手拿一个黑色手提包。她戴着太阳镜和红色口红。她走路既自信又随意。街道潮湿且能反射,创造出彩色灯光的镜面效果。许多行人来来往往。
OpenAI在技术报告中提到SORA是在大规模的视频和图像数据上进行联合训练得到的生成模型。具体来说,联合训练了在不同持续时间、分辨率和纵横比的视频和图像上的文本条件扩散模型。openAI利用了一个在视频和图像潜空间上操作的transformer架构。生成一分钟的高清视频。
Spacetime Patches 包含时空信息的图像块
在开始训练模型之前,首先需要解决的是训练数据的结构化,格式统一化以及数据清洗,标注等等一系列数据预处理工作。显然,openAI在做这项工作的时候,首先考虑的很可能是在训练DALLE-3的那些海量的高质量的已经经过预处理的训练数据。那么接下来需要解决的就是如何将不同类型的数据(例如文本、视频、图片等)转化为Transformer架构下的向量,从而进行后续的训练。
Sora设计思路其实和LLM一致,都是先将所有输入数据统一化(LLM是文本/代码等,Sora是各种类型的视觉数据),然后训练模型用于预测下一个“词”(LLM是tokens,Sora是patches),并且使用原始数据而非修剪后的数据(不同分辨率、时长和高宽比)。学会预测就学会了背后的东西,LLM是知识,Sora是物理世界。
那么具体是如何实现的呢?第一步,就是要将原始视频数据,转化为低维度潜空间特征。 在这里sora定义了视频训练和推理的基本单元是Patches,这是在Vision Transformer (ViT) 这篇论文中首次被提出的概念,视频数据和图片数据进行统一是完全没有问题的,本来视频拆分成每一帧就是一张图片。视频的本质就是按照一定序列组织起来的图片。
那什么是patches呢?Patches的实质就是将完整的图片拆成 NxN 的小方格后,再将每个图像块转换成向量,这样就得到了包含每个小方格position信息的embedding。比如下图中这张 224×224 的小狗图片,把它打碎成 196 张 16×16 的小图就叫做 Patches,实际上之前在训练 vision LLM 一直是这么做的。
在文本预测生成中,基本单位是 Token,Token 很好理解,就是一个单词或者单词的一部分。Patch 的概念相对不那么好理解。我们可以想象一下《黑暗骑士》的电影胶片,将一卷胶片绕在一个金属盘上,然后挂在一个老式电影院的投影机上。
你把电影胶卷从盘中展开,然后剪下最前面的 100 帧,再挑出每一帧的图像,比如某一帧是小丑疯狂大笑,另一帧是蝙蝠侠痛苦的表情。接下来进行以下不太常规的操作: 你拿起一把像X光一般精细的刻刀,在第一帧电影胶片上剪出一个变形虫状的图案。
你像处理精密仪器一样小心翼翼地用镊子提取这片形似变形虫的胶片,然后安全地保存起来。然后开始再处理下一帧:在接下来的胶片上切出同样位置、同样形状的变形虫图案。你再次用镊子小心地取出这个新的变形虫形状的胶片,形状与前一个完全相同——并将其精确地放置在第一个之上。如此这般重复操作,直到完成所有的 100 帧。
于是现在有了一个色彩斑斓的变形虫,沿着竖直方向的Y轴(这里对应的是时间轴)堆叠扩展。这样就得到了一座可以通过投影机播放《黑暗骑士》的小片段的胶片塔,就好像有人在投影机前握着拳头,只让电影的一小部分影像从拳心通过。 然后,这座胶片塔被压缩并转化为所谓的“Patch”—一种随时间变化的色块。最后从每一个存在的视频中剪出的 Patch 堆叠成无尽的胶片塔,再输入到模型中进行训练,想象一下这样的场景就会感到让人震撼。
但如果只是将二维的图像打碎变成patches图像块,对于视频生成任务还不够。因为视频是由包含时间序列的多张图片构成的,处理时必须考虑这些长时间范围patches序列的上下文关系。因此patches必须包含原始视频数据中的时间序列信息,因此openAI将patches升级成了包含时间信息的spacetime patches。
这里就不得不提到在空间和时间维度上分别对Transformer编码器各组件进行分解的Vivit架构了,在ViT模型的基础上提出了三种用于视频分类的纯Transformer模型,如下图所示
Sora 之所以显得如此强大,在于以前的文本转视频方法需要训练时使用的所有图片和视频都要有相同的大小,这就需要大量的预处理工作来裁剪视频至适当的大小。而由于 Sora 是基于“Patch”而非视频的全帧进行训练的,它可以处理任何大小的视频或图片,无需进行裁剪。这就让 OpenAI 能够在大量的图像和视频数据上训练 Sora。因此,可以有更多的数据用于训练,得到的输出质量也会更高。例如,将视频预处理至新的长宽比通常会导致视频的原始构图丢失。一个在宽屏中心呈现人物的视频,裁剪后可能只能部分展示该人物。因为 Sora 能接收任何视频作为训练输入,所以其输出不会受到训练输入构图不良的影响。
但是不同的分辨率输入在训练时候带来的是大量的计算负载不均衡,一个最简单的做法就是直接padding到固定大小这种做大会引入大量不必要的计算量。 从技术报告给出的参考文献来看,openAI最有可能是使用了 Google 的 Patch n’ Pack (NaViT)即多个patches打包成一个单一序列以实现可变分辨率技术降低计算量,支持动态分辨率视频作为输入。
此外NaViT还有一个对视频处理特别关键的优势。它可以根据图像相似度,丢掉雷同的图像块,实现更快的训练。而在视频里,本来帧与帧之间就有大量雷同的图像信息。因此,这样一个技术也可以帮助Sora在训练视频时丢弃掉大量雷同的内容,从而大幅降低训练视频的成本。
SORA有哪些特别之处?
除了要统一训练数据格式之外,要想使用文本生成高质量符合人类需求的视频,还有一项必不可少的工作——数据标注。为了能够给出大量的视频及其对应的文字说明。
openAI采用了 DALL·E 330 中引入的一种重新标注技术,并将其应用于视频。首先,训练了一个能够生成详细描述的模型,然后利用这个模型为训练集里的所有视频创建文字说明。使用描述性强的视频说明进行训练,不仅能提高文字的准确度,还能显著提升视频的整体质量。
就像 DALL·E 3 一样,openAI还使用 GPT 把用户的简短提示转化成详尽的说明,再将这些说明送给视频生成模型。这一过程使得 Sora 能够根据用户的指令,制作出高品质的视频。
openAI在技术报告里面展示了非常多的SORA演示视频,而通过这些演示视频,可以看到Sora的能力远不止是文生视频而已。在下面这个例子中Sora 在语义理解和属性匹配方面表现的非常好,这是一个非常重要的进步!
从Sora的整个技术路线可以看出,sora成功的背后是NLP和CV领域长时间的技术积累而成的,可以说是集大成者。
OpenAI的Sora的诞生可以说让我们看到离AGI的实现更近了。如果AI可以生成与真实视频没有区别的视频,那么未来我们看到的世界是否可以被AI基本无差异的复刻呢?就在一年前文生视频领域甚至是文生图领域还有很多的问题亟待解决,然而仅仅一年的时间,就取得了如此重要的突破,这充分说明一件很朴实无华的真理。一旦从0到1突破了,那么1到100,甚至10000就只是时间问题,最后让我们用一段由使用OpenAI 的Sora 视频剪辑、David Attenborough 在 Eleven Labs 上的克隆声音以及 iMovie 上 Youtube 上的一些自然音乐样本, 在 15 分钟内制作了这个 20 多秒的电影预告片来结束本文吧!
请登录后查看评论内容