政安晨【零基础玩转各类开源AI项目】基于Ubuntu系统部署MimicMotion :利用可信度感知姿势指导生成高质量人体运动视频

目录

项目介绍

项目相关工作

图像/视频生成的扩散模型

姿势引导的人体动作转移

生成长视频

方法实践

与最先进方法的比较

消融研究

部署验证

1. 下载项目:

2. 建立环境

3. 下载参数模型

A. 下载 DWPose 预训练模型:dwpose

B. 从 Huggingface 下载预训练的 MimicMotion 检查点

C. 推理时,将自动下载 SVD 模型 stabilityai/stable-video-diffusion-img2vid-xt-1-1

模型推理

如果推理时出错

按照提示安装相应的库

解决Hugging Face的访问权限问题:

VRAM 要求和运行时间


政安晨的个人主页:政安晨

欢迎 👍点赞✍评论⭐收藏

希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!

本文目标:基于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/MimicMotionicon-default.png?t=N7T8https://github.com/Tencent/MimicMotion/tree/main论文页面:MimicMotion: High-Quality Human Motion Video Generation with Confidence-aware Pose Guidanceicon-default.png?t=N7T8https://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 解码器。


祝您玩耍得愉快!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DDD(3)-领域驱动设计之如何建模

前言 上一篇:从领域驱动到模型驱动中我们讨论到,领域驱动设计的核心思想是保持业务-模型-代码的一致性,模型作为沟通业务和代码的工具,至关重要,今天这篇文章就来讨论DDD中建模的一些思考和方法。 什么是建模 虽然看…

基于SSM的高考志愿选择辅助系统

基于SSM的高考志愿选择辅助系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatis工具:IDEA/Ecilpse、Navicat、Maven 系统展示 前台 前台首页 院校展示 后台 后台首页 学校管理 摘要 随着高考制度的不断完…

【Drone】drone编译web端 防墙策略 | 如何在被墙的状态drone顺利编译npm

一、drone编译防墙版本 1、web端drone kind: pipeline type: docker name: ui steps:- name: build_projectimage: node:20-slim depends_on: [clone]volumes:- name: node_modulespath: /drone/src/node_modulescommands:- pwd- du -sh *- npm config set registry https://…

测试——Selenium

内容大纲: 什么是自动化测试 什么是Selenium Selenium工作原理 Selenium环境搭建 Selenium API 目录 1. 什么是自动化测试 2. 什么是Selenium 3. Selenium工作原理 4. Selenium环境搭建(java) 5. Selenium API 5.1 定位元素 5.1.1 CSS选择器定位元素 5.1.2 XPath定位元…

k8s中部署nacos

1 部署nfs # 在k8s的主节点上执行 mkdir -p /appdata/download cd /appdata/download git clone https://github.com/nacos-group/nacos-k8s.git 将nacos部署到middleware的命名空间中 kubectl create namespace middleware cd /appdata/download/nacos-k8s # 创建角色 kub…

VScode连接虚拟机运行Python文件的方法

声明:本文使用Linux发行版本为rocky_9.4 目录 1. 在rocky_9.4最小安装的系统中,默认是没有tar工具的,因此,要先下载tar工具 2. 在安装好的vscode中下载ssh远程插件工具 3. 然后连接虚拟机 4. 查看python是否已经安装 5. 下载…

【状态估计】偏差,匹配和外点

我们都知道:对于状态的估计可能是有偏差的,特别是在运动模型或观测模型是非线性的情况下。在简单的立体相机的例子中,我们看到MAP方法相比于全贝叶斯方法来说是有偏差的。同时,我们也看到批量ML方法对于真实值来说也是有偏差的&am…

openEuler操作系统下Oracle 19c 从19.3补丁更新到19.17

Oracle 19c 从补丁19.3更新到19.17的过程涉及到多个步骤,包括备份、下载补丁、替换OPatch、验证清单信息、冲突检测、空间检测、应用补丁等。以下是一个概括性的流程,但请注意,具体步骤可能会根据实际的Oracle环境、补丁内容和Oracle的官方指…

【接口自动化_07课_Pytest+Excel+Allure完整框架集成_下】

目标:优化框架场景 1. 生成对应的接口关联【重点】 2. 优化URL基础路径封装【理解】 3. 利用PySQL操作数据库应用【理解】--- 怎么用python连接数据库、mysql 4. 通过数据库进行数据库断言【重点】 5. 通过数据库进行关联操作【重点】 一、接口关联&#xff1a…

