文本生成视频:从 Write-a-video到 Sora

2024年2月15日,OpenAI 推出了其最新的文本生成视频模型——Sora。Sora 能够根据用户的指令生成一分钟长度的高质量视频内容。这一创新的发布迅速在社会各界引发了广泛关注与深入讨论。本文将围绕本实验室发表于SIGGRAPH AISA 的 Write-a-video和 Sora 展开,讨论基于规则的视频生成方法和基于深度学习的视频生成方法。

Part 1

Write-a-video

视频生成,在图形学里,和story-telling密切相关,我们一直有一个梦想,幼儿园的小朋友讲故事时,能否在大屏幕上实时生成故事的画面?这个问题在20年前,基于视频绘制(Video based Rendering)最热的时候,却是一个技术上不可能实现的难题。2009年,清华大学图形学实验室将这个问题简化为:能否用草图和文字描述一个场景,计算机去自动生成一张高度真实感的照片?这就是Sketch2Photo[1]。 

4ce62150635348528c695cd9328d9b3f.png 图1 基于草图的真实感图像合成

又过了10年,清华大学图形学实验室终于跨越了一步,提出基于规则的视频生成方法Write-a-video[2] ,该方法可以基于视频素材,输入一段文字,输出一段剪辑好、符合文本描述的视频。

Write-a-video是一个通过编辑文本来进行视频剪辑和合成的系统。给定一个主题文本和相关的视频库(该视频库可看做深度学习里的训练数据),生成的视频旨在描绘给定的叙述,提供多样化的视觉内容,并遵循电影摄影指导原则。这个过程涉及三个简单的步骤:1) 用户提供输入,主要是通过编辑文本的形式;2) 工具自动从视频库中搜索语义匹配的候选镜头;3) 优化方法组装剪辑的视频:根据计算摄影学的剪辑准则组装剪辑视频。具体流程如图 1所示。

28f82b816cc94d30a8e541c218253c7d.png 

图 2  Write-a-video 流程示意图

Write-a-video是一种快速的视频生成方法,生成一段数分钟的视频仅需不到10秒,且支持增量文本编辑操作。

Part 2

深度学习技术的演进使视频生成实现突破

最近5年,深度学习技术得到了蓬勃的发展,主要的发展可以总结为以下三个方面:

  • 从对抗生成网络(GAN)到扩散模型(Diffusion model);

  • 从卷积神经网络(CNN)到深度自注意力网络(Transformer);

  • 从小规模训练到大规模训练.

8edbdb60c2a748369664ee4e00df9974.png 

图3  深度学习技术的变革性发展

2.1 从对抗生成网络到扩散模型

采样方法在 Diffusion model出现之前,该领域的早期工作主要植根于 GAN、VQ-VAE和自回归框架。但由于2022年以来Diffusion model的突破性进展,以及其对于大规模分布的拟合能力,以及从文本上扩展到其他模态的能力,扩散模型成为了视频生成的主流选择。

2.2 从卷积神经网络到深度自注意力网络

模型的基础架构在这些年的变化也很大,如Diffusion Model中,早期的工作基本都基于CNN的UNet架构,并且引入部分时空的注意力进行约束如Google提出的Imagen Video利用冻结的T5文本编码器来训练video diffusion model。

随着技术的发展,人们发现动态可扩展的Transformer架构运用在文生图模型或文生视频模型中是非常有意义且有效的,比如,Meta提出的Diffusion Transformer (DiT) 架构利用更长的Transformer生成是十分有效的,在许多指标上都表现出十分良好的可扩展性。

2.3 从小规模训练到大规模训练

随着深度学习技术的不断发展,数据的规模和模型的规模在生成模型中也增长迅速。近些年涌现出一批高分辨率大规模标注视频数据集,如InternVid就有两亿多的720P视频,并且有精细的文本标注。为了适应数据在scale上的增长,模型的规模也随之增长。如stability AI最开始发布的Stable Diffusion只有0.8B的UNet权重,近期最新发布的基于Transformer架构的Stable Diffusion3就拥有8B的权重,扩大了将近十倍。

