解读OpenAI视频生成模型Sora背后的原理:Diffusion Transformer

news2025/1/26 15:39:21

Diffusion Models视频生成-博客汇总

前言:OpenAI最近推出的视频生成模型Sora在效果上实现了真正的遥遥领先,很多博主都介绍过Sora,但是深入解读背后原理的博客却非常少。Sora的原理最主要的是核心模型主干《Scalable Diffusion Models with Transformers》和训练不同尺寸视频方法《Patch n' Pack: NaViT, a Vision Transformer for any Aspect Ratio and Resolution》。这篇博客详细解读Diffusion Transformer结构,一起揭开Sora神秘的面纱。

目录

贡献概述

方法详解

主干结构

Patch化

条件输入

Transformer decoder

Sora上的应用:空间时间补丁(Spacetime Patches)

个人感悟


贡献概述

论文提出使用Transformers替换扩散模型中U-Net主干网络,分析发现,这种Diffusion Transformers(DiTs)不仅速度更快(更高的Gflops),而且在ImageNet 512×512和256×256的类别条件图片生成任务上,取得了更好的效果,256×256上实现了SOTA的FID指标(2.27)。

文章的目标就是要揭开扩散模型架构选择的神秘面纱,提供一个强有力的baseline。文章发现U-Net并非不可替代,并且很容易使用诸如Transformers的结构替代U-Net,使用Transformers可以很好地保持原有的优秀特性,比如可伸缩性、鲁棒性、高效性等,并且使用新的标准化架构可能在跨领域研究上展现出更多的可能。文章从网络复杂度和采样质量两个方面对DiTs方法进行评估。

方法详解

主干结构

Patch化

Diffusion Transformer的目标是尽可能忠实于标准的transformer架构,以保持其缩放特性。DiT基于vision transformer(ViT)架构,该架构对patch序列进行操作。

DiT的输入是通过VAE后的一个稀疏的表示z(256×256×3的图片,z为32×32×4),类似其他ViTs的方式,首先要将输入转成patch,文章采用超参p=2,4,8进行对比实验。

条件输入

作者探索了四种方法输入条件,最后发现Adaptive layer norm(adaLN)模块的效果是最好的。

  • In-context条件:In-context条件是将t和c作为额外的token拼接到DiT的token输入中;
  • Cross-attention模块:DiT结构与Condition交互的方式,与原来U-Net结构类似;
  • Adaptive layer norm(adaLN)模块:使用adaLN替换原生LayerNorm(NeurIPS2019的文章,LN 模块中的某些参数不起作用,甚至会增加过拟合的风险。所以提出一种没有可学习参数的归一化技术);
  • adaLN-zero模块:之前的工作发现ResNets中每一个残差模块使用相同的初始化函数是有益的。文章提出对DiT中的残差模块的参数γ、β、α进行衰减,以达到类似的目的。

Transformer decoder

在Transformer最上层需要预测噪音,因为Transformer可以保证大小与输入一致,所以在最上层使用一层线性进行decoder。

Sora上的应用:空间时间补丁(Spacetime Patches)

在深入讨论Sora如何通过三个关键步骤生成视频之前,让我们先集中探索一下空间时间补丁(Spacetime Patches)这一概念。这一概念对于理解Sora如何处理复杂视觉内容至关重要。

空间时间补丁可以简单理解为将视频或图片内容分解为一系列小块或“补丁”,每个小块都包含了部分时空信息。这种方法的灵感来源于处理静态图像的技术,其中图像被分成小块以便于更有效地处理。在视频处理的背景下,这一概念被拓展到了时间维度,不仅包含空间(即图像的部分区域),还包括时间(即这些区域随时间的变化)。

为了理解空间时间补丁是如何工作的,我们可以借用一个简单的日常生活中的比喻:想象一下,你在观看一部动画电影。如果我们将这部电影切割成一帧帧的静态画面,每帧画面进一步切割成更小的区域(即“补丁”),那么每个小区域都会包含一部分画面的信息。随着时间的推移,这些小区域中的信息会随着物体的移动或场景的变化而变化,从而在时间维度上添加了动态信息。在Sora中,这样的“空间时间补丁”使得模型可以更细致地处理视频内容的每一个小片段,同时考虑它们随时间的变化。

具体到Sora处理视觉内容的过程中,空间时间补丁首先通过视频压缩网络生成。这一网络负责将原始视频数据压缩成更低维度的表示形式,即一个由许多小块组成的密集网络。这些小块即为我们所说的“补丁”,每个补丁都携带了一部分视频的空间和时间信息。

