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

Sora和快手可灵背后的核心技术 | 3DVAE:通过小批量特征交换实现身体和面部的三维形状变分自动编码器

【摘要】学习3D脸部和身体生成模型中一个解开的、可解释的和结构化的潜在表示仍然是一个开放的问题。当需要控制身份特征时,这个问题尤其突出。在本文中,论文提出了一种直观而有效的自监督方法来训练一个3D形状变分自动编码器(VAE),以鼓励身份特征的解开潜在表示。通过交换不同形状间的任意特征来管理迷你批次生成,这允许定义一个利用已知的潜在表示中的差异和相似性的损失函数。在3D网格上进行的实验结果表明,用于潜在解开的最先进的方法无法解开脸部和身体的身份特征。论文提出的方法正确地解耦了这些特征的生成,同时保持了良好的表示和重建能力。

原文:3D Shape Variational Autoencoder Latent Disentanglement via Mini-Batch Feature Swapping for Bodies and Faces
地址:https://arxiv.org/abs/2111.12448
代码:https://github.com/simofoti/3DVAE-SwapDisentangled
出版:CVPR
机构: 伦敦大学学院

1 研究问题

本文研究的核心问题是: 如何设计一种自监督的方法,在3D人脸和人体形状的生成模型中实现身份特征解开的潜在表示。

::: block-1
想象论文要开发一个3D游戏或虚拟试衣间,需要程序自动生成各种逼真的人脸和人体模型。论文希望这个生成系统有以下特点:1)能够通过调节少量的控制参数,就生成千变万化的脸部和身体;2)这些控制参数应该是可解释的,比如对应眼睛、鼻子、嘴巴等具体的面部器官。这样的生成工具不仅使用方便,而且便于实现局部的、细粒度的形状控制。
:::

本文研究问题的特点和现有方法面临的挑战主要体现在以下几个方面:

  • 身份特征具有明显的局部性,而现有的3D形状生成模型往往只学习到全局的latent表示,缺乏对局部身份特征的显式建模。
  • 缺乏可用于身份特征解开学习的监督信号。现有的latent解开方法主要针对人脸表情和姿态的解耦,而缺少面向身份特征的benchmark和评估标准。
  • 身份特征之间往往存在复杂的相关性,简单地对latent空间做划分,无法学习到语义清晰的特征表示。

针对这些挑战,本文提出了一种基于"迷你批次特征交换"的VAE训练范式:

::: block-1
核心思想是在组建每个训练批次时,随机地在不同形状实例之间交换局部的身份特征(如鼻子、眼睛、下巴等),从而得到一批在特定身份特征上存在差异,而在其他特征上保持一致的"合成"形状。然后要求VAE学习到的latent表示能够反映这种差异和一致性,即属于同一身份特征的潜变量应该在批内保持不变,而控制不同身份特征的潜变量应该各不相同。这其实是构建了一种弱监督信号,引导VAE去学习身份特征解开的表示(Sora和可灵等应该构建了很多弱监督信号)。同时,本文还提出了一个新的latent一致性损失函数,进一步利用批内形状的相似性约束,来强化解开学习的效果。实验表明,本文方法能在不影响生成质量的情况下,大幅提升latent表示的可解释性,实现对身份特征的有效解耦和操控。
:::

2 研究方法

本文提出了一种新颖的方法来训练3D形状变分自编码器(3D-VAE),以学习人脸和人体3D网格的解耦、可解释和结构化的潜在表示。该方法包括三个关键部分:3D-VAE的基本结构、特征交换mini-batch的生成,以及潜在一致性损失函数的构建。接下来将详细介绍每一部分。

2.1 3D形状变分自编码器

论文采用文献[16]中提出的网格卷积VAE作为基本架构。编码器 E E E 将输入网格 X X X 映射到潜在分布 Z Z Z , 定义为近似后验 q ( z ∣ X ) q(z|X) q(zX)。解码器(也称生成器) G G G 根据似然 p ( X ∣ z ) p(X|z) p(Xz) 将潜在向量 z z z 映射回网格。编码器使用spiral++卷积、ELU激活和池化层,而解码器使用spiral++卷积、ELU激活和反池化层。此外还有三个全连接层:两个预测潜在分布均值和对角协方差,一个将 z z z 转换回网格。

训练时最小化如下损失函数:

L V A E = L R + α L L + β L K L L_{VAE} = L_R + αL_L + βL_{KL} LVAE=LR+αLL+βLKL