Part 3

Sora

Sora[3] 是 OpenAI 所发布的最新视频生成模型,其是基于深度学习方法的视频生成模型的代表。根据其技术报告,我们猜测其背后的技术是基于 Transformer 架构的潜空间扩散模型[4]。Sora 的训练分为了两个阶段,第一阶段(如图 2 所示)训练解码器和编码器,第二阶段(如图 4所示)训练潜空间扩散模型来生成视频。

9e2f5fde49a6484faec2b784d448d8bd.png 

图4 Sora第一阶段训练,训练编码器和解码器

305fb7c4757d44e2a3121e47d4965dee.png 

图5 Sora第二阶段训练, 训练潜空间扩散模型

在两阶段的训练完成后,可以生成分钟级别的视频。

Part 4

讨论

虽然基于深度学习的技术目前居于主导地位,但基于规则的方法也有其独到之处,值得我们借鉴。下面从成本、效率、质量和未来方向四个方面进行讨论。

4.1 成本

此处的成本包含了数据成本和训练成本。Sora 的训练需要大量的视频数据,这些视频的数据量至少是以PB 为单位的。如此大量的视频的收集和存储都会占用极大的存储空间。除了数据收集和存储方面带来的巨大开销,Sora的训练成本也是十分昂贵的。根据已有的部分工作推测,Sora的训练成本可能要千卡级别的集群训练数月。对于 Write-a-video 来说,只需要数百个视频即可剪辑生成一段长视频,并且无需训练。

4.2 效率

此处讨论的效率是指生成一段视频所需的时间。根据网友反馈,Sora 生成一段视频需要数分钟甚至几十分钟,而对于 Write-a-video,生成一段视频只需要数秒。从效率来看,Write-a-video代表的基于规则的方法占据优势。

4.3 生成质量

从生成视频的质量上来看,由于 Write-a-video 是对已有视频片段的剪辑,所以其生成的视频是具有三维一致性的。而对于 Sora 而言,其生成的视频是没有三维一致性的。但是,Sora 可以生成原视频库中不存在的视频,但是 Write-a-video 却没有这种能力,只能组合剪辑原视频库的视频片段。

4.4 未来的工作

此处本文主要讨论两个未来可能的工作:1) 长视频生成,2)高效的Sora。

1)长视频生成:Sora 目前可以生成分钟级的视频,那么如何去生成更长的视频片段甚至电影呢?如果计算机可以根据剧本直接生成电影,那将会是一件非常有趣且有意义的事情。生成长视频/电影有两条潜在的技术方案。

第一条技术路线是给 Sora 更多的长视频,让其进行微调,但是建模长视频的难度比建模短视频的难度大很多,并且对算力的要求也更大。

第二条技术路线是使用多个短视频进行拼接,可以使用 Sora 生成多个 ID 一致的短视频片段,将每个片段看成是一个电影镜头,然后使用Write-a-video[2] 进行剪辑,从而拼接出一个长视频;或者基于已有短视频素材库先进行剪辑拼接,再使用Sora微调内容。

2)高效的Sora至关重要:基于我们之前的分析,我们了解到sora在生成视频的过程中耗时较多。为了实现Sora的大规模应用,提升视频生成的效率成为一个迫切需要解决的问题。也许可以从算法优化和系统优化两个方面来着手提高效率。

从算法层面来看,可以探索剪枝算法或者量化算法,在保持生成视频质量的同时,使得整个网络可以更高效地运行;从系统优化的角度出发,可以尝试使用高效的深度学习框架Jittor[5],Jittor已经被证明在大模型训练和推理中有较大的优势,效率提升可达30%以上; 进一步,也可以基于Jittor的元算子融合机制Sora结构中的算子进行专门的硬件优化。

