AIGC专栏16——CogVideoX-Fun V1.1版本详解 支持图&文生视频与更大的动态性 为文生视频添加控制

学习前言

前段时间开源了CogVideoX-Fun,发现第一版有些时候图生视频不太动,观察了原版的SVD和原版的CogVideoX-I2V,应该要给参考图片添加一些Noise会更好。并且重构了动作更大的数据集,目标动的也就越开心。

另外,筛选了一批带有Pose的视频,训练了带有控制的CogVideoX-Fun模型。
在这里插入图片描述

相关地址汇总

源码下载地址

https://github.com/aigc-apps/CogVideoX-Fun

HF测试链接

https://huggingface.co/spaces/alibaba-pai/CogVideoX-Fun-5b
感谢大家的关注。

CogVideoX-Fun V1.1详解

技术储备

Diffusion Transformer (DiT)

DiT基于扩散模型,所以不免包含不断去噪的过程,如果是图生图的话,还有不断加噪的过程,此时离不开DDPM那张老图,如下:
在这里插入图片描述
DiT相比于DDPM,使用了更快的采样器,也使用了更大的分辨率,与Stable Diffusion一样使用了隐空间的扩散,但可能更偏研究性质一些,没有使用非常大的数据集进行预训练,只使用了imagenet进行预训练。

与Stable Diffusion不同的是,DiT的网络结构完全由Transformer组成,没有Unet中大量的上下采样,结构更为简单清晰。

Stable Diffusion 3

在2024年3月,Stability AI发布了Stable Diffusion 3,Stable Diffusion 3一个模型系列,参数量从 800M 到 8B 不等。相比于过去的Stable Diffusion,Stable Diffusion 3的生图质量更高,且更符合人类偏好。

Stable Diffusion 3做了多改进,比如文本信息注入的方式,DiT模型在最初引入文本时,通常使用Cross Attention的方法结合文本信息,如Pixart-α、hunyuan DiT等。Stable Diffusion 3通过Self-Attention引入文本信息。相比于Cross Attention,使用Self-Attention引入文本信息不仅节省了Cross Attention的参数量,还节省了Cross Attention的计算量。

Stable Diffusion 3还引入了RMS-Norm。,在每一个attention运算之前,对Q和K进行了RMS-Norm归一化,用于增强模型训练的稳定性。

同时使用了更大的VQGAN,VQGAN压缩得到的特征维度从原来的4维提升到16维等。
在这里插入图片描述

EasyAnimate-I2V

请添加图片描述
在EasyAnimate中,需要重建的部分重建的参考图分别通过VAE进行编码,上图黑色的部分代表需要重建的部分,白色的部分代表首图,然后和随机初始化的latent进行concat,假设我们期待生成一个384x672x144的视频,此时的初始latent就是4x36x48x84,需要重建的部分重建的参考图编码后也是4x36x48x84,三个向量concat到一起后便是12x36x48x84,传入DiT模型中进行噪声预测。

这样模型就可以知道视频的哪些部分需要重建,通过inpaint的方式实现图生视频。

算法细节

V1.1特点

在CogVideoX-FUN v1.1中,我们在之前的数据集中再次做了筛选,选出其中动作幅度较大,而不是静止画面移动的视频,数量大约为0.48m。模型依然支持图片与视频预测,支持像素值从512x512x49、768x768x49、1024x1024x49与不同纵横比的视频生成。我们支持图像到视频的生成与视频到视频的重建。

另外,我们还发布了添加控制信号的训练代码与预测代码,并发布了初版的Control模型。

对比V1.0版本,CogVideoX-FUN V1.1突出了以下功能:

  • 在5b模型中,给参考图片添加了Noise,增加了视频的运动幅度。
  • 发布了添加控制信号的训练代码与预测代码,并发布了初版的Control模型。

参考图片添加Noise

在原本CogVideoX-FUN V1.0的基础上,我们参考CogVideoXSVD,在非0的参考图向上添加Noise以破环原图,追求更大的运动幅度。

我们5b模型中添加了Noise,2b模型仅使用了新数据进行了finetune,因为我们在2b模型中尝试添加Noise之后,生成的视频运动幅度过大导致结果变形,破坏了生成结果,而5b模型因为更为的强大生成能力,在运动中也保持了较为稳定的输出。

另外,提示词对生成结果影响较大,请尽量描写动作以增加动态性。如果不知道怎么写正向提示词,可以使用smooth motion or in the wind来增加动态性。并且尽量避免在负向提示词中出现motion等表示动态的词汇。

添加控制信号的CogVideoX-Fun

在原本CogVideoX-FUN V1.0的基础上,我们使用Pose控制信号替代了原本的mask信号,将控制信号使用VAE编码后作为Guidance与latent一起进入patch流程,

我们在0.48m数据中进行了筛选,选择出大约20000包含人像的视频与图片进行pose提取,作为condition控制信号进行训练。

在进行训练时,我们根据不同Token长度,对视频进行缩放后进行训练。整个训练过程分为两个阶段,每个阶段的13312(对应512x512x49的视频),53248(对应1024x1024x49的视频)。

