Sora背后的技术原理解析(简单易懂版本)

news2025/2/27 8:33:04

        本篇文章是OpenAI发布的最强AI视频生成工具Sora技术详解(非官方),然而,Sora的野心远不止是视频生成,而是作为一个世界模型。之前的文章中已经介绍了很多关于文生图的相关技术,相信有了文生图的基础后再来学习文生视频就会容易接受许多。  本文的内容参考Sora技术详解及影响分析!感谢作者的辛苦工作,OK,让我们一起学习Sora背后的原理~

        从openai sora[1]的技术报告首段可以看出sora的野心远远不止视频生成,他们的目标是通过视频数据来学习一个世界模型或者世界模拟器,这才是真正令人兴奋和激动的部分。

目录

1.数据工程

1.1采用patches统一训练数据格式

1.2 在原始图片尺寸上训练

1.3 使用re-captioning获得text-videos对

2.网络结构

2.1 DiT[4]

2.2 整体结构

3.影响

3.1 世界模型[6]?

3.2 CV大一统?

参考 


1.数据工程

1.1采用patches统一训练数据格式

        最早在ViT[2]中出现将图片分patch输入给transformer。

        Sora的做法会有些不同,首先通过一个encoder【VAE结构】将视频帧压缩到一个低维度隐式空间(包含时间和空间上的压缩),然后展开成序列的形式送入模型训练,同样的模型预测也是隐式的序列,然后用decoder解码器去解码映射回像素空间形成视频。注意在编码成Spacetime latent patches的时候可能用到了ViViT[3]的时空编码方式

图片

如此一来有两个优势:

  • 统一互联网上不同大小格式的视频和图片数据,统一为patches的格式输入

  • 具有可扩展性,类似于llm中的token,数据格式往往跟网络结构相匹配的

  • 在推理阶段可以通过将patches组合成不同形状从而控制视频生成的尺寸大小

1.2 在原始图片尺寸上训练

        优点是使得视频在生成采样时更具有灵活性,可以生成不同尺寸的视频

  • 不需要像2D图片一样去做一些旋转、剪切等数据增强工作,这样反而会影响最终的生成效果,原因可能是因为本来的视频数据是人为拍摄的(具有合理的角度和构图先验),如果去做裁剪,反而破坏了这样的先验信息。从而导致空间的不合理以及时间的不连续。

  • 不需要统一输入的尺寸,因为可以通过encoder将不同尺寸的视频压缩成patches的形式输入

1.3 使用re-captioning获得text-videos对

        在训练阶段,将视频按1帧或者隔n帧用DALLE3(CLIP)按照一定的规范形成对应的描述文本,然后输入模型训练。

        在推理阶段,首先将用户输入的prompt用GPT4按照一定的规范把它详细化,然后输入模型得到结果。

图片

DALLE2结构

2.网络结构

2.1 DiT[4]

图片

简单来说就是tansformer+ddpm,核心就是用tansformer的结构替换掉stable diffusion中的unet结构,来预测噪声实现去噪。这个替换可以带来以下优势。

  • 随着数据规模或者训练时间的增强,模型表现的效果越好(大力出奇迹的前置条件)

  • 实验表明,模型越大,patches越小,效果越好

2.2 整体结构

参考b站up主ZOMI酱的画的Sora结构[5]。

图片

这张图感觉相对完整准确了,这里补充几点可能的改动和补充。

  • 在Conditioning阶段可能不是一帧对应一个文本,而可能是几帧十几帧对应一段文本描述

  • 在编码成Spacetime latent patches的时候可能用到了ViViT[3]的时空编码方式

  • 输入给Decoder的内容应该是去噪之后的patches序列,这里用patches描述比tokens更准确

3.影响

        首当其冲当然是影视和短视频行业,之后可能会推出sora的迭代,生成的时间可能更长类比chatgpt不断增大的输入token,可能sora以后可以生成更多更长的patches。比单纯的视频生成更有价值的是这条道路能不能通向大家都神往的AGI。似乎至少出现了苗头~

