当前位置: 首页 > news >正文

AIGC专栏15——CogVideoX-Fun详解 支持图文生视频 拓展CogVideoX到256~1024任意分辨率生成

AIGC专栏15——CogVideoX-Fun详解 支持图&文生视频 拓展CogVideoX到256~1024任意分辨率生成

  • 学习前言
  • 项目特点
  • 生成效果
  • 相关地址汇总
    • 源码下载地址
  • CogVideoX-Fun详解
    • 技术储备
      • Diffusion Transformer (DiT)
      • Stable Diffusion 3
      • EasyAnimate-I2V
    • 算法细节
      • 算法组成
      • InPaint模型
      • 基于Token长度的模型训练
      • Resize 3D Embedding
  • 项目使用
    • 项目启动
    • 文生视频
    • 图生视频
    • 视频生视频

学习前言

这段时间正在训练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:

# 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_Modelwget 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.gzcd 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,打开后可以自动根据输入的视频调整高宽。
请添加图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 不在同一局域网怎么远程桌面?非局域网环境下,实现远程桌面访问的5个方法分享!
  • WebGL光照与材质
  • uniApp 解决uniapp三方地图获取位置接口的请求次数限制问题,分别提供 Android 和 iOS 的实现方法(原生插件获取)
  • Android TV RecyclerView列表获得焦点左右换行
  • 每天五分钟玩转深度学习pytorch:L1正则化和L2正则化的应用
  • Xcdoe快速更新安装的小Tips
  • 超详细超实用!!!AI编程之cursor编写设计模式迪米特法则实例(八)
  • 【高级数据结构】树状数组
  • 时间序列分析算法
  • srm供应商管理系统排名 6款好用的SRM系统推荐
  • 基于51单片机的两路电压检测(ADC0808)
  • 第二章 SQL语言简介
  • 5分钟内不能重复发送验证码!
  • 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-09-24
  • 速盾:凡科建站开cdn了吗?
  • 345-反转字符串中的元音字母
  • CentOS从零开始部署Nodejs项目
  • IP路由与转发
  • PAT A1017 优先队列
  • spring security oauth2 password授权模式
  • SpringBoot几种定时任务的实现方式
  • ViewService——一种保证客户端与服务端同步的方法
  • 第2章 网络文档
  • 仿天猫超市收藏抛物线动画工具库
  • 诡异!React stopPropagation失灵
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 项目管理碎碎念系列之一:干系人管理
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • # Kafka_深入探秘者(2):kafka 生产者
  • (007)XHTML文档之标题——h1~h6
  • (7) cmake 编译C++程序(二)
  • (AngularJS)Angular 控制器之间通信初探
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (Oracle)SQL优化技巧(一):分页查询
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (编译到47%失败)to be deleted
  • (二十四)Flask之flask-session组件
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • .NET CLR Hosting 简介
  • .net framework4与其client profile版本的区别
  • .NET 设计模式初探
  • .net后端程序发布到nignx上,通过nginx访问
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .net专家(张羿专栏)
  • //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • [ajaxupload] - 上传文件同时附件参数值
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)
  • [C/C++] -- 二叉树
  • [C++] vector对比list deque的引出
  • [Cocoa]iOS 开发者账户,联机调试,发布应用事宜
  • [CTSC2014]企鹅QQ
  • [DM复习]Apriori算法-国会投票记录关联规则挖掘(上)