新国立祭出视频生成“无限宝石“:2300帧仅需5分钟,提速100倍

天下武功唯快不破—— 火云邪神

前一段时间,想必大家都有被各种文生视频给刷屏,但当看完之后,不知道大家是否都有一种意犹未尽的感觉:“这也太短了吧,我还没看够呢”。受限于机器资源与生成效率,目前大部分文生视频确实只能做到几秒,就更不用说像灭霸的“现实”无限宝石一样,言出法随,即可幻化出永久的虚拟现实场景。

但就在最近,来自新加坡国立大学的团队推出了他们的新作“Video-Infinity”(无限视频),呈百倍数量级地提高了视频生成的效率,或许有一天,根据一段话就能生成一整部电影,真的可以成为现实?

论文标题:
Video-Infinity: Distributed Long Video Generation

论文链接:
https://arxiv.org/pdf/2406.16260

文生视频

随着数据驱动的生成模型的兴起,人们在数字系统中复制现实世界动态的能力得到了显著提升。这些模型能够创造出高度逼真的图像和视频,与现实难以区分。然而,尽管这些生成模型在图像合成领域取得了巨大成功,它们在视频生成方面的表现却常常受限于生成的视频片段过短,大多数模型仅能生成16到24帧的短视频片段,有些模型虽然能扩展到60或120帧,但往往以牺牲分辨率和视觉质量为代价。

生成长视频面临着模型训练和推理所需的巨大资源需求,现有模型由于资源限制,通常只能处理较短的视频片段,难以在更长的序列中保持质量。此外,一次性生成长达一分钟的视频可能会超出GPU的内存容量,使得这一任务显得遥不可及。现有的解决方案,包括自回归、分层以及由短到长的方法,虽然提供了部分补救措施,但它们存在显著的局限性。自回归方法按顺序生成帧,依赖于前面的帧;分层方法先创建关键帧,然后填充过渡帧;还有一些方法将长视频视为多个重叠的短视频片段。这些方法并非端到端的,常常缺乏全局连续性,需要在重叠区域进行大量计算,并且在片段间的一致性上存在挑战。

文生视频扩散模型

扩散模型通过逐步去噪潜在表示来生成视频,其中潜在表示由初始的高斯噪声张量开始,通过一系列逆变换学习去除噪声,直到生成清晰的视频帧。这个过程涉及到从时间维度的到逐步更新潜在张量,其中每个步骤都包括计算给定潜在状态的噪声预测。

扩散模型可以采用不同的架构实现,例如U-Net或DiT,这些模型通常由多个相似的层组成。在这些层中,空间模块处理每个视频帧内的空间特征,而时间模块则捕捉特定空间位置的帧之间的时间依赖性。具体来说,初始的随机噪声张量被写为具有一定帧数F、帧高H、帧宽W和通道数C的张量。在层级结构中,潜在张量保持一致的形状,尽管由于U-Net架构中的下采样和上采样操作,H'、W'和C‘的维度可能会有所变化。

Video-Infinity

Video-Infinity将噪声的潜在表示分割成个子潜在片段,其中每个片段包含帧,F是整个视频的帧数,N是时间和片段的总数。这种结构化的分割不仅有助于在N个设备之间均匀分配负载,而且由于视频扩散模型的空间模块在帧之间独立操作,消除了设备间通信的需求,同时在不同设备上保持了输出的一致性。

片段并行

片段并行(Clip parallelism)首先涉及将视频潜在表示分割成多个子潜在片段,每个片段分配给不同的GPU设备。在标准的扩散模型中,时间模块负责聚合跨帧的特征,但在Video-Infinity中,输入特征张量被划分为多个片段,并在多个设备上分布式处理。为了实现这一点,时间模块被重新定义,以考虑当前片段以及来自相邻片段和全局语义的上下文信息。

具体来说,时间模块的输出Uout仅基于当前片段Vin还结合了来自前一个设Cpre和后一个设备Cpost时间信息,以及从所有设备聚合的全局上下文Cglobal这种设计允许每个设备在进行局部计算的同时,通过上下文输入增强其计算结果,从而保持视频内容在时间上的连贯性。

为了高效地在设备间通信这些上下文组件,采用了一个三阶段的同步过程。在第一阶段,所有设备通过all_gather()操作共享其全局上下文,确保全局一致性。接下来的两个阶段专注于交换相邻设备之间的上下文信息。由于连接限制,采用了一种交错策略,即奇数编号的设备向前发送其前一个片段的上下文,而偶数编号的设备向后发送其后一个片段的上下文。在第三阶段,这一模式反转,确保所有设备都能接收到所需的全部上下文信息,从而完成上下文同步。

