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

ECCV 2024 | 南洋理工三维数字人生成新范式:结构扩散模型

该论文作者均来自于新加坡南洋理工大学 S-Lab 团队,包括博士后胡涛,博士生洪方舟,以及计算与数据学院刘子纬教授(《麻省理工科技评论》亚太地区 35 岁以下创新者)。S-Lab 近年来在顶级会议如 CVPR, ICCV, ECCV, NeurIPS, ICLR 上发表多篇 CV/CG/AIGC 相关的研究工作,和国内外知名高校、科研机构广泛开展合作。

三维数字人生成和编辑在数字孪生、元宇宙、游戏、全息通讯等领域有广泛应用。传统三维数字人制作往往费时耗力,近年来研究者提出基于三维生成对抗网络(3D GAN)从 2D 图像中学习三维数字人,极大提高了数字人制作效率。

这些方法往往在一维隐向量空间建模数字人,而一维隐向量无法表征人体的几何结构和语义信息,因此限制了其生成质量和编辑能力。

为了解决这一问题,来自新加坡南洋理工大学 S-Lab 团队提出结构化隐空间扩散模型(Structured Latent Diffusion Model)的三维数字人生成新范式 StructLDM。该范式包括三个关键设计:结构化的高维人体表征、结构化的自动解码器以及结构化的隐空间扩散模型。

StructLDM 是一个从图像、视频中学习的前馈三维生成模型(Feedforward 3D Generative Model),相比于已有 3D GAN 方法可生成高质量、多样化且视角一致的三维数字人,并支持不同层级的可控生成与编辑功能,如局部服装编辑、三维虚拟试衣等部位感知的编辑任务,且不依赖于特定的服装类型或遮罩条件,具有较高的适用性。

图片

  • 论文标题:StructLDM: Structured Latent Diffusion for 3D Human Generation

  • 论文地址:https://arxiv.org/pdf/2404.01241

  • 项目主页:https://taohuumd.github.io/projects/StructLDM

  • 实验室主页:https://www.ntu.edu.sg/s-lab

图片

,时长00:35

方法概览

图片

StructLDM 训练过程的包含两个阶段:

  • 结构化自动解码:给定人体姿态信息 SMPL 和相机参数,自动解码器对训练集中每个人物个体拟合出一个结构化 UV latent。该过程的难点在于如何把不同姿态、不同相机视角、不同着装的人物图像拟合到统一的 UV latent 中,为此 StructLDM 提出了结构化局部 NeRF 对身体每个部位分别建模,并通过全局风格混合器把身体各部分合并在一起,学习整体的人物外观。此外,为解决姿态估计误差问题,自动解码器训练过程中引入了对抗式学习。在这一阶段,自动解码器把训练集中每个人物个体转化为一系列 UV latent。

  • 结构扩散模型:该扩散模型学习第一阶段得到的 UV latent 空间,以此学习人体三维先验。

在推理阶段,StructLDM 可随机生成三维数字人:随机采样噪声并去噪得到 UV latent,该 latent 可被自动解码器渲染为人体图像。

实验结果

该研究在 4 个数据集上进行了实验评估:单视角图像数据集 DeepFashion [Liu et al. 2016],视频数据集 UBCFashion [Zablotskaia et al. 2019],真实三维人体数据集 THUman 2.0 [Yu et al. 2021], 及虚拟三维人体数据集 RenderPeople。

3.1 定性结果比较

StructLDM 在 UBCFashion 数据集上与已有 3D GAN 方法做了对比,如 EVA3D、 AG3D 及 StyleSDF。相比于已有方法,StructLDM 可生成高质量、多样化、视角一致的三维数字人,如不同肤色、不同发型,以及服饰细节(如高跟鞋)。

图片

StructLDM 在 RenderPeople 数据集上与已有 3D GAN 方法(如 EG3D, StyleSDF, 及 EVA3D)及扩散模型 PrimDiff 对比。相比于已有方法,StructLDM 可生成不同姿态、不同外观的高质量三维数字人,并生成高质量面部细节。

图片

,时长00:24

3.2 定量结果比较

研究者在 UBCFashion, RenderPeople,及 THUman 2.0 上与已知方法做了定量结果比较,在每个数据集上随机选取 5 万张图像计算 FID ,StructLDM 可大幅降低 FID。此外,User Study 显示大约 73% 的用户认为 StructLDM 生成的结果在面部细节和全身图像质量上比 AG3D 更有优势。

图片

3.3 应用

3.3.1 可控性生成

StructLDM 支持可控性生成,如相机视角、姿态、体型控制,以及三维虚拟试衣,并可在二维隐空间插值。

图片

3.3.2 组合式生成