其中 L R L_R LR 是重建损失, L L L_L LL 是基于网格拉普拉斯矩阵的平滑正则项, L K L L_{KL} LKL 是变分分布 q ( z ∣ X ) q(z|X) q(zX) 与先验 p ( z ) p(z) p(z) 间的KL散度。 α α α β β β 是平衡系数。

2.2 特征交换mini-batch生成

核心创新点之一是特征交换方法。具体来说,论文先在一个模板网格上定义 F F F 个特征区域,每个区域对应一组顶点。由于数据集中的网格具有顶点对应关系,可以很容易地识别出每个网格的各个特征区域。举个例子,对于人脸,论文可以定义眼睛、鼻子、嘴巴等不同的特征(图1左)。

基于此,论文精心设计了mini-batch的生成过程。一个大小为 B B B 的mini-batch可以看作一个 B × B \sqrt{B} \times \sqrt{B} B ×B 的矩阵,其中对角线上的元素从数据集中采样,其余元素通过特征交换得到。每次生成一个mini-batch时,论文随机选择一个特征并交换不同网格间该特征对应的顶点坐标(图1左)。这样,矩阵的每一行包含相同的人脸/人体,但具有不同的特征;而每一列包含不同的人脸/人体,但具有相同的特征。

2.3 潜在一致性损失函数

mini-batch的精心设计为构建潜在一致性损失函数奠定了基础。当一个mini-batch输入到编码器后,论文得到大小为 B × B \sqrt{B} \times \sqrt{B} B ×B 的潜在向量矩阵,其中每个向量 z i j z_{ij} zij 被均匀地划分为 F F F 个子集,分别控制一个特征(图1中间)。

假设当前mini-batch交换了特征 f f f, 则 z i j = ( z i j f ∣ z i j c ) z_{ij} = (z^f_{ij}|z^c_{ij}) zij=(zijfzijc)。其中 z i j f z^f_{ij} zijf 控制特征 f f f, 而 z i j c z^c_{ij} zijc 控制其他特征。直觉上,同一列的 z i j f z^f_{ij} zijf 应该接近,因为它们对应相同的特征 f f f;而同一行的 z i j f z^f_{ij} zijf 应该远离。反之,同一行的 z i j c z^c_{ij} zijc 应该接近,而同一列的 z i j c z^c_{ij} zijc 应该远离。这就好比对角线上的人脸彼此不同,但具有相同的特征 f f f

基于这一思想,论文构建潜在一致性损失函数如下:

L c = γ B ∑ s , p , q = 1 B I p ≠ q ( max ⁡ [ 0 , ∥ z p s f − z q s f ∥ 2 2 − ∥ z s p f − z s q f ∥ 2 2 + η 1 ] + max ⁡ [ 0 , ∥ z s p c − z s q c ∥ 2 2 − ∥ z p s c − z q s c ∥ 2 2 + η 2 ] ) \begin{aligned} L_c = \frac{γ}{\sqrt{B}} \sum_{s,p,q=1}^{\sqrt{B}} \mathbb{I}_{p \neq q} \Big(&\max[0, \|z^f_{ps} - z^f_{qs}\|^2_2 - \|z^f_{sp} - z^f_{sq}\|^2_2 + η_1] \\ +&\max[0, \|z^c_{sp} - z^c_{sq}\|^2_2 - \|z^c_{ps} - z^c_{qs}\|^2_2 + η_2] \Big) \end{aligned} Lc=B γs,p,q=1B Ip=q(+max[0,zpsfzqsf22zspfzsqf22+η1]max[0,zspczsqc22zpsczqsc22+η2])

其中 γ γ γ 是归一化系数, I \mathbb{I} I 是指示函数, η 1 η_1 η1 η 2 η_2 η2 是容差。该损失函数遍历mini-batch矩阵的对角线,并要求匹配的潜在变量对之间的距离比不匹配的对之间的距离小一个容差 η η η。这鼓励 VAE 学习到的潜在表示能够解耦地控制每个特征的生成。

最后,结合原有的VAE损失(1)和潜在一致性损失(2),论文得到总的损失函数:

L = L V A E + κ L c = L R + α L L + β L K L + κ L c L = L_{VAE} + κL_c = L_R + αL_L + βL_{KL} + κL_c L=LVAE+κLc=LR+αLL+βLKL+κLc

