Sora DiT图解【文生视频】

“在古老的迪萨罗斯大陆,曾经住着一位传奇人物,名叫索拉(Sora)。这个传奇人物体现了无限潜力的本质,包括天空的浩瀚和壮丽。

当它飞得很高,彩虹色的翅膀横跨广阔的空间,光线从它引人注目的身体上反射出来时,人们可以听到“索拉就是天空”这句话在天空中回荡。它之所以成为传奇,不仅是因为它史诗般的巨大,还因为它能够驾驭散落在旋转云层中的光元素。凭借其强大的力量,索拉只需旋转一下就能创造出神奇的魔法,令人叹为观止!

他们说,Sora活着,日复一日地磨练技能,变得越来越强大,准备在黄金时刻飞翔。当你今天看到天空中一抹深红色时,你就会知道这是传说中的一粒飞向光之领域的小精灵!”

这是我给儿子讲的一个故事,讲的是一条生活在遥远国度的神话中的龙。我们把它叫做“索拉传说”。他非常喜欢这个故事,因为Sora又大又强壮,照亮了天空。当然,现在他还不懂变形金刚和扩散的概念,他只有四岁,但他确实理解一条使用光的力量统治着 DiTharos 的宽宏大量的龙的概念。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

1、Open AI 的 Sora

这个故事与我们世界的 Sora 非常相似,Open AI 的文本转视频模型在人工智能领域出现并风靡全球。原则上,Sora 是由 William Peebles 和 Saining Xie 于 2023 年开发的Diffusion Transformer (DiT)。

换句话说,它使用扩散的思想来预测视频,并使用Transformer的强度进行下一级扩展。为了进一步理解这一点,让我们尝试找到这两个问题的答案:

  • 当给出提示时,Sora 会做什么?
  • 它如何结合扩散和transformer的思想?

说到 Sora 制作的视频,这是我最喜欢的一个,意大利街头有一只可爱的斑点狗。它的动作多么自然!

视频使用的提示:“摄像机直接面对意大利布拉诺色彩缤纷的建筑物。一只可爱的斑点狗透过一楼建筑物的窗户往外看。许多人沿着建筑物前的运河街道散步和骑自行车。”

Sora 是如何做到这一点的?

事不宜迟,让我们深入了解细节,看看 Sora 如何根据文本提示制作这些超逼真的视频。

2、Sora 是如何工作的?

再次感谢 Tom Yeh 教授的精彩 AI by Hand 系列,我们有这篇关于 Sora 的精彩文章供我们讨论。(以下所有图片,除非另有说明,均由 Tom Yeh 教授从上述 LinkedIn 帖子中提供,我已征得他的许可对其进行了编辑。)

那么,我们开始吧:

我们的目标 — 根据文本提示生成视频。

我们得到:

  • 训练视频
  • 文本提示
  • 扩散步骤 t = 3

对于我们的例子,你能猜出我们的文本提示是什么吗?你说得对。它是“Sora 是天空”。扩散步骤 t = 3 表示我们正在添加噪声或分三步扩散模型,但为了说明起见,我们将在此示例中坚持使用一步。

什么是扩散?

扩散主要指粒子散射的现象——想想我们如何享受从云层后面窥视的柔和阳光。这种柔和的光芒可以归因于阳光穿过云层时的散射,导致光线向不同方向扩散。

粒子的随机运动驱动了这种扩散。这正是图像生成中使用的扩散模型所发生的事情。图像中添加了随机噪声,导致图像中的元素偏离原始图像,从而为创建更精致的图像让路。

当我们谈论图像模型的扩散时,要记住的关键思想是“噪声”。

过程从这里开始:

[1] 将视频转换为补丁

在进行文本生成时,模型将大型语料库分解成称为标记(token)的小块,并使用这些标记进行所有计算。同样,Sora 将视频分解成称为视觉补丁(visual patches)的较小元素,以简化工作。

因为我们在谈论视频,所以我们在谈论多帧中的图像。在我们的示例中,我们有四个帧。四个帧或矩阵中的每一个都包含创建图像的像素。