参考文献

  • 1 Tao Chen, Ming-Ming Cheng, Ping Tan, Ariel Shamir, Shi-Min Hu, Sketch2Photo: Internet Image Montage, ACM Transactions on Graphics, 2009, Vol. 28, No. 5, Article No. 124, ACM SIGGRAPH ASIA 2009.  

  • 2 Miao Wang, Guo-Wei Yang, Shi-Min Hu, Shing-Tung Yau, Ariel Shamir, Write-a-video: computational video montage from themed text, ACM Transactions on Graphics, 2019, 38(6): 177:1-177:13. 

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

  • 4 William Peebles, Saining Xie, Scalable diffusion models with transformers, Proceedings of the IEEE/CVF International Conference on Computer Vision, 2023, 4195-4205.

  • Shi-Min Hu, Dun Liang, Guo-Ye Yang, Guo-Wei Yang & Wen-Yang Zhou, Jittor: a novel deep learning framework with meta-operators and unified graph execution, Science China Information Science,  2020, Vol. 63, Article No. 222103, 1-21.  

  1.  

 

 

 

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

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

相关文章

CPU设计实战-协处理器访问指令的实现

目录 一 协处理器的作用与功能 1.计数寄存器和比较寄存器 2.Status寄存器 3.Cause寄存器(标号为13) 4.EPC寄存器(标号为14) 5.PRId寄存器(标号为15) 6.Config 寄存器(标号为16)-配置寄存器 二 协处理器的实现 三 协处理器访问指令说明 四 具体实现 1.译码阶段 2.执行…

git命令行提交——github

