基础模型:FramePack
https://github.com/kijai/ComfyUI-FramePackWrapper
huggingface-cli download Comfy-Org/HunyuanVideo_repackaged --local-dir Comfy-Org/HunyuanVideo_repackaged --resume-download
huggingface-cli download Comfy-Org/sigclip_vision_384 --local-dir Comfy-Org/sigclip_vision_384 --resume-download
huggingface-cli download Kijai/HunyuanVideo_comfy --local-dir Kijai/HunyuanVideo_comfy --resume-download
基础模型:文生视频/图生视频
ComfyUI参考 | 提示词公式建议 | Wan试用
速度评测
- 测试GPU: A100 40G * 1
- 工具平台:ComfyUI
- steps: 20
- 帧数:52 + 1
- 生成分辨率:480x856(=>480x848) / 720x1280
- 评价中的显存数据,有的diffusion生成模型太大,clip与t5都被offload了,因此显得小
- 总推理时间=(图片/文本encoder时间与生成推理时间及decode时间)+模型加载时间
- 大致时间:480P 220s, 720P 720s,(720=220*3.27,Attention计算复杂度考虑为O(n^1.7),n变为2倍,计算量为原本的3.3倍);Kijai开TeaCache时间消耗变为85%~75%
类型 | 参考工作流 | 模型 | 生成分辨率 | 精度 | 版本 | 生成推理时间 | 总推理时间 | 评价 |
---|---|---|---|---|---|---|---|---|
文生视频 | workflow | Wan 1.3B | 480P | bf16 | Comfy | 37s | 44s + 45s | 17G |
~. | workflow | Wan 14B | 480P | bf16 | Comfy | 205s | 210s + 100s | 32G |
~. | workflow | Wan 14B | 480P | fp8 | Comfy | 207s | 215s + 90s | 29.3G |
~. | workflow | Wan 14B | 720P | bf16 | Comfy | 708s | 722s+102s | 37.5G |
~. | workflow | Wan 14B | 720P | fp8 | Kijai | 475s | 542s | Kijai workflow可能需研究参数,质量较差 |
~. | workflow | Wan 14B | 480P | fp8 | Kijai | 143s | 155s | Kijai workflow可能需研究参数,质量较差 |
图生视频 | workflow | Wan 14B (480P) | 480P | fp8 | Comfy | 216s | 运行时32.5G | |
~. | workflow | Wan 14B (480P) | 480P | bf16 | Comfy | 213s | 220s+xs | 运行时37G,offload频次较小,竖版生成质量差 |
~. | workflow | Wan 14B (720P) | 720P | bf16 | Comfy | 720s | 753s+xs | 显存>40G需反复offload |
~. | workflow | Wan 14B (720P) | 720P | fp8 | Comfy | 720s | 744s+xs | 运行时显存29.5G(T5/CLIp被offload了) |
~. | workflow | Wan 14B (720P) | 720P | fp8 | Kijai | 560s | 596s+xs | 运行时显存G(TeaCache) Kijai workflow可能需研究参数,质量较差 |
~. | workflow | Wan 14B (720P) | 480P | fp8 | Kijai | 187s | 258s+90s | 运行时显存14G(TeaCache) Kijai workflow可能需研究参数,质量较差 |
~. | workflow | Wan 14B (480) | 480P | fp8 | Kijai | 233s | 319s+90s | 运行时显存G(TeaCache) Kijai workflow可能需研究参数,质量较差 |
微调模型:Control / Inpainting
Wan2.1 有三种专门用途的微调版模型:
- FLF
- Fun Inpainting
- Fun Control
- Fun Camera Control
Fun系列模型:https://huggingface.co/alibaba-pai/Wan2.1-Fun-V1.1-14B-Control-Camera
Wan VACE将这三种能力统一到一个模型了:
VACE模型除了支持基本的文本和图像作为控制条件输入,还支持将视频和视频mask作为输入控制。简单理解就是视频版本的ControlNet和Flux-Fill
- video控制实现各种条件控制(参考comfyui_controlnet_aux),本质就是将图片上的控制移动到了视频上,并不是通过文本能修改视频的能力。
- pose
- edge(candy)
- depth
- 灰度图视频(上色任务)
- layout
- video mask控制实现时空inpaiting
- 空间Inpainting:实现video inpainting,就是将输入视频,以及inpainting的mask作为输入控制实现的。
- 时间Inpainting: 实现首尾帧视频生成,就是将首尾帧中间插入n-2帧黑帧构成输入输入视频,插入的黑帧构成mask区域作为mask输入,实现控制的。因此理论上,他是可以基于任意帧生成视频的。
- 理论上上面两者是可以兼容的
- 关于图生视频有两种方式,一种是参考上面的时间Inpainting通过输入视频控制,另一种是通过传入参考图控制;
- 参考图控制
- 可以和上面的video / video_mask的方式组合起来,为内容提供形象的参考。
- 按论文的呈现,应该可是实现多主体参考,但是没有找到对应的工作流
测试设定:
- 测试GPU: A100 40G * 1
- 工具平台:ComfyUI
- steps: 20 for VACE; 4 for Wan VACE CasVid lora
- Wan VACE CasVid lora是step蒸馏后的一个lora模型,测试起来生成质量还是有点问题
- 帧数:52 + 1
- 分辨率:720P
- 精度:bf16
模型/参考工作流 | 类型 | 生成推理时间 | 总推理时间 | 评价 |
---|---|---|---|---|
首尾帧生视频(FLF) | 首尾帧生视频(FLF) | 366s | 742s | |
Fun Inpainting | Video Inpainting | 965s | 1015s | |
Fun Control | video control | 1011s | 1174s | |
Fun Camera Control | 相机运动控制 | 710s | 948s | |
~ | ~ | ~ | ~ | ~ |
Wan VACE(step=20) | 图生视频 | 982s | 1017s | |
[Wan VACE CasVid lora(step=4)] | 文生视频(T2V) | 98s | 176s +166s | |
Wan VACE CasVid lora(step=4) | 参考图生视频(I2V) | 94s | 166s+166s | |
Wan VACE CasVid lora(step=4) | 首尾帧生视频(FLF) | 99s | 166s+166s | |
Wan VACE CasVid lora(step=4) | Video Inpainting/Outpainting | 95s | 166s+166s | |
Wan VACE CasVid lora(step=4) | video control | 95s | 166s+166s | |
[Wan VACE CasVid lora(step=4)] | 图生视频(多主体参考) |
Wan2.1模型结构
基本结构
与图片生成的结构很像,VAE encode->Diffusion->VAE decode的形式,只是多了一个时间维度(T+1, H, W, C)
- T+1是因为第一帧会单独处理,为了和图片输入的形式更兼容;
- VAE将采样比例为4x8x8,通过多个2倍降采样的结构串联形成,C=16(和图片生成类似)
def generate_text2video(wan, sample_scheduler, input_prompt, n_prompt="", guide_scale=5.0):F, H, W, = 81, 1280, 720 # F: frame_numvae_stride = (4, 8, 8) # (T, H, W)context = wan.text_encoder([input_prompt])context_null = wan.text_encoder([n_prompt])latents = torch.randn(vae.z_dim, (F - 1) // vae_stride[0] + 1, H // vae_stride[1], W // vae_stride[2])for _, t in enumerate(tqdm(timesteps)):latent_model_input = latentstimestep = torch.stack([t])# CFG Infrencenoise_pred_cond = wan.model(latents, t=timestep, **arg_c)[0]noise_pred_uncond = wan.model(latents, t=timestep, **arg_null)[0]noise_pred = noise_pred_uncond + guide_scale * (noise_pred_cond - noise_pred_uncond)# sheduler steptemp_x0 = sample_scheduler.step(noise_pred.unsqueeze(0), t, latents[0].unsqueeze(0), return_dict=False,generator=seed_g)[0]latents = [temp_x0.squeeze(0)]return self.vae.decode(latents)[0]
model inference
scheduler
条件注入
参数含义
质量对比
- 720P的模型也能生成480P的视频;480P的模型和720P的模型生成的480P视频那个效果更好?
LoRA使用与训练
加速策略
BiliBili
TeaCache
WaveSpeed
Nachaku
特定任务:运镜工作流
ATI
Runninghub | liblib | workflow
1) 安装
# base on Wan2.1-14B-480P
huggingface-cli download Kijai/WanVideo_comfy --local-dir Kijai/WanVideo_comfy --resume-download# 使用最新版本的ComfyUI-WanVideoWrapper
cd custom_nodes/
git clone https://github.com/kijai/ComfyUI-WanVideoWrapper
2)使用
- ATI在工作流中,通过Spline Editor 节点控制轨迹方案,可以使用多组Spline Editor 并通过Append Strings To List 将所有轨迹坐标合并一起,实现多种轨迹控制。
- Spline Editor 节点使用,需要注意,可以通过数标右键菜单栏切换背景图,点击NewSpline新增轨迹线。 在轨迹线控制中,可以通过Shift + 鼠标左键配合点击线条形成轨迹曲线。 通过鼠标右键单击轨迹线删除轨迹点。
- ATI配合CausVid加速,全程生成速度很快,大约5分钟左右。
Remade-AI/Rotate
youtube | lora站点remade showcase | huggingface | workflow
cd model_hub
huggingface-cli download Remade-AI/Rotate --local-dir Remade-AI/Rotate --resume-download
cd ../models/lora/
ln -s ../../model_hub/Remade-AI Remade
cd ../models/clip_vision/
ln -s ../../model_hub/Kijai/WanVideo_comfy/open-clip-xlm-roberta-large-vit-huge-14_visual_fp16.safetensors Kijai_open-clip-xlm-roberta-large-vit-huge-14_visual_fp16.safetensors
Fun Camera Control
workflow
ReCamMaster
workflow | RunningHub
# download Kijai/WanVideo_comfy
cd models/diffusion_models
ln -s ../../model_hub/Kijai/WanVideo_comfy/Wan2_1_kwai_recammaster_1_3B_step20000_bf16.safetensors
cd -# download MiaoshouAI/Florence-2-large-PromptGen-v2.0: for image caption
huggingface-cli download MiaoshouAI/Florence-2-large-PromptGen-v2.0 --local-dir MiaoshouAI/Florence-2-large-PromptGen-v2.0 --resume-download
# https://github.com/miaoshouai/ComfyUI-Miaoshouai-Tagger
cd models/LLM
ln -s ../../model_hub/MiaoshouAI/Florence-2-large-PromptGen-v2.0/model.safetensors Florence-2-large-PromptGen-v2.0.safetensors
代码推理
git clone https://github.com/KwaiVGI/ReCamMaster
cd ReCamMaster# DiffSynth-Studio: https://github.com/modelscope/DiffSynth-Studio
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | bash
. "$HOME/.cargo/env"
pip install -e . # transformers==4.46.2# Wan2.1 文生图预训练模型
ln -s ../../../model_hub/Wan-AI/ models/Wan-AI
# ReCamMaster-Wan2.1
cd ../../model_hub/
huggingface-cli download KwaiVGI/ReCamMaster-Wan2.1 --local-dir KwaiVGI/ReCamMaster-Wan2.1 --resume-download
cd - && cd models/ReCamMaster/checkpoints/
ln -s ../../../../../model_hub/KwaiVGI/ReCamMaster-Wan2.1/step20000.ckptpython inference_recammaster.py --cam_type 1
python inference_recammaster.py --cam_type 1 --dataset_path path/to/your/data
数据集
huggingface-cli download HuggingFaceH4/ultrachat_200k --repo-type dataset