【LLM多模态】CogVideoX文生视频模型结构和训练过程

note

  • 通过两阶段训练3D VAE,对视频进行压缩编码
    • 第一阶段:在较低分辨率和较少帧数的视频上进行训练,学习压缩和重建视频的基本能力
    • 第二阶段:在更长的视频上训练,提高模型处理长视频的能力,同时保持帧与帧之间的连续性
  • 为了提高文本和视频之间的对齐度,提出了一个带有专家自适应层归一化(LayerNorm)的专家transformer,以促进两种模态之间的深度融合,基于3d full attention进行时空注意力建模训练

文章目录

  • note
  • 一、模型介绍
  • 二、Cogvideox模型
    • 0. 模型概览
    • 1. VAE编码器
      • (1)3D VAE编码器结构
      • (2)3D VAE的两阶段训练
    • 2. 2. Expert transformer
      • (1)Expert transformer block
      • (2)3D full attention
  • 三、微调数据和微调模式
    • 1. cogvideox的数据处理pipeline
    • 2. 微调数据的准备
  • 四、评测效果
    • (1)自动化评估
    • (2)人工评估:
  • 五、论文总结
  • Reference

一、模型介绍

模型名CogVideoX-2BCogVideoX-5B
模型介绍入门级模型, 兼顾兼容性。运行、二次开发成本低。视频生成质量更高,视觉效果更好的更大尺寸模型。
推理精度FP16*(推荐), BF16, FP32, FP8* (E4M3,E5M2), INT8, 不支持INT4BF16(推荐), FP16, FP32, FP8*(E4M3, E5M2), INT8, 不支持INT4
单GPU显存消耗FP16: 18GB using SAT / 12.5GB* using diffusers
INT8: 7.8GB* using diffusers
BF16: 26GB using SAT / 20.7GB* using diffusers
INT8: 11.4GB* using diffusers
多GPU推理显存消耗FP16: 10GB* using diffusersBF16: 15GB* using diffusers
推理速度FP16: ~90*sBF16: ~180*s
微调精度FP16FP16
微调显存消耗(每卡)47 GB (bs=1, LORA)
61 GB (bs=2, LORA)
62GB (bs=1, SFT)
63 GB (bs=1, LORA)
80 GB (bs=2, LORA)
75GB (bs=1, SFT)
提示词语言English*English*
提示词长度上限226 Tokens226 Tokens
视频长度6秒6秒
帧率8帧/秒8帧/秒
视频分辨率720*480, 不支持其他分辨率(含微调)720*480, 不支持其他分辨率(含微调)
位置编码3d_sincos_pos_embed3d_rope_pos_embed

CogVideoX的核心技术特点如下:

  • 针对内容连贯性问题,智谱AI自主研发了一套高效的三维变分自编码器结构(3D VAE)。该结构能够将原始视频数据压缩至原始大小的2%,显著降低了视频扩散生成模型的训练成本和难度。结合3D RoPE位置编码模块,该技术有效提升了在时间维度上对帧间关系的捕捉能力,从而建立了视频中的长期依赖关系。
  • 在可控性方面,智谱AI打造了一款端到端的视频理解模型,该模型能够为大量视频数据生成精确且内容相关的描述。这一创新增强了模型对文本的理解和对指令的遵循能力,确保生成的视频更加符合用户的输入需求,并能够处理超长且复杂的prompt指令。
  • 我们的模型采纳了一种将文本、时间、空间三维一体融合的transformer架构。该架构摒弃了传统的cross attention模块,创新性地设计了Expert Block以实现文本与视频两种不同模态空间的对齐,并通过Full Attention机制优化模态间的交互效果。

注意:c端主要特点如下
快速生成:仅需30秒即可完成6秒视频的生成。
高效的指令遵循能力:即使是复杂的prompt,清影也能准确理解并执行。
内容连贯性:生成的视频能够较好地还原物理世界中的运动过程。
画面调度灵活性:例如,镜头能够流畅地跟随画面中的三只狗狗移动,效果宛如专业摄影师的跟拍。

二、Cogvideox模型

