【文生视频】Diffusion Transformer:OpenAI Sora 原理、Stable Diffusion 3 同源技术

文生视频 Diffusion Transformer:Sora 核心架构、Stable Diffusion 3 同源技术

    • 提出背景
      • 变换器的引入
      • Diffusion Transformer (DiT)架构
      • Diffusion Transformer (DiT)总结
    • OpenAI Sora 设计思路
      • 阶段1: 数据准备和预处理
      • 阶段2: 架构设计
      • 阶段3: 输入数据的结构化
      • 阶段4: 视频压缩和表示
      • 阶段5: 模型训练和优化
      • 阶段6: 输出生成
    • OpenAI Sora 工作流程
      • 步骤1: 视频数据的压缩和转换
      • 步骤2: 时空补丁的提取
      • 步骤3: 使用Transformer处理补丁
      • 步骤4: 生成视频内容
      • 步骤5: 视频解码

 


读懂 Diffusion Transformer 需要的知识点:

  • Transformer
  • ViT:视觉 Transformer
  • Diffusion 扩散模型

提出背景

论文:https://arxiv.org/pdf/2212.09748.pdf

代码:https://github.com/facebookresearch/DiT

在传统的DDPMs中,使用卷积U-Net作为骨干网络是常见的选择。

尽管这些模型在图像生成任务上取得了显著的成功,但是随着生成图像分辨率的提高以及对更复杂图像特征的需求增加,需要寻找更高效和可扩展的模型架构。

假设我们想要生成一系列高质量的图像,这些图像模仿了某种特定的艺术风格,例如梵高的画风。

传统的方法可能依赖于复杂的卷积网络,如U-Net,这种网络通过大量的层次和参数来捕捉图像的细节和风格特征。

然而,这种方法在处理更高分辨率的图像或更复杂的图像风格时,可能会遇到性能瓶颈。

用变换器替代U-Net骨干网络:U-Net是一种流行的用于图像处理任务(特别是图像分割)的卷积神经网络架构。

  • 它的特点是有一个对称的结构,能够有效地捕获图像的局部和全局信息。
  • 在这里,研究者选择用变换器替换U-Net,意味着他们采用了一种基于注意力机制的方法来处理图像,而不是传统的卷积方法。
  • 这种替换旨在利用变换器处理复杂数据依赖关系的能力,以提高扩散模型生成图像的质量和效率。

变换器作用于潜在的补丁上:这意味着变换器模型不是直接在整个图像上一次性操作,而是将图像分割成小块(即补丁),然后在这些小块的潜在表示上应用其注意力机制。

  • 这种方法可以让模型更有效地学习图像的局部细节,同时保持对全局结构的理解。

引入基于变换器的扩散模型(DiTs)后,我们采取不同的策略:

  1. 模型设计:我们设计一个基于变换器的架构,该架构能够更有效地处理图像的潜在表示。

    变换器以其强大的注意力机制著称,能够捕捉图像不同部分之间的复杂关系,这对于图像生成尤其有用。

  2. 潜在空间操作:与直接在像素级别操作不同,我们的模型在所谓的潜在空间中工作,这是一个通过某种形式的编码器得到的压缩图像表示。

    这种表示捕捉了图像的关键特征,但用更少的数据表示,使得模型更加高效。

  3. 可扩展性:为了生成更高质量的图像,我们可以通过增加变换器的深度(即层数)或宽度(即每层的大小),或是增加处理的潜在补丁的数量来提高模型的计算复杂度(Gflops)。

    随着复杂度的提高,模型能够更好地学习复杂的图像特征,生成更接近真实的高分辨率艺术风格图像。

  4. 性能验证:我们通过在一系列图像生成任务上测试我们的模型,特别是在模仿梵高画风的任务上,来验证模型的性能。

    通过计算FID得分,我们发现随着模型复杂度的增加(更多的Gflops),生成的图像与真实的梵高画作在视觉上更为相似,FID得分更低,表明图像质量更高。

  5. 成就:我们的最大型号,DiT-XL/2,在这些图像生成任务中表现出色,不仅在模仿梵高画风方面达到了新的高度,而且在一系列基准测试中设置了新的记录。

