
改进视频生成一致性的方法,无需额外训练
FreeInit改进了视频扩散模型的一致性,通过简单的频率滤波器实现噪声重初始化,无需额外训练。已集成 至Diffusers和ComfyUI-AnimateDiff-Evolved,可在Hugging Face上体验在线demo。项目代码和示例脚本方便研究人员应用。
该仓库包含以下论文的实现:

我们提出了FreeInit,这是一种简洁而有效的方法,能够提高扩散模型生成视频的时间一致性。FreeInit不需要额外的训练,也不引入可学习的参数,可以在推理时轻松集成到任何视频扩散模型中。
在本仓库中,我们以 AnimateDiff 为例,演示如何将 FreeInit 集成到当前的文本到视频推理管道中。
在 pipeline_animation.py 中,我们定义了一个从 AnimationPipeline 继承的类 AnimationFreeInitPipeline,展示了如何修改原始管道。
在 freeinit_utils.py 中,我们提供了用于噪声重新初始化的频率过滤代码。
在 animate_with_freeinit.py 中提供了一个推理脚本示例。
在将 FreeInit 集成到其他视频扩散模型时,请参考上述脚本。
git clone https://github.com/TianxingWu/FreeInit.git
cd FreeInit
cd examples/AnimateDiff
conda env create -f environment.yaml
conda activate animatediff
请参考 AnimateDiff 的 官方仓库。设置指南列在 这里。
在下载基础模型、运动模块和个性化 T2I 检查点后,运行以下命令生成 FreeInit 动画。生成结果将保存到 outputs 文件夹中。
python -m scripts.animate_with_freeinit \
--config "configs/prompts/freeinit_examples/RealisticVision_v2.yaml" \
--num_iters 5 \
--save_intermediate \
--use_fp16
其中 num_iters 是 freeinit 迭代次数。我们推荐使用 3-5 次迭代,以平衡质量和效率。为了更快的推理,可以启用 use_fast_sampling 参数,使用粗到细采样策略,但可能会导致更差的结果。
您可以在配置文件中更改文本提示。要调整频率过滤器参数以获得更好结果,请更改配置文件中的 filter_params 设置。默认设置为 'butterworth' 滤波器,n=4, d_s=d_t=0.25。对于具有较大时间不一致性的基础模型,请考虑使用 'guassian' 滤波器。
更多具有不同运动模块/个性化 T2I 设置的 .yaml 文件也提供给测试。
我们还提供了一个 Gradio 演示,用于展示我们的方法。运行以下命令将启动演示。可以随意调整参数以提高生成质量。
python app.py
或者,您可以尝试由 Hugging Face 托管的在线演示:演示链接。
有关更多视觉比较,请参考我们的 项目页面。
如果您发现我们的仓库对您的研究有用,请考虑引用我们的论文:
@article{wu2023freeinit, title={FreeInit: Bridging Initialization Gap in Video Diffusion Models}, author={Wu, Tianxing and Si, Chenyang and Jiang, Yuming and Huang, Ziqi and Liu, Ziwei}, journal={arXiv preprint arXiv:2312.07537}, year={2023}
该项目在 MIT 许可下分发。有关更多信息,请参见 LICENSE。
示例代码基于 AnimateDiff。感谢团队的精彩工作!