0. 模型概览

  • 通过两阶段训练3D VAE,对视频进行压缩编码
    • 第一阶段:在较低分辨率和较少帧数的视频上进行训练,学习压缩和重建视频的基本能力
    • 第二阶段:在更长的视频上训练,提高模型处理长视频的能力,同时保持帧与帧之间的连续性
  • 为了提高文本和视频之间的对齐度,提出了一个带有专家自适应层归一化(LayerNorm)的专家transformer,以促进两种模态之间的深度融合,基于3d full attention进行时空注意力建模训练(如下图)

在这里插入图片描述
训练方法:

  • 图像-文、视频-文混合训练
  • 渐进式训练:低分辨率训练 -› 高分辨率训练 -› 高质量高分辨率视频(占比20%)训练

1. VAE编码器

和2d vae的区别:conv2d->conv3d
连续性更强,压缩倍数更高
视频时序因果关系,单张图片压缩

(1)3D VAE编码器结构

下图内容:
(a) CogVideoX 中 3D VAE 的结构。它由一个编码器、一个解码器和一个潜在空间正则化器组成,实现了从像素到潜在空间的4×8×8压缩。

  • 图 2 (a) 显示了所提出的 3D VAE 的结构。它由一个编码器、一个解码器和一个潜在空间正则化器组成。高斯潜在空间受 Kullback-Leibler (KL) 正则化器的约束。编码器和解码器由四个对称排列的阶段组成,分别通过resnet块堆叠阶段的交错执行2×下采样和上采样。
  • 前两轮下采样和上采样涉及空间和时间维度,而最后一轮仅在空间上采样。这使得 3D VAE 能够在时间维度上实现 4 倍的压缩和空间维度上的 8×8 压缩。我们总共实现了从像素到潜在空间的4×8×8压缩。

在这里插入图片描述
(b) 时间因果卷积的上下文并行实现(上图右侧):

  • 我们采用时间因果卷积(Yu et al., 2023),它将所有填充放在卷积空间的开头,如图 2 (b) 所示。确保了未来的信息不会影响当前或过去的预测。
  • 因为处理具有大量帧的视频会引入过多的 GPU 内存使用,我们在时间维度上应用上下文并行技术进行 3D 卷积,以在多个设备之间分配计算。如图 2 (b) 所示,由于卷积的因果性质,每个rank简单地将长度为 k-1 的段发送到下一个rank,其中 k 表示时间内核大小。这导致通信开销相对较低。
    • vae训练:时间维度上做context parallel
    • 时间维度上的并行计算:通过时间因果卷积,每个计算单元(rank)只需要处理一部分数据,然后将处理结果传递给下一个计算单元。具体来说,每个单元处理长度为 k-1 的数据段,其中 k 是卷积核的时间维度大小。这种设计意味着每个单元在处理时只需要考虑本单元的数据和前一个单元传递的数据,从而减少了数据传输和通信的开销。

(2)3D VAE的两阶段训练

  1. 第一阶段训练:在这一阶段,3D VAE在较低分辨率和较少帧数的视频上进行训练,以节省计算资源。较高分辨率的编码能够自然地泛化到更低分辨率,而帧数的扩展则不那么顺畅。因此,第一阶段主要是为了学习压缩和重建视频的基本能力。
  2. 第二阶段训练:在第二阶段,使用上下文并行技术在更长的视频上进行微调(finetuning)。这一阶段的目的是提高模型处理长视频的能力,同时保持帧与帧之间的连续性,避免生成的视频中出现闪烁现象。

具体的loss函数如下, α , β \alpha, \beta α,β γ \gamma γ 是用于平衡不同损失项的权重参数。

L V A E = α ⋅ L R + β ⋅ L L + γ ⋅ L K L L_{V A E}=\alpha \cdot L_R+\beta \cdot L_L+\gamma \cdot L_{K L} LVAE=αLR+βLL+γLKL

  • L2损失(Mean Squared Error, MSE):计算原始帧和重建帧之间的均方误差。 L R = 1 N ∑ i = 1 N ∥ x i − x ^ i ∥ 2 2 L_R=\frac{1}{N} \sum_{i=1}^N\left\|x_i-\hat{x}_i\right\|_2^2 LR=N1i=1Nxix^i22
  • LPIPS感知损失(Perceptual Loss):使用LPIPS度量计算两个视频帧序列之间的感知差异。 L L = LPIPS ⁡ ( x , x ^ ) L_L=\operatorname{LPIPS}(x, \hat{x}) LL=LPIPS(x,x^)
  • GAN损失: 使用3D discriminator产生的损失,可能包括生成器和判别器的损失。 L K L = L_{K L}= LKL= − E q ( z ∣ x ) [ log ⁡ p ( z ) ] -\mathbb{E}_{q(z \mid x)}[\log p(z)] Eq(zx)[logp(z)]

