【AIGC】MimicMotion:姿态引导的高质量人体运动视频生成技术

本文主要是介绍【AIGC】MimicMotion:姿态引导的高质量人体运动视频生成技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

资源

论文:https://arxiv.org/pdf/2406.19680

github:https://github.com/Tencent/MimicMotion

comfyui:https://github.com/kijai/ComfyUI-MimicMotionWrapper

核心要点

1. confidence-aware pose guidance可以确保高质量视频和时间维度上的帧与帧之间的平滑

2. 区域损失,减少了图像失真

3. 渐进式潜在空间融合策略

数据准备

视频数据集包括大量人物动作,利用预先训练过的图像到图像的视频模型的强大能力,数据集不需要过大,因为预先训练的模型已经有很好的先验。

数据集中的每个视频由三部分组成:

1.参考图(I_{ref})

2.一组视频序列

3.序列相对应的动作

预处理部分

视频序列调整大小和裁剪为了获取固定比率的视频,参考图是在相同视频中随机选取的,参考图会以同样的方式做预处理,pose数据是通过DWPose库提取的。

亮点

利用了预训练的svd视频生成模型,可以大大减少训练数据集的大小和算力的要求。

网络结构

参考图片进入扩散模型会有两个分支,一是UNet的每个块。通过一个视觉编码器CLIP,可以将提取到的特征喂入每个UNet的交叉注意力用于控制最终输出。二是变为输入的潜在特征,使用冻结的VAE编码器获取潜在空间的表示。参考图片被重复编码多次,主要为了与输入序列帧对齐。并将两者堆叠送入UNet。

作者直接将帧序列中提取到Pose序列加到UNet的第一个卷积输出层,而没有加入到每个UNet块

有两个原因

a) 序列姿势逐帧提取,没有任何时间交互,因此当 U-Net 直接对这些层产生影响时,它可能会混淆 U-Net 中的时空层;  b) 姿势序列的过度参与可能会降低预训练的图像到视频模型的性能。

关键点详解

Confidence-aware pose guidance

 将姿势和关键点的置信度分数集成到它们各自的绘图颜色中。这意味着我们将分配给每个关键点和肢体的颜色乘以其置信度分数。因此,具有较高置信度分数的关键点和相应的肢体在姿势引导图上会显得更显著。该方法使模型能够在其指导中优先考虑更可靠的姿态信息,从而提高姿态引导生成的整体精度。

 比较清晰的姿态,颜色会更深一些。

Hand region enhancement 

 

此外,我们采用姿态估计和相关置信度分数来缓解基于区域的伪影,例如手部失真,这在基于扩散的图像和视频生成模型中很普遍。具体来说,我们通过阈值关键点置信度分数来识别可靠的区域。通过设置阈值,我们可以区分自信检测到的关键点和由于遮挡或运动模糊等因素可能模糊或不正确的关键点。置信度分数高于阈值的关键点被认为是可靠的。我们实现一种基于置信阈值生成掩码的屏蔽策略。我们揭开置信度分数超过预定义阈值的区域,从而识别可靠的区域。在计算视频扩散模型的损失时,未掩蔽区域对应的损失值按一定比例放大,因此与其他掩蔽区域相比,它们对模型训练的影响更大。

具体来说,为了减轻手部失真,我们使用手部区域中关键点的置信度阈值计算掩码。只有所有超过此阈值的关键点置信度分数的手被认为是可靠的,因为更高的分数与更高的视觉质量相关。然后,我们通过填充这些关键点的边界来构造手周围的边界框,并将封闭的矩形指定为未屏蔽的。在视频扩散模型训练期间,该区域随后在损失计算中被分配了更大的权重。这种选择性揭露和加权过程使模型对手的学习偏向,尤其是视觉质量较高的手,有效地减少了失真,提高了生成内容的整体真实感。

推理阶段

在推理阶段,一段长视频会采用重叠帧技术进行潜在空间渐进式融合,权重与重叠帧和非重叠帧的距离有关。

 可视化权重表示图

实现细节

数据集有4436个人物跳舞视频,每个时长20s。采用了预训练的SVD1.1权重。PoseNet是从头开始训练的,我们在8卡A100(40G)上训练了20轮,每个设备上的batch_size为1。学习率是10-5并且针对前500个迭代步数有一个warmup的调整策略。我们调整了UNet和PoseNet的所有参数。

这篇关于【AIGC】MimicMotion:姿态引导的高质量人体运动视频生成技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1127442

相关文章

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

SpringBoot集成iText快速生成PDF教程

《SpringBoot集成iText快速生成PDF教程》本文介绍了如何在SpringBoot项目中集成iText9.4.0生成PDF文档,包括新特性的介绍、环境准备、Service层实现、Contro... 目录SpringBoot集成iText 9.4.0生成PDF一、iText 9新特性与架构变革二、环

python协程实现高并发的技术详解

《python协程实现高并发的技术详解》协程是实现高并发的一种非常高效的方式,特别适合处理大量I/O操作的场景,本文我们将简单介绍python协程实现高并发的相关方法,需要的小伙伴可以了解下... 目录核心概念与简单示例高并发实践:网络请求协程如何实现高并发:核心技术协作式多任务与事件循环非阻塞I/O与连接

idea-java序列化serialversionUID自动生成方式

《idea-java序列化serialversionUID自动生成方式》Java的Serializable接口用于实现对象的序列化和反序列化,通过将对象转换为字节流来存储或传输,实现Serializa... 目录简介实现序列化serialVersionUID配置使用总结简介Java.io.Seripyth

Java中的随机数生成案例从范围字符串到动态区间应用

《Java中的随机数生成案例从范围字符串到动态区间应用》本文介绍了在Java中生成随机数的多种方法,并通过两个案例解析如何根据业务需求生成特定范围的随机数,本文通过两个实际案例详细介绍如何在java中... 目录Java中的随机数生成:从范围字符串到动态区间应用引言目录1. Java中的随机数生成基础基本随

C#自动化生成PowerPoint(PPT)演示文稿

《C#自动化生成PowerPoint(PPT)演示文稿》在当今快节奏的商业环境中,演示文稿是信息传递和沟通的关键工具,下面我们就深入探讨如何利用C#和Spire.Presentationfor.NET... 目录环境准备与Spire.Presentation安装核心操作:添加与编辑幻灯片元素添加幻灯片文本操

Python实现Word文档自动化的操作大全(批量生成、模板填充与内容修改)

《Python实现Word文档自动化的操作大全(批量生成、模板填充与内容修改)》在职场中,Word文档是公认的好伙伴,但你有没有被它折磨过?批量生成合同、制作报告以及发放证书/通知等等,这些重复、低效... 目录重复性文档制作,手动填充模板,效率低下还易错1.python-docx入门:Word文档的“瑞士

使用python生成固定格式序号的方法详解

《使用python生成固定格式序号的方法详解》这篇文章主要为大家详细介绍了如何使用python生成固定格式序号,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录生成结果验证完整生成代码扩展说明1. 保存到文本文件2. 转换为jsON格式3. 处理特殊序号格式(如带圈数字)4

Java使用Swing生成一个最大公约数计算器

《Java使用Swing生成一个最大公约数计算器》这篇文章主要为大家详细介绍了Java使用Swing生成一个最大公约数计算器的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下... 目录第一步:利用欧几里得算法计算最大公约数欧几里得算法的证明情形 1:b=0情形 2:b>0完成相关代码第二步:加