UniAnimate

UniAnimate

统一视频扩散模型实现一致性人物图像动画

UniAnimate是一个用于生成长时间人物视频的创新框架。它将参考图像、姿势指导和噪声视频映射到共同特征空间,并支持随机和首帧条件输入。该方法在评估中优于现有技术,可生成高度一致的一分钟视频,为人物图像动画带来新的可能。

UniAnimate视频生成人物动画扩散模型长视频Github开源项目
<div align="center">

UniAnimate: 驯服统一视频扩散模型实现一致的人物图像动画

Xiang Wang<sup>1</sup>, Shiwei Zhang<sup>2</sup>, Changxin Gao<sup>1</sup>, Jiayu Wang<sup>2</sup>, Xiaoqiang Zhou<sup>3</sup>, Yingya Zhang<sup>2</sup> , Luxin Yan<sup>1</sup> , Nong Sang<sup>1</sup>
<sup>1</sup>华中科技大学   <sup>2</sup>阿里巴巴集团   <sup>3</sup>中国科学技术大学

🎨 项目主页

<p align="middle"> <img src='https://yellow-cdn.veclightyear.com/835a84d5/d54b9c50-8be9-4ced-9ed1-b51b80bd3022.png' width='784'>

UniAnimate生成的演示案例

</p> </div>

🔥 新闻

  • [2024/07/19] 🔥 我们在代码中添加了**<font color=red>噪声先验</font>**(参考tools/inferences/inference_unianimate_long_entrance.py中第381行:noise = diffusion.q_sample(random_ref_frame.clone(), getattr(cfg, "noise_prior_value", 939), noise=noise)),这可以帮助实现更好的外观保持(如背景),尤其是在长视频生成中。此外,如果我们从公司获得开源许可,我们考虑发布UniAnimate的升级版本。
  • [2024/06/26] 对于具有大GPU内存的显卡,如A100 GPU,我们支持多段并行去噪以加速长视频推理。您可以在configs/UniAnimate_infer_long.yaml中将context_batch_size: 1更改为大于1的其他值,如context_batch_size: 4。推理速度将在一定程度上得到提高。
  • [2024/06/15] 🔥🔥🔥 通过卸载CLIP和VAE并显式添加torch.float16(即在configs/UniAnimate_infer.yaml中设置CPU_CLIP_VAE: True),GPU内存可以大大减少。现在生成32x768x512的视频片段只需要~12G GPU内存。更多详情请参考这个issue。感谢@blackight的贡献!
  • [2024/06/13] 🔥🔥🔥 <font color=red>我们发布了人物图像动画的代码和模型,尽情享受吧!</font>
  • [2024/06/13] 我们已将代码提交给公司审批,预计今天或明天发布代码
  • [2024/06/03] 我们初始化了这个github仓库,并计划发布论文。

待办事项

  • 发布模型和推理代码,以及姿态对齐代码。
  • 支持生成短视频和长视频。
  • 发布用于一次性生成更长视频的模型。
  • 发布基于VideoLCM的模型,以实现更快的视频合成。
  • 在更高分辨率的视频上训练模型。

简介

<div align="center"> <p align="middle"> <img src='https://yellow-cdn.veclightyear.com/835a84d5/6d7bcb1f-28dc-46ba-9c99-ca28d55f55a2.png' width='784'>

UniAnimate的整体框架

</p> </div>

最近基于扩散的人物图像动画技术在合成忠实跟随给定参考身份和一系列所需运动姿势的视频方面取得了令人印象深刻的成功。尽管如此,仍然存在两个限制:i) 需要额外的参考模型来将身份图像与主视频分支对齐,这显著增加了优化负担和模型参数;ii) 生成的视频通常时间较短(例如24帧),阻碍了实际应用。为了解决这些缺点,我们提出了UniAnimate框架,以实现高效和长期的人物视频生成。首先,为了减少优化难度并确保时间连贯性,我们通过结合统一的视频扩散模型,将参考图像与姿势指导和噪声视频映射到一个共同的特征空间。其次,我们提出了一个统一的噪声输入,支持随机噪声输入以及首帧条件输入,这增强了生成长期视频的能力。最后,为了进一步高效处理长序列,我们探索了基于状态空间模型的替代时间建模架构,以替代原来计算密集的时间Transformer。大量实验结果表明,UniAnimate在定量和定性评估中都实现了优于现有最先进对手的合成结果。值得注意的是,UniAnimate甚至可以通过迭代使用首帧条件策略生成高度一致的一分钟视频。

UniAnimate入门指南

(1) 安装

安装Python依赖:

git clone https://github.com/ali-vilab/UniAnimate.git
cd UniAnimate
conda create -n UniAnimate python=3.9
conda activate UniAnimate
conda install pytorch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 pytorch-cuda=11.8 -c pytorch -c nvidia
pip install -r requirements.txt

我们还在environment.yaml中提供了所有依赖项。

注意:对于Windows操作系统,您可以参考这个issue来安装依赖项。感谢@zephirusgit的贡献。如果您遇到The shape of the 2D attn_mask is torch.Size([77, 77]), but should be (1, 1).的问题,请参考这个issue来解决,感谢@Isi-dev的贡献。