第一步是将该训练视频转换为如下所示的 4 个时空补丁:

[2] 降低这些视觉块的维度:编码器

接下来,降维。降维的思想已经存在了一个多世纪(琐事:主成分分析,也称为 PCA,由卡尔·皮尔逊于 1901 年提出),但其重要性并没有随着时间的推移而消退。

Sora 也使用它!

当我们谈论神经网络时,降维的基本思想之一是编码器。编码器的设计通过专注于捕获数据中最相关的特征,将高维数据转换为低维数据。双方共赢:它提高了计算的效率和速度,同时算法获得了有用的数据。

Sora 使用相同的思想将高维像素转换为低维潜在空间。为此,我们将块与权重和偏差相乘,然后使用 ReLU。

注意:

线性变换:输入嵌入向量乘以权重矩阵 W,然后加上偏差向量 b,
z = Wx+b,其中 W 是权重矩阵,x 是我们的词嵌入,b 是偏差向量。

ReLU 激活函数:接下来,我们将 ReLU 应用于这个中间 z。

ReLU 返回输入的元素最大值和零。从数学上讲,h = max{0,z}。
  • 这里的权重矩阵是一个 2x4 矩阵 [ [1, 0, -1, 0], [0, 1, 0, 1] ],偏差为 [0,1]。
  • 这里的补丁矩阵是 4x4。

权重矩阵 W 的转置和偏差 b 与补丁的乘积,然后是 ReLU,为我们提供了一个潜在空间,它只是一个 2x4 矩阵。因此,通过使用视觉编码器,“模型”的维度从 4(2x2x1)减少到 2(2x1)。

在原始 DiT 论文中,这一缩减从 196,608(256x256x3)减少到 4096(32x32x4),这是一个巨大的缩减。想象一下,使用 196,608 个像素与使用 4096 个像素相比,缩减了 48 倍!

紧接着这一缩减,我们进入了整个过程中最重要的步骤之一 — 扩散。

[3] 用噪声扩散模型

为了引入扩散,我们在上一步中获得的潜在特征中添加采样噪声,以找到噪声潜在特征。这里的目标是让模型检测噪声是什么。

这本质上是图像生成扩散的理念。

通过向图像添加噪声,要求模型猜测噪声是什么以及它是什么样子。作为回报,模型可以根据它从噪声图像中猜测和学习到的内容生成一个全新的图像。

它也可以被视为从语言模型中删除一个单词并要求它猜测删除的单词是什么。

现在训练视频已经减少并扩散了噪声,下一步是利用文本提示来获得提示所倡导的视频。我们通过使用自适应规范层进行调节来实现这一点。

[4]-[6] 通过自适应规范层进行调节

“调节”(conditioning)本质上意味着我们尝试使用我们可用的附加信息来影响模型的行为。例如:由于我们的提示是“Sora 是天空”,我们希望模型专注于天空或云等元素,而不是重视帽子或植物等其他概念。因此,自适应规范层,用更好的术语来说,就是根据收到的输入动态地缩放和移动网络中的数据。

什么是缩放和移位?

缩放发生在我们乘法时,例如,我们可以从变量 A 开始。假设当我们将其乘以 2 时,我们得到 2*A,这将 A 的值放大或缩放 2。如果我们将其乘以 ½,则该值将缩小 0.5。

移位用加法表示,例如,我们可能在数字线上行走。我们从 1 开始,然后被要求移位到 5。我们怎么做?我们可以加 4 得到 1+4=5,也可以加一百个 0.4 得到 5,1+(100*0.04 )= 5。这完全取决于我们是想采取更大的步骤(4)还是更小的步骤(0.04)来实现我们的目标。

[4] 编码条件

为了利用条件(在我们的例子中是用于构建模型的信息),首先我们将其转换为模型可以理解的形式,即向量。

  • 该过程的第一步是将提示转换为文本嵌入向量。
  • 下一步是将步骤 t = 3 转换为二进制向量。
  • 第三步是将这些向量连接在一起。

