首页 > 其他分享 >Unet已死,Transformer当立!详细解读基于DiT的开源视频生成大模型EasyAnimate

Unet已死,Transformer当立!详细解读基于DiT的开源视频生成大模型EasyAnimate

时间:2024-06-21 10:57:04浏览次数:23  
标签:视频 Transformer EasyAnimate 训练 模型 已死 VAE DiT 生成

Diffusion Models视频生成-博客汇总

前言:最近阿里云PIA团队开源了基于Diffusion Transformer结构的视频生成模型EasyAnimate,并且提出了专门针对视频的slice VAE,对于目前基于Unet结构的视频生成最好如SVD形成了降维打击,不论是生成质量、生成时长上都是遥遥领先。这篇博客详细解读一下EasyAnimate的技术报告《EasyAnimate: A High-Performance Long Video Generation Method based on Transformer Architecture》

目录

贡献概述

模型结构

Video VAE

Video DiT结构

三阶段训练

DiT训练

数据集清洗策略

视频分割

视频过滤

视频字幕

效果试用

个人感悟


贡献概述

EasyAnimate是一种用于视频生成的高级方法,它利用 Transformer 架构的力量来实现高性能结果。作者通过扩展了最初设计用于 2D 图像合成的 DiT 框架,通过结合运动模块块来适应 3D 视频生成的复杂性。它用于捕获时间动态,从而确保产生一致的帧和无缝的运动转换。运动模块可以适应各种 DiT 基线方法来生成具有不同风格的视频。它还可以在训练和推理阶段生成具有不同帧速率和分辨率的视频,适用于图像和视频。

模型结构

Video VAE

传统的基于图像的 VAE 的一个显着限制是它不能跨时间维度压缩。因此,细微的帧间时间关系仍未捕获,结果潜在特征很大,导致CUDA内存需求激增。这些挑战极大地阻碍了这种方法在创建长视频方面的实用性。一个主要的挑战在于有效地压缩视频编码器和解码器中的时间维度。

作者使用了MagViT,在MagViT的基础上引入切片机制,提出了Slice VAE。

MagViT采用因果 3D 卷积块。该块在使用 vanilla 3D 卷积之前以先前时间的方式沿时间轴引入填充,从而确保帧利用先验信息来增强时间因果关系,同时保持不受后续帧的影响。尽管 MagViT 对视频编码和解码的复杂方法,但它在训练极其冗长的视频序列时面临挑战,这主要是由于内存限制。具体来说,所需的内存甚至经常超过 A100 GPU 可用的内存,使得大型视频的一步解码(例如 1024x1024x40)是不可行的。所以不能尝试一步解码整个序列,需要切片后批量处理。

为了批处理视频序列,作者首先沿空间维度尝试了切片机制。然而,这导致了不同批次之间的轻微照明不一致。随后,我们转移到沿时间维度切片。通过这种方法,将一组视频帧分成几个部分,每个部分分别编码和解码,如图2(a)所示。尽管如此,不同批次的信息分布是不相等的。例如,由于MagViT中的前向填充过程,第一个批次包含一个真实特征和额外的填充特征,包含的信息较少。这种不均匀的信息分布是一个可能阻碍模型优化的独特方面。此外,这种批处理策略还会影响处理过程中视频的压缩率。或者,我们实现了不同批次的特征共享,如图 2(b) 所示。在解码过程中,特征与其前后特征(如果有)连接,从而产生更一致的特征并实现更高的压缩率。这涉及通过 SpatialTemporalDownBlock(编码器中标记为浅橙色)压缩特征,针对空间和时间维度。这样,编码的特征封装了时间信息,这反过来又保留了计算资源,同时提高了生成结果的质量。

Video DiT结构

主要有两点改进:在PixArt-α的基础上加了运动模块,并用了UViT连接增强稳定性。

运动模块设计:运动模块来利用嵌入在帧长度内的时间信息,通过将注意力机制整合到时间维度上,该模型获得了同化这种时间数据的能力,这对于生成视频运动至关重要。采用网格重塑操作来增强注意力机制的输入标记池,从而增强图像中存在的空间细节的利用率,最终导致生成性能优越。经过训练的运动模块可以适应各种DiT基线模型,以生成不同风格的视频。

UViT:在训练过程中,作者观察到深度 DITs 往往不稳定,正如模型的损失表现出从 0.05 增加到 0.2 所证明的那样,最终增加到 1.0。为了追求通过 DIT 层反向传播期间增强模型优化过程和反转梯度崩溃,我们使用相应变换器块之间的长跳跃连接,这对于基于 UNet 框架的稳定扩散模型是有效的。为了在现有的扩散变压器体系结构中无缝地集成这种修改,而不需要进行全面的再训练,我们用零填充权值初始化几个完全连接的层(图3(c)中的灰色块)。

三阶段训练

DiT 分为三个阶段进行训练:第一阶段,对新训练的 VAE 进行图像训练。第二阶段,运动模块在大规模数据集上进行训练以生成视频。第三阶段,整个 DiT 网络受益于使用高分辨率视频和图像进行训练。

DiT训练