基于变换器的扩散模型提供了一种强大且可扩展的方法来生成高质量的图像,能够应对不同分辨率和复杂度的挑战,同时在保持或提高图像质量的同时提高计算效率。

实验结论:

通过增加模型的规模和计算资源投入,能够生成更高质量的图像。这表明DiTs模型是可扩展的,即它们可以通过增加资源投入来实现更好的性能。

变换器的引入

  • 目标:探索变换器架构在DDPMs中的应用,旨在利用其强大的可扩展性和处理大规模数据集的能力来提升图像生成的质量。

  • 实现步骤

    1. 替换骨干网络:用标准变换器架构替换DDPM中的U-Net骨干网络。

    这一步骤需要考虑如何有效地将图像数据转换为适合变换器处理的格式(例如,将图像切分为小块或补丁)。

    1. 模型训练:在变换器骨干的DDPM上进行训练,使用大规模图像数据集并采用适当的训练技巧,如注意力机制和位置编码,以捕捉图像的全局依赖性和局部细节。
    2. 性能评估:通过FID(Fréchet Inception Distance)等指标评估生成图像的质量,验证变换器架构的有效性。

通过将变换器架构应用于DDPMs,我们能够生成具有更高分辨率、更丰富细节和更低FID得分的图像。

Diffusion Transformer (DiT)架构

在这里插入图片描述
左侧描述了条件潜在DiT模型的训练过程,其中输入的潜在信息被分解为补丁并由多个DiT块处理。

右侧展示了DiT块的详细信息,并说明了标准变换器块的不同变体。

在这些变体中,适应性层归一化(adaptive layer norm)表现得最好。

图中的结构包括:

  • 多头自注意力(Multi-Head Self-Attention)
  • 多头交叉注意力(Multi-Head Cross-Attention)
  • 前馈网络(Pointwise Feedforward)
  • 层归一化(Layer Norm)
  • 缩放、平移以及时步和条件信息的整合
  • 每个DiT块都包含了这些元素,这些元素共同工作以学习和生成图像数据的复杂分布。

通过实验不同的变换器块配置,研究人员可以找到最优的模型设置,以提高模型的性能和生成图像的质量。

这张图表明,DiT模型是对传统扩散模型的一个显著改进,因为它们整合了变换器架构的强大能力,尤其是在处理和生成高质量图像方面。

DiT的输入规格:

在这里插入图片描述

输入图像首先被处理成大小为 ( p × p ) ( p \times p) (p×p) 的补丁,然后这些补丁被线性化为具有隐藏维度( d )的输入令牌序列。

令牌总数( T )由公式 T = ( I / p ) 2 T = (I/p)^2 T=(I/p)2 确定,其中( I )是以像素为单位的输入图像大小。

这种表示方式表明,较小的补丁大小会导致更长的令牌序列,从而增加计算复杂度,以Gflops衡量。

 

以图像分辨率为256x256像素,补丁大小为16x16像素的情况为例:

首先,输入图像会被分割成大小为 p × p p \times p p×p(在这个例子中是 16 × 16 16 \times 16 16×16)的补丁。

如果输入图像的大小为 I × I I \times I I×I(在这个例子中是 256 × 256 256 \times 256 256×256),那么会有 T = ( I / p ) 2 T = (I/p)^2 T=(I/p)2(即 T = ( 256 / 16 ) 2 = 256 T = (256/16)^2 = 256 T=(256/16)2=256)个这样的补丁。

接下来,每个补丁会被线性化为具有隐藏维度 ( d ) 的输入令牌。

这意味着我们最终会有一个长为256的令牌序列,每个令牌都是一个 ( d ) 维的向量。