[5] 估计尺度/偏移

请记住,我们在这里使用“自适应”层规范,这意味着它根据模型的当前条件调整其值。因此,为了捕捉数据的正确本质,我们需要在数据中包含每个元素的重要性。这是通过估计尺度和偏移来完成的。

为了为我们的模型估计这些值,我们将提示和扩散步骤的连接向量与权重相乘,并将偏差添加到其中。这些权重和偏差是模型学习和更新的可学习参数。

备注:在我看来,结果向量中的第三个元素应该是 1。这可能是原始帖子中的一个小错误,但作为人类,我们可以犯一点错误,不是吗?为了保持一致性,我继续使用原始帖子中的值。

这里的目标是估计比例 [2,-1] 和移位 [-1,5](因为我们的模型大小是 2,所以我们有两个比例和两个移位参数)。我们分别将它们保持在“X”和“+”下。

[6] 应用缩放/移位

为了应用上一步中获得的缩放和移位,我们将步骤 3 中的噪声潜在值乘以 [2, -1],并通过添加 [-1,5] 进行移位。

结果就是“条件”噪声潜伏。

[7]-[9] Transformer
最后三个步骤包括将 Transformer 元素添加到上述扩散和条件步骤中。此步骤帮助我们找到模型预测的噪声。

[7] 自我注意

这是 Transformer 背后的关键思想,使它们如此非凡!

什么是自我注意?

它是一种机制,通过该机制,句子中的每个单词都会分析其他每个单词并衡量它们对彼此的重要性,从而理解文本中的上下文和关系。

为了启用自我注意,将条件噪声潜伏输入到 Query-Key 函数中以获得自我注意矩阵。为简单起见,这里省略了 QK 值。

[8] 注意力池

接下来,我们将条件噪声潜伏与自我注意矩阵相乘以获得注意力加权特征。

[9] 逐点前馈网络

再次回到基础,我们将注意力加权特征与权重和偏差相乘以获得预测噪声。

训练

现在的最后一步是使用预测噪声和采样噪声(基本事实)之间的均方误差来训练模型。

[10] 计算 MSE 损失梯度并更新可学习参数

使用 MSE 损失梯度,我们使用反向传播来更新所有可学习的参数(例如自适应范数层中的权重和偏差)。

编码器和解码器参数已冻结且不可学习。

(备注:第二行的第二个元素应为 -1,这是一个微小的错误,可以使情况变得更好)。

[11]-[13] 生成新样本

[11] 去噪

现在我们已准备好生成新视频(耶!),我们首先需要消除我们引入的噪音。为此,我们从噪声潜伏期中减去预测的噪声以获得无噪声潜伏期。

请注意,这与我们原来的潜在空间不同。原因是我们经历了多个条件和注意步骤,将问题的背景纳入模型中。因此,让模型在生成视频时更好地了解其目标应该是什么。

[12] 将潜在空间转换回像素:解码器

就像我们对编码器所做的那样,我们将潜在空间补丁与权重和偏差相乘,然后使用 ReLU。我们可以在这里观察到,在解码器的工作之后,模型回到了原始维度 4,而当我们使用编码器时,这个维度被降低到了 2。

[13] 是时候制作视频了!

最后一步是将上述矩阵的结果排列成一系列帧,最终得到我们的新视频。好极了!

至此,我们结束了这项极其强大的技术。恭喜,您已经创建了 Sora 视频!

总结上述所有内容,以下是 5 个关键点:

  • 将视频转换为视觉块,然后降低其维度至关重要。视觉编码器是我们的朋友。
  • 顾名思义,扩散是此方法中的关键。向视频添加噪声,然后在每个后续步骤(以不同的方式)对其进行处理,这是此技术所依赖的。
  • 接下来是transformer架构,它增强了扩散过程的能力,同时扩大了模型的规模。
  • 一旦模型经过训练并准备好收敛到解决方案,两个 D——去噪器和解码器就派上用场了。一个是去除噪音,另一个是将低维空间投影到其原始维度。
  • 最后,重新排列解码器的结果像素以生成所需的视频。

