政安晨【零基础玩转各类开源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.xdnf.cn/news/1488299.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

redis的使用场景

目录 1. 热点数据缓存 1.1 什么是缓存? 1.2 缓存的原理 1.3 什么样的数据适合放入缓存中 1.4 哪个组件可以作为缓存 1.5 java使用redis如何实现缓存功能 1.5.1 需要的依赖 1.5.2 配置文件 1.5.3 代码 1.5.4 发现 1.6 使用缓存注解完成缓存功能 2. 分布式锁…

从0到1:理发店预约剪发小程序开发笔记(上)

背景 理发师可以在小程序上设置自己的可预约时间,价格,自我介绍,顾客可以根据理发师的日程安排选择合适的时间进行预约和支付。这样可以提高预约的效率,减少沟通成本,方便双方的安排。 功能规划 首页展示&#xff1…

【CPS出版】2024年智能计算与数据分析国际学术会议(ICDA 2024,9月6日-8)

为探讨数据科学和计算智能领域的关键问题,促进相关交流,2024年智能计算与数据分析国际学术会议(ICDA 2024)将于2024年9月6日-8日在中国青岛召开。 本届会议拟邀请数据分析和计算智能领域的顶级专家、学者和产业界优秀人才,围绕当前…

【音视频之SDL2】bmp图片与绘制bmp

文章目录 前言BMP是什么SDL2绘制BMP的原理SDL2绘制BMP的流程SDL_LoadBMP作用函数原型参数返回值示例代码 SDL_BlitSurface作用函数原型参数返回值 示例代码效果展示总结 前言 在现代多媒体应用中,图像的处理和显示是非常重要的一部分。无论是在游戏开发还是在视频处…

腾讯QQ临时对话框功能取消免费使用,替代的是腾讯推出的“企点客通”模块实现,买通服务即可实现

最近遇到一个项目有这么一个业务&#xff1a; 要实现的功能是&#xff1a;QQ在线咨询 想要实现的效果如图所示&#xff1a; 按照以往的开发经验使用的是直接使用以下代码&#xff1a; <a target"_blank" href"tencent://message/?uin2104*****57(QQ号)&am…

HTML常用的转义字符——怎么在网页中写“<div></div>”?

一、问题描述 如果需要在网页中写“<div></div>”怎么办呢&#xff1f; 使用转义字符 如果直接写“<div></div>”&#xff0c;编译器会把它翻译为块&#xff0c;类似的&#xff0c;其他的标签也是如此&#xff0c;所以如果要在网页中写类似于“<div…

CDGA|数据治理:安全如何贯穿数据供给、流通、使用全过程

随着信息技术的飞速发展&#xff0c;数据已经成为企业运营、社会管理和经济发展的核心要素。然而&#xff0c;数据在带来巨大价值的同时&#xff0c;也伴随着诸多安全风险。因此&#xff0c;数据治理的重要性日益凸显&#xff0c;它不仅仅是对数据的简单管理&#xff0c;更是确…

懒人精灵安卓版纯本地离线文字识别插件

目的 懒人精灵是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务&#xff0c;节省大量人工操作的时间。懒人精灵也包含图色功能&#xff0c;识别屏幕上的图像&#xff0c;根据图像的变化自动执行相应的操作。本篇文章主要讲解下更优秀的…

反激Flyback从逆向到初步设计(UC2844)

一.Flyback基本拓扑 国标gb/t 12325-2008《电能质量供电电压偏差》规定&#xff1a;220v单向供电电压偏差为标称电压的-10%&#xff0c;7%。 对应220V的标称电压&#xff0c;其浮动范围是在198~235.4V。以下运算均基于此规定进行。 首先220V进入EMI模块&#xff0c;消除差模干扰…

MySQL练习05

题目 步骤 触发器 use mydb16_trigger; #使用数据库create table goods( gid char(8) primary key, name varchar(10), price decimal(8,2), num int);create table orders( oid int primary key auto_increment, gid char(10) not null, name varchar(10), price decima…

Zookeeper入门篇,了解ZK存储特点