通过片段并行性,Video-Infinity能够在不牺牲视频质量的前提下,显著提高长视频的生成速度。这种方法不仅优化了跨GPU的上下文信息共享,而且通过并行处理减少了内存开销,使得生成长达2300帧的视频成为可能,这在以往的方法中是难以想象的。片段并行性的实现,为分布式长视频生成提供了一个高效且可扩展的解决方案。

模块并行

在视频扩散模型中通常包含三种时间模块:注意力模块(Attention())、卷积模块(Conv())和分组归一化模块(GroupNorm())。这些模块在Clip parallelism中被特别定制,以便在多个设备上实现分布式处理,从而有效同步视频内容。

对于注意力模块,本文提出了双域注意力机制,它通过修改K-V(键-值)对的计算来整合局部和全局上下文。每个查询token从帧中获取,其对应的键和值由来自帧集的token计算得出,其中包括了局部上下文和全局上下文。局部上下文包括了帧的邻近帧,这些帧用于捕捉局部上下文并增强时间连贯性。而全局上下文则由所有设备上的视频均匀采样得到的帧组成,提供了更广泛范围的键-值,使模型能够访问到长距离信息。

在实现Clip parallelism时,这种重新定义的注意力显著降低了通信开销。与收集所有长度为F的token相比,只需要同步一个固定数量的token。具体来说,通过设置和,并且将和都配置为16,这样在减少数据同步需求的同时,仍然能够捕获到必要的局部和全局信息。

对于卷积模块,它沿着时间维度对输入Vin进行卷积操作。在Clip parallelism中,卷积模块的上下文Ci,它们被填充到原始序列中。Cpre由Vin最后n帧组成,而Cpost 由Vn的最初n帧组成,其中n是卷积的感受野大小。

分组归一化模块用于在视频扩散模型中对输入张量Vin进行归一化,以保持不同帧之间的一致性特征缩放。在Clip parallelism中,每个设备首先计算其相应视频片段的组均值μ然后,这些均值被聚合以计算全局均值,接着每个设备使用这个全局均值计算其标准差,进而计算全局标准差。全局均值和标准差作为

实验

实验设置

本文选择了VideoCrafter2作为基础模型,这是一个在16帧视频上训练的文生视频模型,以其生成高质量且连贯的视频片段能力而著称。VBench作为一个全面的视频评估工具,提供了跨越多个视频维度的广泛指标。为了评估不同方法生成的视频,作者使用了VBench提供的各种提示来生成视频,并根据视频质量类别下的指标进行评估,包括主题一致性、背景一致性、时间闪烁、运动平滑度、动态度、美学质量和成像质量。

在基线=方面,本文选择了几种其他方法,包括FreeNoise和Streaming T2V,这些方法都能够生成长视频,但各有其特点和限制。FreeNoise是一个无需训练即可使用的方法,它使用重新调度的噪声序列和基于窗口的注意力融合来生成长视频。Streaming T2V则是一个需要训练新模型的方法,它采用自回归方法来生成长视频,并且能够生成超过1000帧的视频。

在实现细节方面,本文保持了与VideoCrafter2原始推理设置一致的所有扩散参数,并将去噪步骤设置为30。实验在8个Nvidia 6000 Ada GPU(每个具有48G内存)上进行。为了在Clip parallelism中实现时间模块,本文使用了torch.distributed工具包,并采用Nvidia的NCCL作为后端来促进高效的GPU间通信。此外,所有视频的帧率设置为24帧/秒,分辨率设置为512×320。值得注意的是,Streaming T2V的分辨率无法修改,因此其生成的视频分别以默认分辨率(预览视频为256×256,最终视频为720×720)生成。

实验结果

实验结果显示,Video-Infinity在生成128帧和1024帧视频时,不仅生成的视频长度最长,而且生成速度也是最快的。特别地,在生成1024帧视频时,Video-Infinity的速度比Streaming T2V快了100倍以上,即使与Streaming T2V生成较小分辨率预览视频的速度相比,Video-Infinity也快了16倍。

此外,本文还展示了使用相同提示生成的样本视频帧图像,并在VBench上对不同方法生成的视频进行了质量评估。与FreeNoise和Streaming T2V等其他方法相比,Video-Infinity生成的视频在多数指标上表现更好,尤其是在动态度和运动平滑度方面。