其中 κ κ κ 控制潜在一致性损失的权重。

综上所述,本文提出了一种通过特征交换生成mini-batch、并构建潜在一致性损失函数的方法,使得3D-VAE能够学习到更加解耦、可解释和结构化的3D人脸和人体的潜在表示。该方法只需要对标准的VAE进行很小的改动,却能学习到可以独立控制每个特征生成的潜在空间。这极大地提高了生成模型的可解释性和可用性。

3 实验

3.1 实验场景介绍

本文提出了一种新的VAE框架,通过批特征交换与潜在一致性损失,使学习到的潜在表征具有更好的可解释性、结构性和解纠缠特性。实验旨在验证该方法在人脸与人体3D网格生成任务中的有效性。

3.2 实验设置

  • Datasets:从UHM和STAR线性模型中随机生成人脸与人体3D网格数据集,各1万个,划分为训练集(90%)、验证集(5%)和测试集(5%)
  • Baseline:VAE、DIP-VAE-I/II、Factor VAE等最先进的自监督潜在解纠缠模型
  • Implementation details:
    • 骨干网络:SpiralNet++,人脸模型4层卷积,人体模型3层卷积
    • 超参数:40个epoch,ADAM优化器,学习率1e-4,批大小16,潜变量维度(人脸60维,人体33维)等
  • metric:
    • 重建误差:平均/最大每顶点误差
    • 生成多样性:随机生成的样本对之间的平均每顶点距离
    • 分布距离:JSD、MMD、COV等
    • 潜变量解纠缠:观察潜变量遍历对生成特征的影响

3.3 实验结果

3.3.1 实验一、与其他潜在解纠缠方法的性能对比

目的:评估所提出的模型与其他自监督潜在解纠缠方法在生成任务上的性能表现
涉及图表:表1
实验细节概述:在人脸数据集上,比较了VAE、DIP-VAE-I/II、Factor VAE等模型的重建误差、生成多样性、分布距离等指标
结果:

  • 本文模型的重建误差与普通VAE相当,优于其他方法,说明批特征交换和一致性损失并未降低重建能力
  • 本文模型的生成多样性与大多数方法相近,Factor VAE多样性更高但生成样本真实性较差
  • 其他评估生成性能的指标表明,本文方法与其他模型性能相当

3.3.2 实验二、潜在表征的解纠缠效果评估

目的:定性评估学习到的潜在表征对控制不同面部/身体特征的解纠缠能力
涉及图表:图3、图4、图5、图10、图11
实验细节概述:遍历每个潜变量,生成两个改变该变量至最小值(-3)和最大值(+3)的3D网格,观察顶点位移,分析其对不同特征的影响
结果:

  • 本文模型的潜在表征展现出明显的结构性和可解释性,不同潜变量对应控制了特定的面部/身体特征
  • 相比之下,其他方法学到的潜在表征难以解释,大多数变量均表现出纠缠的特性

3.3.3 实验三、消融研究

目的:分析模型关键组件(批特征交换、一致性损失、拉普拉斯正则化、归一化)的作用
涉及图表:图13
实验细节概述:分别移除模型的潜在一致性损失、拉普拉斯损失和输入归一化,重新训练并对比性能
结果:

  • 移除潜在一致性损失后,仅保留批特征交换无法获得解纠缠的潜在表征
  • 移除拉普拉斯损失会导致生成网格表面不规则,出现不连续
  • 移除输入归一化则降低了生成人脸的真实性

3.3.4 实验四、泛化能力评估

目的:验证模型对于训练分布外样本的拟合能力
涉及图表:图14
实验细节概述:在CoMA人脸数据集的中性表情上,通过优化潜码最小化与目标网格的重建误差,测试模型的泛化性能
结果:

  • 重建误差随着施加的噪声线性增长,但整体仍保持较低水平,说明模型泛化能力较好
  • 本文方法的重建误差在所有模型中最低,证明其更强的泛化性

4 总结后记

本论文针对3D生成模型中潜在表示解耦的问题,提出了一种基于Mini-Batch特征交换和潜在一致性损失的自监督方法。通过在Mini-Batch内的样本间交换预定义的网格特征并约束对应潜变量的相似性,实现了对身体和面部3D网格的特征级解耦生成控制。实验结果表明,所提方法能够学习到更加解释性强、结构化的潜在表示,生成效果优于现有方法。