StructLDM 支持组合式生成,如把①②③④⑤部分组合起来可生成新的数字人,并支持不同的编辑任务,如身份编辑、衣袖(4)、裙子(5)、三维虚拟试衣(6)以及全身风格化(7)。

图片

,时长00:25

3.3.3 编辑互联网图片

StructLDM 可对互联网图片进行编辑,首先通过 Inversion 技术得到对应的 UV latent,然后通过 UV latent 编辑可对生成的数字人进行编辑,如编辑鞋、上衣、裤子等。

图片

3.4 消融实验

3.4.1 隐空间扩散

StructLDM 提出的隐空间扩散模型可用于不同编辑任务,如组合式生成。下图探究了扩散模型参数(如扩散步数和噪声尺度)对生成结果的影响。StructLDM 可通过控制扩散模型参数来提高生成效果。

图片

3.4.2 一维与二维人体表征

研究者对比了一维与二维 latent 人体表征效果,发现二维 latent 可生成高频细节(如衣服纹理及面部表情),加入对抗式学习可同时提高图片质量和保真度。

图片

3.4.3 结构感知的归一化

为提高扩散模型学习效率,StructLDM 提出了结构感知的 latent 归一化技术 (structure-aligned normalization),即对每个 latent 做逐像素归一化。研究发现,归一化后的 latent 分布更接近于高斯分布,以此更利于扩散模型的学习。

图片

 

点击访问我的技术博客https://ai.weoknow.comicon-default.png?t=N7T8https://ai.weoknow.com

相关文章:

ECCV 2024 | 南洋理工三维数字人生成新范式:结构扩散模型

该论文作者均来自于新加坡南洋理工大学 S-Lab 团队,包括博士后胡涛,博士生洪方舟,以及计算与数据学院刘子纬教授(《麻省理工科技评论》亚太地区 35 岁以下创新者)。S-Lab 近年来在顶级会议如 CVPR, ICCV, ECCV, NeurIP…...

2024.8.13-算法学习(原创+转载)

一、什么是张量并行(Tensor Parallelism) ? 张量并行(Tensor Parallelism) 是一种分布式矩阵算法。 随着模型越来越大,模型内的矩阵也越来越大。一个大矩阵的乘法可以拆分成多个小矩阵的运算,…...

beautifulsoup的简单使用

文章目录 beautifulsoup一. beautifulsoup的简单使用1、安装2、如何使用3、对象的种类 二、beautifulsoup的遍历文档树2.1 子节点.contents 和 .children descendants2.2 节点内容.string.text 2.3 多个内容.strings**.stripped_strings** 2.4 父节点.parent.parents 三、beaut…...

【Python】Jupyter Notebook的安装及简单使用

Jupyter Notebook的安装及简单使用1、安装2、language设置为中文3、Jupyter Notebook启动4、Jupyter Notebook的常用快捷方式5、将Notebook笔记转为其他文件格式保存 Jupyter Notebook的安装及简单使用 不安装AnaCoda,但需要使用Jupyter Notebook 1、安装 pip inst…...

中国自动驾驶出租车冲击网约车市场

近年来,中国的自动驾驶技术迅速发展,对传统网约车市场构成了越来越大的冲击。随着科技巨头百度旗下的萝卜快跑等公司加速推广无人驾驶出租车,这一趋势引发了广泛的讨论和担忧。 自动驾驶技术的迅猛发展 中国自动驾驶行业正处于快速发展阶段&…...

解决浏览器书签同步问题,极空间部署开源免费的跨平台书签同步工具『xBrowserSync』

解决浏览器书签同步问题,极空间部署开源免费的跨平台书签同步工具『xBrowserSync』 哈喽小伙伴们好,我是Stark-C~ 作为一个喜欢折腾的数码党,我平时上网冲浪使用的浏览器绝不会只限于一种,就比如说我在上班的地方只会用到Edge浏…...

14个SpringBoot优化小妙招

今天我们来分享一下平时用SpringBoot开发时候的一些优化小妙招,用好这些优化小妙招让我们开发的系统架构、系统代码、开发流程、测试流程、运维监控看起来就跟写诗一样优雅,让我们每个人手头负责的代码和工程都要很漂亮~~~ 这里的优化小妙招很多不是说直…...

Elasticsearch 度量(Metric)聚合详解及示例

Elasticsearch 提供了强大的聚合功能,允许用户对数据进行深入的统计分析。度量(Metric)聚合是其中一种,它用于对数值型数据进行计算,如求和、平均值、最大值、最小值等。本文将详细介绍 Elasticsearch 的度量聚合&…...

基于 jsp 的健身俱乐部会员系统设计与实现