在消融研究中,本文展示了不同上下文同步对生成视频质量的影响。消融实验包括移除ResNet模块和Attention模块之间的通信,以及移除Attention模块中的全局上下文和局部上下文。这些实验的结果表明,全局和局部上下文的同步对于保持视频的视觉连贯性和一致性至关重要。

结论与展望

本文最大的贡献在于大幅提高了视频生成的效率,同时让长视频的生成也成为了可能。对于大多数计算资源有限的机构来说,具有相当的价值;而高质量的长视频,也让文生视频具备了更多商业化的可能。试想,如果仅通过一段描述就能生成30-60秒有吸引力的广告或游戏CG,那或许将很大程度上颠覆当前的视频创作生态,当然,更进一步就是生成短剧、乃至电影了(无限遐想中)

当然,尽管Video-Infinity在长视频生成方面取得了显著进展,但它也有其局限性。该方法依赖于多个GPU,并且在处理涉及场景转换的视频生成时效果不佳。未来工作可能会集中在优化算法以适应更广泛的硬件配置上面,并提高对场景转换的处理能力。此外,如果能将这种技术应用于更多样化的视频内容和风格,并进一步提高生成视频的分辨率和质量,可期还将为该技术带来更加诱人的落地应用价值。

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

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

相关文章

WebRTC批量发送消息API接口的特性有哪些?

WebRTC批量发送消息api接口怎么样?接口性能怎么用? WebRTC技术允许浏览器和移动应用进行实时通信。通过WebRTC,开发者可以构建视频、语音、数据共享等应用。AokSend将重点探讨WebRTC批量发送消息API接口的特性。 WebRTC批量发送消息API接口…

关于前端数据库可视化库的选择,vue3+antd+g2plot录课计划

之前:antdv 现在:g2plot https://g2plot.antv.antgroup.com/manual/introduction 录课内容:快速入门 图表示例: 选择使用比较广泛的示例类型,录课顺序如下: 1、折线图2、面积图3、柱形图4、条形图5、饼…

W外链短网址平台怎么样?抖音/小红书/快手/微信卡片生成

在当今数字化时代,网址的便捷性和易记性对于用户体验和网站推广至关重要。短网址技术应运而生,以其简洁、易记、方便分享的特性,逐渐成为网站优化和推广的重要手段之一。其中,W外链作为一个功能全面的短网址服务平台,以…

一文彻底搞懂性能测试

性能测试概念 我们经常看到的性能测试概念,有人或称之为性能策略,或称之为性能方法,或称之为性能场景分类,大概可以看到性能测试、负载测试、压力测试、强度测试等一堆专有名词的解释。 针对这些概念,我不知道你看到的…

react 组件通信 —— 父子传值 【 函数式/类式 】

1、函数式组件通信 父子间通信 —— 父传子 父组件 export default function father() {return (<div style{{width:400px,height:200px,background:pink,marginLeft:500px}}>我是父组件<hr /><Son name{"韩小刀"}/></div>) } 子组件 ex…

刷代码随想录有感(131):动态规划——回文子串

题干&#xff1a; 代码&#xff1a; class Solution { public:int countSubstrings(string s) {vector<vector<bool>>dp(s.size(), vector<bool>(s.size(), false));int res 0;for(int i s.size() - 1; i > 0; i--){for(int j i; j < s.size(); j)…