1. 克隆仓库至本地 git clone 右键paste(github仓库地址) cd 仓库路径(进入到仓库内部准备提交文件等操作) 2. 查看main分支 git branch(列出本地仓库中的所有分支) 3. 创建新分支(可省…

Edu18 -- Divide by Three --- 题解

目录 Divide by Three: 题目大意: ​编辑​编辑思路解析: 代码实现: Divide by Three: 题目大意: 思路解析: 一个数字是3的倍数,那么他的数位之和也是3的倍数,所以我…

安信可IDE(AiThinker_IDE)编译ESP8266工程方法

0 工具准备 AiThinker_IDE.exe ESP8266工程源码 1 安信可IDE(AiThinker_IDE)编译ESP8266工程方法 1.1 解压ESP8266工程文件夹 我们这里使用的是NON-OS_SDK,将NON-OS_SDK中的1_UART文件夹解压到工作目录即可 我这里解压到了桌面&#xff0c…

WiFi模块助力少儿编程:创新学习与实践体验

随着科技的飞速发展,少儿编程已经成为培养孩子们创造力和问题解决能力的重要途径之一。在这个过程中,WiFi模块的应用为少儿编程领域注入了新的活力,使得学习编程不再是单一的代码教学,而是一个充满创新与实践的综合性体验。 物联网…

Redis作为缓存的数据一致性问题

背景 使用Reids作为缓存的原因: 在高并发场景下,传统关系型数据库的并发能力相对比较薄弱(QPS不能太大); 使用Redis做一个缓存。让用户请求先打到Redis上而不是直接打到数据库上。 但是如果出现数据更新操作&#xff…

开发指南002-前后端信息交互规范-概述

前后端之间采用restful接口,服务和服务之间使用feign。信息交互遵循如下平台规范: 前端: 建立api目录,按照业务区分建立不同的.js文件,封装对后台的调用操作。其中qlm*.js为平台预制的接口文件,以qlm_user.…

【红外与可见光融合:条件学习:实例归一化(IN)】

Infrared and visible image fusion based on a two-stage class conditioned auto-encoder network (基于两级类条件自编码器网络的红外与可见光图像融合) 现有的基于自动编码器的红外和可见光图像融合方法通常利用共享编码器从不同模态中提取特征&am…

arduino安装索尼spresense开发库

arduino安装索尼spresense开发库 一.库安装二.库文件下载1.直接下载2.git下载1.git加速下载2.git下载加速3.将文件导入arduino 一.库安装 打开arduino点击文件->首选项 将以下链接添加进附加开发板管理器网址 https://github.com/sonydevworld/spresense-arduino-compatib…

什么是数据采集与监视控制系统(SCADA)?

SCADA数据采集是一种用于监控和控制工业过程的系统。它可以实时从现场设备获得数据并将其传输到中央计算机,以便进行监控和控制。SCADA数据采集系统通常使用传感器、仪表和控制器收集各种类型的数据,例如温度、压力、流量等,然后将这些数据汇…

【李沐】动手学习ai思路softmax回归实现

来源:https://www.cnblogs.com/blzm742624643/p/15079086.html 一、从零开始实现 1.1 首先引入Fashion-MNIST数据集 1 import torch 2 from IPython import display 3 from d2l import torch as d2l 4 5 batch_size 256 6 train_iter, test_iter d2l.load_data…

tcp流式服务和粘包问题

目录 1.概念 2.流式服务 3.粘包问题 1.概念 套接字是一个全双工的 使用TCP协议通信的双方必须先建立连接,然后才能开始数据的读写,双方都必须为该连接分配必要的内核资源,以管理连接的状态和连接上数据的传输. TCP连接是全双工的,即双方的数据读写可以通过一个连接进行,完成…

集合框架(一)List系列集合

特点 有序,可重复,有索引。 LIst集合的特有方法 /** 目标:掌握List系列集合的特点,以及其提供的特有方法* */import java.util.ArrayList; import java.util.List;public class ListTest1 {public static void main(String[] arg…

android开发环境搭建

android开发环境搭建 Android 开发环境搭建1.JDK安装与配置1.1 Jdk官方下载1.2 JDK安装1.3 环境变量配置1.4 新建JAVA_HOME1.5 修改Path变量1.6 新建classpath1.7 验证环境是否配置完成 2.开发工具二选一1.如何创建一个工程2.工程的目录结构的了解3.与开发的相关的常规视图4.我…

记录WiFi转WDS桥接再转网线

第一步: 把LAN口修改为 和 主路由器的前三位段位编码一致,最后一位设置大于250,减少抢IP的可能性。这个步骤是修改 桥接路由器的登录IP 第二部: 设置IP池。网关和dns服务器都是同一个,用手机连接主路由器wifi可以找到 …

【Flink】Flink 的八种分区策略(源码解读)

Flink 的八种分区策略(源码解读) 1.继承关系图1.1 接口:ChannelSelector1.2 抽象类:StreamPartitioner1.3 继承关系图 2.分区策略2.1 GlobalPartitioner2.2 ShufflePartitioner2.3 BroadcastPartitioner2.4 RebalancePartitioner2…

HTML 学习笔记(五)超链接

HYperText 超文是用超链接的方式&#xff0c;将不同空间的文字信息组合在一起的网状文其就像一个桥梁&#xff0c;建立了不同页面中的联系&#xff0c;实现了访问不同网站中页面的功能 <!DOCTYPE html> <html lang"en"><head><meta charset&qu…

深度学习+感知机

深度学习感知机 1感知机总结 2多层感知机1XOR2激活函数3多类分类总结 3代码实现 1感知机 是个很简单的模型,是个二分类的问题。 感知机&#xff08;perceptron&#xff09;是Frank Rosenblatt在1957年提出的一种人工神经网络&#xff0c;被视为一种最简单形式的前馈神经网络&…

【C语言】深入理解指针(进阶篇)

一、数组名的理解 数组名就是地址&#xff0c;而且是数组首元素的地址。 任务&#xff1a;运行以下代码&#xff0c;看数组名是否是地址。 #include <stdio.h> int main() {int arr[] { 1,2,3,4,5,6,7,8,9,0 };printf("&arr[0] %p\n", &arr[0]);pri…

[Java安全入门]三.CC1链

1.前言 Apache Commons Collections是一个扩展了Java标准库里的Collection结构的第三方基础库&#xff0c;它提供了很多强大的数据结构类型和实现了各种集合工具类。Commons Collections触发反序列化漏洞构造的链叫做cc链&#xff0c;构造方式多种&#xff0c;这里先学习cc1链…