OpenAl 视频生成模型 —— Sora技术报告解读

2024-02-18 17:36

本文主要是介绍OpenAl 视频生成模型 —— Sora技术报告解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这里是陌小北,一个正在研究硅基生命的碳基生命。正在努力成为写代码的里面背诗最多的,背诗的里面最会写段子的,写段子的里面代码写得最好的…厨子。

写在前面

早上醒来,就看到OpenAl推出的视频模型Sora炸锅了,感觉所有人都不淡定了… 这种时候我一般是先不看,让子弹先飞一会儿的,正当我看会儿闲书修身养性的时候,技术报告又出来了,这下我也来神儿了,盘他盘他…

其实我老早就想研究一下当前的文生视频模型都有哪些技术,做个调研和总结了,今天就当个起点吧。因为2024年很可能迎来视频的“ChatGPT 时刻”,a16z发布了文章《为什么2023是AI视频的突破年,以及2024年的展望》,总结了2023年的AI视频产品以及相应的时间点。

再加上年初,谷歌推出了Lumiere模型,字节跳动和腾讯也分别公布了MagicVideo V2与VideoCrafter2,今天OpenAl的Sora一出,只能说硝烟已至,未来已来。

通过这份总结可以看出,大多数产品只能生成 3 到 4 秒钟的视频,并且存在视频质量参差不齐,人物风格难以统一等问题,但是今天Sora直接将时长打到60秒,并且支持多角度镜头,还有最重要的,Sora似乎已经涌现出了模拟能力,有了“世界模型”的雏形…

技术报告解读

首先贴上技术报告地址:https://openai.com/research/video-generation-models-as-world-simulators

报告标题是“Video generation models as world simulators” —— “作为世界模拟器的视频生成模型”,并且在报告开始就说了,视频生成模型是构建物理世界通用模拟器的一个值得研究的方向,悬念感拉满。

接下来是回顾之前视频领域的研究进展,主要包括 recurrent networks,generative adversarial networks(GAN),autoregressive transformers,diffusion models,这些方法通常应用与小范围的视觉数据、短视频或固定大小的视频。Sora是一个通用的视觉数据模型,它可以生成不同时长、长宽比和分辨率的视频和图像,而且最多可以输出长达一分钟的高清视频。

关于报告公示的具体细节,先泼个冷水,CloseAI 的报告不包含模型和训练的细节,报告重点阐述的有两点:第一,Sora将所有类型的视觉数据转换为统一表示形式(patches),从而用于大规模训练生成模型;第二,对 Sora 的能力和局限性进行定性评估。

技术点一:视觉数据转为 Patches

Patches是类似于LLM中token的概念。LLM过使用互联网上大规模的数据进行训练从而获得了通用能力,这也给了Sora灵感。

LLM中正是通过token这一新的范式,将文本的多种模态 (代码、数学和各种自然语言)统一了起来。所以视觉模型Sora参考了这一创新,OpenAI 发现 patches 是训练生成各种类型视频和图像的模型的可扩展且有效的表示。

如下图,首先将视频压缩到较低维的潜在空间,然后将表示分解为spacetime patches,从而将视频转换为 patches。

技术点二:视频压缩网络

OpenAI 训练了一个降低视觉数据维度的网络和相应的解码器模型。看起来还是类似于transformer 的编码器和解码器,编码器将原始视频作为输入,并输出在时间和空间上压缩的latent representation,解码器将生成的潜在表示映射回像素空间。Sora 在这个压缩的潜在空间中接受训练,而后生成视频。OpenAI 还训练了,将生成的潜在表示映射回像素空间。

技术点三:Spacetime Latent Patches

给定一个压缩的输入视频,OpenAI 提取一系列时空 patches,充当 Transformer 的 tokens。该方案也适用于图像,因为图像可视为单帧视频。OpenAI 基于 patches 的表示使 Sora 能够对不同分辨率、持续时间和长宽比的视频和图像进行训练。在推理时,OpenAI 可以通过在适当大小的网格中排列随机初始化的 patches 来控制生成视频的大小。

技术点四:用于视频生成的Scaling Transformer

Sora 是一个扩散 Transformer。关于为什么采用Transformer,报告中提到,Transformer 在各个领域都表现出了卓越的缩放特性,包括语言建模、计算机视觉、和图像生成。同时,OpenAI 发现扩散 Transformers在视频模型上同样有效。