其中GAN loss:在生成对抗网络(GANs)和其他一些生成模型中,判别器的作用是区分生成的样本和真实样本,从而为生成模型提供反馈。对于3D VAE中使用的GAN损失,它通常涉及到训练一个3D判别器,这个判别器专门设计来评估生成的视频帧或帧序列是否看起来真实。以下是3D VAE中可能使用的GAN损失的一个示例公式:
L G A N = − E x ~ ∼ P x ~ [ log ⁡ D ( x ~ ) ] + E x ∼ P data  [ log ⁡ ( 1 − D ( x ) ) ] L_{G A N}=-\mathbb{E}_{\tilde{x} \sim P_{\tilde{x}}}[\log D(\tilde{x})]+\mathbb{E}_{x \sim P_{\text {data }}}[\log (1-D(x))] LGAN=Ex~Px~[logD(x~)]+ExPdata [log(1D(x))]
其中:

  • D D D 是判别器。
  • x ~ \tilde{x} x~ 是从潜在空间 P x ~ P_{\tilde{x}} Px~ 中采样并经过解码器重建的假视频帧。
  • x x x 是来自真实数据分布 P data  P_{\text {data }} Pdata  的真实视频帧。
  • 第一项鼓励判别器正确识别假视频帧。
  • 第二项鼓励判别器将真实视频帧识别为真实。

这种损失函数有助于训练过程中生成器的优化,使得生成的视频不仅在像素级别上与真实视频相似,而且在视觉上也更加逼真。

2. 2. Expert transformer

(1)Expert transformer block

  • Patchify:3d vae将视频编码为T X H x W X C维度的tensor(T表示帧维度),然后沿着spatial 空间维度进行patchify切分为长度为T * (H/p) * (W/p)的序列Zvison。注意为了图像和视频的联合训练,这里不在时间维度T上进行patchify。
  • 3D-ROPE:视频tensor都能用3d坐标(x,y,t)表示,在这三个坐标分别使用1d-rope,分别占用隐藏层channel维度的3/8、3/8、2/8,最后沿着channel维度拼接得到3d-rope emb。
    • 消融实验:a图表明3d-rope比正弦位置编码更快loss收敛、b图两种方式相差不大
    • c图表明expert AdaLN + MLP没提高,所以最后使用expert AdaLN

在这里插入图片描述
问题:为啥没使用时间和空间分离的attention(容易造成帧之间的不一致,以往这么做是为了减少计算复杂度)
在这里插入图片描述

  • 更好的语义理解:Text+Video full attention
    • 让文本也参与 self attention 计算和 FFN
  • 文本和视频对齐:Text Expert AdaLN + Vision Expert AdaLN

(2)3D full attention

在这里插入图片描述
方式:mixed-duration training and Frame Pack
Frame pack:
在这里插入图片描述

三、微调数据和微调模式

1. cogvideox的数据处理pipeline

视频caption需要能够详细描述视频中的内容,之前开源的视频理解模型视频描述能力较差
Version1:利用图像重标注模型对每帧分别标注,结合短视频caption信息利用大语言模型summary得到视频描述
Version2:利用version 1得到的数据微调CogVLM2-Video,得到一个端到端的视频描迖模型

注:与训练对应,推理时输入详细的prompt,才能最大限度激发模型能力
在这里插入图片描述
训练数据:

  • 使用cogvlm-video构造视频字幕数据(其中也借助到了Panda70M构造视频字幕数据)
  • 使用纪录片等视频数据,基于 video-llama 训练了多个过滤器,用于自动筛选低质量视频

备注:

  • Panda-70M: Captioning 70M Videos with Multiple Cross-Modality Teachers https://arxiv.org/abs/2402.19479

