50秒出5秒成片:本地跑通 CogVideo 文生视频,直接拿到可播放 mp4
【免费下载链接】CogVideotext and image to video generation: CogVideoX (2024) and CogVideo (ICLR 2023)项目地址: https://gitcode.com/GitHub_Trending/co/CogVideo
把A girl riding a bike.敲进命令行,约 50 秒后你在./output.mp4拿到一段 5 秒、可直接播放的 mp4,单张 4090 就能跑。CogVideo 仓库内置了 CogVideoX-2B/5B 与 CogVideoX1.5 系列的完整推理与微调代码,文生视频(t2v)、图生视频(i2v)、视频续写(v2v)三种任务各有一条现成链路,装好依赖一条命令即可出片。
先看效果
官方 Web 演示页面的输出画面:提示词"A little girl is riding a bicycle at high speed"去噪、解码完成后的成片,对应链路最后一步"输出成片"。
整条链路一句话:一句提示词 → 文本编码器转成语义向量 → DiT(扩散 Transformer)在潜空间把纯噪声迭代成视频压缩表示 → 3D 因果 VAE 解码成帧,按 16fps 写成 mp4。下面按顺序走通。
跑通路径:文生视频本地推理三步走
- 拉代码装依赖。Python 版本须在 3.10–3.12 之间,这是 README 的硬性要求:
git clone https://gitcode.com/GitHub_Trending/co/CogVideo cd CogVideo && pip install -r requirements.txt- 选模型开跑。显卡是 4090 或 1080Ti 就从 2B 档位开始(官方明确 2B 可在 GTX 1080Ti 上运行),5B 需要 RTX 3060 往上:
python inference/cli_demo.py --prompt "A girl riding a bike." --model_path THUDM/CogVideoX-2b --generate_type t2v- 验收。默认参数下生成 81 帧、
fps默认 16,打开./output.mp4:81 ÷ 16 ≈ 5 秒,帧数÷fps 与视频实际时长对得上,说明链路没断。
提示词只有一句话时,先用 inference/convert_demo.py(提示词扩写工具)扩成长提示再喂给模型,画面质量会更稳。
它是怎么工作的
提示词过文本编码器,"听话程度"由引导强度控制
你的提示词被文本编码器转成语义向量,guidance_scale(分类器自由引导强度,默认 6.0)决定画面跟文字的贴合度。为什么强调它:模型训练时用的都是长描述,提示词太短、约束太弱,扩散环节就会自由发挥,这是"画面跑偏"的头号根因。
潜空间扩散去噪:50 步把噪声炼成视频
文字向量就位后,DiT 主干在潜空间(视频压缩后的低维表示,比直接算像素帧省一个数量级的显存)里迭代num_inference_steps(默认 50 步)。官方推理用 DPM 调度器:
pipe.scheduler = CogVideoXDPMScheduler.from_config( pipe.scheduler.config, timestep_spacing="trailing" )这两行告诉框架:去噪时间步用trailing方式排布,是作者对 5B 系列的推荐配置;cli_demo.py的注释里也注明,2B 建议换用 DDIM 调度器。
3D 因果 VAE 解码成帧,按 16fps 导出
最后的潜变量由 3D 因果 VAE 解码成真实视频帧,再经export_to_video写成output.mp4(默认 16fps,81 帧正好约 5 秒)。脚本默认开着enable_sequential_cpu_offload()(模块逐个进出显存,省显存但更慢);显存足够整卡装下模型时,可换成enable_model_cpu_offload()提速,两种写法在 inference/cli_demo.py(官方推理入口)顶部注释里都有对照。
参数怎么调:CogVideoX 视频生成参数推荐范围
| 参数 | 控制什么 | 推荐范围 | 调大了会怎样 | 调小了会怎样 |
|---|---|---|---|---|
num_frames | 帧数,即视频时长 | 49 / 81 / 161 | 视频更长,显存占用与耗时上升 | 视频更短,出片更快 |
num_inference_steps | 去噪步数 | 30–50 | 细节更干净,单次生成更慢 | 更快,但出现噪点与抖动 |
guidance_scale | 提示词贴合强度 | 4.0–6.5 | 内容更贴文字,过高画面过饱和 | 发挥空间变大,容易跑偏 |
fps | 导出播放帧率 | 8–16 | 同样帧数播放更短、更利索 | 播放更长但更拖沓 |
seed | 随机种子,默认 42 | 任意整数 | 换值即出新视频 | 固定值可复现同一条视频 |
width/height | 输出分辨率(t2v 自动取模型默认值) | 2B/5B:480x720 | 超出推荐值会被强制改回默认 | 自定义值不生效 |
注意帧率档位配套:1.0 档是 49 帧 @ 8fps,1.5 档是 81 或 161 帧 @ 16fps,改参数时按时长=帧数÷fps 核算。图生视频(i2v)模式下宽高跟随输入图,官方推荐 2B/5B 用 480x720、1.5-5B 用 768x1360;SAT 版本则单独用 sat/configs/inference.yaml(SAT 推理配置)管理帧数与 fps。
官方图生视频演示的示例输入图:i2v 模式下输出视频分辨率就跟随这张图的尺寸,对应上表
width/height一行的说明。
翻车点与对策
- 症状:显存爆掉,或慢到怀疑人生。根因:5B 权重加 VAE 同时驻留显存。对策:保留
cli_demo.py里的enable_sequential_cpu_offload()(默认第 150 行,别删);仍 OOM 就把--model_path换成THUDM/CogVideoX-2b。 - 症状:画面内容和提示词对不上。根因:一句话提示词,文本约束太弱。对策:先跑
python inference/convert_demo.py --prompt "..." --type t2v扩写成长提示,再把--guidance_scale调到 6–7 重跑对比。 - 症状:播放掉帧,时长和帧数对不上。根因:
fps与帧数没按模型档位配套。对策:保持默认组合(1.0 档 49 帧 @ 8fps,1.5 档 81 或 161 帧 @ 16fps);必须改时用--fps按"时长 = 帧数 ÷ fps"重新核算。
那条"骑自行车"的命令跑通后,链路就算活了。下一步动作:同一命令加--seed 7再跑一次,把两版output.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),仅供参考