一旦生成了这些空间时间补丁,Sora就可以开始它们的转换过程了。通过预先训练好的转换器(Transformer模型),Sora能够识别每个补丁的内容,并根据给定的文本提示进行相应的修改。例如,如果文本提示是“雪地中的狗狗奔跑”,Sora将找到与“雪地”和“奔跑的狗狗”相关的补丁,并相应调整它们,以生成与文本提示匹配的视频内容。

这种基于空间时间补丁的处理方式有几个显著优势。首先,它允许Sora以非常精细的层次操作视频内容,因为它可以独立处理视频中的每一小块信息。其次,这种方法极大地提高了处理视频的灵活性,使得Sora能够生成具有复杂动态的高质量视频,而这对于传统视频生成技术来说是一个巨大的挑战。此外,通过对这些补丁进行有效管理和转换,Sora能够在保证视频内容连贯性的同时,创造出丰富多样的视觉效果,满足用户的各种需求。

个人感悟

1、据说这篇论文被cvpr拒收了,理由是创新度不足,真是笑死……

2、这篇论文的很多细节不是很清楚,比如具体来说不同的condition是如何压缩后再加入到模型中的?文本条件、image条件等condition加入的方法有区别吗?timesteps是如何加入到DiT Blocks中?Transformer decoder为什么要同时预测协方差和noise?

3、2024年很可能DiT结构会取代Unet结构?拭目以待!

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

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

相关文章

119. Pascal‘s Triangle II(杨辉三角 II)

问题描述 给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 问题分析 其实这个问题与118.杨辉三角解决思路一样,只不过此问题只返回杨辉三角的某一行而已。 代码 i…

BUGKU-WEB eval

题目描述 题目截图如下&#xff1a; 进入场景看看&#xff1a; <?phpinclude "flag.php";$a $_REQUEST[hello];eval( "var_dump($a);");show_source(__FILE__); ?>解题思路 PHP代码审计咯 相关工具 百度搜索PHP相关知识 解题步骤 分析脚…

JDK-JVM-hotspot

JVM JDKJDK内部体系结构&#xff1a;JVM 与 跨平台JVM在程序运行过程中的运行细节&#xff0c;内存分配 和 流转模型。JVM结构体系1. 虚拟机栈2. 线程栈2.1. 栈帧2.2. 数据结构栈 与 线程栈 的关系&#xff1a;2.3.栈帧的内部结构&#xff1a;2.4 方法中的数据 在栈帧中的流转过…

《Go 简易速速上手小册》第7章:包管理与模块(2024 最新版)

文章目录 7.1 使用 Go Modules 管理依赖 - 掌舵向未来7.1.1 基础知识讲解7.1.2 重点案例&#xff1a;Web 服务功能描述实现步骤扩展功能 7.1.3 拓展案例 1&#xff1a;使用数据库功能描述实现步骤扩展功能 7.1.4 拓展案例 2&#xff1a;集成 Redis 缓存功能描述实现步骤扩展功能…

代码随想录刷题笔记 DAY 28 | 复原 IP 地址 No.93 | 子集 No.78 | 子集 II No.90

文章目录 Day 2801. 复原 IP 地址&#xff08;No. 93&#xff09;1.1 题目1.2 笔记1.3 代码 02. 子集&#xff08;No. 78&#xff09;2.1 题目2.2 笔记2.3 代码 03. 子集 II&#xff08;No. 90&#xff09;3.1 题目3.2 笔记3.3 代码 Day 28 01. 复原 IP 地址&#xff08;No. 9…

SAP BC Partner XXXX:3299 not reached

带SAProuter 出现如下问题 不带SAProuer 正常登录 原因&#xff1a;SAProuter 服务未开启。 开启过程如下&#xff1a; 进入对应的SAProuter 目录 一般是SAProuter 服务器上 cmd进入目录 执行 saprouter.exe -r -V 2 -G saprouter.og -K "p:CNsap-router, OU0000725…

手把手一起开发SV4E-I3C设备(二)

JEDEC DDR5 SPD Hub Devices例程 DDR5生态系统的核心是SidebandBus Protocol 参考下图&#xff0c;可以将SV4E-I3C的端口1声明为主服务器(模拟主机控制器)&#xff0c;并且它可以属于SV4E-I3C上的一个总线。端口2可以作为SPD Hub DUT的Local Bus侧的从站连接。这个从站可以被…

JWT和base64

1.1 jwt和token 1.1.1 token介绍 令牌&#xff08;Token&#xff09;&#xff1a;在计算机领域&#xff0c;令牌是一种代表某种访问权限或身份认证信息的令牌。它可以是一串随机生成的字符或数字&#xff0c;用于验证用户的身份或授权用户对特定资源的访问。 简单理解 : 每个…

