毕业设计项目(难度高)——文本驱动的可控人体动作生成方法(论文/代码)

news2024/10/7 12:27:54

完整的论文代码见文章末尾 以下为核心内容

摘要

本文实现了一种基于扩散模型的文本驱动的可控人体动作生成方法。本文利用先进的交叉模态线性变换器及细粒度控制技术,根据自然语言描述生成逼真的人体动作序列。扩散模型在生成高质量图像和视频方面有较大优点,本文将其改进性地应用于动作生成领域,实现了从文本到可控动作的转换。其次,本文对批量生成的运动数据进行筛选和进一步处理。最终,使用Motion Matching技术进行动作拼接和交互控制,实现一个可交互的角色动画控制器,进一步提高了动作序列的自然度、可控性和实用性,展示了模型在三维动画生成等实际应用场景中的有效性和适用性。

本文工作

本文实现了一种基于扩散模型的文本驱动的可控人体动作生成方法。利用先进的交叉模态线性变换器及细粒度控制技术,从自然语言描述中生成逼真的人体动作序列。此外,使用Motion Matching技术进行动作拼接和交互控制,最终实现一个可交互的角色动画控制器,进一步提高了动作序列的自然度、可控性和实用性。实现内容主要有以下三方面:

模型架构,即基于扩散模型结合交叉模态线性变换器,通过逐步去噪的方法精确地模拟动作生成过程。

数据处理与优化,即构建并优化包含丰富文本描述的动作数据集,实现高效的数据处理和增强功能,以适应模型训练的需求。

交互控制技术,即通过动作拼接技术和实时交互控制,进一步增强模型在实际应用中的灵活性、可控性,提高用户体验。

实现方法

本文首先通过基于扩散模型的深度学习模型实现了依据文本条件的可控动作序列的生成。其结构主要如下:

去噪扩散概率模型 (DDPM):其负责逐步去除高斯噪声,从而生成目标动作序列。该模型通过控制噪声添加和去除的步骤,实现了从随机噪声状态逐渐恢复出清晰的动作序列的能力。

基于Transformer的编码解码层:该层包含文本编码器和动作解码器,采用了Transformer架构来将自然语言描述映射到动作序列。文本编码器使用CLIP模型预训练的特征提取能力,增强了模型对文本的理解和处理。

跨模态线性Transformer层:这一层是为处理变长的动作序列而设计,包括线性自注意力和交叉注意力等组件,专门处理基于文本提示的输入序列。可以在不同的时间步骤中根据文本描述动态调整动作生成。

细粒度控制:在生成动作序列时对身体的不同部分进行独立控制,以及根据时间的变化对动作进行调整。这增加了动作生成的精确性和适应性,使得生成的动作更加符合文本描述且自然。

对模型批量输出的动作序列筛选出可利用的部分创建生成BVH文件,作为运动数据集,然后通过读取BVH和前向运动学的功能对运动数据进行进一步的处理与拼接,最终通过利用Motion Maching技术实现一个可交互的角色动画控制器,其可以根据键盘或鼠标的控制进行相应的动作。

动作拼接和交互控制主要通过以下算法来实现:

动作的平移与面朝,即对BVH文件进行平移和旋转对齐,确保动作的一致性和准确性。通过算法分解旋转成两个部分,一部分是绕y轴的旋转,另一部分是在xz平面的旋转,实现了精确的动作对齐。该过程包括调整根节点的位置和方向,以匹配目标平面位置和朝向,确保动作在空间上与目标位置和朝向一致。

动作的插值与融合,即将两个动作序列融合成一个连续的序列。使用球面线性插值(SLERP)和线性插值方法来平滑过渡和融合动作。根据融合系数,这些系数决定了两个原始动作在不同帧上的融合程度,实现动作的自然过渡。

动作的循环及对齐,即处理动画序列中的循环和对齐,使动作能够无缝循环播放。通过调整四元数的方向一致性和计算角速度,实现动作在循环过程中的平滑性和连续性。使用阻尼计算模拟动作衰减,确保动作在循环中自然过渡。

