【Datawhale组队学习:Sora原理与技术实战】Sora技术原理

news2024/11/16 8:43:19

Sora能力边界探索

在这里插入图片描述

  • 最大支持60秒高清视频生成,以及基于已有短视频的前后扩展,同时保持人物/场景的高度一致性
  • 如奶茶般丝滑过渡的视频融合能力
  • 同一场景的多角度/镜头的生成能力
  • 具有动态摄像机运动的视频。随着摄像机的移动和旋转,人和其
    他场景元素在三维空间中一致地移动
  • 支持任意分辨率,宽高比的视频输出
  • Sora对物理规律的理解仍然十分有限

Sora能力总结

  • Text-to-video: 文生视频
  • Image-to-video: 图生视频
  • Video-to-video: 改变源视频风格or场景
  • Extending video in time: 视频拓展(前后双向)
  • Create seamless loops: Tiled videos that seem like they never end
  • Image generation: 图片生成 (size最高达到 2048 x 2048)
  • Generate video in any format: From 1920 x 1080 to 1080 x 1920 视频输出比例自定义
  • Simulate virtual worlds: 链接虚拟世界,游戏视频场景生成
  • Create a video: 长达60s的视频并保持人物、场景一致性

Sora模型训练流程

Video generation models as world simulators
https://openai.com/research/video-generation-models-as-world-simulators

模型训练流程

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

模型训练:扩散模型 DDPM

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

模型训练:基于扩散模型的主干 U-Net

  1. U-Net 网络模型结构把模型规模限定;
  2. SD/SDXL 作为经典网络只公布了推理和微调;
  3. 国内主要基于 SD/SDXL 进行二次创作;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Sora关键技术拆解

einops是一个用于操作张量的库,它的出现可以替代我们平时使用的reshape、view、transpose和
permute等操作
einops支持numpy、pytorch、tensorflow等
y = x.transpose(0, 2, 3, 1) 等同
y = rearrange(x, ‘b c h w -> b h w c’)

