最近有在B站刷到CogVideoX-2b这个文字生成视频的模型,甚者说是Sora和可灵的平替版本地模型,怀着好奇和憧憬,急不可耐的想体验一番,看看是否是真的如博主所说的这么牛,话不多说,我们还是先来看看paper.
paper地址:2408.06072 (arxiv.org) 有兴趣的可以通读一下。
文中介绍了CogVideoX的架构如下:
架构:
• 3D因果VAE: 用于压缩视频数据,将其转换到潜在空间中。这种压缩考虑到了视频的空间和时间维度。
• 文本编码: 使用T5模型将文本输入编码为嵌入向量。
• 融合层: 将视频潜在表示(zvision)与文本嵌入(ztext)沿序列维度拼接起来。
• 专家Transformer块: 一系列的专家Transformer模块处理拼接后的嵌入,以加深两种模态之间的融合,并通过专家适应性LayerNorm改善文本-视频对齐。
• 解码: 输出经过反拼接后送入3D因果VAE解码器,恢复原始的潜在表示,并重构出视频。
创新点:
• 3D VAE: 采用3D卷积进行视频压缩,有效解决了视频数据计算量大的问题。
• 专家Transformer: 设计了一个专家Transformer模块,利用专家适应性LayerNorm来增强文本和视频模态间的深度融合。
• 训练技术: 引入了混合时长训练和分辨率渐进训练等技术,提高了生成性能和稳定性。
• 显式均匀采样: 提出了一种显式均匀采样方法,稳定了训练损失曲线并加速了收敛过程。
• 视频字幕管道: 开发了一个视频字幕管道,用于准确描述视频内容,增强了模型对视频语义的理解。
优势:
• 高质量视频: 生成的视频在视觉质量、指令遵循能力和物理模拟质量等方面表现出色,在人类评估中取得了高分。
• 语义对齐: 视频内容与文本提示高度一致,实现了良好的语义对齐。
• 开放源代码: 模型的部分权重和3D VAE已经开源,可供研究社区使用和进一步开发
实际效果到底怎么样呢,虽说CogVideoX-2b号称可以在24G现存的显卡上运行,由于本人显卡达不到要求,所以只能在云平台上运行,在阿里的modelscope上运行,但是24G显存在实际运行过程中,还是报错cuda of memory。所以实际上24G显存是不够的。另外目前模型支持float16和float32,如果采用bfloat16或者bfloat32会报错。最终只能在huggingface上使用THUMB的workspace试运行了一下这个模型。由于之前一直使用animatediff,但是animatediff可以分视频帧描述,退而求其次,我使用了同样的prompt,同时也使用了enhance prompt,原始提示词如下:
"prompt_map": {
"0": "(one little girl,upper_body, smile,looking at viewer)",
"16": "(one little girl,upper_body, smile, looking at viewer)",
"32": "(one little girl,upper_body, smile, looking at viewer)",
"48": "(one little girl,upper_body, smile, looking at viewer)",
"64": "(one little girl,upper_body, smile, looking at viewer)",
"80": "one little girl,face,smile,looking at viewer",
"88": "one little girl,face,smile, looking at viewer",
"96": "one little girl,face,smile, looking at viewer",
"104": "one little girl,face,smile,looking at viewer",
"112": "one little girl,face,smile,looking at viewer",
"120": "one little girl,face,smile,looking at viewer"
},
最终结果如下:
对比animatediff生成的视频:
单从效果上来说,animatediff的效果还是更胜一筹的。
综上来看,有可能是提示词需要进一步的微调,但是确实是显卡要求还是有一定门槛,所以各位同学若是有进一步的体验可以留言交流哦