前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一文带你了解OpenAI Sora

一文带你了解OpenAI Sora

作者头像
腾讯技术工程官方号
发布2024-02-21 13:49:58
3730
发布2024-02-21 13:49:58
举报

作者:torresyu

最近AI圈最火的无疑是OpenAI在2月15日发布的Sora。Sora可以根据文本生成一分钟的高清视频,生成的视频画质、连续性、光影等都令人叹为观止,Sora无疑将视觉生成推到新的高度。本文将重点回答三个问题:(1)Sora的原理是什么?(2)Sora到底是不是世界模型?(3)Sora会影响哪些行业?

1. 背景

在国内外大多数AI厂商还在卷大语言模型之际,OpenAI悄无声息地发布了文生视频(text-to-video,简称t2v)模型Sora [1],仅仅几个视频demo,就让整个AI圈子从惊讶到恐惧,惊讶于Sora生成的视频已经到达工业应用级别,恐惧于现有的t2v模型与Sora的差距竟然如此之大。 先看个Sora官方博客展示的demo,当你向Sora输入:“A stylish woman walks down a Tokyo street filled with warm glowing neon and animated city signage. She wears a black leather jacket, a long red dress, and black boots, and carries a black purse. She wears sunglasses and red lipstick. She walks confidently and casually. The street is damp and reflective, creating a mirror effect of the colorful lights. Many pedestrians walk about.”,Sora则根据该文本生成以下长达1分钟的高清视频。

这个demo展现了Sora至少有以下突破:(1)画质突破:视频非常高清,细节极其丰富;(2)帧率和连续性突破:视频帧率高、连续性好(无闪烁或明显的时序不一致);(3)时长突破:相比之前t2v模型仅能生成几秒的时长,Sora可以生成长达1分钟的视频,这是之前t2v模型不敢想象的;(4)物理规则理解突破:视频中物体的运动、光影等似乎都非常符合自然世界的物理规则,整个视频看上去都非常自然和逼真。

那么OpenAI到底用了什么魔法能让Sora如此惊艳?接下来我们通过OpenAI给出的Sora技术报告来解答。PS:该技术报告非常简陋,技术细节几乎没有,只给了大致的建模方法。

2. Sora原理解读

2.1 Sora要解决的任务

Sora要解决的任务其实非常好理解,就是给定一段文本,模型需要根据该文本生成相应的视频,简单说就是text-to-video(t2v)。t2v本身并不是一个新问题,很多厂商都在研究t2v模型,只是当前的t2v模型生成的视频普遍质量较差,很难到达工业应用级别。在Sora出现前大家的普遍认知是:t2v是一个很难的任务,工业级别t2v模型(或者说能真正实用的t2v模型)短时间内应该很难实现。然而,OpenAI又又又一次打了所有人的脸,Sora的发布意味着,这一天已经来了。

2.2 Sora原理

如果用一句话来描述Sora训练建模过程,可以是:将原始视频通过一个视觉编码器(visual encoder)编码到隐空间(latent space)形成隐时空块(spacetime latent patches),这些隐时空块(结合text信息)通过transformer做diffusion [2, 3, 4]的训练和生成,将生成的隐时空块再通过视觉解码器(visual decoder)解码到像素空间(pixel space)。所以整个过程就是:visual encoding -> latent diffusion with diffusion transformer (DiT) [4] -> visual decoding。

(1)Visual Encoding

这一步其实很好理解,就是通过一个变分自编码器(VAE)[5]的encoder将高维的原始视频映射(压缩)到较为低维的隐空间(注意:不仅仅是空间上压缩了,时间上也进行了压缩),即得到该视频的低维隐空间特征(可以看成一个大的3D tensor),为了后续transformer计算方便,将这个特征切成不重叠的3D patches,再将这些patches拉平成一个token序列,这个token序列其实就是原始视频的表征了(即visual token序列)。

(2)Latent Diffusion with DiT