::: block-2
疑惑和想法:

  1. 除了预定义的语义特征,是否可以通过无监督的方式自动发现并解耦3D形状的内在成分表示?(有个有趣工作CausalVAE)
  2. 本文假设训练数据需要具有顶点对应性,如何将方法拓展到非结构化的3D数据如点云、体素?
  3. 形状的局部特征通常具有层次结构,如何建模特征间的拓扑关系,实现分层解耦控制?
    :::

::: block-2
可借鉴的方法点:

  1. Mini-Batch内样本特征交换的思想可以用于其他需要解耦因素的生成任务,如图像合成、视频生成等。
  2. 将Mini-Batch结构引入loss设计来施加归纳偏置的方法值得借鉴,可用于改进其他自监督表示学习任务。
  3. 利用领域知识对架构施加约束以实现可解释特征解耦的思路具有一定通用性,可用于其他生成模型。
    :::

相关文章:

Sora和快手可灵背后的核心技术 | 3DVAE:通过小批量特征交换实现身体和面部的三维形状变分自动编码器

【摘要】学习3D脸部和身体生成模型中一个解开的、可解释的和结构化的潜在表示仍然是一个开放的问题。当需要控制身份特征时,这个问题尤其突出。在本文中,论文提出了一种直观而有效的自监督方法来训练一个3D形状变分自动编码器(VAE),以鼓励身份特征的解开潜在表示。通过交换不同…...

ArcGIS Pro SDK (三)Addin控件 2 窗格界面类

ArcGIS Pro SDK (三)Addin控件 2 窗格界面类 目录 ArcGIS Pro SDK (三)Addin控件 2 窗格界面类15 ArcGIS Pro 后台选项卡15.1 添加控件15.2 Code15.2.1 选项卡按钮15.2.2 选项卡页 16 ArcGIS Pro 窗体16.1 添加控件16.2 Code 17 A…...

Ubuntu 20.04.6 LTS系统使用命令编辑静态IP地址【笔记】

rootubuntu-machine:/home# cat /etc/issue Ubuntu 20.04.6 LTS \n \l1、切换到root身份 sudo su2、编辑静态IP地址,示例以01-network-manager-all.yaml,个别系统可能是00-network-manager-all.yaml,以安装系统生成的文件为准。 vim /etc/n…...

Python第二语言(八、Python包)

目录 1. 什么是Python包 2. 创包步骤 2.1 new包 2.2 查看创建的包 2.3 拖动文件到包下 3. 导入包 4. 安装第三方包 4.1 什么是第三方包 4.2 安装第三方包-pip 4.3 pip网络优化 1. 什么是Python包 包下有__init__.py就是包,无__init__.py就是文件夹。于Ja…...

Pipeline流水线组件

文章目录 1、新建pipeline流水线2、定义处理器3、定义处理器上下文4、pipeline流水线实现5、处理器抽象类实现6、pipeline流水线构建者7、具体处理器实现8、流水线测试9、运行结果 1、新建pipeline流水线 package com.summer.toolkit.model.chain;import java.util.List; impo…...

闪灵CMS电子商城系统源码v5.0(自带微信小程序)

源码介绍 闪灵CMS电子商城系统源码,双语带手机版,PHPMYSQL进行开发,网站安装简单、快捷。 闪灵CMS系统更新日志 1.修复:修复了开启强制https后,说明文档重定向过多的问题 2.修复:修复了商品名称过长时无…...

基于SSM的旅游民宿预定系统【源码】【运行教程】

基于SSM的旅游民宿预定系统 一、项目介绍1. 游客功能2. 管理员功能3. 高级功能 二、项目技术栈三、项目运行四、项目演示总结 大家好,这里是程序猿代码之路!随着旅游业的快速发展,民宿作为一种独特的住宿方式越来越受到游客的喜爱。为了提升用…...

PgSQL技术内幕 - psql与服务端连接与交互机制

PgSQL技术内幕 - 客户端psql与服务端连接与交互机制 简单来说,PgSQL的psql客户端向服务端发起连接请求,服务端接收到请求后,fork出一个子进程,之后由该子进程和客户端进行交互,处理客户端的SQL等,并将结果返…...

实现开发板三盏灯点亮熄灭