在此基础上:

  • 特征1(ViT架构的应用):这些令牌序列会被用作DiT模型的输入,模型会利用ViT架构的特点来处理这些序列,捕捉图像内部的复杂结构和特征。

  • 特征2(补丁大小对序列长度和Gflops的影响):较小的补丁大小会导致更长的序列,这意味着模型需要处理更多的令牌,从而增加了模型的Gflops。

    当我们把输入图像分割成更小的patches(或补丁)时,我们得到更多的tokens来表示这些patches。

    由于每个token都需要被模型处理(例如,通过神经网络层的前向和后向传播),这就增加了模型所需执行的总计算操作数。

    因此,模型的Gflops也会相应增加,表明它需要更多的计算资源来处理相同数量的数据。

    换句话说,当你减少patch的大小时,为了处理这些更细粒度的数据,模型需要做更多的工作,因此计算复杂度就会提高。

    在给定的例子中,如果将补丁大小从16x16减少到8x8,令牌数从256增加到1024,相应地,模型处理这些令牌所需的计算量(Gflops)也会增加,因为现在有更多的令牌需要经过模型的神经网络层。

  • 特征3(DiT块的设计差异):不同的DiT块设计会影响模型处理这些令牌的方式,从而影响整体模型的性能和计算效率。例如,adaLN-Zero块通过特定的初始化策略来提高模型性能,同时保持计算效率。

在这个例子中,通过选择合适的补丁大小和DiT块设计,可以优化模型的计算负载,并提高图像生成任务的性能。

Diffusion Transformer (DiT)总结

  • 特征1(模型架构):DiT采用了变换器架构,特别是在处理序列化的图像数据方面,这是因为变换器架构在捕捉长期依赖关系方面表现出色。

  • 特征2(序列化输入):通过将图像分割成小patches并将它们序列化为tokens,DiT能够有效地在变换器模型中处理图像数据。

  • 特征3(位置编码):位置编码被应用于tokens以保留空间信息,这对于保持图像中的相对位置关系至关重要。

  • 特征4(计算复杂度):通过调整补丁大小,DiT可以在保持精细度的同时增加或减少模型的计算负担(Gflops)。

  • 特征5(性能优化):模型的性能通过调整不同的块设计(例如,使用adaLN或adaLN-Zero)来优化,这些设计影响着模型在特定任务上的效率和效果。

  • 特征6(训练策略):适当的训练策略,如使用指数移动平均(EMA)和特定的优化器(如AdamW),对于达到高性能至关重要。

OpenAI Sora 设计思路

在Sora中,Diffusion Transformer(DiT)通常承担着生成模型的角色,就是负责生成高质量图像或视频的核心组件,是核心的生成组件。

负责从噪声化数据中生成清晰、高质量的图像或视频内容。

DiT结合了Transformer架构的能力和扩散模型的生成能力,使得Sora能够根据文本提示来创造逼真的视频序列。

阶段1: 数据准备和预处理

  • 子特征1(文本到视频的训练数据):这是链条的起点,涉及收集大量的视频及其描述性文字说明。

    例如,可能会从YouTube等平台获取视频,并提取或生成相关的描述性文字。

阶段2: 架构设计

  • 子特征2(基本架构):确定了将使用基于Transformer的扩散模型架构。

    在这个阶段,设计者需要决定模型的关键架构元素,例如如何集成文本提示和噪声图像块。

    在设计阶段,确定Sora模型将采用基于Transformer的扩散模型架构。

    这意味着DiT是用来构建模型的基本框架,它将负责处理和生成图像或视频块。

阶段3: 输入数据的结构化

  • 子特征3(视频的类token化):将预处理后的视频数据转换成模型可以理解的形式,这类似于NLP中的tokenization过程。

    视频被压缩并分割成时空补丁,为后续的模型训练准备。

    DiT需要能够处理序列化后的视频数据,即将视频分割成的时空补丁,这些补丁类似于自然语言处理中的tokens。

阶段4: 视频压缩和表示

  • 子特征4(视频压缩网络):使用视频压缩网络进一步处理视频数据,生成与视频大小成正比的3D visual patch array。

    这一步是为了将视频信息密集地封装成可处理的形式。

    在视频压缩和表示阶段,DiT需要从视频压缩网络接收压缩后的3D visual patch array,并将其转换为1D array of patches,这是DiT进行训练的直接输入。

