实战 ToonCrafter:3 步把两张卡通静帧变成 16 帧流畅动画
【免费下载链接】ToonCrafter[SIGGRAPH Asia 2024, Journal Track] ToonCrafter: Generative Cartoon Interpolation项目地址: https://gitcode.com/GitHub_Trending/to/ToonCrafter
ToonCrafter 是一个基于扩散模型的卡通动画插值工具(SIGGRAPH Asia 2024):给它第一帧和最后一帧两张卡通图,它负责把中间 14 帧"脑补"出来,输出一段 512x320、16 帧的小视频。适合想快速验证动画创意、做分镜预览的动画爱好者和独立开发者,无需会算法,会跑命令即可。
先看到效果:两张静帧直接动起来
官方示例的输入/输出如下——左边是起始帧,中间是结束帧,右边就是 ToonCrafter 卡通动画插值生成的完整过渡:
| 起始帧 | 结束帧 | 生成的动画 |
|---|---|---|
角色姿态、背景和光影的过渡都很自然,不是简单的画面渐变。原理一句话:它先经过预训练的图像到视频扩散模型(可以理解为"见过大量动画、知道画面该怎么变"的生成模型),只锁住首尾两帧,让中间帧由模型自由补全,所以运动方向和幅度都由它自己决定——这也意味着效果有一定随机性,后面会讲怎么调。
四步配好环境并完成首跑
1. 克隆代码
git clone https://gitcode.com/GitHub_Trending/to/ToonCrafter cd ToonCrafter2. 建独立环境。项目锁定 PyTorch 2.0.0 和较老的 transformers 4.25.1,官方指定 Python 3.8.5,照抄最省事:
conda create -n tooncrafter python=3.8.5 conda activate tooncrafter pip install -r requirements.txt3. 放模型权重。到 Hugging Face 的 Doubiiu/ToonCrafter 仓库下载model.ckpt,放到指定路径。命令行方式不会自动下载,目录必须提前建好:
mkdir -p checkpoints/tooncrafter_512_interp_v1把model.ckpt移动进该目录即可(Gradio 方式会自动下载,可跳过这步)。
4. 跑起来。仓库自带 3 组示例输入,scripts/run.sh 会调用 scripts/evaluation/inference.py,结果存到results/目录:
sh scripts/run.sh跑完到results/下按目录找到.mp4文件,就是你的第一段生成动画。如果想在浏览器里点点鼠标看效果,直接运行 gradio_app.py,它自带三组示例,上传两张图、填一句英文描述(比如walking man)、点 Generate 即可:
python gradio_app.py三个让生成更符合预期的调法
用自己的关键帧批量生成
命令行推理时,--prompt_dir指向的目录会被按文件名排序,每两张图算一组"起始帧+结束帧",目录里的prompts.txt每行一句描述、对应一组图。所以在仓库外建个自己的目录,按01_start.png、01_end.png、02_start.png、02_end.png这样命名,再配上prompts.txt,用--interp开启插值模式即可:
python3 scripts/evaluation/inference.py \ --ckpt_path checkpoints/tooncrafter_512_interp_v1/model.ckpt \ --config configs/inference_512_v1.0.yaml \ --prompt_dir /path/to/your/images --interp \ --height 320 --width 512 --video_length 16控制运动幅度和生成质量
scripts/run.sh 里几个参数最值得动:
--frame_stride(脚本里写作FS):控制"两帧之间隔多久",推荐 5~30,值越小生成的动作幅度越大,值越大越接近慢动作;--ddim_steps:采样步数,默认 50,调小(比如 20~30)能明显提速,质量略降;--unconditional_guidance_scale:文字/图像条件对结果的约束强度,默认 7.5,调高更"听话"但容易过饱和;--seed:换种子可以抽卡,同一组输入不同种子会得到不同过渡。
用素描引导控制运动轨迹
除了首尾帧,ToonCrafter 还支持稀疏素描引导:给几张中间时刻的草图,模型会把运动约束在草图画的路线上,大幅减少"瞎动"。参考下面示例,草图只需勾出主体轮廓和位置即可:
类似的参考图彩色化(黑白草图+一张彩色参考图,输出上色动画)也支持,效果示例:
用之前先知道的边界
| 项目 | 限制 / 说明 |
|---|---|
| 帧数 | 单次最多生成 16 帧,不能更长 |
| 分辨率 | 官方权重只开放 512x320(宽x高) |
| 硬件 | 必须 CUDA GPU;官方以 A100、DDIM 50 步为基准,消费级显卡可跑但更慢,建议减小ddim_steps |
| 批量 | 推理只支持 batch size = 1 |
| 输入尺寸 | 宽高需为 16 的倍数,脚本会自动居中裁剪 |
| 成功率 | 项目自述是研究性质,生成不保证成功,失败时先换种子和frame_stride再试 |
另外requirements.txt里含xformers,个别 CUDA 版本下安装会失败,装不上时可先注释掉再试跑。
小结
ToonCrafter 的价值在于把"两张关键帧到一段动画"这件事压缩成一条命令:环境 10 分钟配好,权重放对目录,sh scripts/run.sh就能看到 512x320 的 16 帧卡通动画;要控制运动幅度和质量,就动frame_stride和ddim_steps。遇到问题优先翻 README 的 Models 与 Setup 章节,或到项目仓库的 issues 区反馈。
【免费下载链接】ToonCrafter[SIGGRAPH Asia 2024, Journal Track] ToonCrafter: Generative Cartoon Interpolation项目地址: https://gitcode.com/GitHub_Trending/to/ToonCrafter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考