【QAC】分布式部署下其他机器如何连接RLM

1、 文档目标 解决分布式部署下其他机器如何连接RLMLicense管理器。 2、 问题场景 分布式部署下QAC要在其他机器上单独运行扫描,必须先连接RLMLicense管理器,如何连接? 3、软硬件环境 1、软件版本:HelixQAC23.04 2、机器环境…

【算法/训练】:前缀和差分

🚀 前言: 前面我们已经通过 【算法/学习】前缀和&&差分-CSDN博客 学习了前缀和&&差分的效相关知识,现在我们开始进行相关题目的练习吧 1. 校门外的树 思路:给[0, n]的数组都标记为1,然后输出m行范围…

基于 PyTorch 的模型瘦身三部曲:量化、剪枝和蒸馏,让模型更短小精悍!

基于 PyTorch 的模型量化、剪枝和蒸馏 1. 模型量化1.1 原理介绍1.2 PyTorch 实现 2. 模型剪枝2.1 原理介绍2.2 PyTorch 实现 3. 模型蒸馏3.1 原理介绍3.2 PyTorch 实现 参考文献 1. 模型量化 1.1 原理介绍 模型量化是将模型参数从高精度(通常是 float32&#xff0…

Elasticsearch:Retrievers 介绍 - Python Jupyter notebook

在今天的文章里,我是继上一篇文章 “Elasticsearch:介绍 retrievers - 搜索一切事物” 来使用一个可以在本地设置的 Elasticsearch 集群来展示 Retrievers 的使用。在本篇文章中,你将学到如下的内容: 从 Kaggle 下载 IMDB 数据集…

Linux云计算 |【第一阶段】SERVICES-DAY5

主要内容: 源码编译安装、rsync同步操作、inotify实时同步、数据库服务基础 实操前骤:(所需tools.tar.gz与users.sql) 1.两台主机设置SELinnx和关闭防火墙 setenforce 0 systemctl stop firewalld.service //停止防火墙 sy…

MySQL定时备份数据,并上传到oss

1.环境准备 1.安装阿里云的ossutil 2.安装mysql 2.编写脚本 脚本内容如下 #!/bin/bash # 数据库的配置信息,根据自己的情况进行填写 db_hostlocalhost db_usernameroot db_passwordroot db_namedb_root # oss 存贮数据的bucket地址 bucket_namerbsy-backup-buck…

软件更新的双刃剑:从”微软蓝屏”事件看网络安全的挑战与对策

引言 原文链接 近日,一场由微软视窗系统软件更新引发的全球性"微软蓝屏"事件震惊了整个科技界。这次事件源于美国电脑安全技术公司"众击"提供的一个带有"缺陷"的软件更新,如同一颗隐形炸弹在全球范围内引爆,…

Python面试宝典第17题:Z字形变换

题目 将一个给定字符串 s 根据给定的行数numRows ,以从上往下、从左到右进行Z字形排列。比如:输入字符串为"PAYPALISHIRING",行数为3时,排列如下。最后,你的输出需要从左往右逐行读取,产生出一个…

unity 实现图片的放大与缩小(根据鼠标位置拉伸放缩)

1创建UnityHelper.cs using UnityEngine.Events; using UnityEngine.EventSystems;public class UnityHelper {/// <summary>/// 简化向EventTrigger组件添加事件的操作。/// </summary>/// <param name"_eventTrigger">要添加事件监听的UI元素上…

DevExpress中文教程 - 如何在.NET MAUI应用中实现Material Design 3?

DevExpress .NET MAUI多平台应用UI组件库提供了用于Android和iOS移动开发的高性能UI组件&#xff0c;该组件库包括数据网格、图表、调度程序、数据编辑器、CollectionView和选项卡组件等。 获取DevExpress v24.1正式版下载 Material Design是一个由Google开发的跨平台指南系统…

HydraRPC: RPC in the CXL Era——论文阅读

ATC 2024 Paper CXL论文阅读笔记整理 问题 远程过程调用&#xff08;RPC&#xff09;是分布式系统中的一项基本技术&#xff0c;它允许函数在远程服务器上通过本地调用执行来促进网络通信&#xff0c;隐藏底层通信过程的复杂性简化了客户端/服务器交互[15]。RPC已成为数据中心…