目录
B. 从 Huggingface 下载预训练的 MimicMotion 检查点
C. 推理时,将自动下载 SVD 模型 stabilityai/stable-video-diffusion-img2vid-xt-1-1
政安晨的个人主页:政安晨
欢迎 👍点赞✍评论⭐收藏
希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!
本文目标:基于Ubuntu系统部署MimicMotion项目——利用可信度感知姿势指导生成高质量人体运动视频
项目介绍
近年来,生成式人工智能在图像生成领域取得了长足的进步,催生了各种应用。 然而,视频生成在可控性、视频长度、细节丰富度等多方面仍面临着相当大的挑战,阻碍了这一技术的应用和普及。 在这项工作中,我们提出了一个可控的视频生成框架,命名为 MimicMotion,它可以模仿特定的运动导向生成任意长度的高质量视频。 与之前的方法相比,我们的方法有几个亮点。
首先,我们引入了置信度感知姿势引导,确保了高帧质量和时间平滑性。
其次,我们引入了基于姿态置信度的区域损失放大技术,可显著减少图像失真。
最后,为了生成长而流畅的视频,我们提出了渐进式潜影融合策略。
通过这种方法,我们可以以可接受的资源消耗生成任意长度的视频。 通过大量的实验和用户研究,MimicMotion 在各个方面都比以前的方法有了显著的改进。
项目页面:
GitHub - Tencent/MimicMotion: High-Quality Human Motion Video Generation with Confidence-aware Pose GuidanceHigh-Quality Human Motion Video Generation with Confidence-aware Pose Guidance - Tencent/MimicMotionhttps://github.com/Tencent/MimicMotion/tree/main论文页面:MimicMotion: High-Quality Human Motion Video Generation with Confidence-aware Pose Guidancehttps://arxiv.org/html/2406.19680v1
目前,有很多项目专注于图像条件姿势引导视频生成,如 Follow Your Pose [1]、DreamPose [2]、DisCo [3]、MagicDance [4]、AnimateAnyone [5]、MagicAnimate [6]、DreaMoving [7]、Champ [8]等。 虽然为了获得更好的生成性能,人们研究了各种模型架构和训练技术,但生成的结果在几个方面并不令人满意。 图像失真仍是一个常见问题,尤其是在人类手部区域,这在包含大动作的视频中尤为明显。 此外,为了实现良好的时间平滑性,有时会牺牲图像细节,导致视频画面模糊。 在视频中存在多种外观和动作的情况下,准确的姿势估计本身就具有挑战性。 这种不准确性不仅会造成姿态对齐与时间平滑之间的冲突,还会由于对噪声样本的过度拟合而阻碍模型在训练计划中的扩展。 此外,由于计算能力和模型能力的限制,在生成包含大量帧的高质量长视频方面仍面临巨大挑战。 为了解决这些问题,本项目提出了一系列基于姿态引导和图像参考的方法,用于生成长而流畅的视频。
为了减轻姿势估计不准确带来的负面影响,我们提出了一种置信度感知姿势引导方法。 通过在姿势序列表示中引入置信度的概念,可以实现更好的时间平滑性,同时也能缓解图像失真。 基于置信度的区域损失放大可以使手部区域更加准确和清晰。 此外,我们还提出了一种渐进式潜影融合方法,用于生成较长但仍然流畅的视频。 通过使用所提出的渐进式潜影融合方法生成具有重叠帧的视频段,我们的模型可以处理任意长度的姿势序列引导。 通过合并生成的视频片段,最终的长视频可以同时具有良好的跨帧平滑度和丰富的图像。 在模型训练方面,为了将模型训练的成本控制在可接受的范围内,我们的方法基于一个普遍预训练的视频生成模型。 训练数据量不大,也不需要特别的人工标注。
总之,这项工作有三个主要贡献:
1. 我们通过采用置信度感知策略来改进姿势引导。 通过这种方式,可以减轻姿势估计不准确带来的负面影响。 这种方法不仅能在训练过程中减少噪声样本的影响,还能在推理过程中纠正错误的姿势引导。
2. 基于置信度感知策略,我们提出了手部区域增强技术,通过加强姿势置信度高的人手区域的损失权重来减轻手部失真。
3. 虽然跨帧重叠扩散是生成长视频的标准技术,但我们采用位置感知的渐进式潜在融合方法,提高了片段边界的时间平滑度,从而推动了这一技术的发展。 大量实验结果表明了所提方法的有效性。
项目相关工作
图像/视频生成的扩散模型
基于扩散的模型在图像和视频生成领域取得了令人鼓舞的成果,因其在生成任务中的能力而闻名。 由于信息冗余和高计算成本,在像素域运行的扩散模型在生成高分辨率图像时遇到了挑战。 潜在扩散模型(LDM) 通过在低维潜在空间中执行扩散过程解决了这些问题,在降低计算要求的同时显著提高了生成效率和质量。 与图像生成相比,视频生成需要更精确地理解空间关系和时间运动模式。 最近的视频生成模型利用扩散模型,在预先训练好的图像生成模型中添加时间层 ,或利用变换器结构来增强视频生成能力。 稳定视频扩散(SVD)是基于 LDM 建立的最流行的开源模型之一。 它为基于图像的视频生成提供了一种直接有效的方法,并可作为这一任务的强大预训练模型。 我们的方法利用 SVD 的预训练生成能力,将 SVD 扩展用于姿势引导视频生成。
姿势引导的人体动作转移
从姿势到外观的映射旨在将运动从源身份转移到目标身份。 基于源图像和目标图像配对关键点的方法采用局部仿射变换 或薄板样条变换 来扭曲源图像,使其与驱动图像相匹配。 这些技术旨在通过应用加权仿射变换最大限度地减少失真,从而在输出图像中生成与驾驶图像非常相似的姿势。 同样,等方法利用从现成的人体姿势检测器中获得的姿势棒图作为运动指示器,并通过生成模型直接生成视频帧。 深度信息或三维人体参数模型,如 SMPL(Skinned Multi-Person Linear),也可用于表示源视频中的人体几何形状和运动特征。 然而,这些过于密集的引导技术可能会过度依赖源视频中的信号,如人体轮廓,从而导致生成视频的质量下降,尤其是当目标身份与源视频有显著差异时。 我们的方法利用现成的人体姿态检测器,能够捕捉到驾驶视频中的人体运动,而不会引入过多的无关信息,从而确保生成视频的整体质量。与现有方法不同的是,我们引入了置信度感知姿态引导,有效地减轻了训练和推理中姿态估计不准确的影响。 通过这种方法,我们实现了出色的肖像帧质量,尤其是在手的区域。
生成长视频
最新的基于扩散的视频生成算法只能生成几秒钟的视频,大大限制了其实际应用。 因此,大量研究人员致力于延长生成视频的持续时间,并提出了各种方法来克服这一限制。 如通过自动回归预测连续帧,从而生成无限长的视频。 然而,这些方法往往会因误差累积和缺乏长期时间一致性而导致质量下降。 有人提出了分层方法 ,用于以从粗到细的方式生成长视频。 该方法首先使用全局扩散模型创建带有关键帧的粗略故事情节,然后使用局部扩散模型迭代完善视频,生成详细的中间帧。
MultiDiffusion 结合了多个流程,使用预先训练好的文本到图像扩散模型,通过用户定义的控制来创建高质量的图像。 它的工作原理是将模型应用于图像的不同部分,并使用优化方法确保所有部分完美融合。 这样,用户就可以生成符合特定要求的图像,如特定的长宽比或空间布局,而无需额外的训练或微调。 Lumiere 通过将视频划分为重叠的时间片段,将多重扩散扩展到视频生成。 每个片段独立去噪,然后通过优化算法将这些去噪片段组合在一起。 这种方法可确保生成的视频具有较高的连贯性,有效地保持各分段之间的时间平滑性。 然而,我们的实验表明,在片段边界仍会出现突然的过渡。
在多重扩散原理的基础上,我们引入了一种位置感知的渐进式潜影融合策略,该策略可增强片段边界附近的时间平滑性。 我们根据时间位置自适应地分配融合权重,确保在片段边界处平稳过渡,从而进一步减少闪烁。
方法实践
扩散模型(DM)可学习扩散过程,为给定数据集生成概率分布。 在视觉内容生成任务中,DM 的神经网络经过训练,可以逆转向真实数据添加噪音的过程,从而从随机噪音开始逐步生成新数据。
为了训练姿势引导视频扩散模型,该项目收集了包含各种人体动作的视频数据集。 利用一般预训练图像到视频模型的强大功能,数据集无需过大,因为预训练模型已经有了良好的先验。
给定数据集中的一段视频,训练样本由三部分组成:参考图像、原始视频帧序列和相应的姿势。 首先,对原始视频进行帧大小调整和裁剪等基本预处理操作,以获得具有固定长宽比的视频帧序列。 对于给定的视频,以相等的间隔随机抽取一定数量的帧,作为扩散模型的输入视频帧。 输入参考图像是从同一视频中随机取样的,取样位置不局限于取样视频帧。 参考图像的预处理方式与视频帧相同。 模型的另一个输入是姿态序列,它是通过 DWPose 逐帧从视频帧中提取的。
MimicMotion 的目标是根据单张参考图像和一系列需要模仿的姿势生成高质量的姿势指导人体视频。 这项任务包括合成符合所提供姿势序列的逼真动作,同时保持与参考图像的视觉保真度。 我们利用特定预训练视频扩散模型的能力,减少了从头开始训练视频扩散模型的数据需求和计算成本。 稳定视频扩散(SVD) 是一个开源的图像到视频扩散模型,在大规模视频数据集上进行了训练。 与其他当代模型相比,它在视频质量和多样性方面都表现出了良好的性能。 MimicMotion 的模型结构设计集成了一个预训练的稳定视频扩散(SVD)模型,以充分利用其图像到视频的生成能力。
MimicMotion 集成了图像到视频扩散模型和新颖的置信度感知姿势指导。 该模型的可训练组件包括一个时空 U-Net 和一个引入姿势序列作为条件的 PoseNet。 置信度感知姿势引导的主要特点包括:
1) 姿势序列条件伴随着关键点置信度得分,使模型能够根据得分自适应地调整姿势引导的影响。 2) 在损失函数中,高置信度区域的权重更大,从而放大了它们在训练中的影响。
该项目利用姿态引导帧上的亮度来表示姿态估计的置信度。
该项目实施了一种根据置信度阈值生成掩码的掩码策略。 取消对置信度分数超过预定阈值的区域的屏蔽,从而识别出可靠的区域。 在计算视频扩散模型的损耗时,未屏蔽区域对应的损耗值会按一定比例放大,因此与其他屏蔽区域相比,它们对模型训练的影响更大。
与最先进方法的比较
定量评估
该方法可以获得更好的手部生成质量,并更准确地遵循参考姿势。 请注意,该方法没有在 TikTok 数据集上进行过训练。
将 TikTok 数据集第 338 次序列中的第 106 帧以及连续帧之间的像素差异可视化。 MagicPose 显示了突然的过渡,而 Moore 和 MuseV 则显示了纹理和文本的不稳定性。 相比之下,该项目的方法显示出稳定的帧间差异和更好的时间平滑性。
消融研究
置信感知姿势引导
这种设计增强了生成器对错误导向信号(姿势 1 和 2)的鲁棒性,并提供了可视性提示,以解决姿势模糊问题(姿势 3)。
手部区域增强
在相同的参考图像和姿势指导下,使用手部增强技术进行的训练可持续减少手部变形,增强视觉吸引力。
渐进式潜伏融合
渐进式潜影融合可实现平滑过渡,避免视频段边界的突然变化,从而增强长视频生成的整体视觉时间一致性。
部署验证
1. 下载项目:
git clone git@github.com:Tencent/MimicMotion.git
2. 建立环境
在最初发布的模型检查点版本中,它支持以 576x1024 分辨率生成最多 72 帧的视频。 如果遇到内存不足的问题,可以适当减少帧数。
在项目目录中执行:
conda env create -f environment.yaml
conda activate mimicmotion
3. 下载参数模型
如果您遇到与 Hugging Face 的连接问题,可以通过设置环境变量来使用镜像端点:export HF_ENDPOINT=https://hf-mirror.com。 请按以下方法手动下载权重:
cd MimicMotions/
mkdir models
A. 下载 DWPose 预训练模型:dwpose
mkdir -p models/DWPose
wget https://huggingface.co/yzd-v/DWPose/resolve/main/yolox_l.onnx?download=true -O models/DWPose/yolox_l.onnx
wget https://huggingface.co/yzd-v/DWPose/resolve/main/dw-ll_ucoco_384.onnx?download=true -O models/DWPose/dw-ll_ucoco_384.onnx
B. 从 Huggingface 下载预训练的 MimicMotion 检查点
wget -P models/ https://huggingface.co/ixaac/MimicMotion/resolve/main/MimicMotion_1-1.pth
C. 推理时,将自动下载 SVD 模型 stabilityai/stable-video-diffusion-img2vid-xt-1-1
最后,所有权重都应按如下模式组织
models/
├── DWPose
│ ├── dw-ll_ucoco_384.onnx
│ └── yolox_l.onnx
└── MimicMotion_1-1.pth
模型推理
测试用例配置作为 test.yaml 提供。 您也可以根据自己的需要轻松修改各种配置。
python inference.py --inference_config configs/test.yaml
提示:
如果 GPU 内存有限,请尝试设置 env PYTORCH_CUDA_ALLOC_CONF=max_split_size_mb:256。
如果推理时出错
按照提示安装相应的库
出现上述问题,怀疑时对huggingface某库访问权限所致。
解决Hugging Face的访问权限问题:
use generate token from https://huggingface.co/settings/tokens and past it
install python lib huggingface_hub
pip install huggingface_hub
python -c "from huggingface_hub.hf_api import HfFolder; HfFolder.save_token('YOUR_TOKEN_HERE')"
(上述命令行中key的位置要更换为您自己的hugging face的token)
注:
if you are using notebooke
from huggingface_hub import notebook_login notebook_login()
past your genrated token
解决后,推理如下:
也可以尝试调整参数:
VRAM 要求和运行时间
对于 35 秒的演示视频,72 帧模型需要 16GB VRAM(4060ti),在 4090 GPU 上 20 分钟即可完成。 16 帧 U-Net 模型的最低 VRAM 要求为 8GB,但 VAE 解码器要求 16GB。 您可以选择在 CPU 上运行 VAE 解码器。
祝您玩耍得愉快!