当前位置: 首页 > news >正文

[大语言模型-论文精读] Diffusion Model技术-通过时间和空间组合扩散模型生成复杂的3D人物动作

​​​​​​Generation of Complex 3D Human Motion by Temporal and Spatial Composition of Diffusion Models

L Mandelli, S Berretti - arXiv preprint arXiv:2409.11920, 2024

通过时间和空间组合扩散模型生成复杂的3D人物动作

摘要

本文提出了一种新的方法,用于生成在训练阶段从未见过的3D人物动作。该方法利用GPT模型的人类动作知识,将复杂动作分解为在训练中观察到的简单动作。然后,这些简单动作通过扩散模型的特性重新组合成单一、逼真的动画。作者声称,这种分解和简单动作的重新组合可以合成准确表示复杂输入动作的动画。这种方法在推理阶段进行操作,并且可以与任何预训练的扩散模型集成,从而实现训练数据集中不存在的动作类别的合成。

技术背景: 生成3D人物动作是计算机图形学和机器学习领域的一个活跃研究方向。该项技术在视频游戏,电影制作和影视娱乐等领域有广泛的应用。随着深度学习技术的发展,研究者们提出了多种方法来生成更自然、逼真的人物动作。不过,先前的研究主要集中在基于文本的条件生成,但这些方法在生成动作时严重依赖于训练数据集中已有的动作。

发展历史: 早期的方法主要依赖于运动捕捉数据的统计模型。近年来,随着深度学习技术的发展,研究者们开始使用生成对抗网络(GANs)、变分自编码器(VAEs)和扩散模型等方法来生成3D人物动作。最近,采用Diffusion Models技术的方法逐步受到重视,该类方法在生成质量和控制方面均有较好的表现。

技术挑战: 

  • 如何生成训练数据中未出现过的动作类别。
  • 如何有效地将复杂的动作分解为简单的、已知的动作,并在生成过程中重新组合。

具体困难:

  • 现有的生成模型通常需要重新训练以包含新的动作类别。
  • 动作的复杂性和多样性使得分解和重组成为一个挑战。

如何破局?

  • 分解与重组: 使用GPT模型将复杂动作分解为简单动作,然后利用扩散模型的属性将这些简单动作重新组合成复杂的动作。
  • 推理阶段操作: MCD方法在推理阶段操作,可以与任何预训练的扩散模型集成,以合成训练数据中不存在的动作类别。

创新点

  1. 提出了一种在训练阶段后从未见过的动作类别的生成方法。
  2. 提出了一种新的通用方法,用于时间和空间上的人体动作组合,无约束条件。
  3. 通过将已知数据集分割成简单和复杂动作,证明了所提出方法的有效性。
  4. 展示了通过同时使用多个文本注释来实现比传统文本条件生成更好的结果。

算法模型

  • MCD (Motion Composition Diffusion): 一种用于在训练阶段后生成未见过的行动的方法。MCD将文本注释分解成训练集中存在的一个或多个已知子动作,每个子动作都有开始和结束时间。在推理过程中,通过扩散去噪的每一步,分别处理每个子动作,然后根据它们各自的开始和结束时间将它们组合起来。
  • GPT分解模块: 使用GPT模型来将输入动作分解成基本动作。
  • 扩散模型: 在推理过程中,用于生成基于分解子动作的最终动作。

实验效果

  • 数据集: 使用HumanML3D和KitML数据集进行实验。
  • 指标: 使用TMR模型评估生成动作与文本之间的相似度,计算M2M(动作与动作之间的相似度)和M2T(生成动作与文本之间的相似度)。
  • 结果: 在两个数据集上,MCD方法在检索得分、嵌入相似度和FID值方面均优于仅使用文本条件生成的动作。
  • 重要数据:
    • R1, R3, R10: 检索得分显示MCD方法在生成动作的语义对齐方面表现更好。
    • M2M, M2T: 嵌入相似度表明MCD生成的动作与原始动作的分布更接近。
    • FID: 生成动作的分布与原始数据集的分布相似度更高。

重要结论: 

MCD方法能够在不需要重新训练新模型的情况下,在推理阶段生成训练集中未包含的动作类别。通过将数据集分割为基础动作和复杂动作,并与仅使用文本条件生成的动作以及最新的动作组合方法进行比较,证明了MCD方法的有效性。

推荐阅读指数:★★★★☆