以CogVideoX-Fun-V1.1-5b-Pose为例子,其中:

  • 13312阶段,Batch size为128,训练步数为2.4k
  • 53248阶段,Batch size为128,训练步数为1.2k。

工作原理图如下:
ui

项目使用

项目启动

推荐在docker中使用CogVideoX-Fun:

# pull image
docker pull mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easycv/torch_cuda:cogvideox_fun

# enter image
docker run -it -p 7860:7860 --network host --gpus all --security-opt seccomp:unconfined --shm-size 200g mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easycv/torch_cuda:cogvideox_fun

# clone code
git clone https://github.com/aigc-apps/CogVideoX-Fun.git

# enter CogVideoX-Fun's dir
cd CogVideoX-Fun

# download weights
mkdir models/Diffusion_Transformer
mkdir models/Personalized_Model

wget https://pai-aigc-photog.oss-cn-hangzhou.aliyuncs.com/cogvideox_fun/Diffusion_Transformer/CogVideoX-Fun-2b-InP.tar.gz -O models/Diffusion_Transformer/CogVideoX-Fun-2b-InP.tar.gz

cd models/Diffusion_Transformer/
tar -xvf CogVideoX-Fun-2b-InP.tar.gz
cd ../../

python app.py

到这里已经可以打开gradio网站了。

文生视频

首先进入gradio网站。选择对应的预训练模型,如"models/Diffusion_Transformer/EasyAnimateV3-XL-2-InP-512x512"。然后在下方填写提示词。
请添加图片描述
然后调整视频高宽和生成帧数,最后进行生成;

图生视频

请添加图片描述

图生视频与文生视频有两个不同点:

  • 1、需要指定参考图;
  • 2、指定与参考图类似的高宽;

CogVideoX-Fun的ui已经提供了自适应的按钮Resize to the Start Image,打开后可以自动根据输入的首图调整高宽。
在这里插入图片描述

视频生视频

视频生视频与文生视频有两个不同点:

  • 1、需要指定参考视频;
  • 2、指定与参考视频类似的高宽;

CogVideoX-Fun的ui已经提供了自适应的按钮Resize to the Start Image,打开后可以自动根据输入的视频调整高宽。
请添加图片描述

控制生视频

首先调整model type到Control。
在这里插入图片描述
然后选择对应的带有控制的Model。
在这里插入图片描述
可修改prompt如下:

A person wearing a knee-length white sleeveless dress and white high-heeled sandals performs a dance in a well-lit room with wooden flooring. The room's background features a closed door, a shelf displaying clear glass bottles of alcoholic beverages, and a partially visible dark-colored sofa. 

在这里插入图片描述
然后修改为根据参考视频自动resize。
在这里插入图片描述
最后上传控制视频,进行生成。
demo

### 大规模视频生成模型概述 大规模视频生成模型旨在创建高质量、连贯且具有真实感的动态像序列。这类模型通常依赖于强大的计算资源和复杂的架构设计,以捕捉时间维度上的复杂模式并生成逼真的视觉内容。 #### 序列建模促进大视模型的学习能力 通过引入顺序处理机制,可以显著提升大型视觉模型(LVM)的学习效率和效果[^1]。具体而言,在训练过程中采用自回归方法或其他形式的时间依赖结构能够帮助网络更好地理解和预测连续帧之间的关系。这不仅提高了最终输出的质量,还使得更高效的参数更新成为可能,从而支持更大规模的数据集上进行有效的学习过程优化。 #### Sora:一种先进的视频生成框架 Sora是由OpenAI推出的一款基于Transformer架构构建的强大工具,它能够在给定提示条件下合成高度真实的短视频片段[^2]。此系统利用了大量的预训练权重以及专门针对时空特征提取而调整过的组件,实现了前所未有的创造力表达水平。其核心优势在于: - **多尺度表示**:可以从不同抽象层次捕获场景细节; - **条件控制**:允许用户指定特定属性或风格指导生成过程; - **高效推理引擎**:即使面对高分辨率输入也能保持实时性能表现。 #### 综合评价体系的重要性 尽管当前技术已经在很多方面取得了突破性的进展,但对于如何科学公正地衡量这些成果却始终缺乏统一标准[^3]。因此建立一套全面覆盖各个方面的评测方案显得尤为重要——既包括定量分析也涉及主观体验层面考量;既能反映现有技术水平又能对未来研究方向给出建设性意见。 ```python import torch from transformers import AutoModelForVideoGeneration, AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("openai/sora") model = AutoModelForVideoGeneration.from_pretrained("openai/sora") prompt = "A cat playing with a ball" input_ids = tokenizer(prompt, return_tensors="pt").input_ids video_frames = model.generate(input_ids) for frame in video_frames: display(frame) ``` 上述代码展示了使用预训练好的Sora模型根据文本描述生成相应视频片段的过程。这里采用了Hugging Face提供的接口简化了调用流程,并能快速获得直观的结果展示。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bubbliiiing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值