self.gkv = nn.Linear(self.embed dim, self.head size * self.n heads * 3,bias=False
self.scale=self.head size **-0.5
self.register buffer(
	"tril',
	torch.tril(torch.ones(self.seg len,self.seg len))
self.attn dropout =nn.Dropout(0.)

def forward(self,x):
	b,t,c=x.shape
	# q,k,v shape individually: batch size x seg len x embed dim
	# we know that gk t=gxkt, where g=bxtxhead dim, k t=bxhead timxt
	q,k,v=self.qkv(x).chunk(3,dim=-1)
	q=rearrange(q,'bt(h n)->bnt h',n=self.n heads)# h= head size
	k=rearrange(v,'b t(h n)->bnth',n=self.n heads)
	v=rearrange(v,'bt(hn)->bnth',n=self.n heads)

	qkt=einsum(q,k,'b n tl h, bn t2 h->bn tl t2')* self.scale

	weights=qk t.masked fill(m==0,float('-inf'))weights=F.softmax(weights,dim=-1)
	weights =self.attn dropout(weights)
	attention =weights @ v# batch xn heads x seg len x head size
	attention=rearrange(attention,'bnth->bt(n h)')
	return attention

patches = rearrange(im,'c (h pl)(w p2)->(h w)c pl p2',pl=patch size,p2=patch size)
patches.shape
# torch.Size([196,3,16,16])

figure =plt.figure(figsize=(5,5))
for i in range(patches.size(0)):
	img =patchesli].permute(1,2,0)
	fiqure.add subplot(14,14,i+1)
	plt.axis('off')
	plt.imshow(img)
plt.show()

在这里插入图片描述
在这里插入图片描述

  • ViT 尝试将标准 Transformer 结构直接应用于图
    像;
  • 图像被划分为多个 patch后,将二维 patch 转换为一维向量作为 Transformer 的输入;

技术报告分析

Diffusion Transformer,= VAE encoder + ViT + DDPM + VAE

DiT 利用 transformer 结构探索新的扩散模型,成功用 transformer 替换 U-Net 主干
在这里插入图片描述

  • 例如输入一张256x256x3的图片,经过Encoder后得到对应的latent
  • 推理时输入32x32x4的噪声,得到32x32x4的latent
  • 结合当前的 step t , 输入label y , 经过N个Dit Block通过 MLP 进行输出
  • 得到输出的噪声以及对应的协方差矩阵
  • 经过T个step采样,得到32x32x4的降噪后的latent
  • 在训练时,需要使得去躁后的latent和第一步得到的latent尽可能一致

网络结构:Diffusion Transformer,DiT

在这里插入图片描述

  • DiT 首先将将每个 patch 空间表示Latent 输入到第一层网络,以此将空间输入转换为 tokens 序列。
  • 将标准基于 ViT 的 Patch 和Position Embedding 应用于所有输入token,最后将输入 token 由Transformer 处理。
  • DiT 还会处理额外信息,e.g. 时间步长、类别标签、文本语义等

网络结构: DALLE 2

在这里插入图片描述

  1. 将文本提示输入文本编码器,该训练过的编码器便将文本提示映射到表示空间;
  2. 先验模型将文本编码映射到图像编码,图像编码捕获文本编码中的语义信息;
  3. 图像解码模型随机生成一幅从视觉上表现该语义信息的图像;

技术总结

  1. Scaling Law:模型规模的增大对视频生成质量的提升具有明确意义,从而很好地解决视
    频一致性、连续性等问题;
  2. Data Engine:数据工程很重要,如何设计视频的输入(e.g. 是否截断、长宽比、像素
    优化等)、patches 的输入方式、文本描述和文本图像对质量;
    AI Infra:AI 系统(AI 框架、AI 编译器、AI 芯片、大模型)工程化能力是很大的技术
    壁垒,决定了 Scaling 的规模。
  3. LLM:LLM 大语言模型仍然是核心,多模态(文生图、图生文)都需要文本语义去牵引和
    约束生成的内容,CLIP/BLIP/GLIP 等关联模型会持续提升能力;

学习资源

DataWhale社区Sora学习资源:
https://datawhaler.feishu.cn/wiki/RKrCw5YY1iNXDHkeYA5cOF4qnkb#KljXdPfWJo62zwxdzYIc7djgnlf
学习视频:
https://www.bilibili.com/video/BV1wm411f7gf/?spm_id_from=333.1350.jump_directly&vd_source=299ce227a965167d79f374c15b2fddf5

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

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

相关文章

JVM相关面试题(2024大厂高频面试题系列)

一、JVM的组成 1、JVM由哪些部分组成,运行流程是什么? 回答:在JVM中共有四大部分,分别是Class Loader(类加载器)、Runtime Data Area(运行时数据区,内存分区)、Execut…

mybatisPlus中 Mapper层以及Service层的方法 整理分类 以及代码实操

MyBatis-Plus是一个基于MyBatis的增强工具,旨在简化开发、提高效率。它提供了通用的mapper和service,可以在不编写任何SQL语句的情况下,快速实现对单表的CRUD、批量、逻辑删除、分页等操作。 功能代码测试前提: 需要对mybatisPl…

【重要公告】对BSV警报系统AS的释义

​​发表时间:2024年2月15日 由BSV区块链协会开发并管理的BSV警报系统(Alert System,以下简称“AS”)是BSV网络的重要组件。它是一个复杂的系统,主要职能是在BSV区块链网络内发布信息。这些信息通常与网络访问规则NAR相…

java数据结构与算法刷题-----LeetCode572. 另一棵树的子树(经典题,树字符串化KMP)

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 暴力求解,深度优先2. KMP算法进行串匹配 1. 暴力求…

Spring-web-Mvc

文章目录 目录 文章目录 前言 1 . 什么是Spring MVC? 1.1 MVC定义 1.2 主要作用 2. Spring MVC 接受响应数据 2.1 RequestMapping注解配置访问路径 2.2 请求 2.2.1 传递单个参数 2.2.2 传递多个参数 2.2.3 传递对象 2.2.4 后端参数重命名(后端参数映射…

Linux技巧|centos7|重新认识和学习egrep和grep命令

前言: 相信提高文本检索工具,大家脑海里肯定有很多工具会自动跳出来,比如,grep,egrep,sed,cat,more,less,cut,awk,vim,vi…

Find My扫地机器人|苹果Find My技术与机器人结合,智能防丢,全球定位

扫地机器人又称自动打扫机、智能吸尘、机器人吸尘器等,是智能家电的一种,能凭借人工智能,自动在房间内完成地板清理工作。一般采用刷扫和真空方式,将地面杂物先吸纳进入自身的垃圾收纳盒,从而完成地面清理的功能。现今…

【Vue3】CSS 新特性

:slotted <template> <!-- App.vue--><Son ><div class"a">我要插入了</div></Son> </template><script setup lang"ts"> import Son from ./components/Son.vue </script><style></sty…

最佳实践:Websocket 长连接状态如何保持

WebSocket 是一种支持通过单个 TCP 连接进行全双工通信的协议&#xff0c;相较于传统的 HTTP 协议&#xff0c;它更适合需要实时交互的应用场景。此协议在现代 Web 应用中扮演着至关重要的角色&#xff0c;尤其是在需要实时更新和通信的场合下维持持久连接。本文将探讨 WebSock…

Windows系统误删文件恢复

最近很多用户反馈误删文件的场景比较多.下面华仔将讲解数据恢复的原理和过程.以及一些注意事项。 建议的数据恢复软件 1.EaseUS Data Recovery Wizard(易我数据恢复)需要断网使用 2.Wondershare Recoverit(万兴数据恢复)&#xff0c; Windows系统删除文件原理&#xff1a;如果是…

每周一算法:双向广搜

题目链接 字符串变换 题目描述 已知有两个字串 A , B A,B A,B&#xff0c;及一组字串变换的规则&#xff08;至多 6 6 6个规则&#xff09;: A 1 → B 1 A_1→B_1 A1​→B1​ A 2 → B 2 A_2→B_2 A2​→B2​ … 规则的含义为&#xff1a;在 A A A中的子串 A 1 A_1 A1​…

利用FFMPEG 将RTSP流的音频G711 转码为AAC 并 推流到RTMP

之前我们的视频转码项目中 是没有加入音频的 现在 需要加入音频 &#xff0c;由于RTMP只支持AAC的 音频流 而有的RTSP流的音频编码并不是AAC 大多数都是G711编码 还分为G711A 和G711U 之前用ffmpeg命令行可以直接 完成转码 并推送到RTMP 但是考虑到无法获取更详细的状…

操作系统—xv6内核环境配置

文章目录 xv6内核环境配置1.开发环境的准备(1).如果日常用Linux(2).Windows的回合#1.两个常见方法#2.wsl的一点安装细节#3.记得升级成wsl-2 (3).如果你是macOS#1.一些起因#2.最乐的一集#3.Homebrew的配置#4.mac用户的特权 2.先换apt源3.安装xv6的依赖4.克隆RISC-V GNU 编译器工…

在Centos中用Docker部署oracle-12c

一、介绍 Oracle 12c是Oracle 11g的后续版本。12c代表云计算&#xff08;Cloud Computing&#xff09;&#xff0c;这是Oracle在该版本中强调的一个关键概念。它具有多租户架构、数据库内存、安全增强、大数据管理和自动化管理等功能。它被广泛应用于企业级应用程序和大型数据…

加密与安全_深入了解Hmac算法(消息认证码)

文章目录 PreHMAC概述常见的Hmac算法Code随机的key的生成 KeyGeneratorHmacMD5用Hmac算法取代原有的自定义的加盐算法 HmacMD5 VS MD5HmacSHA256 Pre 加密与安全_深入了解哈希算法中我们提到&#xff0c; 存储用户的哈希口令时&#xff0c;要加盐存储&#xff0c;目的就在于抵…

Zabbix 系统告警“More than 75% used in the configuration cache”处理办法

Zabbix系统报错提示 Zabbix 系统告警“More than 75% used in the configuration cache”&#xff0c;看了一下意思是可用的配置缓存超过75%。 修改缓存大小 vim /etc/zabbix/zabbix_server.confesc : /CacheSize 找到配置 将64M改大一点&#xff0c;保存退出。 重启zabbix…

14.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-数据包分析工具界面与通信设计

内容参考于&#xff1a; 易道云信息技术研究院VIP课 上一个内容&#xff1a;13.如果没有工具就创造工具 码云地址&#xff08;master 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/titan 码云版本号&#xff1a;fef5089bd11dfb86ae8b4e26f25cf59e85f896…

练习 3 Web [ACTF2020 新生赛]Upload

[ACTF2020 新生赛]Upload1 中间有上传文件的地方&#xff0c;试一下一句话木马 txt 不让传txt 另存为tlyjpg&#xff0c;木马文件上传成功 给出了存放目录&#xff1a; Upload Success! Look here~ ./uplo4d/06a9d80f64fded1e542a95e6d530c70a.jpg 下一步尝试改木马文件后缀…

Qt应用软件【测试篇】vargrid内存检查工具

文章目录 vargrid介绍vargrid官网vargrid安装常用命令Valgrind的主要命令vargrid介绍 Valgrind是一个用于构建动态分析工具的框架,能自动检测许多内存管理和线程错误,并详细分析程序性能。Valgrind发行版包括七个成熟工具:内存错误检测器、两个线程错误检测器、缓存和分支预…

autoware.universe中跟踪模块详解,一看就懂!

目录 问题:阅读关键点:总结问题: 根据对预测模块代码的分析,发现预测框出现在点云前方的原因在于跟踪框出现在点云前方 对rviz上的目标进行观察后发现 车辆的检测框先出来一段时间后,跟踪框和预测框同步一块出来 跟踪框总是超出点云一部分 阅读关键点: 每个跟踪器最少要统计…