动作拼接与控制,即将两个独立的动作数据平滑地连接起来。详细介绍了对动作序列进行切割、对齐、和混合的方法,包括对动作的起始和结束帧进行调整,以确保动作在空间位置和面向方向上的一致性。通过惯性混合和线性插值法,增加了动作序列的物理连贯性和视觉平滑性。

去噪扩散概率模型层

DDPM(Denoising Diffusion Probabilistic Model)过程通过几个核心类和函数实现,涵盖了创建扩散路径、建模逆向扩散过程以及最终采样的逻辑。

前向扩散定义了如何将结构化数据逐步转换为无结构的噪声状态,同时确保这一转换可以被逆向模型可靠地逆转。在DDPM框架中,这种转换是通过一系列控制的噪声添加步骤实现的。

在此流程中,需要准备输入数据和噪声,如果没有提供噪声,则生成与输入数据匹配的随机噪声。验证噪声的形状是否与输入数据一致,以确保两者可以正确合并。对输入数据应用一个系数以平滑处理,同时对噪声应用另一个系数以增加其随机性,这样做有助于更好地模拟数据的自然变异。将处理过的数据与处理过的噪声相加,输出最终的混合结果。

基于Transformer的编码解码层

模型使用了包含文本编码器和运动解码器的Transformer架构。此架构将文本描述映射到运动序列,其中涉及到多个组件和方法。

文本编码部分使用了CLIP模型的文本编码器来提取文本特征,然后通过一个Transformer编码器来进一步处理这些特征。这个文本编码器结构旨在为时间序列数据的处理提供丰富且相关的文本上下文信息。

该部分将输入的文本数据进行标记化处理,并将其传输到指定的计算设备(如CPU或GPU)上。对标记化后的文本应用词嵌入,以转换为数值形式,便于模型处理。添加位置嵌入,以引入文本中词汇的顺序信息。将嵌入的文本数据通过一个变换器(Transformer)模型进行处理,以捕捉文本中的上下文关系。应用最终的归一化层,进一步调整数据的尺度。对变换器的输出进行预处理,以准备进一步的编码处理。通过一个文本转换编码器进一步处理文本数据。应用一个投影层,选择性地提取特定的输出特征。对输出数据进行重排,以匹配后续处理的需求。

跨模态线性Transformer层

跨模态线性Transformer层包含自注意力层和线性交叉注意力层用来处理自注意力和交叉注意力。自注意力处理单一序列内部的关系,而交叉注意力处理两个不同序列之间的关系,如文本和时间序列。如图3-1所示为注意力层结构图。

在这里插入图片描述## 细粒度控制
本小节介绍了使用多种方法来进行细粒度控制,通过精确地调整模型的行为以响应不同的输入和时间步骤。

时间步嵌入:时间嵌入是实现细粒度时间控制的关键组件。通过生成与时间步相关的正弦嵌入,模型能够对每个时间步的数据进行个性化处理。

交叉注意力机制:模型能够将文本信息动态地融入到时间序列中。这种机制允许模型不仅仅依赖于时间序列的内在模式,而且可以根据相关的文本描述来调整每个时间步的输出。

自注意力和前馈机制:自注意力层允许模型在不同时间步之间建立复杂的依赖关系,而前馈网络则进一步加工这些信息,增加了模型对数据的处理深度。

源掩码机制:用于指示哪些时间步是有效的,哪些应该被忽略。这对于处理长度不一的序列特别重要,确保模型不会在无关的时间步上浪费资源。

动作拼接和交互控制

本节对使用模型批量输出的3D动作序列进行筛选,选出可利用的部分来创建生成BVH文件,作为动作匹配(Motion Matching)中的数据库。预处理数据以匹配BVH文件所需的结构,转换坐标系统(从模型的本地坐标到全局坐标),创建对应的BVH层级结构。

对于BVH文件的MOTION部分,详细记录每一帧中每个骨骼的动作数据。确定动画的帧数和每帧的时间间隔。将每一帧的骨骼位置和旋转数据按照定义的通道顺序记录下来。