2. 微调数据的准备

  • 文生视频-微调数据:文本-视频对数据
  • 数据集格式应该如下:
.
├── labels
│   ├── 1.txt
│   ├── 2.txt
│   ├── ...
└── videos├── 1.mp4├── 2.mp4├── ...

注:

  • 每个 txt 与视频同名,为视频的标签。视频与标签应该一一对应。
  • 一般不使用一个视频对应多个标签。
  • 如果为风格微调,准备至少50条风格相似的视频和标签,以利于拟合。

当前开源的2b和5b支持全参微调、Lora微调:
(1)如果是全参微调,更新3d full attention参数(vae和T5参数不会更新)
(2)如果是Lora微调,会更新3d full attention的四坨低秩矩阵参数:
在这里插入图片描述

四、评测效果

(1)自动化评估

指标:人类动作、场景一致、动态程度、多对象、风格匹配、动态质量、细粒度动态信息即GPT4o-MT Score
在这里插入图片描述

注:

  • 使用来自VBench的几个指标(Huang et al., 2024):人类行为、场景、动态度、多个对象和外观风格,但VBench有的指标不会采用,比如颜色度量旨在测量生成的视频中跨帧特定颜色对应的对象的存在,通过计算概率来评估模型的质量。然而,该指标可能会误导表现出更大变化的视频生成模型,因此在我们的评估中不包括它。
  • 对于更长的生成视频,一些模型可能会产生帧之间变化最小的视频,以获得更高的分数,但这些视频缺乏丰富的内容。因此,评估视频动态的指标变得更加重要。
    • 使用了两种视频评估工具:来自 Deviil (Liao et al., 2024) 的动态质量和来自 ChronoMagic (Yuan et al., 2024) 的 GPT4o-MTScore,它们更关注视频的动态特性。动态质量是通过将各种质量指标与动态分数的集成来定义的。这种方法减轻了视频动态和视频质量之间的负相关引起的偏差,从而对视频质量进行更彻底的评估。
    • 例如,ChronoMagic 引入了 GPT4o-MTScore,这是一种旨在测量延时视频的变质幅度的指标,例如描述物理、生物和气象变化的指标。该指标是通过定期从生成的视频中提取帧并使用 GPT-4o (OpenAI, 2024) 对变化程度进行评分来获得的,提供了对视频动态的细粒度评估。这种方法确保了对内容随时间的可变性进行更准确的评估,抵消了评分中静态帧序列的潜在偏差。

(2)人工评估:

在这里插入图片描述

人工评估的指标:

  • 感官质量:这一部分主要关注视频的感知质量,包括主体一致性、不同帧的连续性和稳定性。
  • 指令遵循:这部分侧重于生成的视频是否与指令对齐,包括主题、数量、元素和细节的准确性。
  • 物理模拟:这部分侧重于模型是否可以遵守物理世界的客观规律,例如照明效果、不同对象之间的交互以及流体动力学的真实性。
  • 画面质量:这一部分主要关注可以从单帧图像中评估的指标,包括美学质量、清晰度和保真度

五、论文总结

  1. 论文试图解决的问题:CogVideoX 旨在解决的问题是生成与文本提示相符的连贯、长时间且具有显著运动特征的视频。这包括提高文本-视频对齐、确保视频的连贯性以及处理视频数据的复杂性。
  2. 解决方案的关键:CogVideoX 的关键解决方案包括使用3D变分自编码器(VAE)来压缩视频数据,专家变换器(expert transformer)来改善文本和视频之间的对齐,以及采用分阶段训练技术来提高视频的连贯性和质量。
  3. 实验设计:实验设计包括使用不同的训练技术,如混合持续时间训练和分辨率逐步训练。使用VBench (Huang et al., 2024) 中的自动化度量评估和人类评估来测试模型性能。
  4. 定量评估的数据集:使用VBench (Huang et al., 2024) 进行定量评估,它是一套为自动评估生成视频质量设计的工具。CogVideoX-2B的模型权重已在GitHub上开源。
  5. 实验结果:实验结果表明CogVideoX在多个自动化指标和人类评估中表现出最先进的性能,这支持了其作为高质量文本到视频生成模型的假设。
  6. 论文贡献:论文的贡献包括提出了CogVideoX模型,该模型使用3D VAE和专家变换器生成高质量的视频;开发了有效的文本-视频数据处理流程;通过分阶段训练技术提高了模型性能;并在GitHub上开源了模型权重。
  7. 下一步工作:论文提到未来的工作将集中在改进CogVideoX捕捉复杂动态的能力,并确保视频生成的更高质量。此外,研究者们还在探索视频生成模型的扩展规律,并计划训练更大、更强大的模型以生成更长、更高质量的视频,推动文本到视频生成领域的边界。