DiT训练同样分成三个阶段:

  • 第一阶段,使用图像数据将 DiT 参数与该 VAE 对齐开始。
  • 第二阶段,使用大规模视频数据集和图像数据对运动模块预训练。
  • 第三阶段,使用高质量的视频数据细化整个 DiT 模型以提高其生成性能。该模型是从较低到较高分辨率逐步缩放的,这是保存GPU内存和减少计算时间的有效策略。

数据集清洗策略

使用大约1200万张图像和视频数据来训练视频VAE模型和DiT模型。

视频分割

对于较长的视频分割,我们最初使用PySceneDetect。为了识别视频中的场景变化,并基于这些转换执行场景切割,以确保视频片段的主题一致性。切割后,我们只保留那些长度在 3 到 10 秒之间进行模型训练的片段。

视频过滤

过滤掉运动分数异常、包含字幕和美学评分低的片段。

视频字幕

VideoChat2和VILA对视频打上字幕。

效果试用

很尴尬呀,传不上来,总之效果挺不错的。

个人感悟

1、效果上比Sora放出来的Demo是要差不少的,但是比Open-Sora要好一些,重点是比SVD强不少。

2、感觉基于DiT结构确实好用啊,估计还会有更多开源的作品出来,期待一波。

3、好的模型赶紧用来搞新业务搞新论文,鸡冻,冲鸭!

标签:视频,Transformer,EasyAnimate,训练,模型,已死,VAE,DiT,生成
From: https://blog.csdn.net/qq_41895747/article/details/139827865

相关文章

  • transformer原理
     Transformer注意力架构原理 输入层 embedding词嵌入向量 将文本中词汇的数字表示转变为向量表示,在这样的高维空间捕捉词汇间的关系 语义相近的词语对应的向量位置也更相近 每个词先通过词典转换成tokenId,在把tokenId转化为一个512纬的向量 位置编码 将每个词的位置......
  • Transformer 模型的 PyTorch 实现
    Google2017年的论文Attentionisallyouneed阐释了什么叫做大道至简!该论文提出了Transformer模型,完全基于Attentionmechanism,抛弃了传统的RNN和CNN。我们根据论文的结构图,一步一步使用PyTorch实现这个Transformer模型。Transformer架构首先看一下transformer的结......
  • 单细胞测序最好的教程(十):细胞类型注释迁移|万能的Transformer
    作者按本章节主要讲解了基于transformer的迁移注释方法TOSICA,该算法在迁移注释上达到了SOTA的水平,在注释这么卷的赛道愣是杀出了一条血路。本教程首发于单细胞最好的中文教程,未经授权许可,禁止转载。全文字数|预计阅读时间:3000|3min——Starlitnightly(星夜)1.背景迁移注释......
  • 在AMD GPUs上构建解码器Transformer模型
    BuildingadecodertransformermodelonAMDGPU(s)—ROCmBlogs在这篇博客中,我们展示了如何使用PyTorch2.0和ROCm在单个节点上的单个和多个AMDGPU上运行AndrejKarpathy精美的PyTorch重新实现的GPT。我们使用莎士比亚的作品来训练我们的模型,然后进行推理,看看我们的模......
  • [论文速览] Small-scale proxies for large-scale Transformer training instabilitie
    Pretitle:Small-scaleproxiesforlarge-scaleTransformertraininginstabilitiessource:ICLR2024paper:https://arxiv.org/abs/2309.14322code:ref:小尺度Transformer如何ScaleIdea这篇文章想通过小模型来研究大模型(Transformer)训练不稳定的原因Method(Model)图......
  • Transformer预测 | 基于Transformer的风电功率多变量时间序列预测(Matlab)
    文章目录预测效果文章概述模型描述程序设计参考资料预测效果文章概述Transformer预测|基于Transformer的风电功率多变量时间序列预测(Matlab)Transformer模型本质上都是预训练语言模型,大都采用自监督学习(Self-supervisedlearning)的方式在......
  • Transformer预测 | 基于Transformer的光伏功率多变量多步预测(Matlab)
    文章目录预测效果文章概述模型描述程序设计参考资料预测效果文章概述Transformer预测|基于Transformer的光伏功率多变量多步预测(Matlab)Transformer模型本质上都是预训练语言模型,大都采用自监督学习(Self-supervisedlearning)的方式在大量......
  • Transformer预测 | 基于Transformer的股票价格预测(Matlab)
    文章目录预测效果文章概述模型描述程序设计参考资料预测效果文章概述Transformer预测|基于Transformer的股票价格预测(Matlab)Transformer模型本质上都是预训练语言模型,大都采用自监督学习(Self-supervisedlearning)的方式在大量生语料上进......
  • Transformer模型代码(详细注释,适合新手)
    #Hyperparametersbatch_size=4#Howmanybatchespertrainingstepcontext_length=16#Lengthofthetokenchunkeachbatchd_model=64#Thesizeofourmodeltokenembeddingsnum_blocks=8#Numberoftransformerblocksnum_heads=4#Numbe......
  • Structure-Aware Transformer for Graph Representation Learning
    目录概SAT代码ChenD.,O'BrayL.andBorgwardtK.Structure-awaretransformerforgraphrepresentationlearning.ICML,2022.概Graph+Transformer+修改attention机制.SATTransformer最重要的就是attention机制:\[\text{Attn}(x_v)=\sum_{v\in......