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>中国科学技术大学
UniAnimate生成的演示案例
</p> </div>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的升级版本。configs/UniAnimate_infer_long.yaml
中将context_batch_size: 1
更改为大于1的其他值,如context_batch_size: 4
。推理速度将在一定程度上得到提高。configs/UniAnimate_infer.yaml
中设置CPU_CLIP_VAE: True
),GPU内存可以大大减少。现在生成32x768x512的视频片段只需要~12G GPU内存。更多详情请参考这个issue。感谢@blackight的贡献!UniAnimate的整体框架
</p> </div>最近基于扩散的人物图像动画技术在合成忠实跟随给定参考身份和一系列所需运动姿势的视频方面取得了令人印象深刻的成功。尽管如此,仍然存在两个限制:i) 需要额外的参考模型来将身份图像与主视频分支对齐,这显著增加了优化负担和模型参数;ii) 生成的视频通常时间较短(例如24帧),阻碍了实际应用。为了解决这些缺点,我们提出了UniAnimate框架,以实现高效和长期的人物视频生成。首先,为了减少优化难度并确保时间连贯性,我们通过结合统一的视频扩散模型,将参考图像与姿势指导和噪声视频映射到一个共同的特征空间。其次,我们提出了一个统一的噪声输入,支持随机噪声输入以及首帧条件输入,这增强了生成长期视频的能力。最后,为了进一步高效处理长序列,我们探索了基于状态空间模型的替代时间建模架构,以替代原来计算密集的时间Transformer。大量实验结果表明,UniAnimate在定量和定性评估中都实现了优于现有最先进对手的合成结果。值得注意的是,UniAnimate甚至可以通过迭代使用首帧条件策略生成高度一致的一分钟视频。
安装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的贡献。
下载模型:
!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
将目标姿态序列重新缩放以匹配参考图像的姿态:
# 参考图像 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>:
在姿态对齐中,目标姿态序列的第一帧用于计算对齐的比例系数。因此,如果目标姿态序列的第一帧包含完整的面部和姿态(手和脚),可以帮助获得更准确的估计和更好的视频生成结果。
执行以下命令生成视频片段:
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
26GGPU内存。如果您的GPU内存小于这个数值,可以在configs/UniAnimate_infer.yaml
中将max_frames: 32
更改为其他值,例如24、16和8。我们的模型与所有这些值兼容。
如果您想合成更高分辨率的结果,可以在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
36GGPU内存。尽管我们的模型是在512x768分辨率上训练的,但我们观察到直接在768x1216分辨率上进行推理通常是可行的,并能产生令人满意的结果。如果出现外观不一致的情况,您可以尝试使用不同的种子或将分辨率调整为512x768。
虽然我们的模型没有在48或64帧上训练,但我们发现模型在合成这些长度的视频时表现良好。
在configs/UniAnimate_infer.yaml
配置文件中,您可以指定数据,使用max_frames
调整视频长度,并通过不同的Diffusion设置验证您的想法,等等。
如果您想合成与目标姿势序列一样长的视频,可以执行以下命令生成长视频:
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智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。
实时语音翻译/同声传译工具
Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。
一键生成PPT和Word,让学习生活更轻松
讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。
深度推理能力全新升级,全面对标OpenAI o1
科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。
一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型
Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能, 可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。
字节跳动发布的AI编程神器IDE
Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。
AI助力,做PPT更简单!
咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场 景演示需求。
选题、配图、成文,一站式创作,让内容运营更高效
讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。
专业的AI公文写作平台,公文写作神器
AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。
OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。
openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。
最新AI工具、AI资讯
独家AI资源、AI项目落地
微信扫一扫关注公众号