3.1 世界模型[6]?

        大家广泛讨论和关注的是sora到底是不是或者具不具备世界模型的特征。简单来讲Sora 具有以下几项能力:

  • 3D一致性。Sora可以生成具有动态摄像机运动的视频。随着摄像机的移动和旋转,人物和场景元素在三维空间中保持一致移动。可以认为它具有3D建模和3D生成的能力(可能还不够强,跟3D Gaussain[7]或者NeRF这种需要现实中的带位姿的图片来建模3D场景的能力还有一定细节差距)

  • 长程一致性和物体永久性。对于视频生成系统来说,一个重要的挑战是在采样长视频时保持时间上的一致性。我们发现,Sora通常能够有效地建模短程和长程的依赖关系,尽管并非总是如此。例如,我们的模型可以在人、动物和物体被遮挡或离开画面时仍然保持它们的存在。同样,它可以在一个样本中生成同一角色的多个镜头,并在整个视频中保持它们的外观。

  • 与世界互动。Sora有时可以模拟对世界产生简单影响的动作。例如,画家可以在画布上留下持续存在的新笔触,或者一个人可以吃掉一个汉堡并留下咬痕。可以实现一定程度的物理交互,但是很多时候还是有幻觉或者不准确,但毕竟它竟然可以“实现“!这个能力简直是王炸,CG还需要复杂的光锥模拟、渲染么?还需要复杂的方程和绑定控制么?流体毛发的研究还有价值么?

  • 模拟数字世界。Sora还能够模拟人工过程,一个例子是视频游戏。Sora可以同时使用基本策略控制Minecraft中的玩家,同时以高保真度渲染世界及其动态。通过提示Sora提到“Minecraft”的标题,可以激发这些能力。

        没有学过牛顿力学的人一样可以预测/知道物体自由落体的轨迹;没有学过压力和摩擦力的人一样能预测行驶中的自行车按住刹车的轨迹....对于模型或者机器的学习,是否一定要某个理论或者强制的条件约束?让它只依靠数据经验学习到底可不可行?

3.2 CV大一统?

        Sora视频的生成能力同样可以扩展到2D和3D的生成,同样也影响诸如感知、理解等2D/3D任务,如果未来继续迭代变强,似乎能实现CV的大一统,并消灭CG。如果实现CV大一统,那么整个AI都在基于transformer的大力出奇迹的架构下实现了大一统。

参考 

[1] https://openai.com/research/video-generation-models-as-world-simulators 

[2] https://arxiv.org/abs/2010.11929 

[3] abhttps://arxiv.org/pdf/2103.15691.pdf 

[4] https://arxiv.org/abs/2212.09748

[5] https://www.bilibili.com/video/BV1Bx4y1k7BQ

[6] https://worldmodels.github.io/ 

[7] https://repo-sam.inria.fr/fungraph/3d-gaussian-splatting/

        感谢你看到这里,也欢迎点击关注下方公众号,一个有趣有AI的AIGC公众号:关注AI、深度学习、计算机视觉、AIGC、Stable Diffusion等相关技术,欢迎一起交流学习💗~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1473510.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[c/c++] static 关键字

从修饰的对象来看,static 可以修饰局部变量,也可以修饰全局变量,可以修饰函数;可以修饰类中的成员变量以及成员函数。 从生命周期的角度来看,static 修饰的对象的生命周期,与进程的生命周期是一致的。 从…

大话设计模式——3.建造者模式(Builder Pattern)

1.定义: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。UML图 2.示例: 汽车或者电脑的组装可以采用构造者模式进行设计,如汽车的引擎或者轮胎,电脑的处理器、内存、主板等都可以进行…

【Java设计模式】四、适配器模式

文章目录 1、适配器模式2、举例 1、适配器模式 适配器模式Adapter Pattern,是做为两个不兼容的接口之间的桥梁目的是将一个类的接口转换成客户希望的另外一个接口适配器模式可以使得原本由于接口不兼容而不能一起工作的那些类可以一起工作 最后,适配器…

【51单片机】红外遥控红外遥控电机调速(江科大)

1.红外遥控简介 红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出 通信方式:单工,异步 红外LED波长:940nm 通信协议标准:NEC标准 2.硬件电路 红外发送部分 IN高电平时,LED不亮,IN低电平时&…

Langchain-Chatchat:离线运行的大模型知识库 | 开源日报 No.182

chatchat-space/Langchain-Chatchat Stars: 22k License: Apache-2.0 基于 ChatGLM 等大语言模型与 Langchain 等应用框架实现的开源、可离线部署的检索增强生成 (RAG) 大模型知识库项目。该项目是一个可以实现完全本地化推理的知识库增强方案,重点解决数据安全保护…

【C语言】linux内核netdev_start_xmit函数