实现开发板三盏灯点亮熄灭 typedef struct {volatile unsigned int MODER; // 0x00volatile unsigned int OTYPER; // 0x04volatile unsigned int OSPEEDR; // 0x08volatile unsigned int PUPDR; // 0x0Cvolatile unsigned int IDR; // 0x10volatile unsigned int OD…...

外汇天眼:盈透证券为客户提供更丰富的欧洲衍生品交易渠道

电子交易巨头盈透证券(纳斯达克代码:IBKR)今日宣布,通过Cboe欧洲期权交易所(CEDX)新增欧洲股票期权和欧洲指数期货及期权。这一新增功能使得盈透证券的客户可以在单一统一平台上,除了股票、期权…...

论文阅读Rolling-Unet,卷积结合MLP的图像分割模型

这篇论文提出了一种新的医学图像分割网络Rolling-Unet,目的是在不用Transformer的前提下,能同时有效提取局部特征和长距离依赖性,从而在性能和计算成本之间找到良好的平衡点。 论文地址:https://ojs.aaai.org/index.php/AAAI/article/view/2…...

Linux Shell命令vim使用

一、引例 以判断引出(学过C其他语言容易接受)。 简单命令说明: -e 测试文件是否存在 -f 测试文件是否为普通文件 -d 测试文件是否为目录 -r 测试当前用户对某文件是否具有“可读”权限 -w 测试当前用户对某文件是否具有“可写”权限…...

如何将 API 管理从 Postman 转移到 Apifox

上一篇推文讲到用 Swagger 管理的 API 怎么迁移到 Apifox,有许多同学反馈说能不能介绍一下 Postman 的迁移以及迁移过程中需要注意的事项。那么今天,它来了! 从 Postman 迁移到 Apifox 的方法有两种: 导出 Postman 集合 &#x…...

用链表实现的C语言队列

一、队列概述 在数据结构中,队列是一种先进先出(FIFO)的线性表。它在许多应用场景中非常有用,例如任务调度、进程管理、资源管理等。队列是一种重要的数据结构,其主要特点是先进先出(FIFO, First In First …...

国产SDI视频均衡驱动器,功能与 LMH0387/LMH0344 一致

视频均衡驱动器,功能与 LMH0387 一致、LMH0344。本期间支持 DVB-ASI,作为驱动器能够选择输出速率,作为均衡接收器能支持100m以上传输距离(线缆类型Belden 1694A)。最大支持3Gbps 速率的信号 2 产品特征 a&#xff09…...

如何用Xinstall CPS结算系统打破传统营销桎梏,实现用户增长?

在互联网流量红利逐渐衰退的今天,App推广和运营面临着前所未有的挑战。如何快速搭建起满足用户需求的运营体系,成为了众多企业急待解决的问题。而在这个关键时刻,Xinstall CPS结算系统应运而生,以其独特的优势帮助企业解决了一系列…...

(代数:解一元二次方程)可以使用下面的公式求一元二次方程 ax2+bx+c0 的两个根:

(代数:解一元二次方程)可以使用下面的公式求一元二次方程 ax2bxc0 的两个根: b2-4ac 称作一元二次方程的判别式。如果它是正值,那么一元二次方程就有两个实数根。 如果它为 0,方程式就只有一个根。如果它是负值,方程式无实根。 编写程序,提示…...

如何提高网站收录?

GSI服务就是专门干这个的,这个服务用的是光算科技自己研发的GPC爬虫池系统。这个系统通过建立一个庞大的站群和复杂的链接结构,来吸引谷歌的爬虫。这样一来,你的网站就能更频繁地被谷歌的爬虫访问,从而提高被收录的机会。 说到效…...

Docker 学习总结(83)—— 配置文件daemon.json介绍及优化建议

一、daemon.json 文件概述 daemon.json是Docker守护进程的配置文件,它允许系统管理员自定义Docker守护程序的行为。此文件通常位于/etc/docker/目录下。通过修改daemon.json,可以调整Docker守护进程的多种设置,包括网络配置、日志记录、存储驱动等。 二、daemon.json 文件结…...

Javaweb04-Servlet技术2(HttpServletResponse, HttpServletRequest)

Servlet技术基础 HttpServletResponse对象 HttpServletResponce对象是继承ServletResponse接口,专门用于封装Http请求 HttpServletResponce有关响应行的方法 方法说明功能描述void setStatus(int stauts)用于设置HTTP响应消息的状态码,并生成响应状态…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

Java 语言特性(面试系列1)

一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

【VLNs篇】07:NavRL—在动态环境中学习安全飞行

项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...