两分钟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

相关文章

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

Python实现视频转换为音频的方法详解

《Python实现视频转换为音频的方法详解》这篇文章主要为大家详细Python如何将视频转换为音频并将音频文件保存到特定文件夹下,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5. 注意事项

nginx-rtmp-module模块实现视频点播的示例代码

《nginx-rtmp-module模块实现视频点播的示例代码》本文主要介绍了nginx-rtmp-module模块实现视频点播,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录预置条件Nginx点播基本配置点播远程文件指定多个播放位置参考预置条件配置点播服务器 192.

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...