推荐理由
- 本文提出了一种创新的方法,用于生成训练阶段未出现过的复杂3D人物动作,这对于动画制作、虚拟现实等领域具有重要意义。
- 实验结果表明,所提出的方法在多个评估指标上均优于现有技术,特别是在处理复杂动作生成任务时。
------------------------------------------
如果您对我的博客内容感兴趣,欢迎三连击(点赞,关注和评论),我将持续为您带来计算机人工智能前沿技术(尤其是AI相关的大语言模型,深度学习,计算机视觉相关方向)最新学术论文及工程实践方面的内容分享,助力您更快更准更及时地了解前沿技术的发展现状。

相关文章:

[大语言模型-论文精读] Diffusion Model技术-通过时间和空间组合扩散模型生成复杂的3D人物动作

​​​​​​Generation of Complex 3D Human Motion by Temporal and Spatial Composition of Diffusion Models L Mandelli, S Berretti - arXiv preprint arXiv:2409.11920, 2024 通过时间和空间组合扩散模型生成复杂的3D人物动作 摘要 本文提出了一种新的方法&#xff0…...

vue 引入 esri-loader 并加载地图

记录一下&#xff1a; npm i esri-loader 引入css 在app.vue中 <style> import url(https://js.arcgis.com/4.6/esri/css/main.css); </style> 新建js文件 在js文件中引入esri-loader 并加载其init.js文件 加载init.js 需要其中的loadScript 部分如下&…...

LobeChat:使用服务端数据库部署 - Docker+NextAuth(github)+腾讯云

总流程 Docker部署 身份验证服务-NextAuth github S3存储服务 腾讯云COS 1. 安装Docker brew install docker --cask2. 创建pgvector容器(PostgresSQL) docker run --name [myPgvector] -p 5432:5432 -e POSTGRES_PASSWORD[pwd] -d -e POSTGRES_USER[username] pgvector/…...

长列表加载性能优化

一、长列表优化概述 列表是应用开发中最常见的一类开发场景&#xff0c;它可以将杂乱的信息整理成有规律、易于理解和操作的形式&#xff0c;便于用户查找和获取所需要的信息。应用程序中常见的列表场景有新闻列表、购物车列表、各类排行榜等。随着信息数据的累积&#xff0c;特…...

Vue ElemetUI table的行实现按住上下键高亮上下移动效果

1、添加初始化的方法 // 添加键盘事件监听器&#xff1a; mounted() {window.addEventListener(keydown, this.handleKeydown);}, // 这段代码的作用是在 Vue 组件销毁之前移除一个键盘事件监听器 // 这样做可以确保当组件不再使用时&#xff0c;不会留下任何未清理的事件监听…...

windows C++-指定特定的计划程序策略

通过计划程序策略&#xff0c;可控制计划程序在管理任务时使用的策略。 本文演示如何使用计划程序策略来增加将进度指示器打印到控制台的任务的线程优先级。 示例 以下示例并行执行两个任务。 第一个任务计算第 n 个斐波那契数。 第二个任务将进度指示器打印到控制台。 第一…...

python脚本程序怎么写更优雅?argparse模块巧妙应用

前言 命令行程序&#xff0c;也称CLI程序&#xff0c;另一个直观的名字是脚本程序&#xff0c;简称脚本&#xff0c;由于没有图形用户界面&#xff08;GUI&#xff09;&#xff0c;所以脚本程序常见的交互方式有3种&#xff1a; 1、脚本程序中读取环境变量&#xff0c;比如env…...

【React】(推荐项目)使用 React、Socket.io、Nodejs、Redux-Toolkit、MongoDB 构建聊天应用程序 (2024)

使用 React、Socket.io、Nodejs、Redux-Toolkit、MongoDB 构建聊天应用程序 (2024) 学习使用 React、Socket.io、Node.js、Redux-Toolkit 和 MongoDB 构建响应式实时消息聊天应用程序。这个项目涵盖了从设置到实施的所有内容&#xff0c;提供了宝贵的见解和实用技能。无论您是…...

C++:std::move 和 std::forward

先说结论&#xff1a; std::forward&#xff1a;用于完全按照传递的参数转发&#xff0c;保留其值类别&#xff08;左值或右值)std::move&#xff1a;用于将对象转换为右值引用&#xff0c;通常用于启用移动语义并转移所有权 示例&#xff1a; 先看一个简单的示例&#xff0…...

