两分钟1200帧的长视频生成器StreamingT2V来了,代码将开源

2024-04-02 02:28

本文主要是介绍两分钟1200帧的长视频生成器StreamingT2V来了,代码将开源,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

两分钟1200帧的长视频生成器StreamingT2V来了,代码将开源

广阔的战场,风暴兵在奔跑……

prompt:Wide shot of battlefield, stormtroopers running…

这段长达 1200 帧的 2 分钟视频来自一个文生视频(text-to-video)模型,尽管 AI 生成的痕迹依然浓重,但我们必须承认,其中的人物和场景具有相当不错的一致性。

这是如何办到的呢?要知道,虽然近些年文生视频技术的生成质量和文本对齐质量都已经相当出色,但大多数现有方法都聚焦于生成短视频(通常是 16 或 24 帧长度)。然而,适用于短视频的现有方法通常无法用于长视频(≥ 64 帧)。

即使是生成短序列,通常也需要成本高昂的训练,比如训练步数超过 260K,批大小超过 4500。如果不在更长的视频上进行训练,通过短视频生成器来制作长视频,得到的长视频通常质量不佳。而现有的自回归方法(通过使用短视频后几帧生成新的短视频,进而合成长视频)也存在场景切换不一致等一些问题。

为了克服现有方法的缺点和局限,Picsart AI Resarch 等多个机构联合提出了一种新的文生视频方法:StreamingT2V。这也是一种自回归方法,并配备了长短期记忆模块,进而可以生成具有时间一致性的长视频。

  • 论文标题:StreamingT2V: Consistent, Dynamic, and Extendable Long Video Generation from Text

  • 论文地址:https://arxiv.org/abs/2403.14773

  • 项目地址:https://streamingt2v.github.io/

如下是一段 600 帧 1 分钟的视频生成结果,可以看到蜜蜂和花朵都有非常出色的一致性:

prompt: Marvel at the diversity of bee species…

为此,该团队提出了条件注意力模块(CAM)。得益于其注意力性质,它可以有效地借用之前帧的内容信息来生成新的帧,同时还不会让之前帧的结构 / 形状限制新帧中的运动情况。

而为了解决生成的视频中人与物外观变化的问题,该团队又提出了外观保留模块(APM):其可从一张初始图像(锚帧)提取对象或全局场景的外观信息,并使用该信息调节所有视频块的视频生成过程。

为了进一步提升长视频生成的质量和分辨率,该团队针对自回归生成任务对一个视频增强模型进行了改进。为此,该团队选择了一个高分辨率文生视频模型并使用了 SDEdit 方法来提升连续 24 帧(其中有 8 帧重叠帧)视频块的质量。

为了使视频块增强过渡变得平滑,他们还设计了一种随机混合方法,能以无缝方式混合重叠的增强过的视频块。

方法

首先,生成 5 秒时长的 256 × 256 分辨率的视频(16fps),然后将其增强至更高的分辨率(720 × 720)。图 2 展示了其完整的工作流程。

长视频生成部分由初始化阶段(Initialization Stage)和流式文生视频阶段(Streaming T2V Stage)构成。

其中,初始化阶段是使用一个预训练的文生视频模型(比如可以使用 Modelscope)来生成第一个 16 帧的视频块;而流式文生视频阶段则是以自回归方式生成后续帧的新内容。

对于自回归过程(见图 3),该团队新提出的 CAM 可以利用之前视频块最后 8 帧的短期信息,实现块之间的无缝切换。另外,他们还会使用新提出的 APM 模块来提取一张固定锚帧的长期信息,使自回归过程能稳健地应对事物和场景细节在生成过程中的变化。

在生成得到了长视频(80、240、600、1200 或更多帧)之后,他们再通过流式优化阶段(Streaming Refinement Stage)来提升视频质量。这个过程会以自回归方式使用一个高分辨率文生短视频模型(如可使用 MS-Vid2Vid-XL),再搭配上新提出的用于无缝视频块处理的随机混合方法。而且后一步无需额外的训练,这使得该方法无需较高的计算成本。

条件注意力模块

首先,将所使用的预训练文生(短)视频模型记为 Video-LDM。注意力模块(CAM)的构成是一个特征提取器、一个向 Video-LDM UNet 注入的特征注入器。

其中特征提取器使用了逐帧的图像编码器,之后是与 Video-LDM UNet 直到中间层一直使用的一样的编码器层(并通过 UNet 的权重初始化)。

