开源版视频Diffusion Transformer来了吗?

news2024/11/16 0:19:11

今天分享的这篇文章来自于上海人工智能实验室,论文的Title为:Latte: Latent Diffusion Transformer for Video Generation。该方法探索如何有效的对视频中的时间、空间信息进行建模,将视频信息有效的处理成连续的tokens。另外在如何提高视频生成质量上,也做了非常多的实验。 项目已开源,相关实验结果可以借鉴~

image-20240226160019616
  • 标题: Latte: Latent Diffusion Transformer for Video Generation
  • URL: https://arxiv.org/abs/2401.03048v1
  • 代码: https://github.com/Vchitect/Latte
  • 作者: Xin Ma, Yaohui Wang, Gengyun Jia, Xinyuan Chen, Ziwei Liu, Yuan-Fang Li, Cunjian Chen, Yu Qiao

一、概述

1 Motivation

  • 视频生成技术如何提高生成质量是一个难题,如何更好的挖掘时序、空间的信息?采用何种架构对模型进行建模?这些都值得探索。
  • 本文提出了一个全新的Latent Diffusion Transformer,名为Latte,用于视频生成。其目标是在潜在空间中对视频分布进行建模,并提高生成视频的质量。

2 Methods

方法概述:

Latte首先从输入视频中提取spatio-temporal tokens(空间-时间标记),然后采用一系列的Transformer块来在潜在空间对视频分布进行建模。

这里有两个难题,一个是如何充分挖掘视频的时间和空间维度的信息,从视频中抽取出连续的tokens。 本文对比了四种高效的模型变体来探索最优处理视频输入的方式。

另外一个难题是如何提升视频生成质量。 本文在模型变种 (Model Variants)、timestep-class information injection (时间步长类信息注入)、temporal positional embedding (时间位置嵌入)、and learning strategies (学习策略)等方面进行了充分的实验,来探索最优提升质量的方法。

2.1 The model variants of Latte

为了对从视频中提取的spatio-temporal information进行建模,我们从分解输入视频的空间和时间维度的角度引入了四种高效的变体。这些变体旨在通过不同的方式分解输入视频的空间和时间维度,以提高视频生成的质量。以下是这四种模型变体的详细介绍:

image-20240220213100365
  1. Variant 1:这个变体的Transformer骨干由两种不同类型的Transformer块组成:空间Transformer块和时间Transformer块。空间Transformer块专注于在具有相同时间索引的token之间捕捉空间信息,而时间Transformer块则以“交错融合”的方式在时间维度上捕捉信息。
  2. Variant 2:与Variant 1中的“交错融合”设计不同,Variant 2采用了“后期融合”方法来结合时空信息。这个变体同样包含与Variant 1相同数量的Transformer块,输入形状与Variant 1相似,但融合时空信息的方式不同。
  3. Variant 3:专注于分解Transformer块中的多头注意力(multi-head attention)。这个变体首先在空间维度上计算自注意力,然后是时间维度,从而每个Transformer块都能捕捉到时空信息。
  4. Variant 4:多头注意力(MHA)被分解为两个组件,每个组件使用一半的注意力头。不同的组件分别处理空间和时间维度的token。两个不同的注意力操作计算完成后,时间维度的token被重塑并添加到空间维度的token中,然后作为Transformer块下一个模块的输入。

这些模型变体的设计旨在通过不同的策略来优化视频生成过程中的时空信息处理 ,以期达到更好的视频生成效果。在实验部分,作者通过综合分析这些变体,确定了最佳的实践方法,包括视频片段嵌入、模型变体、时间步长-类别信息注入、时间位置嵌入和学习策略,以实现高质量的视频生成。

2.2 The empirical analysis of Latte