Reference

[1] CogVideoX: Text-to-Video Diffusion Models with An Expert Transformer
[2] VBench: Comprehensive Benchmark Suite for Video Generative Models. CVPR 2024

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

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

相关文章

[进阶]面向对象之 包 final

文章目录 包什么是包包名的规则:什么时候需要导包 final常量 包 什么是包 包就是文件夹。用来管理各种不同功能的Java类,方便后期代码维护。 包名的规则: 公司域名反写包的作用,需要全部英文小写,见名知意。使用其他类时,需要…

idea连接数据库大避雷!!!

再跟着黑马学习的时候,用黑马的资料安装的数据库,命令行能正常启动,SQLyog也能正常连接,就是tmd idea连接不了。不论是原始的jdbc,还是其它方式都不行,一直报错: 然后就各种搜,有的说数据库驱动…

react18基础教程系列--安装环境及packagejson文件分析

一个React项目中,默认会安装: react:React框架的核心react-dom:React 视图渲染的核心「基于React构建WebApp(HTML页面)J—>react-native:构建和渲染App的react-scripts: 脚手架为了让项目目录看起来干净一些,把webpack打包的规则及相关的插件/LOADER…

51单片机 - DS18B20实验1-读取温度

上来一张图,明确思路,程序整体裤架如下,通过单总线,单独封装一个.c文件用于单总线的操作,其实,我们可以把点c文件看成一个类操作,其属性就是我们面向对象的函数,也叫方法&#xff0c…

Vue.nextTick 的工作机制

Vue.nextTick 是异步执行的,它使用了微任务(microtasks)或宏任务(macrotasks),具体使用哪种取决于 JavaScript 环境的支持情况。具体来说,Vue 优先选择使用微任务,如 Promise.then&a…

重生奇迹MU 浅析那些极具魔幻色彩的职业装备

沉稳厚重的剑士职业装备 剑士是所有喜欢近战作战方式的玩家首选的职业。作为来自勇者大陆的最强战士,剑士所穿戴的职业装备都偏向沉稳和厚重,通常全身覆盖重甲。这是因为剑士需要冲向敌人战斗,没有过硬的装备护身,他们很难承受住…

【车载开发系列】ParaSoft单元测试环境配置(三)

【车载开发系列】ParaSoft单元测试环境配置(三) 【车载开发系列】ParaSoft单元测试环境配置(三) 【车载开发系列】ParaSoft单元测试环境配置(三)一. 去插桩设置Step1:静态解析代码Step2:编辑Parasoft文件Step3:确认去插桩二. 新增测试用例Step1:生成测试用例Step2:执…

【Python第三方库】OpenCV库实用指南

文章目录 前言安装OpenCV读取图像图像基本操作获取图像信息裁剪图像图像缩放图像转换为灰度图图像模糊处理边缘检测图像翻转图像保存 视频相关操作方法讲解读取视频从摄像头读取视频 前言 OpenCV(Open Source Computer Vision Library)作为一个强大的计…

20 递归算法精髓解析:基准、性质、案例(阶乘、斐波拉契、猴子吃桃、汉诺塔等)、与循环的对比

目录 1 概述 2 递归的基本组成部分 2.1 基准情况 2.2 递归步骤 2.3 案例:循环实现阶乘的计算 2.4 案例:递归函数实现阶乘的计算 3 递归的性质 3.1 自我调用 3.2 栈的使用 3.3 问题分解 3.4 性能考虑 3.5 案例:递归的回溯 4 综合…

学习结构体的使用