阶段5: 模型训练和优化

  • 这个阶段并未在您的列表中直接提及,但在实际应用中是至关重要的。

    在这里,模型会根据设计好的架构和输入数据进行训练,以学习如何根据文本提示生成视频内容。

    在这个阶段,DiT被训练以预测从噪声中恢复出原始“清晰”图像块。

    这涉及到将带有噪声的输入补丁和条件信息(例如文本提示)作为输入,DiT必须学会如何去噪声化这些输入并恢复原始内容。

阶段6: 输出生成

  • 最终阶段是利用训练好的模型生成新的视频内容。

    模型会将潜在的视觉补丁转化为实际的视频输出,以匹配输入的文本提示。

    训练好的DiT能够接收新的噪声化的补丁,结合文本提示来生成新的视频内容。

    这个生成的过程涉及到逐步减少噪声并且细化细节,直到生成高质量的视频输出。

以制作一段根据文本提示 “一只猫坐在窗台上看雨” 的视频为例。

阶段1: 数据准备和预处理

  • 收集包含猫在不同环境中的视频和相应描述。使用类似DALL·E 3的技术为这些视频生成详细的描述性文字说明。

阶段2: 架构设计

  • 设计基于Transformer的扩散模型Sora,确保它能够理解文本提示并生成相应的视频内容。
  • 此时,DiT作为模型的核心部分被确定下来,它将处理视频和图像的潜在编码。

阶段3: 输入数据的结构化

  • 将视频压缩并分割成时空补丁(tokens),以符合DiT处理的格式。
  • 例如,将 “一只猫坐在窗台上看雨” 的场景视频压缩和分割,准备成可训练的数据格式。

阶段4: 视频压缩和表示

  • 通过视频压缩网络将输入视频的时间和空间维度同时进行压缩,为DiT提供训练数据。

阶段5: 模型训练和优化

  • 在这个阶段,DiT学习如何基于文本提示和带有噪声的视频补丁(tokens),预测出原始的“清晰”视频补丁。
  • 模型通过大量的训练数据学习 “一只猫坐在窗台上看雨” 的文本提示对应的视频内容特征。

阶段6: 输出生成

  • 使用训练好的DiT模型,输入带有噪声的补丁和 “一只猫坐在窗台上看雨” 的文本提示,模型能够生成匹配这一描述的新视频内容。
  • 通过逐步去噪和细化补丁,DiT最终输出一段高质量的视频,展示了一只猫坐在窗台上看着外面的雨景。

在这个逻辑链条中,DiT起着核心作用,它不仅处理了从文本到视频内容生成的关键步骤,还确保了生成的视频内容能够尽可能地贴近用户的文本提示。

OpenAI Sora 工作流程

Sora是一个基于文本条件的扩散模型,使用了Transformer架构来生成视频。

步骤1: 视频数据的压缩和转换

想象你有一个视频,里面是一只猫在玩耍。

首先,Sora会将这个视频压缩到一个低维度的潜在空间中。

这就像是把视频简化成一系列基本的图像特征,这样做的目的是为了减少处理视频时需要的数据量。

步骤2: 时空补丁的提取

接下来,Sora会将压缩后的视频分解成一系列小块,称为时空补丁。

这些补丁包含了视频的时间和空间信息。

你可以将每个补丁视为视频中的一个小片段。

这一步骤类似于将一篇文章分割成单词或句子,以便更好地理解和处理。

步骤3: 使用Transformer处理补丁

这些补丁接着被送入一个基于Transformer的模型中进行处理。

Sora通过分析这些补丁和相应的文本提示(例如,“一只猫在玩耍”),学习如何根据文本提示生成对应的视频内容。

Transformer在这里的作用是理解补丁之间的关系,并根据文本提示来预测每个补丁应该展示的内容。

步骤4: 生成视频内容

一旦Sora模型训练完成,它就能够接受新的文本提示和带有噪声的补丁作为输入,生成新的视频内容。

Sora会预测这些噪声补丁背后的原始“干净”图像,然后将它们组合起来形成完整的视频。