[leetcode] shortest-subarray-with-sum-at-least-k 和至少为 K 的最短子数组

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int shortestSubarray(vector<int>& nums, int k) {int n nums.size();vector<long> preSumArr(n 1);for (int i 0; i < n; i) {preSumArr[i 1] preSumArr[i] nums[i];}int res n…

获取商铺信息,以及商铺信息的增删改查

本文章主要讲述如何对商铺信息进行基本的增删改查操作&#xff0c;及数据库对比。 1、获取首页仪表盘统计数据接口 待收费金额&#xff1a; SELECT count(1) as count,IFNULL(sum(total),0)as sum FROM payment_bill WHERE enabled_mark 1 AND pay_state0 欠费数据&#xf…

C++基础编程100题-021 OpenJudge-1.4-01 判断数正负

更多资源请关注纽扣编程微信公众号 http://noi.openjudge.cn/ch0104/01/ 描述 给定一个整数N&#xff0c;判断其正负。 输入 一个整数N(-109 < N < 109) 输出 如果N > 0, 输出positive; 如果N 0, 输出zero; 如果N < 0, 输出negative 样例输入 1样例输出…

【Neo4j】实战 (数据库技术丛书)学习笔记

Neo4j实战 (数据库技术丛书) 第1章演示了应用Neo4j作为图形数据库对改进性能和扩展性的可能性, 也讨论了对图形建模的数据如何正好适应于Neo4j数据模型,现在到了该动 手实践的时间了。第一章 概述 Neo4j将数据作为顶点和边存储(或者用Neo4j术语,节点和关系存 储)。用户被定…

Pytorch版本、安装和检验

基于conda包的环境创建、激活、管理与删除 CUDA版本 CUDA 是 NVIDIA 专为图形处理单元 (GPU) 上的通用计算开发的并行计算平台和编程模型&#xff0c;CUDA版本需满足对应的Pytorch要求 进入NVIDIA控制面板 进入左下角“系统信息”&#xff0c;找到组件 “NVIDIA CUDA 12.3.10…

DNS 杂谈

一、定义 DNS&#xff08;Domain Name System&#xff09;&#xff0c;域名系统&#xff0c;该系统记录域名和Ip地址的相互映射关系。用户访问互联网时&#xff0c;通过域名地址得到对应的IP地址&#xff0c;这个过程称为域名解析。DNS运行于UDP协议之上&#xff0c;使用的端口…

手撸俄罗斯方块(一)——简单介绍

手撸俄罗斯方块 简单介绍 《俄罗斯方块》&#xff08;俄语&#xff1a;Тетрис&#xff0c;英语&#xff1a;Tetris&#xff09;&#xff0c;是1980年末期至1990年代初期风靡全世界的电脑游戏&#xff0c;是落下型益智游戏的始祖&#xff0c;电子游戏领域的代表作之一&a…

【代码随想录】【算法训练营】【第64天】 [卡码117]软件构建 [卡码47]参加科学大会

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 卡码网。 day 64&#xff0c;周三&#xff0c;继续ding~ 题目详情 [卡码117] 软件构建 题目描述 卡码117 软件构建 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 C语言 [卡码…

算法的复杂度

文章目录 一、算法的效率1、复杂度的概念2、复杂度的重要性 二、时间复杂度三、空间复杂度四、大O的渐进表示发五、计算复杂度案例1、计算Func1函数的复杂度2、计算Fun2的时间复杂度3、计算Func3的时间复杂度4、计算Func4的时间复杂度5、计算strchr的时间复杂度6、计算Func5的时…

MySQL空间索引

空间类型是建立在空间类型字段上的。 空间类型 MySQL的空间类型很多&#xff0c;我就不逐一介绍了。重要分四大类&#xff1a; GeometryCurveSurfaceGeometryCollection 前三种&#xff0c;地理、曲线、曲面都是不可实例化的。Geometry有一个子类Point, Curve有一个直接子类L…

电脑误删除的文件怎么恢复免费 电脑误删文件导致无法开机怎么办

在使用电脑的时候&#xff0c;有时候可能会因为一些错误的操作&#xff0c;导致删除一些文件&#xff0c;如果是普通的文件&#xff0c;最坏的情况也就是文件找回来&#xff0c;如果删除的是系统文件&#xff0c;那么很有可能导致电脑开不了机。下面就给大家详细讲解&#xff0…

什么牌子充电宝好用?推荐四款质量与性价比双优充电宝!

在如今高度数字化的生活中&#xff0c;充电宝已经成为我们日常生活中必不可少的电子设备。然而&#xff0c;随着市场上充电宝品牌的不断增多&#xff0c;人们对充电宝的质量和安全性也越来越关注。充电宝作为一个涉及电池和充电技术的产品&#xff0c;安全性至关重要。选择一款…

防火墙安全策略用户认证综合实验

生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网 办公区设备10.0.2.10不允许访问DMz区的FTP服务器和HTTP服务器&#xff0c;仅能ping通10.0.3.10 办公区分为市场部和研发部&#xff0c;研发部Ip地址固定&#xff0c;访问dmz区使用匿名认证&#xff0c;市场部需…

王道计算机数据结构+插入排序、冒泡排序、希尔排序、快速排序、简单选择排序

本内容是基于王道计算机数据结构的插入排序、冒泡排序、希尔排序、快速排序、简单选择排序整理。 文章目录 插入排序算法性能代码 冒泡排序算法性能代码 希尔排序算法性能代码 快速排序算法性能代码 简单选择排序算法性能代码 插入排序 算法 算法思想&#xff1a;每次将一个…