PHP探索校园新生态校园帮小程序系统小程序源码

探索校园新生态 —— 校园帮小程序系统&#xff0c;让生活更精彩&#xff01; &#x1f331;【开篇&#xff1a;走进未来校园&#xff0c;遇见新生态】&#x1f331; 你是否厌倦了传统校园的繁琐与单调&#xff1f;是否渴望在校园里也能享受到便捷、智能的生活体验&#xff1…...

通信工程学习:什么是MANO管理编排

MANO&#xff1a;管理编排 MANO&#xff1a;Management and Network Orchestration&#xff08;管理和网络编排&#xff09;在网络功能虚拟化&#xff08;NFV&#xff09;架构中扮演着至关重要的角色。MANO是一个由多个功能实体组合而成的层次&#xff0c;这些功能实体负责管理…...

备战软考Day04-计算机网络

1、计算机网络的分类 2、七层网络体系结构 3、网络的设备与标准 4、TCP/IP协议族 TCP/IP作为Internet的核心协议&#xff0c;被广泛应用于局域网和广域网中&#xff0c;目前已成为事实上的国际标准 1、TCP/IP分层模型 TCP/IP协议是Internet的基础和核心&#xff0c;和OSI参考…...

可以把台式电脑做成服务器吗

是的&#xff0c;台式电脑可以被改造成服务器。以下是一些步骤和考虑因素&#xff0c;可以帮助你实现这一目标&#xff1a; 1. 选择合适的操作系统 Windows Server&#xff1a;如果你习惯于Windows环境&#xff0c;可以选择Windows Server版本&#xff0c;适合运行多种服务&a…...

JavaScript 输出方式

JavaScript 提供了多种输出方式&#xff0c;用于在浏览器中显示信息。以下是几种常见的输出方式及其详细代码示例&#xff1a; 1. console.log() 用于在浏览器的开发者控制台输出信息&#xff0c;常用于调试。 优点&#xff1a; 调试方便&#xff1a;可以输出任意类型的数据&…...

微服务(一)

目录 一、概念 1、单体架构 2、微服务 3、springcloud 二、微服务的拆分 1、微服务的拆分原则 1.1 什么时候拆 1.2 怎么拆 2、服务调用 2.1 resttemplate 2.2 远程调用 一、概念 1、单体架构 单体架构&#xff08;monolithic structure&#xff09;&#xff1a;顾名…...

Uniapp时间戳转时间显示/时间格式

使用uview2 time 时间格式 | uView 2.0 - 全面兼容 nvue 的 uni-app 生态框架 - uni-app UI 框架 <text class"cell-tit clamp1">{{item.create_time}} --- {{ $u.timeFormat(item.create_time, yyyy-mm-dd hh:MM:ss)}} </text>...

C++类和对象(中)【下篇】

&#x1f31f;个人主页&#xff1a;落叶 &#x1f31f;当前专栏: C专栏 目录 赋值运算符重载 运算符重载 赋值运算符重载 日期类实现 运算符重载<和运算符重载 运算符重载进行复用 运算符重载< 运算符重载> 运算符重载> 运算符重载! 获取某年某月的天数…...

【亿美软通-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

数据分析学习之学习路线

前言 我们之前通过cda认证了解到数据分析行业&#xff0c;但是获取到证书&#xff0c;并不代表着&#xff0c;我们已经拥有的数据分析的能力&#xff0c;所以通过系统的学习数据分析需要掌握的能力&#xff0c;并学习大佬们的分析经验、分析思路&#xff0c;才是成为数据分析师…...

Oracle逻辑备份脚本【生产环境适用】

1 说明 从Oracle10g开始&#xff0c;引入了数据泵&#xff08;Data Pump&#xff09;&#xff0c;是一种高效的数据传输工具&#xff0c;它通过导出&#xff08;Export&#xff09;和导入&#xff08;Import&#xff09;的方式帮助用户迁移数据。 在Oracle的产品设计中&#…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

Pinocchio 库详解及其在足式机器人上的应用

Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库&#xff0c;专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性&#xff0c;并提供了一个通用的框架&…...

Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?

在大数据处理领域&#xff0c;Hive 作为 Hadoop 生态中重要的数据仓库工具&#xff0c;其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式&#xff0c;很多开发者常常陷入选择困境。本文将从底…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...