一、中文注释 static inline netdev_tx_t netdev_start_xmit(struct sk_buff *skb, struct net_device *dev, struct netdev_queue *txq, bool more) {// 获取网络设备操作集合const struct net_device_ops *ops dev->netdev_ops;int rc;// 调用实际发送数据包的函数&…

RCS-YOLO:检测头和网络结构的改进

目录 摘要 原理 总体结构图 RCS模块原理 代码实现 RCS-Based One-Shot Aggregation 代码实现 检测头改进 手动计算anchor代码 yaml文件 已详细修改的代码 程序启动命令 可论文指导 V ------------> jiabei-545 往期推荐 摘要 凭借速度和准确性之间的出色平…

学习笔记-李沐动手学深度学习(七)(19-21,卷积层、填充padding、步幅stride、多输入多输出通道)

总结 19-卷积层 【补充】看评论区建议的卷积动画视频 数学中的卷积 【链接】https://www.bilibili.com/video/BV1VV411478E/?fromsearch&seid1725700777641154181&vd_sourcee81e116c4ffe5e79d4bc44738263eda4 【可判断是否为卷积的典型标志】两个函数中自变量相加…

瑞_Redis_Redis客户端

文章目录 1 Redis客户端1.1 Redis命令行客户端1.2 图形化桌面客户端1.2.1 资源准备1.2.2 安装1.2.3 建立连接 🙊 前言:本文章为瑞_系列专栏之《Redis》的基础篇的Redis客户端章节。由于博主是从B站黑马程序员的《Redis》学习其相关知识,所以本…

导轨安装式称重传感器信号变送器差分信号隔离转换0-10mV/0-20mV/0-±10mV/0-±20mV转0-5V/0-10V/4-20mA

主要特性 DIN11 IPO 压力应变桥信号处理系列隔离放大器是一种将差分输入信号隔离放大、转换成按比例输出的直流信号导轨安装变送模块。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等行业。此系列模块内部嵌入了一个高效微功率的电源,向输入端和输…

图像处理ASIC设计方法 笔记4 异步FIFO

P66 异步FIFO 这段对FIFO的描述很精彩: 理解了水位信号的含义(相当于通常所说的满/空标志,注意读时钟域的空信号,写时钟域的满信号,只能在它各自的时钟域直接使用,如果要在另一时钟域用,需要使…

顺丰科技2024届春季校园招聘常见问题解答及SHL测评题库

顺丰科技2024届春季校园招聘常见问题解答及SHL测评题库 Q:顺丰科技2024届校园招聘面向对象是? A:2024届应届毕业生,毕业时间段为2023年10月1日至2024年9月30日(不满足以上毕业时间的同学可以关注顺丰科技社会招聘或…

【无标题】vite配置代理--loadEnv

环境变量的定义是:会根据当前那代码环境产生值的变化的变量 在 Vite 项目中,使用环境变量提供了一种在不同环境下定制化应用行为的方式。通过读取环境变量,我们可以设置不同的配置信息。 开发中常见的场景有: 区分开发和生产环境 …

<网络安全>《54 概念讲解<第一课 IT和OT>》

1 基本概念 IT:Information Technology的缩写,指信息技术;主要指的是企业中的各个应用系统,包括ERP、MES、EAM、OA等,分布部署在不同的网络层级。除了应用系统,还有计算机,服务器等等&#xff…

Qt介绍以及qt_creater的安装和C++项目工程创建

最近天气严寒,同学们要注意保暖哦!学习的同时别忘了照顾好自己呀!o(* ̄▽ ̄*)ブ 目录 一、Qt 1、Qt概念 2、常见的GUI 二、安装qt_creater 方法一: 方法二: 三、Qt_creater 中C项目的创建 …

【BUG 记录】MyBatis-Plus 处理枚举字段和 JSON 字段

【BUG 记录】MyBatis-Plus 处理枚举字段和JSON字段 一、枚举字段(mysql环境已测、postgresql环境已测)1.1 场景1.2 定义枚举常量1.3 配置枚举处理器1.4 测试 二、JSON字段(mysql环境已测)2.1 导包2.2 使用对象接受2.3 测试 三、JS…

SpringBoot快速入门(黑马学习笔记)

需求 需求:基于SpringBoot的方式开发一个Web应用,浏览器发起请求/hello后,给浏览器返回字符串"Hello World~"。 开发步骤 第一步:创建SpringBoot工程项目 第二步:定义HelloController类,添加方…

【惠友小课堂】骨质疏松≠老年人“专利”,年轻人也不能忽视(文末附自我测试)

虽说现在大家对于骨质疏松并不陌生,许多中老年人甚至年轻人都开始认识到“维护骨骼要趁早”,但依旧有人对骨质疏松存在一些“误解”,今天就来一一解开。(PS:文末有骨质疏松自我测试哦~) 某在读大学生 “我这…

学成在线_课程计划查询_前端页面无法跳转

问题描述 在进行课程计划查询的接口开发时通过了http-client测试但点开课程修改界面后点击保存并进行下一步时无法跳转到修改课程计划查询的页面。 问题原因 课程信息修改的Controller层没有实现 QAQ(可能是老师在讲这一块的时候没有提这一点(我也记…

Netty权威指南——基础篇2(NIO编程)备份

1 概述 与Socket类和ServerSocket,NIO也提供了SocketChannel和ServerSocketChannel两种不同的套接字通道实现。这两种新增的通道都支持阻塞和非阻塞两种模式。阻塞模式使用简单,但性能和可靠性都不好,非阻塞模式则正好相反。一般来说&#xf…