AIGC专栏15——CogVideoX-Fun详解 支持图&文生视频 拓展CogVideoX到256~10 ...

打印 上一主题 下一主题

主题 1659|帖子 1659|积分 4977

学习媒介

这段时间正在练习EasyAnimateV4.5,发现总有一些问题解决不了,开始怀疑是自己的练习框架有问题。
恰逢清华开源了CogVideoX,这是个很优秀的文生视频模型,惋惜没有图生视频,还固定了分辨率,于是试着将CogVideo修改到我们的框架中,发现其实结果还不错。

项目特点



  • 支持 图 和 文 生视频;
  • 支持 首尾图 天生视频
  • 最大支持720p 49帧视频天生;
  • 无限长视频天生;
  • 数据处置惩罚到练习完整pipeline代码开源
天生结果

CogVideoX-Fun的天生结果如下,分别支持图生视频和文生视频。与EasyAnimate雷同,通过图生视频的本领,我们还可以进行视频续写,天生无限长视频。






相关地址汇总

源码下载地址

https://github.com/aigc-apps/CogVideoX-Fun
感谢大家的关注。
CogVideoX-Fun详解

技术储备

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的方式实现图生视频。
算法细节

算法构成

我们使用了CogVideoX作为底子模型,并在此底子上重新练习。
在CogVideoX-FUN中,我们基于CogVideoX在大约1.2m的数据上进行了练习,支持图片与视频预测,支持像素值从512x512x49、768x768x49、1024x1024x49与不同纵横比的视频天生。另外,我们支持图像到视频的天生与视频到视频的重修。


  • 引入InPaint模型,实现图生视频功能,可以通过首尾图指定视频天生。
  • 基于Token长度的模型练习。告竣不同大小多分辨率在同一模型中的实现。
InPaint模型


我们以CogVideoX作为底子结构,参考EasyAnimate进行图生视频的模型练习。
在进行视频天生的时间,将参考视频使用VAE进行encode,上图黑色的部分代表需要重修的部分,白色的部分代表首图,与噪声Latents一起堆叠后输入到Transformer中进行视频天生。
我们对被Mask的区域进行3D Resize,直接Resize到需要重修的视频的画布大小。
然后将Latent、Encode后的参考视频、被Mask的区域,concat后输入到DiT中进行噪声预测。得到终极的视频。
基于Token长度的模型练习

我们网络了大约高质量的1.2m数据进行CogVideoX-Fun的练习。
在进行练习时,我们根据不同Token长度,对视频进行缩放后进行练习。整个练习过程分为三个阶段,每个阶段的13312(对应512x512x49的视频),29952(对应768x768x49的视频),53248(对应1024x1024x49的视频)。
以CogVideoX-Fun-2B为例子,其中:


  • 13312阶段,Batch size为128,练习步数为7k
  • 29952阶段,Batch size为256,练习步数为6.5k。
  • 53248阶段,Batch size为128,练习步数为5k。
练习时我们采用高低分辨率联合练习,因此模型支持从512到1280任意分辨率的视频天生,以13312 token长度为例:


  • 在512x512分辨率下,视频帧数为49;
  • 在768x768分辨率下,视频帧数为21;
  • 在1024x1024分辨率下,视频帧数为9;
    这些分辨率与对应长度混淆练习,模型可以完成不同大小分辨率的视频天生。
Resize 3D Embedding

在适配CogVideoX-2B到CogVideoX-Fun框架的途中,发现源码是以截断的方式去得到3D Embedding的,这样的方式只能适配单一分辨率,当分辨率发生变化时,Embedding也应当发生变化。

参考Pixart-Sigma,我们采用positional embeddings Interpolation对3D embedding进行Resize,positional embeddings Interpolation相比于直接天生cos sin的embedding更易收敛。
项目使用

项目启动

推荐在docker中使用CogVideoX-Fun:
  1. # pull image
  2. docker pull mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easycv/torch_cuda:cogvideox_fun
  3. # enter image
  4. 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
  5. # clone code
  6. git clone https://github.com/aigc-apps/CogVideoX-Fun.git
  7. # enter CogVideoX-Fun's dir
  8. cd CogVideoX-Fun
  9. # download weights
  10. mkdir models/Diffusion_Transformer
  11. mkdir models/Personalized_Model
  12. 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
  13. cd models/Diffusion_Transformer/
  14. tar -xvf CogVideoX-Fun-2b-InP.tar.gz
  15. cd ../../
  16. 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,打开后可以自动根据输入的视频调解高宽。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表