Zookeeper入门篇&#xff0c;了解ZK存储特点 前言一、为什么要用 Zookeeper&#xff1f;二、Zookeeper存储特色1. 树状结构2. 节点类型 三、存储位置1. 内存存储1. DataTree2. DataNode 2. 硬盘存储1. 事务日志2. 快照 前言 继上次说完 Zookeeper 的安装后&#xff0c;已经过去…

数据分析或处理中关于坐标系的一些事

通过对本文的阅读&#xff0c;你将获取坐标系的一些基础知识&#xff0c;以及学会如何使用pyproj实现地理数据的投影与转换。更重要的是&#xff0c;作为一个开发者&#xff0c;面对地理坐标系的图层数据&#xff0c;需要进行面积计算、距离量测、规则分块等需求时&#xff0c;…

海山数据库(He3DB)源码解读:海山PG 死锁处理实现

目录 背景 整体概述 数据结构 死锁处理设计 设计原理 主要流程 主要接口 作者介绍 背景 He3DB for PostgreSQL是受Aurora论文启发&#xff0c;基于开源数据库PostgreSQL 改造的数据库产品。架构上实现计算存储分离&#xff0c;并进一步支持数据的冷热分层&#xff0c;大幅…

音视频开发之旅(85)- 图像分类-VGG模型解析

目录 1. VGG解决的问题 2. 网络结构和参数 3. pytorch搭建vgg 4.flower_photos分类任务实践 5.资料 一、VGG解决的问题 论文链接&#xff1a;https://arxiv.org/pdf/1409.1556 在VGG之前&#xff0c;大多数深度学习模型相对较浅&#xff0c;比如下面的AlexNet(5层卷积和3…

网络服务与应用

一、 文件传输 FTP 1、FTP采用典型的C/S架构&#xff08;即服务器端和客户端模型&#xff09;&#xff0c;客户端与服务器端建立TCP连接之后即可实现文件的上传、下载。 2、FTP传输过程 1&#xff09;、主动模式&#xff08;POST&#xff09;&#xff1a;入站连接 2&#x…

微服务实践和总结

H5原生组件web Component Web Component 是一种用于构建可复用用户界面组件的技术&#xff0c;开发者可以创建自定义的 HTML 标签&#xff0c;并将其封装为包含逻辑和样式的独立组件&#xff0c;从而在任何 Web 应用中重复使用。 <!DOCTYPE html> <html><head…

企业利用AI智能名片S2B2C商城小程序参与社区团购的风险与机遇分析

摘要 在新零售浪潮的推动下&#xff0c;社区团购以其独特的商业模式迅速崛起&#xff0c;成为连接消费者与供应商的重要桥梁。企业纷纷探索如何有效利用这一新兴渠道&#xff0c;以扩大市场份额、提升品牌影响力。AI智能名片S2B2C商城小程序的引入&#xff0c;为企业参与社区团…

AWS Route 53:一站式域名注册与DNS管理解决方案

在构建网络应用时&#xff0c;域名注册是不可或缺的一步。作为全球领先的云服务提供商&#xff0c;Amazon Web Services (AWS) 不仅提供强大的云计算资源&#xff0c;还通过其服务 Route 53 提供域名注册功能。本文中九河云将详细介绍 AWS 的域名注册服务&#xff0c;以及它如何…

视频生成AI工具——PixVerse V2 登场:支持一键生成5段、最长 40S 连续视频!

就在昨天&#xff0c;光源伙伴 「 爱诗科技 」正式发布其视频生成产品 PixVerse V2 , 并全球同步开放&#xff0c;更低门槛&#xff0c;更高质量&#xff0c;更有逻辑&#xff0c;更长时长&#xff0c;这几个“更”&#xff0c;让这款产品受到了超高关注&#xff0c;今天带大家…

PHP基础语法-Part1

脚本格式 PHP脚本以<?php开头&#xff0c;以?>结尾&#xff1b; PHP语句以分号结尾&#xff08;;&#xff09; PHP是解释型语言&#xff1b; 输入和输出 获取用户的输入&#xff1a; $input readline("input:"); echo $input; echo "input:";…