步骤5: 视频解码

最后,Sora使用一个解码器将这些潜在的视觉补丁转换回像素级的视频图像。

这就像是将简化后的图像特征重新转换成详细的视频片段。

 
假设你想要Sora生成一段视频,视频内容是“一只猫坐在窗台上看雨”。

你会给Sora输入这段文本提示。

Sora会使用它训练好的模型,根据这个文本提示生成一系列代表视频的补丁,这些补丁最终会被转换成你想要的视频内容。

简而言之,Sora通过将视频转换成更易于处理的格式(时空补丁),然后利用Transformer模型的强大能力来理解和生成视频内容,最终再将这些内容转换回实际的视频。

这个过程允许Sora根据文本提示来创造出新的、高质量的视频内容。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯算法赛 第 6 场 小白入门赛 解题报告 | 珂学家 | 简单场 + 元宵节日快乐

前言 整体评价 因为适逢元宵节,所以这场以娱乐为主。 A. 元宵节快乐 题型: 签到 节日快乐,出题人也说出来自己的心愿, 祝大家AK快乐! import java.util.Scanner;public class Main {public static void main(String[] args) {System.out.println(&qu…

信息抽取(UIE):使用自然语言处理技术提升证券投资决策效率

一、引言 在当今快速变化的证券市场中,信息的价值不言而喻。作为一名资深项目经理,我曾领导一个关键项目,旨在通过先进的信息抽取技术,从海量的文本数据中提取关键事件,如企业并购、新产品发布以及政策环境的变动。这些…

学会字符转换

字符转换 题目描述:解法思路:解法代码:运行结果: 题目描述: 输入⼀一个字符串,将字符串中大写字母全部转为小写字母,小写字母转成大写字母,其他字符保持不变。注:字符串…

typescript使用解构传参

看下面这个函数 interface Student {id: number;name: string;class: string;sex: string;}function matriculation(student: Student) {//...}我们要调用它,就需要传递一个实现了Student约束的对象进去 interface Student {id: number;name: string;class: string;sex: string…

音视频数字化(数字与模拟-电视)

上一篇文章【音视频数字化(数字与模拟-音频广播)】谈了音频的广播,这次我们聊电视系统,这是音频+视频的采集、传输、接收系统,相对比较复杂。 音频系统的广播是将声音转为电信号,再调制后发射出去,利用“共振”原理,收音机接收后解调,将音频信号还原再推动扬声器,我…

Liunx--nginx负载均衡--前后端分离项目部署

一.nginx简介 Nginx是一个高性能的HTTP和反向代理服务器,它以其轻量级、占用资源少、并发能力强而广受欢迎。 详细介绍 开发背景与特点:Nginx由俄罗斯人Igor Sysoev开发,它是一个自由的、开源的软件。Nginx设计上注重性能和效率,能…

数据库安全性与完整性设计

文章标签集合[数据库安全,数据敏感,通信安全,MD5,盐加密] 1 系统设计 1.1设计目标 (1)确定系统中需要保护的敏感数据和通信内容; (2)设计合适的签名、加密和解密算法; (3)实现…

docker-compose 搭建laravel环境

laravel环境包含nginx,mysql,php7.4,redis 一、安装好docker后pull镜像 1.nginx镜像 docker pull nginx:latest单独启动容器 docker run --name nginx -p 80:80 -d nginx 2.php镜像 docker pull php:7.4-fpm3.mysql镜像 docker pull mysql:5.74.redis镜像 docker pull r…

Mysql5.7主从复制搭建

注意不适用Mysql8 Docker搭建Mysql主从复制 docker run -p 3307:3306 --name mysql-master \ -v /usr/local/develop/mysql-master/log:/var/log/mysql \ -v /usr/local/develop/mysql-master/data:/var/lib/mysql \ -v /usr/local/develop/mysql-master/conf:/etc/mysql/con…

基于相位的运动放大:如何检测和放大难以察觉的运动(02/2)

目录 一、说明二、算法三、准备处理四、高斯核五、带通滤波器六、复杂的可操纵金字塔七、最终预处理步骤八、执行处理九、金字塔的倒塌十、可视化结果十一、结论 一、说明 日常物体会产生人眼无法察觉的微妙运动。在视频中,这些运动的幅度小于一个像素,…

记录一些mac电脑重装mysql和pgsql的坑

为什么要重装,是想在mac电脑 创建data目录…同事误操作,导致电脑重启不了.然后重装系统后,.就连不上数据库了.mysql和pgsql两个都连不上.网上也查了很多资料.实在不行,.就重装了… 重装mysql. 1.官网下载 https://www.mysql.com/downloads/ 滑到最下面 选择 选择对应的芯片版本…

密码学及其应用(应用篇15)——0/1背包问题

1 问题背景 背包问题是一个经典的优化问题,在计算机科学和运筹学中有着广泛的应用。具体到你提到的这个问题,它是背包问题中的一个特例,通常被称为0/1背包问题。这里,我们有一系列的正整数 ,以及一个正整数&#xff0c…

【Linux】--- 详解Linux软件包管理器yum和编辑器vim

目录 一、Linux软件包管理器 - yum1.1 yum和软件包是什么1.2 Linux系统(Centos)的生态1.3 yum相关操作1.4 yum本地配置 二、Linux编辑器 - vim使用2.1 vim的基本概念2.2 vim命令模式命令集2.3 vim末行模式命令集2.4 关于vim的几个相关问题 一、Linux软件包管理器 - yum 1.1 yu…

Open3D 点云法向量计算与可视化 (25)

Open3D 点云法向量计算与可视化 (25) 一、算法原理二、算法实现三、可视化显示和长度调节一、算法原理 通常计算点云的法向量可以使用以下两种常见的方法: 最小二乘法(Least Squares Method):该方法通过拟合局部表面的平面来计算法向量。对于给定点周围的邻域,可以通过…

云尚办公-0.3.0

5. controller层 import pers.beiluo.yunshangoffice.model.system.SysRole; import pers.beiluo.yunshangoffice.service.SysRoleService;import java.util.List;//RestController:1.该类是控制器;2.方法返回值会被写进响应报文的报文体,而…

分布式架构(分布式ID+分布式事务)

分布式架构 分布式事务产生的场景: 跨JVM进程产生的分布式事务 单体系统访问多个数据库实例 多服务访问同一个数据库实例 CAP理论 C:一致性,指写操作后的读操作可以读取到最新的数据状态,当数据分布在多个节点上&#xff0…

【C++】C++对C语言的关系,拓展及命名空间的使用

文章目录 📝C简述C融合了3种不同的编程方式:C和C语言关系是啥呢?C标准 🌠C应用🌠C语言优点第一个C程序 🌠命名空间🌠命名空间的使用命名空间的定义 🌠怎么使用命名空间中的内容呢&am…

《Docker 简易速速上手小册》第5章 Docker Compose 与服务编排(2024 最新版)

文章目录 5.1 理解 Docker Compose5.1.1 重点基础知识5.1.2 重点案例:部署 Flask 应用和 Redis5.1.3 拓展案例 1:多服务协作5.1.4 拓展案例 2:使用自定义网络 5.2 编排多容器应用5.2.1 重点基础知识5.2.2 重点案例:部署 Flask 应用…

ARMv8-AArch64 的异常处理模型详解之异常处理详解(同步异常和异步异常的分析和处理)

这里写目录标题 一,同步异常的分析1.1 同步异常分析-异常链接寄存器ELR1.2 同步异常分析-异常综合寄存器ESR,Exception Syndrome Register1.3 同步异常分析-错误地址寄存器FAR,Fault Address Register 二, 同步异常的处理示例 Synchronous ex…

wsl添加swap

机器的内存比较少,用wsl 写代码和编译的时候,发现内存不怎么够, 系统的可以分配的内存也不怎么够,需要增加点swap 来解决问题 方法比较简单,配置下.wslconfig 文件,添加下swap 就能解决这个问题 配置文件添…