开源虚拟人视频生成框架支持无限长度输出
MuseV是一个基于扩散模型的开源虚拟人视频生成框架。该框架支持无限长度视频生成,采用视觉条件并行去噪方案,兼容Stable Diffusion生态系统。MuseV支持图像到视频、文本到视频、视频到视频等多种生成模式,并提供多参考图像技术。该项目还开源了训练代码,为研究人员和开发者提供了完整的虚拟人视频生成解决方案。
<font size=5>MuseV: 基于视觉条件并行去噪的无限长度高保真虚拟人视频生成 </br> 夏志强 <sup>*</sup>, 陈昭康<sup>*</sup>, 吴斌<sup>†</sup>, 李超, 洪国伟, 詹超, 何颖杰, 周文江 (<sup>*</sup>共同第一作者, <sup>†</sup>通讯作者, benbinwu@tencent.com) </font>
腾讯音乐娱乐集团 Lyra 实验室
GitHub Hugging Face Hugging Face Space 项目主页 技术报告(即将发布)
我们自2023年3月起就设立了世界模拟器的愿景,相信扩散模型能够模拟世界。MuseV
是我们在2023年7月左右取得的一个里程碑成果。受Sora进展的启发,我们决定开源MuseV
,希望能为社区带来益处。接下来我们将继续探索有前景的扩散+Transformer方案。
更新:
MuseV
是一个基于扩散模型的虚拟人视频生成框架,它:
base_model
、lora
、controlnet
等。IPAdapter
、ReferenceOnly
、ReferenceNet
、IPAdapterFaceID
。musev_referencenet_pose
:命令中unet
和ip_adapter
的model_name
不正确,请使用musev_referencenet_pose
而不是musev_referencenet
。MuseV
项目和训练模型musev
、muse_referencenet
。所有帧都是直接由文本到视频模型生成,未经任何后期处理。 更多案例请查看**项目主页,包括1-2分钟的视频**。
以下示例可在configs/tasks/example.yaml
中找到
姿势到视频 在"duffy"模式下,视觉条件帧的姿势与控制视频的第一帧不对齐。"posealign"将解决这个问题。
<table class="center"> <tr style="font-weight: bolder;text-align:center;"> <td width="25%">图像</td> <td width="65%">视频</td> <td width="10%">提示词</td> </tr> <tr> <td> <img src=./data/images/spark_girl.png width="200"> <img src=./data/images/cyber_girl.png width="200"> </td> <td> <video src="https://github.com/TMElyralab/MuseV/assets/163980830/484cc69d-c316-4464-a55b-3df929780a8e" width="400" controls preload></video> </td> <td> (杰作,最佳质量,高分辨率:1),一个女孩在跳舞,动画 </td> </tr> <tr> <td> <img src=./data/images/duffy.png width="400"> </td> <td> <video src="https://github.com/TMElyralab/MuseV/assets/163980830/c44682e6-aafc-4730-8fc1-72825c1bacf2" width="400" controls preload></video> </td> <td> (杰作,最佳质量,高分辨率:1),在跳舞,动画 </td> </tr> </table >对话的角色"Sun Xinying"是一位超模KOL。你可以在抖音上关注她。
<table class="center"> <tr style="font-weight: bolder;"> <td width="35%">名称</td> <td width="50%">视频</td> </tr> <tr> <td> 对话 </td> <td> <video src="https://github.com/TMElyralab/MuseV/assets/163980830/951188d1-4731-4e7f-bf40-03cacba17f2f" width="100" controls preload></video> </td> <tr> <td> 唱歌 </td> <td> <video src="https://github.com/TMElyralab/MuseV/assets/163980830/50b8ffab-9307-4836-99e5-947e6ce7d112" width="100" controls preload></video> </td> </tr> </table >准备Python环境并安装额外的包,如"diffusers"、"controlnet_aux"、"mmcm"。
感谢第三方集成,这使得安装和使用对每个人来说都更加方便。 我们也希望您注意,我们没有验证、维护或更新第三方。具体结果请参考本项目。
网盘链接:https://www.123pan.com/s/Pf5Yjv-Bb9W3.html
提取码:glut
我们建议您主要使用"docker"来准备Python环境。
注意:我们只用docker进行了测试,使用conda或requirements可能会遇到问题。我们会尝试修复。请使用"docker"。
docker pull anchorxia/musev:latest
docker run --gpus all -it --entrypoint /bin/bash anchorxia/musev:latest
默认的conda环境是"musev"。
从environment.yaml创建conda环境
conda env create --name musev --file ./environment.yml
pip install -r requirements.txt
如果不使用docker,还需额外安装mmlab包。
pip install --no-cache-dir -U openmim mim install mmengine mim install "mmcv>=2.0.1" mim install "mmdet>=3.1.0" mim install "mmpose>=1.1.0"
git clone --recursive https://github.com/TMElyralab/MuseV.git
current_dir=$(pwd) export PYTHONPATH=${PYTHONPATH}:${current_dir}/MuseV export PYTHONPATH=${PYTHONPATH}:${current_dir}/MuseV/MMCM export PYTHONPATH=${PYTHONPATH}:${current_dir}/MuseV/diffusers/src export PYTHONPATH=${PYTHONPATH}:${current_dir}/MuseV/controlnet_aux/src cd MuseV
MMCM
: 多媒体跨模态处理包。diffusers
: 基于diffusers修改的diffusers包。controlnet_aux
: 基于controlnet_aux修改。git clone https://huggingface.co/TMElyralab/MuseV ./checkpoints
motion
: 文本到视频模型,在微小的ucf101
和webvid
数据集上训练,大约60K个视频文本对。GPU内存消耗测试基于分辨率
$=512*512$,time_size=12
。
musev/unet
: 仅包含并训练unet
运动模块。GPU内存消耗
$\approx 8G$。musev_referencenet
: 训练unet
模块、referencenet
和IPAdapter
。GPU内存消耗
$\approx 12G$。
unet
: 运动
模块,在Attention
层中有to_k
、to_v
,参考IPAdapter
。referencenet
: 类似于AnimateAnyone
。ip_adapter_image_proj.bin
: 图像clip嵌入投影层,参考IPAdapter
。musev_referencenet_pose
: 基于musev_referencenet
,固定referencenet
和controlnet_pose
,训练unet motion
和IPAdapter
。GPU内存消耗
$\approx 12G$。t2i/sd1.5
: 文本到图像模型,在训练运动模块时参数被冻结。不同的t2i
基础模型有显著影响,可以替换为其他t2i基础模型。
majicmixRealv6Fp16
: 示例,从majicmixRealv6Fp16下载。fantasticmix_v10
: 示例,从fantasticmix_v10下载。IP-Adapter/models
: 从IPAdapter下载。
image_encoder
: 视觉clip模型。ip-adapter_sd15.bin
: 原始IPAdapter模型检查点。ip-adapter-faceid_sd15.bin
: 原始IPAdapter模型检查点。使用示例任务和示例推理命令运行时可以跳过此步骤。 在配置中设置模型路径和缩写,以便在推理脚本中使用缩写。
musev/configs/model/T2I_all_model.py
musev/configs/model/motion_model.py
musev/configs/tasks/example.yaml
python scripts/inference/text2video.py --sd_model_name majicmixRealv6Fp16 --unet_model_name musev_referencenet --referencenet_model_name musev_referencenet --ip_adapter_model_name musev_referencenet -test_data_path ./configs/tasks/example.yaml --output_dir ./output --n_batch 1 --target_datas yongen --vision_clip_extractor_class_name ImageClipVisionFeatureExtractor --vision_clip_model_path ./checkpoints/IP-Adapter/models/image_encoder --time_size 12 --fps 12
常用参数:
test_data_path
: yaml扩展中的任务路径。target_datas
: 分隔符为,
,如果test_data_path
中的name
在target_datas
中,则采样子任务。sd_model_cfg_path
: T2I sd模型路径,模型配置路径或模型路径。sd_model_name
: sd模型名称,用于在sd_model_cfg_path中选择完整模型路径。多个模型名称以,
分隔,或使用all
。unet_model_cfg_path
: 运动unet模型配置路径或模型路径。unet_model_name
: unet模型名称,用于在unet_model_cfg_path
中获取模型路径,并在musev/models/unet_loader.py
中初始化unet类实例。多个模型名称以,
分隔,或使用all
。如果unet_model_cfg_path
是模型路径,unet_name
必须在musev/models/unet_loader.py
中受支持。time_size
: 每次扩散去噪生成的帧数。默认为12
。n_batch
: 生成镜头的数量,$总帧数=n_batch * time_size + n_viscond$,默认为1
。context_frames
: 上下文帧数。如果time_size
>context_frame
,time_size
窗口将被分成多个子窗口进行并行去噪。默认为12
。生成长视频有两种方式:
视觉条件并行去噪
: 设置n_batch=1
,time_size
=你想要的所有帧数。传统端到端
: 设置time_size
= context_frames
= 一个镜头的帧数(12
),context_overlap
= 0;模型参数:
支持referencenet
、IPAdapter
、IPAdapterFaceID
、Facein
。
referencenet
模型名称。ImageEmbExtractor
名称,用于提取IPAdapter
中使用的视觉clip嵌入。ImageClipVisionFeatureExtractor
模型路径。IPAdapter
,它是ImagePromptEmbProj
,与ImageEmbExtractor
一起使用。IPAdapterFaceID
,来自IPAdapter
以保持面部ID,应设置face_image_path
。一些影响运动范围和生成结果的参数:
video_guidance_scale
: 类似于文本到图像,控制条件和无条件之间的影响,默认为3.5
。use_condition_image
: 是否使用给定的第一帧进行视频生成,如果不使用则先生成视觉条件帧。默认为True
。redraw_condition_image
: 是否重绘给定的第一帧图像。video_negative_prompt
: 配置路径中完整negative_prompt
的缩写。默认为V2
。t2i
基础模型有显著影响。在这种情况下,fantasticmix_v10
比majicmixRealv6Fp16
表现更好。
python scripts/inference/video2video.py --sd_model_name fantasticmix_v10 --unet_model_name musev_referencenet --referencenet_model_name musev_referencenet --ip_adapter_model_name musev_referencenet -test_data_path ./configs/tasks/example.yaml --vision_clip_extractor_class_name ImageClipVisionFeatureExtractor --vision_clip_model_path ./checkpoints/IP-Adapter/models/image_encoder --output_dir ./output --n_batch 1 --controlnet_name dwpose_body_hand --which2video "video_middle" --target_datas dance1 --fps 12 --time_size 12
重要参数
大多数参数与musev_text2video
相同。video2video
的特殊参数有:
test_data
中设置video_path
作为参考视频。现在参考视频支持rgb视频
和controlnet_middle_video
。which2video
: 是否rgb
视频影响初始噪声,rgb
的影响强于controlnet条件。controlnet_name
:是否使用controlnet条件
,如dwpose,depth
。video_is_middle
: video_path
是rgb视频
还是controlnet_middle_video
。可以为test_data_path中的每个test_data
设置。video_has_condition
: 条件图像是否与video_path的第一帧对齐。如果不是,首先提取condition_images
的条件生成,然后与连接对齐。在test_data
中设置。
所有controlnet_names指的是mmcm['pose', 'pose_body', 'pose_hand', 'pose_face', 'pose_hand_body', 'pose_hand_face', 'dwpose', 'dwpose_face', 'dwpose_hand', 'dwpose_body', 'dwpose_body_hand', 'canny', 'tile', 'hed', 'hed_scribble', 'depth', 'pidi', 'normal_bae', 'lineart', 'lineart_anime', 'zoe', 'sam', 'mobile_sam', 'leres', 'content', 'face_detector']
仅用于pose2video
基于musev_referencenet
训练,固定referencenet
、pose-controlnet
和T2I
,训练motion
模块和IPAdapter
。
t2i
基础模型有显著影响。在这种情况下,fantasticmix_v10
表现优于majicmixRealv6Fp16
。
python scripts/inference/video2video.py --sd_model_name fantasticmix_v10 --unet_model_name musev_referencenet_pose --referencenet_model_name musev_referencenet --ip_adapter_model_name musev_referencenet_pose -test_data_path ./configs/tasks/example.yaml --vision_clip_extractor_class_name ImageClipVisionFeatureExtractor --vision_clip_model_path ./checkpoints/IP-Adapter/models/image_encoder --output_dir ./output --n_batch 1 --controlnet_name dwpose_body_hand --which2video "video_middle" --target_datas dance1 --fps 12 --time_size 12
仅有motion模块,没有referencenet,需要更少的GPU内存。
python scripts/inference/text2video.py --sd_model_name majicmixRealv6Fp16 --unet_model_name musev -test_data_path ./configs/tasks/example.yaml --output_dir ./output --n_batch 1 --target_datas yongen --time_size 12 --fps 12
python scripts/inference/video2video.py --sd_model_name fantasticmix_v10 --unet_model_name musev -test_data_path ./configs/tasks/example.yaml --output_dir ./output --n_batch 1 --controlnet_name dwpose_body_hand --which2video "video_middle" --target_datas dance1 --fps 12 --time_size 12
MuseV提供了gradio脚本,可以在本地机器上生成GUI界面,方便地生成视频。
cd scripts/gradio python app.py
ucf101
和webvid
数据集构建。感谢开源!
仍然存在许多局限性,包括:
MuseV
已经在约60K个人类文本-视频对上进行了训练,分辨率为512*320
。MuseV
在较低分辨率下具有更大的动作范围但视频质量较低。MuseV
倾向于在高视频质量下生成较少的动作范围。在更大、更高分辨率、更高质量的 文本-视频数据集上训练可能会使MuseV
表现更好。webvid
。使用更干净的无水印数据集可能会解决这个问题。MuseV
支持丰富和动态的功能,但代码复杂且未经重构。需要时间来熟悉。@article{musev, title={MuseV: Infinite-length and High Fidelity Virtual Human Video Generation with Visual Conditioned Parallel Denoising}, author={Xia, Zhiqiang and Chen, Zhaokang and Wu, Bin and Li, Chao and Hung, Kwok-Wai and Zhan, Chao and He, Yingjie and Zhou, Wenjiang}, journal={arxiv}, year={2024} }
代码
:MuseV的代码根据MIT许可发布。对学术和商业用途都没有限制。模型
:训练好的模型仅供非商业研究目的使用。其他开源模型
:使用的其他开源模型必须遵守它们的许可,如insightface
、IP-Adapter
、ft-mse-vae
等。AIGC
:本项目致力于积极影响AI驱动的视频生成领域。用户可以自由使用此工具创建视频,但预期他们会遵守当地法律并负责任地使用它。开发者不对用户可能的滥用承担任何责任。