将所有BVH文件根据动作类型(如走路、跑步、跳跃等)进行分类。确保所有BVH文件的帧率和骨骼命名标准一致,以避免在动作匹配过程中出现数据不一致的问题。

读取BVH和前向运动学的功能对运动数据进行进一步的处理与拼接,最终通过利用Motion Maching技术实现一个可交互的角色动画控制器,其可以根据键盘或鼠标的控制进行相应的动作。

实验及评估

动作生成效果

本文实现了从文本到BVH文件再到最后3D的生成。选定的文本样例为“A person walks first and then run”,通过文本直接生成描述行走后跑步的动作序列。

文本“A person walks first and then run”通过一个利用基于扩散模型的文本到动作框架进行处理。模型解析文本以识别其中的动作——一个人先走路后跑步。这些动作在上下文中被分析,以确定它们的顺序和性质。

动作生成过程开始于构建一个初始序列,其中角色开始走路然后过渡到跑步。该序列通过一个逐步去噪的过程处理,从嘈杂的开始逐步细化为清晰连贯的动作序列。
如下图4-1至4-8所示为未进行动作处理和动作拼接与交互控制的初始图像:

在这里插入图片描述
在这里插入图片描述

交互效果

在本节中,探讨了通过增强的用户交互控制来提高3D动画的实时反应性和动态表现。开发了一个交互式示例,其中一个3D虚拟人物能够根据键盘或鼠标操控指示的箭头移动方向进行实时跟随。这一部分是单纯的模型输出无法实现的功能与效果。

该交互功能允许用户通过简单的键盘或鼠标操作控制3D模型的移动。当用户操控键盘或移动鼠标时,屏幕上的箭头位置被实时转换成3D空间中的坐标,3D模型随即朝这一坐标点移动。这种设计模拟了真实世界中的物体追踪行为。具体效果图像帧如下图4-17至4-30所示:

在这里插入图片描述
在这里插入图片描述

获取方式

在这里插入图片描述
有完备code和paper 还有示例

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

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

相关文章

爆火!最新大模型算法岗 100 道面试题全解析,赶紧收藏!

大模型应该是目前当之无愧的最有影响力的AI技术,它正在革新各个行业,包括自然语言处理、机器翻译、内容创作和客户服务等等,正在成为未来商业环境的重要组成部分。 截至目前大模型已经超过200个,在大模型纵横的时代,不…

【C++】多线程编程图文详解(多角度详解,小白一看就懂!!)

目录 一、前言 二、什么是C多线程? 💢线程与进程 💢并发与并行 💢多线程 三、 线程库 - thread 1. 线程对象的构造方式 无参构造 带可变参数包的构造 移动构造 2. thread类的成员函数 join 和 joinable deta…

基于SpringBoot+Vue的网约车管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

Diffusion models(扩散模型) 是怎么工作的

前言 给一个提示词, Midjourney, Stable Diffusion 和 DALL-E 可以生成很好看的图片,那么它们是怎么工作的呢?它们都用了 Diffusion models(扩散模型) 这项技术。 Diffusion models 正在成为生命科学等领域的一项尖端技术&…

.NET NoSQL 嵌入式数据库 LiteDB 使用教程

前言 今天大姚给大家分享一个小巧、快速、轻量级的.NET 开源且免费(MIT License)的 NoSQL 嵌入式数据库:LiteDB。本篇文章我们主要来讲讲LiteDB在.NET中如何使用。 LiteDB介绍 LiteDB 是一个小巧、快速和轻量级的 .NET NoSQL 嵌入式数据库…

python爬虫 - 初识requests模块

🌈个人主页:https://blog.csdn.net/2401_86688088?typeblog 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html 前言 requests 是一个用于发送 HTTP 请求的 Python 库,设计简单且功能强大&am…

遥感滑坡目标检测数据集 2300张 滑坡 带标注 voc yolo 1类

遥感滑坡目标检测数据集 2300张 滑坡 带标注 voc yolo 1类 分类名: (图片张数, 标注个数) landsI ide: (2299,6545) 总数: (2314, 6545) 总类(nc): 1类 遥感滑坡目标检测数据集 (Remote Sensing Landslide Detection Dataset) 数据集概述 该…

