AIGC专栏15——CogVideoX-Fun详解 支持图&文生视频 拓展CogVideoX到256~10
学习媒介这段时间正在练习EasyAnimateV4.5,发现总有一些问题解决不了,开始怀疑是自己的练习框架有问题。
恰逢清华开源了CogVideoX,这是个很优秀的文生视频模型,惋惜没有图生视频,还固定了分辨率,于是试着将CogVideo修改到我们的框架中,发现其实结果还不错。
https://img-blog.csdnimg.cn/20190723165901974.jpg#pic_center
项目特点
[*]支持 图 和 文 生视频;
[*]支持 首尾图 天生视频
[*]最大支持720p 49帧视频天生;
[*]无限长视频天生;
[*]数据处置惩罚到练习完整pipeline代码开源。
天生结果
CogVideoX-Fun的天生结果如下,分别支持图生视频和文生视频。与EasyAnimate雷同,通过图生视频的本领,我们还可以进行视频续写,天生无限长视频。
https://i-blog.csdnimg.cn/direct/d81e5bb4ba3f430784e37e424b235ef2.gif#pic_center
https://i-blog.csdnimg.cn/direct/aa081863fabe4936b0c56f0b9d2d3048.gif#pic_center
https://i-blog.csdnimg.cn/direct/e19d18c09cd346cba9e3a326018c4f4f.gif#pic_center
https://i-blog.csdnimg.cn/direct/731c456516584befb22f3b133c112d69.gif#pic_center
https://i-blog.csdnimg.cn/direct/678e8821c32b47b78258151ff013f987.gif#pic_center
https://i-blog.csdnimg.cn/direct/63288793929147fab19876fc55262489.gif#pic_center
相关地址汇总
源码下载地址
https://github.com/aigc-apps/CogVideoX-Fun
感谢大家的关注。
CogVideoX-Fun详解
技术储备
Diffusion Transformer (DiT)
DiT基于扩散模型,所以难免包罗不断去噪的过程,如果是图生图的话,另有不断加噪的过程,此时离不开DDPM那张老图,如下:
https://img-blog.csdnimg.cn/e456695d0b79493fb2fa26b389bc36e7.png
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维等。
https://i-blog.csdnimg.cn/direct/4559b2edd9de4ec5973963e98a56c71e.png
EasyAnimate-I2V
https://i-blog.csdnimg.cn/direct/90303ea29db5439c8c42072ba4900e86.jpeg#pic_center
在EasyAnimate中,需要重修的部分和重修的参考图分别通过VAE进行编码,上图黑色的部分代表需要重修的部分,白色的部分代表首图,然后和随机初始化的latent进行concat,假设我们等待天生一个384x672x144的视频,此时的初始latent就是4x36x48x84,需要重修的部分和重修的参考图编码后也是4x36x48x84,三个向量concat到一起后便是12x36x48x84,传入DiT模型中进行噪声预测。
这样模型就可以知道视频的哪些部分需要重修,通过inpaint的方式实现图生视频。
算法细节
算法构成
我们使用了CogVideoX作为底子模型,并在此底子上重新练习。
在CogVideoX-FUN中,我们基于CogVideoX在大约1.2m的数据上进行了练习,支持图片与视频预测,支持像素值从512x512x49、768x768x49、1024x1024x49与不同纵横比的视频天生。另外,我们支持图像到视频的天生与视频到视频的重修。
[*]引入InPaint模型,实现图生视频功能,可以通过首尾图指定视频天生。
[*]基于Token长度的模型练习。告竣不同大小多分辨率在同一模型中的实现。
InPaint模型
https://i-blog.csdnimg.cn/direct/306f2168b4e04d99adeb022b20c057da.png#pic_center
我们以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也应当发生变化。
https://i-blog.csdnimg.cn/direct/c656ffafe1b74359814c4c17363da131.png#pic_center
参考Pixart-Sigma,我们采用positional embeddings Interpolation对3D embedding进行Resize,positional embeddings Interpolation相比于直接天生cos sin的embedding更易收敛。
项目使用
项目启动
推荐在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"。然后在下方填写提示词。
https://i-blog.csdnimg.cn/direct/8a5cfb658b434440a4727cee3897c16b.jpeg
然后调解视频高宽和天生帧数,末了进行天生;
图生视频
https://i-blog.csdnimg.cn/direct/cfe5fcddbab94d73ac553d4f15363b85.jpeg
图生视频与文生视频有两个不同点:
[*]1、需要指定参考图;
[*]2、指定与参考图雷同的高宽;
CogVideoX-Fun的ui已经提供了自适应的按钮Resize to the Start Image,打开后可以自动根据输入的首图调解高宽。
https://i-blog.csdnimg.cn/direct/5e4acd8baa604897b63686fd09cf14b0.png
视频生视频
视频生视频与文生视频有两个不同点:
[*]1、需要指定参考视频;
[*]2、指定与参考视频雷同的高宽;
CogVideoX-Fun的ui已经提供了自适应的按钮Resize to the Start Image,打开后可以自动根据输入的视频调解高宽。
https://i-blog.csdnimg.cn/direct/243c23c86f394a84902f7d71b3dbd762.jpeg
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]