Sora的具体实现方式是:通过给定的输出的noisy patches(噪声 patches,以及像是问题提示一类的训练信息),训练出模型,用来预测原始的“clean” patches。

下面,OpenAI 展示了训练过程中具有固定种子和输入的视频样本的比较。随着训练计算的增加,样本质量显着提高。

技术点五:语言理解

由于训练文本到视频生成系统需要大量带有相应文本字幕的视频。OpenAI将 DALLE 3 中的重字幕(re-captioning)技术应用于视频。具体来说,首先训练一个高度描述性的字幕生成器模型,然后使用它为训练集中所有视频生成文本字幕。研究团队发现,对高度描述性视频字幕进行训练可以提高文本保真度以及视频的整体质量。

与 DALLE 3 类似,研究团队还利用 GPT 将简短的用户 prompt 转换为较长的详细字幕,然后发送到视频模型。这使得 Sora 能够生成准确遵循用户 prompt 的高质量视频。

亮点一:可变的持续时间,分辨率,宽高比

以往,图像和视频生成方法通过需要调整大小、进行裁剪或者是将视频剪切到标准尺寸。Sora采用在原始大小的数据上进行训练,OpenAI 发现在原始大小的数据上进行训练,可以提供以下好处:

首先是采样的灵活性:Sora 可以采样宽屏视频 1920x1080p,垂直视频 1080x1920p 以及两者之间的视频。这使 Sora 可以直接以其天然纵横比为不同设备创建内容。Sora 还允许在生成全分辨率的内容之前,以较小的尺寸快速创建内容原型 —— 所有内容都使用相同的模型。

其次是改进帧和内容组成:研究者通过实证发现,使用视频的原始长宽比进行训练可以提升内容组成和帧的质量。(原文的例子我就不贴了,反正就是证明他们的方法好)

亮点二:可以以图像和视频作为提示

这里,报告中列举了通过DALL-E的图像制作动画视频、基于一段视频拓展新视频、SDEdit(根据文本 prompt 编辑视频的方法,能够在零样本条件下改变输入视频的风格和环境)、连接视频、生成图像(单帧视频)。

亮点三:涌现模拟能力

OpenAI 发现,视频模型在经过大规模训练后,涌现出模拟能力。这些能力使 Sora 能够模拟物理世界中的人、动物和环境的某些方面。这表明,视频模型的持续扩展是开发物理和数字世界模拟器的一条有前景的道路。

Sora表现出的涌现模拟具体能力如下:

(1)三维一致性。Sora 可以生成动态摄像机运动的视频。随着摄像机的移动和旋转,人物和场景元素在三维空间中的移动是一致的。

(2)长序列连贯性和目标持久性。视频生成系统面临的一个重大挑战是在对长视频进行采样时保持时间一致性。OpenAI 发现,虽然 Sora 并不总是能有效地模拟短距离和长距离的依赖关系,但它在很多时候仍然能做到这一点。例如,即使人、动物和物体被遮挡或离开画面,Sora 模型也能保持它们的存在。同样,它还能在单个样本中生成同一角色的多个镜头,并在整个视频中保持其外观。

(3)与世界交互。Sora 有时可以模拟以简单方式影响世界状态的动作。例如,画家可以在画布上留下新的笔触,这些笔触会随着时间的推移而持续,或者一个人可以吃汉堡并留下咬痕。

(4)模拟数字世界。Sora 还能模拟视频游戏。Sora 可以通过基本策略同时控制Minecraft中的玩家,同时高保真地呈现世界及其动态。只需在 Sora 的提示字幕中提及 「Minecraft」,就能零样本激发这些功能。

局限性讨论

Sora 目前还存在许多局限性。例如,它不能准确模拟许多基本交互的物理现象,如玻璃碎裂。也并不是总能产生正确的物体状态变化,官方主页列举了该模型的其他常见失效模式,例如长时间样本中出现的不一致性或物体的自发出现等。总结来讲,也就是难以准确模拟复杂场景的物理原理,并且可能无法理解因果关系。

写在最后

关于视频模型的研究总结,之后应该还会继续,2024的开年,很精彩…

这篇关于OpenAl 视频生成模型 —— Sora技术报告解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/721918

相关文章

Django HTTPResponse响应体中返回openpyxl生成的文件过程

《DjangoHTTPResponse响应体中返回openpyxl生成的文件过程》Django返回文件流时需通过Content-Disposition头指定编码后的文件名,使用openpyxl的sa... 目录Django返回文件流时使用指定文件名Django HTTPResponse响应体中返回openp

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一