在得到视觉表征(上述visual token序列)后,Sora借鉴了DiT [4],使用transformer来做diffusion model的训练,使用transformer的好处在于可以输入任意长度的token序列,这样就不再限制输入视频的尺寸和时长,并且模型很容易scale up(OpenAI表示这个我熟)。同时,因为Sora想解决t2v的问题,所以Sora会将text的表征以某种形式condition到visual tokens上(Sora技术报告中未披露,但后文我会分析最可能的实现方法)来约束生成。

在diffusion transformer的训练中,给定噪声输入(e.g., 噪声patches)并conditioned on text特征,模型被训练去预测原始视频的patches(预测过程又叫denoising过程,具体可以参考DDPM [2]中的训练算法),示意图如下:

(3)Visual Decoding

第(2)步中,diffusion transformer可以生成的其实不是像素空间的视频,而是隐空间的视频表征(denoised patches),这些patches reshape成视频3D特征再经过第(1)步中的VAE的decoder,就可以映射回像素空间,得到最后生成的视频。

2.3 Sora的重要性质

(1)Sora可以灵活地采用不同时长、分辨率和长宽比的视频

OpenAI发现之前的方法大多采用固定尺寸的视频(比如4s的256x256视频)去训练模型,和现实中任意长度、长宽比有较大gap,而采用原始尺寸的视频训练模型效果更好。得益于Sora采用的transformer结构,Sora可以输入任意多个visual patches(初始为noise patches),即可生成任意尺寸的视频。

(2)Sora有很强的语言理解能力

训练t2v模型需要大量带有文本标注的视频,OpenAI采用DALL·E 3 [6] 中的re-captioning技术来解决。首先训练一个高质量的视频标注模型(captioner model),然后它为训练集中的所有视频生成文本字幕。另外,进一步利用GPT将视频标注模型生成的简短文本扩展成更长的文本有利于还利用Sora准确遵循用户文本提示生成高质量视频。

2.4 重要细节推测

Sora的技术报告没有任何细节,仅仅告知大家大致的建模方法,但有一些细节的实现是可以推测or猜测的。

(1)visual encoder可能的结构:因为Sora在visual encoding时也压缩了时间维度,所以Sora可能采用从零开始训练的3D conv版的VAE。Sora这里没有像之前工作那样,简单地采用Stable Diffusion(SD) [3]预训练好的2D conv版的VAE。现成的SD的VAE encoder用来压缩视频最大的问题在于时间维度没有下采样,SD的VAE承担了将原本sparse的数据压缩到compact的latent domain再进行diffusion过程,从而大幅度提高training和inference的效率。然而,直接运用2D VAE缺乏了在时间维度的压缩,使得其对应的latent domain不够紧凑。实际上,这是一个历史遗留问题,大部分研究工作受算力等因素影响选择直接利用SD的预训练权重(Unet部分)、保留了2D VAE。

(2)visual encoding中视频的patches如何flatten成token序列?大概率借鉴DiT,先flatten这些patches,然后过一个linear层,将patches embed成tokens。

(3)diffusion中如何将text信息引入?大概率还是借鉴DiT和SD,在每个transformer block中,将visual tokens视为query,将text tokens作为key和value,进行cross attention,不断地conditioned on text tokens。

2.5 尚未披露关键信息

(1)模型:模型的具体结构、模型的参数量、关键参数(patch size、token数目等)如何?

(2)数据:用了哪些数据?规模如何?

(3)资源:用了多少算力?训练了多久?

(4)如何处理高帧率、时间长、高分辨率的视频?目前主流的视频生成模型都是cascade结构,也就是先生成低分辨率、低帧率的视频,再不断地在时间和空间维度上upsample。不知道Sora是否是直接一次性输出其展示的结果,如果是那样,那又会有多少token呢? (5)如何解决motion的问题?目前的视频生成模型普遍生成的motion都不太好,最简单的例子就是“人走路”,大部分模型无法生成连贯的、长时间的、合理的人行走的过程。而Sora生成的结果在连贯性、合理性上相比之前的模型都有着断代的领先。那到底是什么促使了这样的结果呢?是模型尺寸的scale up吗?需要scale up到什么size?还是数据的收集和清洗呢?以及要做到什么程度呢?

2.6 Sora的应用

- 视频创作:用户可以根据文本生成高质量视频;