(2) 下载预训练检查点

下载模型:

!pip install modelscope
from modelscope.hub.snapshot_download import snapshot_download
model_dir = snapshot_download('iic/unianimate', cache_dir='checkpoints/')

然后您可能需要以下命令将检查点移动到"checkpoints/"目录:

mv ./checkpoints/iic/unianimate/* ./checkpoints/

最后,模型权重将在./checkpoints/中组织如下:

./checkpoints/
|---- dw-ll_ucoco_384.onnx
|---- open_clip_pytorch_model.bin
|---- unianimate_16f_32f_non_ema_223000.pth 
|---- v2-1_512-ema-pruned.ckpt
└---- yolox_l.onnx

(3) 姿态对齐 (重要)

将目标姿态序列重新缩放以匹配参考图像的姿态:

# 参考图像 1
python run_align_pose.py  --ref_name data/images/WOMEN-Blouses_Shirts-id_00004955-01_4_full.jpg --source_video_paths data/videos/source_video.mp4 --saved_pose_dir data/saved_pose/WOMEN-Blouses_Shirts-id_00004955-01_4_full 

# 参考图像 2
python run_align_pose.py  --ref_name data/images/musk.jpg --source_video_paths data/videos/source_video.mp4 --saved_pose_dir data/saved_pose/musk 

# 参考图像 3
python run_align_pose.py  --ref_name data/images/WOMEN-Blouses_Shirts-id_00005125-03_4_full.jpg --source_video_paths data/videos/source_video.mp4 --saved_pose_dir data/saved_pose/WOMEN-Blouses_Shirts-id_00005125-03_4_full

# 参考图像 4
python run_align_pose.py  --ref_name data/images/IMG_20240514_104337.jpg --source_video_paths data/videos/source_video.mp4 --saved_pose_dir data/saved_pose/IMG_20240514_104337

我们已经在data/saved_pose中提供了演示视频的处理后目标姿态,如果您运行我们的演示视频示例,可以跳过这一步。此外,您需要安装onnxruntime-gpu(pip install onnxruntime-gpu==1.13.1)以在GPU上运行姿态对齐。

<font color=red>✔ 一些提示</font>

  • 在姿态对齐中,目标姿态序列的第一帧用于计算对齐的比例系数。因此,如果目标姿态序列的第一帧包含完整的面部和姿态(手和脚),可以帮助获得更准确的估计和更好的视频生成结果。

(4) 运行UniAnimate模型生成视频

(4.1) 生成视频片段(32帧,768x512分辨率)

执行以下命令生成视频片段:

python inference.py --cfg configs/UniAnimate_infer.yaml 

完成后,将生成32帧、768x512分辨率的视频片段:

<table> <center> <tr> <td ><center> <image height="260" src="assets/1.gif"></image> </center></td> <td ><center> <image height="260" src="assets/2.gif"></image> </center></td> </tr> <tr> <td ><center> <p>点击<a href="https://cloud.video.taobao.com/vod/play/cEdJVkF4TXRTOTd2bTQ4andjMENYV1hTb2g3Zlpmb1E/Vk9HZHZkdDBUQzZQZWw1SnpKVVVCTlh4OVFON0V5UUVMUDduY1RJak82VE1sdXdHTjNOaHc9PQ">此处</a>查看生成的视频。</p> </center></td> <td ><center> <p>点击<a href="https://cloud.video.taobao.com/vod/play/cEdJVkF4TXRTOTd2bTQ4andjMENYYzNUUWRKR043c1FaZkVHSkpSMnpoeTZQZWw1SnpKVVVCTlh4OVFON0V5UUVMUDduY1RJak82VE1sdXdHTjNOaHc9PQ">此处</a>查看生成的视频。</p> </center></td> </tr> </center> </table> </center>

<font color=red>✔ 一些提示</font>:

  • 运行模型时,将使用~12G 26G GPU内存。如果您的GPU内存小于这个数值,可以在configs/UniAnimate_infer.yaml中将max_frames: 32更改为其他值,例如24、16和8。我们的模型与所有这些值兼容。

(4.2) 生成视频片段(32帧,分辨率为1216x768)

如果您想合成更高分辨率的结果,可以在configs/UniAnimate_infer.yaml中将resolution: [512, 768]更改为resolution: [768, 1216]。然后执行以下命令生成视频片段:

python inference.py --cfg configs/UniAnimate_infer.yaml 

完成后,将生成32帧、分辨率为1216x768的视频片段:

<table> <center> <tr> <td ><center> <image height="260" src="assets/3.gif"></image> </center></td> <td ><center> <image height="260" src="assets/4.gif"></image> </center></td> </tr> <tr> <td ><center> <p>点击<a href="https://cloud.video.taobao.com/vod/play/NTFJUWJ1YXphUzU5b3dhZHJlQk1YZjA3emppMWNJbHhXSlN6WmZHc2FTYTZQZWw1SnpKVVVCTlh4OVFON0V5UUVMUDduY1RJak82VE1sdXdHTjNOaHc9PQ">此处</a>查看生成的视频。</p> </center></td> <td ><center> <p>点击<a href="https://cloud.video.taobao.com/vod/play/cEdJVkF4TXRTOTd2bTQ4andjMENYYklMcGdIRFlDcXcwVEU5ZnR0VlBpRzZQZWw1SnpKVVVCTlh4OVFON0V5UUVMUDduY1RJak82VE1sdXdHTjNOaHc9PQ">此处</a>查看生成的视频。</p> </center></td> </tr> </center> </table> </center>

<font color=red>✔ 一些提示</font>:

  • 运行模型时,将使用~21G 36G GPU内存。尽管我们的模型是在512x768分辨率上训练的,但我们观察到直接在768x1216分辨率上进行推理通常是可行的,并能产生令人满意的结果。如果出现外观不一致的情况,您可以尝试使用不同的种子或将分辨率调整为512x768。

  • 虽然我们的模型没有在48或64帧上训练,但我们发现模型在合成这些长度的视频时表现良好。

configs/UniAnimate_infer.yaml配置文件中,您可以指定数据,使用max_frames调整视频长度,并通过不同的Diffusion设置验证您的想法,等等。

(4.3) 生成长视频

如果您想合成与目标姿势序列一样长的视频,可以执行以下命令生成长视频:

python inference.py --cfg configs/UniAnimate_infer_long.yaml

完成后,将生成分辨率为1216x768的长视频:

<table> <center> <tr> <td ><center> <image height="260" src="assets/5.gif"></image> </center></td> <td ><center> <image height="260" src="assets/6.gif"></image> </center></td> </tr> <tr> <td ><center> <p>点击<a href="https://cloud.video.taobao.com/vod/play/cEdJVkF4TXRTOTd2bTQ4andjMENYVmJKZUJSbDl6N1FXU01DYTlDRmJKTzZQZWw1SnpKVVVCTlh4OVFON0V5UUVMUDduY1RJak82VE1sdXdHTjNOaHc9PQ">此处</a>查看生成的视频。</p> </center></td> <td ><center> <p>点击<a href="https://cloud.video.taobao.com/vod/play/VUdZTUE5MWtST3VtNEdFaVpGbHN1U25nNEorTEc2SzZROUNiUjNncW5ycTZQZWw1SnpKVVVCTlh4OVFON0V5UUVMUDduY1RJak82VE1sdXdHTjNOaHc9PQ">此处</a>查看生成的视频。</p> </center></td> </tr> </center> </table> </center> <table> <center> <tr> <td ><center> <image height="260" src="assets/7.gif"></image> </center></td> <td ><center> <image height="260" src="assets/8.gif"></image> </center></td> </tr> <tr> <td ><center> <p>点击<a href="https://cloud.video.taobao.com/vod/play/cEdJVkF4TXRTOTd2bTQ4andjMENYV04xKzd3eWFPVGZCQjVTUWdtbTFuQzZQZWw1SnpKVVVCTlh4OVFON0V5UUVMUDduY1RJak82VE1sdXdHTjNOaHc9PQ">此处</a>查看生成的视频。</p> </center></td> <td ><center> <p>点击<a href="https://cloud.video.taobao.com/vod/play/cEdJVkF4TXRTOTd2bTQ4andjMENYWGwxVkNMY1NXOHpWTVdNZDRxKzRuZTZQZWw1SnpKVVVCTlh4OVFON0V5UUVMUDduY1RJak82VE1sdXdHTjNOaHc9PQ">此处</a>查看生成的视频。</p> </center></td> </tr> </center> </table> </center>

configs/UniAnimate_infer_long.yaml配置文件中,test_list_path应该采用[帧间隔, 参考图像, 驱动姿势序列]的格式,其中frame_interval=1表示目标姿势序列中的所有帧都将用于生成视频,而frame_interval=2表示每两帧采样一帧。reference image是保存参考图像的位置,driving pose sequence是保存驱动姿势序列的位置。

<font color=red>✔ 一些提示</font>

  • 如果发现外观不一致,可以将分辨率从768x1216改为512x768,或将context_overlap从8改为16。

  • configs/UniAnimate_infer_long.yaml的默认设置中,使用了带有时间重叠的滑动窗口策略。您也可以先生成一个满意的视频片段,然后将该片段的最后一帧输入模型,以生成下一个片段来继续视频。

引用

如果您发现这个代码库对您的研究有用,请引用以下论文:

@article{wang2024unianimate,
      title={UniAnimate: Taming Unified Video Diffusion Models for Consistent Human Image Animation},
      author={Wang, Xiang and Zhang, Shiwei and Gao, Changxin and Wang, Jiayu and Zhou, Xiaoqiang and Zhang, Yingya and Yan, Luxin and Sang, Nong},
      journal={arXiv preprint arXiv:2406.01188},
      year={2024}
}

免责声明

这个开源模型仅供<strong>研究/非商业用途</strong>。 我们明确声明不对用户生成的内容承担任何责任。用户在使用生成模型时应对自己的行为完全负责。项目贡献者与用户的行为没有任何法律关联,也不承担任何责任。使用生成模型时必须遵守道德和法律标准,并负责任地使用。

编辑推荐精选

问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

下拉加载更多