对于结构体的创建,首先要创建一个结构体类型,像下面这样: 结构体对成员的访问,就是变量名.成员就可以了 当然对于结构体的声明还有一些特殊的声明 结构体的自引用 结构体的重命名

RK3562/3588系列之5—其他实用工具

RK3562/3588系列之5—其他实用工具 1. vmware 虚拟机与主机之间共享文件夹2.RK3588开发板与电脑进行adb连接参考文献1. vmware 虚拟机与主机之间共享文件夹 使用此功能前需要提前安装好vmware tools。 启动虚拟机,依次进行如下操作,在主机创建共享文件夹。 然后就可以在如下…

Java | Leetcode Java题解之第404题左叶子之和

题目&#xff1a; 题解&#xff1a; class Solution {public int sumOfLeftLeaves(TreeNode root) {if (root null) {return 0;}Queue<TreeNode> queue new LinkedList<TreeNode>();queue.offer(root);int ans 0;while (!queue.isEmpty()) {TreeNode node que…

记录一下,Vcenter清理/storage/archive空间

一、根因 vpostgres&#xff1a;这个目录可能包含与 vCenter Server 使用的 PostgreSQL 数据库相关的归档文件过多&#xff0c;导致空间被占用。 二、处理过程 1、SSH登陆到Vcenter. 2、df -Th **图中可以看到 /storage/archive 使用占比很高。 /storage/archive 目录通常用…

三明儿童自闭症寄宿制学校:关爱、教育、成长一站式服务

三明儿童自闭症寄宿制学校的启示&#xff1a;广州星贝育园——自闭症儿童的一站式成长乐园 在探讨自闭症儿童教育的道路上&#xff0c;寄宿制学校以其独特的优势&#xff0c;为孩子们提供了集关爱、教育、成长于一体的全方位服务。虽然文章开头提及了“三明儿童自闭症寄宿制学…

Leetcode面试经典150题-79.搜索单词

题目比较简单&#xff0c;回溯最基础的题&#xff0c;记得除非覆盖&#xff0c;否则一定要恢复现场就行 解法都在代码里&#xff0c;不懂就留言或者私信 class Solution {public boolean exist(char[][] board, String word) {int m board.length; int n board[0].length;i…

C++速通LeetCode简单第15题-有效的括号(全网最易懂代码注释)

解法分析&#xff1a; 越远的左括号匹配越远的右括号&#xff0c;越近的左括号匹配越近的右括号&#xff0c;正符合堆栈先进后出性质 。 因此利用堆栈保存左括号&#xff0c;通过循环逐个括号判断&#xff1a; class Solution { public:bool isValid(string s) {stack<…

Ubuntu20+Noetic+cartographer_ros编译部署

1 准备工作 &#xff08;1&#xff09;准备Ubuntu20系统。 &#xff08;2&#xff09;安装ROS系统,参考 https://blog.csdn.net/weixin_46123033/article/details/139527141&#xff08;3&#xff09;Cartographer相关软件包和源码下载&#xff1a; https://gitee.com/mrwan…

彻底理解浅拷贝和深拷贝

目录 浅拷贝实现 深拷贝实现自己手写 浅拷贝 浅拷贝是指创建一个新对象&#xff0c;这个对象具有原对象属性的精确副本 基本数据类型&#xff08;如字符串、数字等&#xff09;&#xff0c;在浅拷贝过程中它们是通过值传递的&#xff0c;而不是引用传递&#xff0c;修改值并不…

Java抽象类和接口的学习了解

目录 1. 抽象类 1.1 抽象类概念 1.2例子 1.3 抽象类语法 1.被 abstract 修饰的类--抽象类 2.抽象类中被 abstract 修饰的方法--抽象方法&#xff0c;该方法不用给出具体的实现体 3.当一个类中含有抽象方法时&#xff0c;该类必须要abstract修饰 4.抽象类也是类&#xff…

删除有序数组中的重复项(同向指针(快慢指针))

题目&#xff1a; 算法分析&#xff1a; 快慢指针从0出发若快慢指针不相同&#xff0c;快指针替换慢指针&#xff08;即慢指针后一位&#xff09;快指针每次都会增加题目求不重复的元素个数&#xff08;slow 为对应元素索引&#xff0c;故个数为slow1&#xff09; 算法图解…