对于特征注入,这里的设计则是让 UNet 中的每个长程跳跃连接通过交叉注意力关注 CAM 生成的相应特征。

外观保留模块

APM 模块可通过使用固定锚帧中的信息来将长期记忆整合进视频生成过程中。这有助于维持视频块生成过程中的场景和对象特征。

为了让 APM 能平衡处理锚帧和文本指令给出的引导信息,该团队做出了两点改进:(1)将锚帧的 CLIP 图像 token 与文本指令的 CLIP 文本 token 混合起来;(2)为每个交叉注意力层引入了一个权重来使用交叉注意力。

自回归视频增强

为了自回归地增强 24 帧的生成视频块,这里使用的是高分辨率(1280x720)的文生(短)视频模型(Refiner Video-LDM,见图 3)。这个过程的做法是首先向输入视频块加入大量噪声,然后再使用这个文生视频扩散模型来进行去噪处理。

不过,这种方法不足以解决视频块之间的过渡不匹配的问题。

为此,该团队的解决方案是随机混合方法。具体详情请参阅原论文。

实验

在实验中,该团队使用的评估指标包括:用于评估时间一致性的 SCuts 分数、用于评估运动量和扭变误差的运动感知扭变误差(MAWE)、用于评估文本对齐质量的 CLIP 文本图像相似度分数(CLIP)、美学分数(AE)。

消融研究

为了评估各种新组件的有效性,该团队从验证集中随机采样 75 个 prompt 执行了消融研究。

用于条件处理的 CAM:CAM 能帮助模型生成更一致的视频,其 SCuts 分数比相比较的其它基线模型低 88%。

长期记忆:图 6 表明长期记忆能在自回归生成过程中极大帮助维持对象和场景的特征稳定。

在一个定量评估指标(人再识别分数)上,APM 实现了 20% 的提升。

用于视频增强的随机混合:与其它两个基准相比,随机混合能带来显著的质量提升,从图 4 中也能看到:StreamingT2V 可以得到更平滑的过渡。

StreamingT2V 对比基线模型

该团队通过定量和定性评估比较了集成上述改进的 StreamingT2V 与多种模型,包括使用自回归方法的图像到视频方法 I2VGen-XL、SVD、DynamiCrafter-XL、SEINE,视频到视频方法 SparseControl,文本到长视频方法 FreeNoise。

定量评估:从表 8 可以看出,在测试集上的定量评估表明,StreamingT2V 在无缝视频块过渡和运动一致性方面的表现最佳。新方法的 MAWE 分数也显著优于其它所有方法 —— 甚至比第二好的 SEINE 低 50% 以上。SCuts 分数上也有类似表现。

此外,在生成视频的单帧质量上,StreamingT2V 仅略逊于 SparseCtrl。这表明这个新方法能够生成高质量的长视频,并且比其它对比方法具有更好的时间一致性和运动动态。

定性评估:下图展示了 StreamingT2V 与其它方法的效果比较,可以看出新方法能在保证视频动态效果的同时维持更好的一致性。

这篇关于两分钟1200帧的长视频生成器StreamingT2V来了,代码将开源的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/868732

相关文章

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

MySQL的配置文件详解及实例代码

《MySQL的配置文件详解及实例代码》MySQL的配置文件是服务器运行的重要组成部分,用于设置服务器操作的各种参数,下面:本文主要介绍MySQL配置文件的相关资料,文中通过代码介绍的非常详细,需要... 目录前言一、配置文件结构1.[mysqld]2.[client]3.[mysql]4.[mysqldum

Python多线程实现大文件快速下载的代码实现

《Python多线程实现大文件快速下载的代码实现》在互联网时代,文件下载是日常操作之一,尤其是大文件,然而,网络条件不稳定或带宽有限时,下载速度会变得很慢,本文将介绍如何使用Python实现多线程下载... 目录引言一、多线程下载原理二、python实现多线程下载代码说明:三、实战案例四、注意事项五、总结引

IDEA与MyEclipse代码量统计方式

《IDEA与MyEclipse代码量统计方式》文章介绍在项目中不安装第三方工具统计代码行数的方法,分别说明MyEclipse通过正则搜索(排除空行和注释)及IDEA使用Statistic插件或调整搜索... 目录项目场景MyEclipse代码量统计IDEA代码量统计总结项目场景在项目中,有时候我们需要统计