CogVideoX 文生视频:本地跑通 5 秒出片
【免费下载链接】CogVideotext and image to video generation: CogVideoX (2024) and CogVideo (ICLR 2023)项目地址: https://gitcode.com/GitHub_Trending/co/CogVideo
把A girl riding a bike.敲进终端,半分钟后当前目录多出个能直接播放的 5 秒 mp4,这就是 CogVideo 文生视频的实际效果,内置 2B/5B 与 1.5 系列的完整推理代码。
先跑起来
最低门槛:Python 3.10–3.12;显卡 2B 档位 GTX 1080Ti 老卡就能扛,5B 需要 RTX 3060 起步,4090 随便跑。拿到代码装依赖,就两行:
git clone https://gitcode.com/GitHub_Trending/co/CogVideo && cd CogVideo pip install -r requirements.txt装完直接开跑,2B 档位一句话出片:
python inference/cli_demo.py --prompt "A girl riding a bike." --model_path THUDM/CogVideoX-2b --generate_type t2v跑完你会在目录下看到output.mp4,默认 81 帧按 16fps 导出,正好约 5 秒。
它是怎么做到的
整条链路:提示词 → 文本向量 → 潜空间去噪 → 解码成帧 → 导出 mp4。
文本先过编码器
一句话被文本编码成语义向量,随后由分类器自由引导强度guidance_scale(默认 6.0)决定画面跟文字的多贴合。提示词太短约束就弱,后面扩散环节容易放飞。
潜空间扩散去噪
文字向量就位后,DiT 主干在潜空间迭代,把纯高斯噪声一步步细化成视频的压缩表示,官方推理用 DPM 调度器:
pipe.scheduler = CogVideoXDPMScheduler.from_config( pipe.scheduler.config, timestep_spacing="trailing" )这两行告诉框架去噪时间步按trailing方式排布,是作者对 5B 的推荐配置。
3D 因果 VAE 解码出帧
潜变量交给 3D 因果 VAE 解码回真实视频帧,再经export_to_video写成output.mp4(默认 16fps)。显存够、能整卡装下模型时,可换enable_model_cpu_offload()提速,两种写法在 inference/cli_demo.py(官方推理入口,管参数解析与视频导出)顶部注释里都有对照。
上面这张官方 Web 演示截图,对应的就是"去噪完成、输出成片"这一步,跑完推理得到的视频文件就是这个样子。
让效果更对味
| 参数 | 控制什么 | 推荐值 | 偏大/偏高会怎样 | 偏小/偏低会怎样 |
|---|---|---|---|---|
num_frames | 帧数即时长 | 49 / 81 / 161 | 视频更长,显存与耗时上升 | 视频更短,出片更快 |
num_inference_steps | 去噪步数 | 30–50 | 细节更干净,单次生成更慢 | 更快,但可能出现噪点抖动 |
guidance_scale | 提示词贴合强度 | 4.0–6.5 | 更贴文字,过高画面过饱和 | 发挥空间变大,容易跑偏 |
fps | 导出播放帧率 | 8–16 | 同帧数播放更短更利索 | 播放更长但更拖沓 |
seed | 随机种子 | 任意整数,默认 42 | 换值即出新视频 | 固定值可复现同一条 |
最小校准动作:先只动guidance_scale到 6,看画面是否更贴文字。档位差异一句话带过:1.0 档 49 帧@8fps,1.5 档 81 或 161 帧@16fps;图生视频(i2v)时宽高跟随输入图,项目推荐 480×720(2B/5B)与 768×1360(1.5-5B),SAT 版本单独用 sat/configs/inference.yaml(SAT 推理配置,管帧数与 fps)。
踩坑速查
- 显存爆掉或慢到怀疑人生。原因:5B 权重加 VAE 同时驻留显存。解法:
cli_demo默认已开enable_sequential_cpu_offload()别手动删;仍 OOM 就换 2B,加--model_path THUDM/CogVideoX-2b。 - 画面内容和提示词对不上。原因:一句话提示词,文本约束太弱。解法:用 inference/convert_demo.py(提示词扩写工具)先扩成长提示,再把
--guidance_scale 7跑一遍对比。 - 播放掉帧、时长和帧数对不上。原因:fps 与帧数没按档位配套。解法:保持默认组合(1.0 档
--num_frames 49 --fps 8,1.5 档--num_frames 81 --fps 16),必须改时按"时长=帧数÷fps"核算。
那条骑自行车的成片跑通后,链路就算活了。下一步:同一条命令加--seed 7再跑一次,把两版 mp4 并排对比,你能直接看出种子与参数对画面的实际影响。全部参数的默认值与说明,在 inference/cli_demo.py 的函数注释里都能查到。
【免费下载链接】CogVideotext and image to video generation: CogVideoX (2024) and CogVideo (ICLR 2023)项目地址: https://gitcode.com/GitHub_Trending/co/CogVideo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考