读完这篇文章后,我建议你再读一遍开头的故事。你能发现 DiTharos 的 Sora 和我们世界的 Sora 之间的相似之处吗?

3、Diffusion-Transformer (DiT) 组合

Sora 能够制作出如此多的视频,值得一提的是,DiT组合非常强大。与此同时,视觉补丁的概念为调整一系列图像分辨率、宽高比和持续时间开辟了一条途径,从而允许进行最大程度的实验。

总的来说,可以说这个想法是开创性的,而且毫无疑问会继续存在。根据《纽约时报》的这篇文章,Sora 的名字取自日语中的天空一词,旨在唤起无限潜力的概念。在见证了最初的承诺之后,Sora 确实在人工智能领域开辟了新领域。现在还有待观察它能否经受住安全性和时间的考验。

正如 DiTharos 的传说所说——“Sora 继续生存,日复一日地磨练技能,变得越来越强大,时刻准备着在黄金时刻展翅高飞!”


原文链接:Sora DiT深入研究 - BimAnt

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

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

相关文章

QTreeView第一列自适应

通过setStretchLastSection(bool stretch)可以设置最后一列自适应,对于QTreeView,stretch默认为true。但有时候我们需要设置第一列自适应,比如文件浏览器,共有名称、大小和修改日期三列,大小和日期的宽度几乎是固定的,但名称却可长可短,此时我们希望在窗口大小变化时,第…

