文本生成视频:从 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.  

 

 

 

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

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

相关文章

【DevOps基础篇之k8s】Kubernetes API服务认证/授权

【DevOps基础篇之k8s】Kubernetes API服务认证/授权 目录 【DevOps基础篇之k8s】Kubernetes API服务认证/授权Kubernetes API ServerAPI服务器主机和端口API服务器认证/授权基于SSL证书的认证基于令牌的认证推荐超级课程: Docker快速入门到精通Kubernetes入门到大师通关课Kube…

Django——路由

Django——路由 1、路由分发 可以在每个应用中创建一个 urls.py 进行在该应用中的路由匹配。 # include 在根目录路由中对应用的路由进行分发 # 对 UrlApp 应用分发一个 路由配置 path(urlapp/ , include(UrlApp.urls)), path(urlapp2/ , include(UrlApp2.urls))2、匹配路由…

8核16G服务器多少钱?2024年腾讯云8核16G轻量服务器性能测评

腾讯云8核16G轻量服务器CPU性能如何?18M带宽支持多少人在线?轻量应用服务器具有100%CPU性能,18M带宽下载速度2304KB/秒,折合2.25M/s,系统盘为270GB SSD盘,月流量3500GB,折合每天116.6GB流量&…

真实案例分享:MOS管电源开关电路,遇到上电冲击电流超标

做硬件,堆经验。 分享一个案例:MOS管电源开关电路,遇到上电冲击电流超标,怎么解决的呢? 下面是正文部分。 —— 正文 —— 最近有一颗用了挺久的MOSFET发了停产通知,供应链部门找到我们研发部门&#xff0c…

Pycharm与Anaconda安装

网址: Pycharm:https://www.jetbrains.com/pycharm/ Anaconda:https://www.anaconda.com/download/ 官网下载速度太慢可以选择到清华源下载:https://repo.anaconda.com/archive/ 一:Anaconda安装 安装: …

MVO-CNN-BiLSTM多输入时序预测多元宇宙优化算法-卷积-双向长短期神经网络时序预测(Matlab)

摘要: 本文介绍了MVO-CNN-BiLSTM多输入时序预测模型的原理和实现,结合元宇宙优化算法进行参数优化,使用卷积神经网络和双向长短期记忆网络进行时序预测,并通过Matlab实现。阅读时长约60分钟。 关键词:MVO, CNN, BiLS…

Building Systems with the ChatGPT API

Building Systems with the ChatGPT API 本文是 https://www.deeplearning.ai/short-courses/building-systems-with-chatgpt/ 这门课程的学习笔记。 文章目录 Building Systems with the ChatGPT APIWhat you’ll learn in this course Language Models, the Chat Format and…

程序员的金三银四求职宝典:面试技巧分享

​​​​​​​随着春天的到来,程序员们迎来了求职的旺季——金三银四。在这个时期,各大公司纷纷开放招聘,为求职者提供了丰富的选择机会。然而,如何在众多的面试中脱颖而出,成功获得心仪的职位,就需要掌握一些有效的面试技巧。下面,就让我们一起来探讨一下金三银四求职…

html2canvas+jsPDF实现前端导出pdf

html2canvasjsPDF实现前端导出pdf 安装插件包 npm install jspdf npm install html2canvas引入插件 import html2canvas from html2canvas; import jsPDF from jspdf;生成pdf const perCanvas document.createElement(canvas);perCanvas.style.backgroundColor #fffconst …

【C++ vector 类】

1. 标准库中的vector类 vector 类 的介绍: 注意: 1. vector是表示可变大小数组的序列容器。 2. 就像数组一样,vector 也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是…

长度为n的数组a初始值全为0,目标是把数组a变为数组b(1<=bi<=n), 可以进行任意次操作:选择长度为k的数组c,(1<=ci<=n且两两不同)

对于1<i<k, 把 a[c[i]] 改为c[i % k 1]。给定n&#xff0c;k和数组b&#xff0c;判断能否得到数组b。 题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #d…

Angular入门指南

Angular 是 Google 开发的一款用于构建单页面应用程序 (SPA) 的 JavaScript 框架。它基于 TypeScript 语言&#xff0c;并提供了许多强大的功能&#xff0c;例如&#xff1a; 模块化开发数据绑定路由依赖注入 Angular 已成为构建 SPA 最流行的框架之一。它被许多知名公司使用…

js判断对象是否存在某个键值

方法一 in 操作符 使用方法&#xff1a;‘XXX’ in obj(对象)&#xff0c;结果返回布尔值 true / false const obj { name:张三, sex:男 }name in obj // true test in obj // false 方法二 hasOwnProperty方法 使用方法&#xff1a;obj.hasOwnProperty(XXX)&#xff0c;…

消息服务--Kafka的简介和使用

消息服务--Kafka的简介和使用 前言异步解耦削峰缓存1、消息队列2、kafka工作原理3、springBoot KafKa整合3.1 添加插件3.2 kafKa的自动配置类3.21 配置kafka地址3.22 如果需要发送对象配置kafka值的序列化器3.3 测试发送消息3.31 在发送测试消息的时候由于是开发环境中会遇到的…

STM32按键控制LED蜂鸣器光敏联动

GPIO输入模式下的硬件和电路 以下为不同类型传感器电路图 硬件电路讲解 上面两种接线方式表示按键按下时是低电平&#xff0c;下面两种接线方式表示按键按下时引脚是高电平默认使用上面两种方式比较多。 C语言知识回顾 不同的数据类型 &#xff1a; char short int long longl…

Linux(Ubuntu)中安装vscode

①首先去vscode的官网下载.deb文件 网址&#xff1a;https://code.visualstudio.com/docs/?dvlinuxarm64_deb 注&#xff1a;如果linux端无法打开网页下载文件&#xff0c;可以在Windows端下载好用WinSCP传输到Linux。下载前注意下你的系统架构是arm还是amd&#xff0c;系统…

【LeetCode】整数转罗马数字 C语言 | 此刻,已成艺术(bushi)

Problem: 12. 整数转罗马数字 文章目录 思路解题方法复杂度Code 思路 暴力破解 转换 解题方法 由思路可知 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code char* intToRoman(int num) {char *s (char*)malloc(sizeof(char)*4000), *p s;while(…

C++——类和对象(4):取地址及const取地址操作符重载、初始化列表

2.5 取地址及const取地址操作符重载 2.5.1 const成员 在介绍取地址和const取地址操作符重载前&#xff0c;需要先介绍一下const成员作为基础。在C中&#xff0c;我们将使用const修饰的成员函数称为const成员函数。const看似修饰成员函数&#xff0c;实际则是对成员函数隐含的t…

AHU 数据库 实验五

【实验名称】 实验5 数据库的数据更新与视图管理 【实验目的】 1. 熟悉数据更新操作的概念与操作类型&#xff1b; 2. 熟练掌握INSERT、UPDATE、DELETE语句的基本语法&#xff1b; 3. 熟练运用INSERT、UPDATE、DELETE语句实现数据的插入、修改与删除…

Docker一键部署WordPress

使用Docker安装WordPress相对传统安装方式更加便捷高效&#xff0c;因为它可以快速创建一个包含所有必要组件&#xff08;Web服务器、PHP和MySQL数据库&#xff09;的独立容器环境。下面是一个简化的步骤说明如何使用Docker和Docker Compose安装WordPress&#xff1a; 一 安装…