为了提高生成视频的质量 ,我们通过严格的实验分析确定了 Latte 的最佳实验,包括video clip patch embedding(视频剪辑补丁嵌入)、model variants(模型变体)、timestep-class information injection,(时间步长-类信息注入)、temporal positional embedding(时间位置嵌入和学习策略),以下是这一节内容的详细介绍:

  1. Latent video clip patch embedding

    image-20240220220330989

    • 作者探索了两种视频片段嵌入方法:均匀帧补丁嵌入(uniform frame patch embedding)和压缩帧补丁嵌入(compression frame patch embedding)。
    • 均匀帧补丁嵌入是将每个视频帧单独嵌入到token中,类似于ViT(Vision Transformer)的方法。
    • 考虑捕获时间信息,然后将 ViT patch 嵌入方法从 2D 扩展到 3D,随后沿着时间维度提取,通过按一定步长提取时间序列中的“管状”结构,然后映射到token。
  2. Timestep-class information injection

    image-20240226160731409

    图 4:(a)第 3.3.2 节中描述的 S-AdaLN 架构。(b)图 2(a)和(b)中使用的 vanilla transformer 块的架构。MLP 和 MHA 分别表示多层感知层和多头注意力。

    • 为了将时间步长或类别信息集成到模型中,作者尝试了两种方法:将信息作为token处理(all tokens),以及采用可扩展自适应层归一化(S-AdaLN)。
    • S-AdaLN通过线性回归计算γc和βc,然后应用到Transformer块的隐藏嵌入上,以适应性地编码时间步长或类别信息。
  3. Temporal positional embedding

    • 为了使模型理解时间信号,作者探索了两种时间位置嵌入方法:绝对位置编码(absolute positional encoding)和相对位置编码(relative positional encoding)。
    • 绝对位置编码使用不同频率的正弦和余弦函数,而相对位置编码则使用旋转位置编码(RoPE)来捕捉连续帧之间的时间关系。
  4. Enhancing video generation with learning strategies

    • 作者研究了两种学习策略:使用预训练模型(ImageNet预训练)和图像-视频联合训练(image-video joint training)。
    • 使用预训练模型可以利用ImageNet上学习到的图像生成知识,而图像-视频联合训练则通过在每个视频样本后附加随机选择的视频帧来提高模型的多样性和性能。

通过这些实证分析,作者确定了最佳的模型配置和训练策略,使得Latte模型能够在多个标准视频生成数据集上实现最先进的性能。这些分析结果对于理解如何将Transformer架构有效地集成到扩散模型中,以及如何优化视频生成过程具有重要意义。

3 Conclusion

  • Latte模型在四个标准视频生成数据集(FaceForensics, SkyTimelapse, UCF101和Taichi-HD)上展示了其最先进的性能。
  • Latte还被扩展到了文本到视频的生成任务上,并取得了与最新T2V模型相媲美的结果。

二、详细内容

1 在4个不同数据集上的视频生成效果

定性:

image-20240221193507684
  • 在具有挑战性的 UCF101 数据集内合成高质量视频方面表现出色,而其他方法往往在这项任务中失败。

定量:

image-20240221164428981

image-20240221085158693

数据集选择:

  • 实验主要在四个公开的视频数据集上进行:FaceForensics、SkyTimelapse、UCF101 和 Taichi-HD。
  • 这些数据集用于训练和测试模型,以生成具有高分辨率(256×256像素)的视频。

评估指标

  • 评估指标:Fréchet Video Distance (FVD),FVD是一种评估视频生成质量的指标,它衡量生成视频与真实视频之间的相似度。
  • FID和IS则用于评估视频帧的质量。

基线比较

  • 与当前最先进的视频生成方法进行了比较,包括MoCoGAN、VideoGPT、MoCoGAN-HD、DIGAN、StyleGAN-V、PVDM、MoStGAN-V 和 LVDM。
  • Latte(本文提出的方法)
  • Latte+IMG(本文提出的方法,结合了图像-视频联合训练):放方法在4项任务中,都取得了sota。

2 消融实验

image-20240221091118624

  1. Video sampling interval:研究不同的视频采样间隔对模型性能的影响。
  2. Temporal positional embedding:比较绝对位置编码和相对位置编码对模型性能的影响。
  3. ImageNet pretraining: 比较是否在ImageNet数据上进行预训练对实验结果的影响。
  4. Model variants:比较Latte模型的不同变体(Variant 1, Variant 2, Variant 3, Variant 4)在FVD上的表现。
  5. Video clip patch embedding:研究不同的视频片段嵌入方法对FVD的影响,例如均匀帧补丁嵌入与压缩帧补丁嵌入。
  6. Timestep-class information injection:分析将时间步长或类别信息以不同方式注入模型(如所有token或可扩展自适应层归一化S-AdaLN)对FVD的影响。

结论:

  1. Video sampling interval:不同的采样间隔在训练初期对性能有显著影响,但随着训练的进行,这些影响逐渐减小。
  2. Temporal positional embedding:绝对位置编码在某些情况下能提供稍微更好的结果。
  3. ImageNet pretraining: 使用在ImageNet上预训练的模型作为初始权重可以帮助视频生成模型更快地学习,但随着训练的进行,模型可能会遇到适应特定视频数据集分布的挑战。这可能导致性能在达到一定水平后趋于稳定,不再显著提高。
  4. Model variants:Variant 1在迭代增加时表现最佳,而Variant 4由于计算效率较高,尽管性能稍逊,但在资源受限的情况下可能是一个不错的选择。
  5. Video clip patch embedding:均匀帧补丁嵌入在某些情况下表现更好,因为它可能更好地保留了视频的时空信息。
  6. Timestep-class information injection:S-AdaLN方法更有效地将信息传递给模型,从而提高了性能。