【算法专题--栈】用栈实现队列 -- 高频面试题(图文详解,小白一看就懂!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双栈 模拟 队列 🥝栈 和 队列 的特性 🍍具体思路 🍍案例图解 四、总结与提炼 五、共勉 一、前言 用栈实现队列 这道题,可以说是--栈专题--,最经典的一道题&…

Python数据分析-股票分析和可视化(深证指数)

一、内容简介 股市指数作为衡量股市整体表现的重要工具,不仅反映了市场的即时状态,也提供了经济健康状况的关键信号。在全球经济体系中,股市指数被广泛用于预测经济活动,评估投资环境,以及制定财政和货币政策。在中国…

【入门】5分钟了解卷积神经网络CNN是什么

本文来自《老饼讲解-BP神经网络》https://www.bbbdata.com/ 目录 一、卷积神经网络的结构1.1.卷积与池化的作用2.2.全连接层的作用 二、卷积神经网络的运算2.1.卷积层的运算2.2.池化的运算2.3.全连接层运算 三、pytorch实现一个CNN例子3.1.模型的搭建3.2.CNN完整训练代码 CNN神…

几种热管的构造

1、超薄热管构造形式 在实际应用中,超薄热管通常定义为厚度小于2.0mm的平板热管。超薄热管很薄,可紧贴电子元件表面散热,故被广泛应用于移动和可携带电子设备,如智能手机、笔记本电脑和智能手表。用于笔记本电脑和平板电脑的超薄…

【机器学习】Python中sklearn中数据基础处理与分析过程

📝个人主页:哈__ 期待您的关注 目录 1. 简介 ​编辑 1.1 什么是Scikit-learn 介绍Scikit-learn 应用领域 1.2 安装Scikit-learn 安装步骤 必要的依赖 2. 数据处理 2.1 创建示例数据 2.2 数据预处理 处理缺失值 特征编码 特征缩放 3. 数据…

设计者思维丨权限轴

应用背景 数据的本质是为了业务服务,从而达到更高效的工作方式,实现数据对业务的赋能和推动作用。 因此在构建报表时,需要开发者有设计思维,能够考虑多种应用场景,帮助业务解决实际应用中的问题。 例如,在实…

昇思MindSpore学习入门-函数式自动微分

函数式自动微分 神经网络的训练主要使用反向传播算法,模型预测值(logits)与正确标签(label)送入损失函数(loss function)获得loss,然后进行反向传播计算,求得梯度&#…

论文解读:【CVPR2024】DUSt3R: Geometric 3D Vision Made Easy

论文“”https://openaccess.thecvf.com/content/CVPR2024/papers/Wang_DUSt3R_Geometric_3D_Vision_Made_Easy_CVPR_2024_paper.pdf 代码:GitHub - naver/dust3r: DUSt3R: Geometric 3D Vision Made Easy DUSt3R是一种旨在简化几何3D视觉任务的新框架。作者着重于…

Java高级重点知识点-17-异常

文章目录 异常异常处理自定义异常 异常 指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。Java处 理异常的方式是中断处理。 异常体系 异常的根类是 java.lang.Throwable,,其下有两个子类:ja…

实验4 图像空间滤波

1. 实验目的 ①掌握图像空间滤波的主要原理与方法; ②掌握图像边缘提取的主要原理和方法; ③了解空间滤波在图像处理和机器学习中的应用。 2. 实验内容 ①调用 Matlab / Python OpenCV中的函数,实现均值滤波、高斯滤波、中值滤波等。 ②调…

java基于ssm+jsp 多用户博客个人网站

1管理员功能模块 管理员登录,管理员通过输入用户名、密码等信息进行系统登录,如图1所示。 图1管理员登录界面图 管理员登录进入个人网站可以查看;个人中心、博文类型管理、学生博客管理、学生管理、论坛信息、管理员管理、我的收藏管理、留…

Linux多进程和多线程(一)-进程的概念和创建

进程 进程的概念进程的特点如下进程和程序的区别LINUX进程管理 getpid()getppid() 进程的地址空间虚拟地址和物理地址进程状态管理进程相关命令 ps toppstreekill 进程的创建 并发和并行fork() 父子进程执行不同的任务创建多个进程 进程的退出 exit()和_exit() exit()函数让当…

微短剧市场还能火多久?短剧小程序是否有必要搭建?,现在入场到底晚不晚?

我公司在2019年开始都是做软件开发的,从2022到现在(2024)特别深有体会,在2022年的时候我公司还是在全部做外包项目,一年大概遇到了10多个咨询短剧领域的软件定制,但是当时我只是以为是一个影视播放的程序&a…

7.优化算法之分治-快排归并

0.分治 分而治之 1.颜色分类 75. 颜色分类 - 力扣(LeetCode) 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums ,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。 我们使用整数…

推动多模态智能模型发展:大型视觉语言模型综合多模态评测基准

随着人工智能技术的飞速发展,大型视觉语言模型(LVLMs)在多模态应用领域取得了显著进展。然而,现有的多模态评估基准测试在跟踪LVLMs发展方面存在不足。为了填补这一空白,本文介绍了MMT-Bench,这是一个全面的…

Django 模版继承

1&#xff0c;设计母版页 Test/templates/6/base.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><!-- 修正了模板标签的全角字符问题 -->{% block title %}<title>这个是母版页</title>{…

leetCode.93. 复原 IP 地址

leetCode.93. 复原 IP 地址 题目思路&#xff1a; 代码 // 前导零的判断方法&#xff1a;如果第一个数是0&#xff0c;且第二个数还有数据&#xff0c;那就是前导0&#xff0c;要排除的 // 注意跟单个 0 区分开 class Solution { public:vector<string> res;vector<…

Opencv+python模板匹配

我们经常玩匹配图像或者找相似&#xff0c;opencv可以很好实现这个简单的小功能。 模板是被查找目标的图像&#xff0c;查找模板在原始图像中的哪个位置的过程就叫模板匹配。OpenCV提供的matchTemplate()方法就是模板匹配方法&#xff0c;其语法如下&#xff1a; result cv2.…

【活动感想】筑梦之旅·AI共创工坊 workshop 会议回顾

目录 &#x1f30a;1. 会议详情 &#x1f30a;2. 会议回顾 &#x1f30d;2.1 主持人开场 &#x1f30d;2.2 元甲-小当家 AI 驱动的创意儿童营养早餐料理机&今天吃什么App &#x1f30d;2.3 Steven- A l 心理疗愈认知 &#x1f30d;2.4 伯棠-诸子百家(xExperts)-多智能…