【解决(几乎)任何机器学习问题】:处理分类变量篇(上篇)

这篇文章相当长&#xff0c;您可以添加至收藏夹&#xff0c;以便在后续有空时候悠闲地阅读。 本章因太长所以分为上下篇来上传&#xff0c;请敬请期待 很多⼈在处理分类变量时都会遇到很多困难&#xff0c;因此这值得⽤整整⼀章的篇幅来讨论。在本章中&#xff0c;我将 讲述不同…

H5028B 车灯舞台灯 PWM调光 可温控 48V 60V 72V 80V 100V降压芯片

带温控功能的降压恒流芯片的工作原理如下&#xff1a; 降压功能&#xff1a;首先&#xff0c;芯片会监测输入电压&#xff0c;并通过内部的电路将输入电压降低到所需的输出电压水平。这可以通过开关电源转换技术实现&#xff0c;例如脉冲宽度调制&#xff08;PWM&#xff09;或…

2024年【熔化焊接与热切割】考试题库及熔化焊接与热切割考试报名

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 熔化焊接与热切割考试题库考前必练&#xff01;安全生产模拟考试一点通每个月更新熔化焊接与热切割考试报名题目及答案&#xff01;多做几遍&#xff0c;其实通过熔化焊接与热切割模拟考试题库很简单。 1、【单选题】…

硬错误-STM32

需要修改栈大小 还得是野火的文档比较讲得深一点。

图解linux零拷贝技术

转发自&#xff1a;https://zhuanlan.zhihu.com/p/442771856 1、数据拷贝基础过程 在Linux系统内部缓存和内存容量都是有限的&#xff0c;更多的数据都是存储在磁盘中。对于Web服务器来说&#xff0c;经常需要从磁盘中读取数据到内存&#xff0c;然后再通过网卡传输给用户&am…

第13章 网络 Page741~744 asio核心类 ip::tcp::socket

1. ip::tcp::socket liburl库使用"curl*" 代表socket 句柄 asio库使用ip::tcp::socket类代表TCP协议下的socket对象。 将“句柄”换成“对象”,因为asio库是不打折扣的C库 ip::tcp::socket提供一下常用异步操作都以async开头 表13-3 tcp::socket提供的异步操作 …

ElementUI Form:Cascader 级联选择器

ElementUI安装与使用指南 Cascader 级联选择器 点击下载learnelementuispringboot项目源码 效果图 el-cascader.vue&#xff08;Cascader 级联选择器&#xff09;页面效果图 项目里el-cascader.vue代码 <script> let id 0; export default {name: el_cascader,dat…

根据Ruoyi做二开

Ruoyi二开 前言菜单代码生成新建微服务网关添加微服务的路由 vue页面和对应的js文件js中方法的url和controller中方法的url总结 前言 之前写过一篇文章&#xff0c;若依微服务版本搭建&#xff0c;超详细&#xff0c;就介绍了怎么搭建若依微服务版本&#xff0c;我们使用若依就…

【大厂AI课学习笔记】【2.1 人工智能项目开发规划与目标】(2)项目开发周期

我们来学习项目开发的周期。 再次声明&#xff0c;本文来自腾讯AI课的学习笔记&#xff0c;图片和文字&#xff0c;仅用于大家学习&#xff0c;想了解更多知识&#xff0c;请访问腾讯云相关章节。如果争议&#xff0c;请联系作者。 今天&#xff0c;我们来学习AI项目的周期。 主…

基于python的企业编码管理系统源码【附下载】

《企业编码生成系统》程序使用说明 在PyCharm中运行《企业编码生成系统》即可进入如图1所示的系统主界面。在该界面中可以选择要使用功能对应的菜单进行不同的操作。在选择功能菜单时&#xff0c;只需要输入对应的数字即可。 图1 系统主界面 具体的操作步骤如下&#xff1a;…

如何选择阿里云服务器配置?阿里云服务器CPU内存带宽攻略

阿里云服务器配置怎么选择&#xff1f;根据实际使用场景选择&#xff0c;个人搭建网站可选2核2G配置&#xff0c;访问量大的话可以选择2核4G配置&#xff0c;企业部署Java、Python等开发环境可以选择2核8G配置&#xff0c;企业数据库、Web应用或APP可以选择4核8G配置或4核16G配…

QML | 属性特性(property)

一、属性特性 属性是对象的一个特性,可以分配一个静态的值,也可以绑定一个动态表达式。属性的值可以被其他对象读取。一般而言,属性的值也可以被其他对象修改,除非显式声明不允许这么做,也就是声明为只读属性。 1.定义属性特性 属性可以在C++中通过注册一个类的Q_PROPERT…