3 模型大小对性能的影响

模型参数设置:

image-20240221113157248

不同参数模型效果:

image-20240221102637163

图表可能显示随着模型大小的增加,模型在视频生成任务上的性能(如FVD分数)通常会有所提高。这表明更大的模型能够捕捉更复杂的视频特征,从而生成更高质量的视频。

4 文本到视频生成(T2V)任务的表现

image-20240226153949725

结论:Latte文生图能力也能与当前领先的VideoFusion和Align your Latents T2V模型相比了。

三、总结

亮点总结:

  • Latte采用Transformer技术实现了视频生成的模型革新。 创新性地提取空间-时间标记并在潜在空间建模视频,效果在多个视频生成数据集上取得sota。
  • 四种效率变体的引入允许更灵活地处理视频数据。 模型内部transformer结构上,探索了多种变体用于处理视频的时间、空间信息。
  • 丰富的实验和分析确保了最佳实践的确定。 为了提升视频生成质量,在多个方面进行详细的实验与结果分析,相关经验都可借鉴!

应用价值和行业影响:

  • Latte模型极具潜力,能够在视频生成和相关领域如自动动画制作、虚拟现实内容创建等方面发挥重大作用。
  • 文本到视频的生成能力显示Latte在跨媒体内容生成领域的广泛适用性,对未来研究影响深远。

目前代码已经开源,相关代码实现和实验经验,可以给大家做一个有效的参考!
欢迎关注公众号: NLP PaperWeekly,后台回复Latte领取原始论文!
进技术交流群请添加我微信(id: FlyShines)
请备注昵称+公司/学校+研究方向,否则不予通过

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

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

相关文章

leedcode刷题--day7(字符串)