- 扩展视频:可以在给定的视频或图片基础上,继续向前或向后延申视频;

- Video-to-video editing:例如将SDEdit [7]应用于Sora,可以很容易改变原视频的风格;

- 视频连结/过渡/转场:可以将两个视频巧妙地融合到一起,使用Sora在两个输入视频之间逐渐进行插值,从而在具有完全不同主题和场景构成的视频之间创建无缝过渡;

- 文生图:图像可以视为单帧的视频,故Sora也能实现文生图。

2.7 Sora的局限性

原本中提到:“Sora 目前作为模拟器(simulator)表现出许多局限性。例如,它不能准确地模拟许多基本相互作用的物理过程,例如玻璃破碎。其他交互过程(例如吃食物)也不总是能正确预测。我们在登陆页面中列举了模型的其他常见故障模式,例如长时间样本中出现的不连贯性或对象的凭空出现。”

总结一下主要是:

(1)对世界的物理规则的理解还不完美;

(2)长视频生成时容易出现不连贯或者物体凭空出现的现象。

3. Sora到底算不算世界模型?

最近,围绕“Sora是不是世界模型”以及“Sora懂不懂物理世界”等相关话题引起了圈内热议。

英伟达高级研究科学家Jim Fan在X平台上称:“Sora is a learnable simulator, or "world model".”。而图灵奖得主Yann LeCun则表示:“The generation of mostly realistic-looking videos from prompts "does not" indicate that a system understands the physical world.”。

这里谈谈我的看法,仅供参考。

(1)什么是世界模型(world model)[8]?

“The image of the world around us, which we carry in our head, is just a model. Nobody in his head imagines all the world, government or country. He has only selected concepts, and relationships between them, and uses those to represent the real system.” --Jay Wright Forrester, the father of system dynamics

上述引自系统动力学之父Jay Wright Forrester。我的理解是人类其实无法记下整个世界的所有内容,我们的大脑仅仅是在有选择记忆一些概念和相互关系,利用这些,我们可以表征和理解这个世界。这里,我们的大脑其实在充当world model,即一个理解世界(物理)规律的模型。比如,当你看到玻璃杯从桌上掉下水泥地上,你知道接下来发生的事自然就是杯子碎了。

那么世界模型到底是啥?

(以下是我个人对世界模型的理解,可能不够严谨,仅供参考)

我将世界模型分为广义的和狭义的进行讨论。

【广义世界模型】广义的世界模型,其实就是任何能理解世界潜在物理规律的模型,比如可以预见未来结果的模型,继续以前面那个例子为例,如果一个模型能预测玻璃杯掉下后的状态,说明该模型具备这样的能力;再比如知道世界中实体或抽象概念之间相互联系的模型,比如一个模型知道玻璃杯的硬度低于水泥地会导致玻璃破碎。这些其实在我看来都是广义上的世界模型。

【狭义世界模型】狭义的世界模型更强调理解物理世界的动力(dynamics)或者运动等物理规律的模型,了解过RL的朋友们一定特别熟悉这些。在RL中,一大分支便是model-based RL,这里的model,其实就是典型的狭义世界模型。在此模型中,给定某一时刻的状态s_t和该时刻做的动作a_t,模型可以预测出下一个时刻的状态s_t+1。所以说,狭义的世界模型其实是因果的。回到上面的例子,s_t可以是刚下落的杯子和干净的水泥地,a_t则是自由落体这个动作,s_t+1则是水泥地上碎掉的杯子这样一个状态。

(2)Sora算不算世界模型?

先给结论,我觉得Sora算广义世界模型,同时也是隐式的狭义世界模型。

Sora的diffusion过程其实是在从噪声状态在text prompts的约束下,预测可能的结果(视频)。这个过程看似跟狭义世界模型没有关系,但其实可以这么理解:

标准的狭义世界模型的状态转移过程为:s_0 -> a_0 -> s_1 -> a_1 -> s_2 -> ... -> a_T-1 -> s_T。对于一个视频来说,每一帧都可以看做一个状态s,但是某一时刻动作其实很难描述,我们很难用自然语言或者其他形式来描述相邻两帧之间发生了什么。但是我们可以用自然语言描述视频在做什么,也就是s_0到s_T发生了什么,也就是将动作序列A={a_0, a_1, ..., a_T-1}一起打包表示成一句话或者一段话。在Sora中,text prompts可以看做成这样的动作序列A。而Sora理解世界的过程也和一般的狭义世界模型不太一样,s_0不再是第一帧,而是“混沌”状态(噪声),于是乎diffusion的过程可以理解为:s_0(噪声) -> A -> s_1 -> ... -> A -> s_T(清晰视频)。这其中,虽然Sora并没有显式建模世界的dynamics,但其实在理解自然语言和视频内容之间的关系,算是一种广义上的世界模型。

同时,回看Sora的应用可以发现,Sora其实可以拓展视频的!也就是说,换一个角度,给定一张起始图像(第一帧)和一个文本描述(描述包含生成视频内容),Sora就能生成出整个视频,那这个过程其实可以看做是在隐式的狭义世界模型建模:s_0(第一帧)-> A -> s_{1:T} (整个视频)。相当于是,给定了初始状态和接下来的所有动作A,Sora能预测出接下来的所有状态s_{1:T},所以Sora在我看来也是一个非典型的、隐式的狭义世界模型。

值得一提的是,OpenAI官方信息从未表示Sora是world model,而是强调它是world simulator,我也觉得world simulator描述比较贴切。

4. Sora对行业的影响

- 短视频内容创作可能进入新的时代:Sora可以提供丰富的视频素材;

- 视频剪辑和编辑:Sora具备相关应用能力;

- 更逼真的数字人:用户可以得到自己的“理想型”;

- 娱乐化:从图像一键生成视频;

- 游戏行业:游戏引擎受到Sora挑战;

- 图形学:未来可能不复存在。

(讨论区,欢迎大家评论添加)

5. Sora成功的关键(粗浅理解,欢迎指正和补充)

- 大规模训练:这点毋庸置疑。大模型、大数据量、使用大规模算力,OpenAI基本操作。

- 敢于突破常规、不屑于刷点:之前工作基本都采用SD预训练的visual encoder,也知道该encoder多少有点不合理(比如只能处理固定size的输入),但没有人真的去重新训练一个更合理的encoder(当然,更可能是算力不支持)。而OpenAI发现问题,就用算力来解决问题(大概率重新训练visual encoder)。

- 实事求是+绝对领先的sense:自回归的建模方式在LLM中大获成功,GPT系列也出自OpenAI,但这不代表“Autoregressive is everything”,Sora告诉大家,生成视频无需采用自回归,直接3D建模+transformer encoder结构就ok。

- AGI理念从上至下传播:Sam Altman绝对是一个有大格局的人物,其最终目标是实现AGI,我想整个OpenAI应该都会贯彻这样的理念,不管是ChatGPT还是Sora,都能看到AGI的影子。

本篇仅仅为个人的思考和总结,如有不妥之处,欢迎指正与交流。

【参考文献】

[1] OpenAI. "Video generation models as world simulators." OpenAI Blog. 2024.

[2] Ho, Jonathan, Ajay Jain, and Pieter Abbeel. "Denoising diffusion probabilistic models." Advances in neural informaion processing systems 33 (2020): 6840-6851.

[3] Rombach, Robin, et al. "High-resolution image synthesis with latent diffusion models." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2022.

[4] Peebles, William, and Saining Xie. "Scalable diffusion models with transformers." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2023.

[5] Kingma, Diederik P., and Max Welling. "Auto-encoding variational bayes." arXiv preprint arXiv:1312.6114 (2013).

[6] Betker, James, et al. "Improving image generation with better captions." Computer Science. https://cdn.openai.com/papers/dall-e-3. pdf 2.3 (2023): 8.

[7] Meng, Chenlin, et al. "Sdedit: Guided image synthesis and editing with stochastic differential equations." arXiv preprint arXiv:2108.01073 (2021).

[8] Ha, David, and Jürgen Schmidhuber. "World models." arXiv preprint arXiv:1803.10122 (2018).

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-02-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯技术工程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2. Sora原理解读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档