【PS2020】Adobe Photoshop 2020 中文免费版

photoshop 2020是全球最大的图像处理软件,为用户提供了广泛的专业级润饰工具套件,集成了专为激发灵感而设计的强大编辑功能,帮助用户制作出满意的图片效果,是很多摄影师、广告师等专业人员必备的一款图像及照片后期处理大型专业软…

【机器学习】网络安全——异常检测与入侵防御系统

我的主页:2的n次方_ 随着全球互联网和数字基础设施的不断扩展,网络攻击的数量和复杂性都在显著增加。从传统的病毒和蠕虫攻击到现代复杂的高级持续性威胁(APT),网络攻击呈现出更加智能化和隐蔽化的趋势。面对这样的…

Spring Boot 进阶-浅析SpringBoot中如何完成数据校验

在实际开发中,我们经常会遇到接口数据校验的问题。例如在用户输入手机号、或者是身份证号的时候,我们就需要校验手机号或者身份证号是否输入正确。当然这样的校验在前端页面输入的时候就可以完成。 但是对于直接调用接口的情况则不能通过调用方来进行判断,这就需要我们在Spr…

c++继承(下)

c继承(下) (1)继承与友元(2)继承与静态成员(3)多继承及其菱形继承问题3.1 继承模型3.2 虚继承3.3 多继承中指针偏移问题 (4)继承和组合(9&#xf…

知识图谱构建方法汇总!

知识图谱构建过程是一个人机结合的不断迭代过程,以机器自动学习为主、专家定义与修正结合。需要人工介入的工作包括Schema定义、部分结构化知识准备、机器学习结果校验,依据用户的反馈、语料的增加与更新,不断进行模型的更新与迭代。 专业领域…

最新网课搜题答案查询小程序源码/题库多接口微信小程序源码+自带流量主

源码简介: 最新网课搜题神器小程序源码,它是仿了小猿题库,功能多,能很快速找网课答案,还自带流量主功能。 这个小程序类似小助手,一键搜题就有答案。而且支持激励视频流量主,能轻松变现。 源…

三点估算法-系统架构师(七十五)

1关于网络存储的叙述,正确的是()。 A DAS支持完全跨平台的文件共享,支持所有操作系统 B NAS通过SCSI连接至服务器,通过服务器网卡在网络上传输数据 C FC SAN的网络介质为光纤通道,而IP SAN使用标准的以太…

C语言复习概要(四)

本文 1. 操作符的分类算术操作符关系操作符逻辑操作符 2. 二进制制和进制转换二进制与十六进制的表示进制转换算法 3. 原码、反码和补码原码反码补码 1. 操作符的分类 C语言中的操作符种类繁多,常用的主要操作符可以按照其功能进行如下分类: 算术操作符…

【机器学习-无监督学习】概率图模型

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈Python机器学习 ⌋ ⌋ ⌋ 机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,…

【Java】String 类详解:字符串操作的必备知识

📃个人主页:island1314 ⛺️ 欢迎关注:👍点赞 👂🏽留言 😍收藏 💞 💞 💞 1 基本概念 java.lang.String 类用于描述字符串,Java程序中所有的字…

LeetCode讲解篇之79. 单词搜索

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历对矩阵中的每个点,对每个点采用深度优先搜索,检查是否能以当前点做为开头来匹配word 我们使用一个与矩阵相同规格的二维数组表示矩阵中对应的点是否被访问过,防止重复…

html+css+js实现Switch开关

实现效果&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Switch…

优化阶乘求和

题目&#xff1a;求 的值。 思路&#xff1a;循环n次&#xff0c;每次求每一项的值&#xff0c;并加起来&#xff0c;求每一项的值需要求阶乘&#xff0c;而阶乘的时间复杂度为O(n)&#xff0c;所有总的时间复杂度为O(n^2)。所以这个方法不好。 优化&#xff1a;求每一项的值不…