23 文章讲解 力扣地址 C class Solution { public:void reverseString(vector<char>& s) {int left 0;int right s.size() - 1; // right 应该初始化为 s.size() - 1while (left < right) {swap(s[left], s[right]); // 直接交换 s[left] 和 s[right] 的值lef…

【rust】11、所有权

文章目录 一、背景二、Stack 和 Heap2.1 Stack2.2 Heap2.3 性能区别2.4 所有权和堆栈 三、所有权原则3.1 变量作用域3.2 String 类型示例 四、变量绑定背后的数据交互4.1 所有权转移4.1.1 基本类型: 拷贝, 不转移所有权4.1.2 分配在 Heap 的类型: 转移所有权 4.2 Clone(深拷贝)…

【论文阅读-基于VilLBERT方法的导航】Vison-Language Navigation 视觉语言导航(2)

文章目录 1. 【2023ICCV】Learning Vision-and-Language Navigation from YouTube Videos摘要和结论引言Building VLN Dataset from YouTube Videos模型框架实验 2. 【2021ICCV】Airbert: In-domain Pretraining for Vision-and-Language Navigation摘要和结论引言BnB DatasetA…

JavaWeb之 Web概述

目录 前言1.1 Web和 JavaWeb的概念1.2 JavaWeb技术栈1.2.1 B/S架构1.2.2 静态资源1.2.3 动态资源1.2.4 数据库1.2.5 HTTP协议1.2.6 Web服务器 1.3 JavaWeb 学习内容 前言 博主将用 CSDN 记录 Java 后端开发学习之路上的经验&#xff0c;并将自己整理的编程经验和知识分享出来&a…

3.1作业

作业要求&#xff1a; 通过w(红色臂角度增大)s&#xff08;红色臂角度减小&#xff09;d&#xff08;蓝色臂角度增大&#xff09;a&#xff08;蓝色臂角度减小&#xff09;按键控制机械臂 程序代码&#xff1a; #include<myhead.h> #define SER_IP "192.168.126.…

《C++ Primer Plus》《10、对象和类》

文章目录 前言&#xff1a;1 过程性编程和面向对象编程2 抽象和类2.1 类型是什么2.2 C中的类2.3 实现类成员函数2.4 使用类 3 类的构造函数和析构函数3.1 声明和定义构造函数3.2 使用构造函数3.3 默认构造函数3.4 析构函数 4 this指针5 对象数组6 类的作用域6.1 作用域为类的常…

云计算 2月20号 (认识操作系统)

1、认识操作系统 计算机系统的组成 知识点1&#xff1a;没有软件系统的计算机称之为"裸机" 知识点2&#xff1a;裸机提供基本的可计算性资源 知识点3&#xff1a;操作系统是最靠近硬件的软件层&#xff0c;负责管理和控制计算机硬件。 计算机硬件组成五大部件 运算器…

1美元持有ZKFair PFP-CyberArmy,潜在收益分析

3月2日&#xff0c;ZKFair PFP-CyberArmy 将在 Element 上正式开始Public Sale。

C++基于多设计模式下的同步异步日志系统day2

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C基于多设计模式下的同步&异步日志系统 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 主要内容实现了日志代码设计的实…

防御保护课程笔记

内容安全 防病毒 过滤技术 密码学

移动互联网时代的APP上架流程和要点

摘要 本文将介绍移动应用程序上架的基本流程和要点&#xff0c;包括应用商店注册、APP材料准备、打包上传App、APP审核以及发布APP的详细步骤。此外&#xff0c;还会提到利用appuploder工具简化iOS应用上架步骤的方法&#xff0c; 引言 在移动互联网时代&#xff0c;开发一…

【笔记】深度学习入门:基于Python的理论与实现(六)

深度学习 深度学习是加深了层的深度神经网络 加深网络 本节我们将这些已经学过的技术汇总起来&#xff0c;创建一个深度网络&#xff0c;挑战 MNIST 数据集的手写数字识别 向更深的网络出发 基于33的小型滤波器的卷积层。激活函数是ReLU。全连接层的后面使用Dropout层。基…

Laravel框架: Call to a member function connect() on null 异常报错处理

Laravel框架&#xff1a; Call to a member function connect() on null 异常报错处理 Date: 2024.03.01 21:03:11 author: lijianzhan 原文链接: https://learnku.com/laravel/t/63721 问题&#xff1a; local.ERROR: Call to a member function connect() on null {"…

win安装卸载python3.13

一、安装 访问python官网&#xff1a;https://www.python.org/ 点击“Downloads” 点击“Windows” 找到自己要下载的版本和位数&#xff0c;比如我这个是3.13版本、64位的安装包 下载好了之后&#xff0c;双击安装包 勾选“Add python.exe to PATH”&#xff1a;把python环…

线程安全的集合容器

线程安全的集合容器 List集合中的线程安全的集合容器&#xff1a; 在旧版本中Vector是线程安全的集合容器&#xff0c;在JDK 1.5以后CopyOnWriteArrayList也是线程安全的集合容器&#xff0c;CopyOnWriteArrayList的数据结构是Object类型的数组。 CopyOnWriteArrayList是如何…

【问题记录】pip install遇到“No space left on device“

一、pip安装包的过程中出现以下问题 二、问题溯源 【1】刚开始以为是空间不足&#xff0c;后来 df -h 看了一下&#xff0c;pip安装目录下空间绝对足够&#xff01;明显不是空间不足的问题。 【2】后来查了一下&#xff0c;发现是home目录下的空间满了&#xff0c;pip安装时&…

华为 OD 一面算法原题

2.2 亿彩票公布调查结果 昨天&#xff0c;闹得沸沸扬扬的《10 万中 2.2 亿》的彩票事件&#xff0c;迎来了官方公告。 简单来说&#xff0c;调查结果就是&#xff1a;一切正常&#xff0c;合规合法。 关于福利彩票事件&#xff0c;之前的推文我们已经分析过。 甚至在后面出现《…

车辆管理系统:一套系统掌握车辆的运营、维护和使用情况

hello&#xff0c;我是贝格前端工场&#xff0c;直接给大家介绍了各类通用的B端管理系统&#xff0c;收到了大家的欢迎。本次开始介绍针对具体行业的管理系统该如何设计和开发&#xff0c;欢迎大家持续关注、点赞&#xff0c;如有系统定制需求可以私信我们。 一、什么是车辆管理…

Muduo库核心代码及优秀编程细节剖析

一、前言&#xff1a; Muduo库是陈硕个人开发的Tcp网络编程库&#xff0c;支持Reactor模型。这篇博文对Muduo库中的Multi-reactor架构代码进行逻辑梳理&#xff0c;同时认真剖析了作者每一处精妙的代码设计思想。 目前我只重构并剖析了Muduo库中的核心部分&#xff0c;即Mult…

Qt应用软件【测试篇】cppchecker静态代码检查

文章目录 cppcheker简介下载地址与安装检查项目QT Creator使用CPP Cheker开启检查常见错误总结错误信息说明cppcheker简介 Cppcheck 是一个用于 C/C++ 代码的分析工具。它提供独特的代码分析以检测错误,并专注于检测未定义的行为和危险的编码结构。其目标是仅检测代码中的真实…