点击下载源码 基于 jsp 的健身俱乐部会员系统设计与实现 摘 要 目前我国虽然己经开发出了应用计算机操作的健身俱乐部管理系统,但管理软件,管理方法和管理思想三者往往相脱节。造成我国健身俱乐部信息管理系统极端化的缺陷。在国外健身俱乐部已经有了一…...

苍穹外卖项目DAY01

苍穹外卖项目Day01 1、软件开发整体介绍 1.1、软件开发流程 1.2、角色分工 项目经理:对整个项目负责,任务分配、把控进度产品经理:进行需求调研,输出需求调研文档、产品原型等UI设计师:根据产品原型输出界面效果图架…...

SpringBoot(Ⅰ)——HelloWorld和基本打包部署+Pom依赖概述+@SpringBootApplication注解+自动装配原理+约定大于配置

前言 如果SSM学的比较好,那么SpringBoot说白了就两件事:约定大于配置和自动装配 SpringBoot不会提供任何的功能拓展,完全依赖我们手动添加 所以SpringBoot的本质是一个依赖脚手架,可以快速集成配置各种依赖 1.1 SpringBoot相关依赖 创建…...

[Unity]关闭URP的SRP,开启GPU Instancing。

1. 对应材质的gpu instancing勾选上。 2. 游戏初始化时动态关闭SRP,或者在Graphics里全局关闭。动态关闭的代码如下: GraphicsSettings.useScriptableRenderPipelineBatching false; 模型合批的一些规则: 1. 模型一致。 2. 材质一致。 …...

04创建型设计模式——建造者模式

一、建造者模式简介 建造者模式(Builder Pattern)又被称为生成器模式。它旨在构建一个复杂对象的各个部分,而不需要指定该对象的具体类。该模式特别适用于对象的构建过程复杂且需要多个步骤的情况。建造者模式是一种对象创建型模式之一&…...

前端开发中的代码规范

引言 在前端开发中,遵循良好的代码规范是非常重要的。这不仅能提高代码的可读性和可维护性,还能帮助团队成员更好地协作。本文将介绍一些前端开发中常用的代码规范,并探讨它们的重要性。 1. 代码规范的重要性 1.1 可读性 良好的代码规范可…...

WHAT - 远程控制机制

目录 1. 客户端-服务器架构2. 连接建立3. 数据传输4. 通信协议5. 安全性6. 远程控制软件示例7. 操作流程示例 远程控制别人的电脑涉及到技术和安全多个方面。其基本机制通常包括以下几个方面: 1. 客户端-服务器架构 远程控制软件通常采用客户端-服务器架构&#x…...

苹果手机录音功能在哪里?3招轻松打开手机录音

无论是记录重要的会议内容、捕捉生活中的美好瞬间,还是进行语言学习,苹果手机的录音功能都能提供极大的便利。那么,苹果手机录音功能在哪里呢?本文将为您揭示苹果手机录音功能的藏身之处,并通过3个简单步骤&#xff0c…...

RCE之突破长度限制

我们在写webshell时通常会遇到过滤&#xff0c;但除了过滤之外还可能会有长度限制&#xff0c;这里就简单说一下关于RCE突破长度限制的技巧 突破16位 例如&#xff1a;PHP Eval函数参数限制在16个字符的情况下 &#xff0c;如何拿到Webshell&#xff1f; <?php $param …...

Arduino控制带编码器的直流电机速度

Arduino DC Motor Speed Control with Encoder, Arduino DC Motor Encoder 作者 How to control dc motor with encoder:DC Motor with Encoder Arduino, Circuit Diagram:Driving the Motor with Encoder and Arduino:Control DC motor using Encoder feedback loop: How …...

LangChain与Elasticsearch向量数据库的完美结合

在过去的一年中&#xff0c;生成式 AI (Generative AI) 领域取得了显著的进展。许多新的服务和工具应运而生。其中&#xff0c;LangChain 已成为构建大语言模型 (LLM) 应用程序&#xff08;例如检索增强生成 (RAG) 系统&#xff09;最受欢迎的框架之一。该框架极大地简化了原型…...

element时间段选择器或时间选择器 只设置默认起始时间或者结束时间,不显示问题

element时间段选择器或时间选择器 只设置默认起始时间或者结束时间&#xff0c;不显示问题 <div v-for"(item,index) in [a,b]":key"item"><el-date-pickerv-if"b"v-model"value1[item]"type"datetimerange"value-…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

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

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

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

【C++】纯虚函数类外可以写实现吗?

1. 答案 先说答案&#xff0c;可以。 2.代码测试 .h头文件 #include <iostream> #include <string>// 抽象基类 class AbstractBase { public:AbstractBase() default;virtual ~AbstractBase() default; // 默认析构函数public:virtual int PureVirtualFunct…...