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(z∣X)。解码器(也称生成器) G G G 根据似然 p ( X ∣ z ) p(X|z) p(X∣z) 将潜在向量 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(z∣X) 与先验 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=(zijf∣zijc)。其中 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=1∑BIp=q(+max[0,∥zpsf−zqsf∥22−∥zspf−zsqf∥22+η1]max[0,∥zspc−zsqc∥22−∥zpsc−zqsc∥22+η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
疑惑和想法:
- 除了预定义的语义特征,是否可以通过无监督的方式自动发现并解耦3D形状的内在成分表示?(有个有趣工作CausalVAE)
- 本文假设训练数据需要具有顶点对应性,如何将方法拓展到非结构化的3D数据如点云、体素?
- 形状的局部特征通常具有层次结构,如何建模特征间的拓扑关系,实现分层解耦控制?
:::
::: block-2
可借鉴的方法点:
- Mini-Batch内样本特征交换的思想可以用于其他需要解耦因素的生成任务,如图像合成、视频生成等。
- 将Mini-Batch结构引入loss设计来施加归纳偏置的方法值得借鉴,可用于改进其他自监督表示学习任务。
- 利用领域知识对架构施加约束以实现可解释特征解耦的思路具有一定通用性,可用于其他生成模型。
:::
相关文章:

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)…...

如何用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响应消息的状态码,并生成响应状态…...

chat gpt基本原理解读
chat gpt基本原理解读 ChatGPT是一种基于生成式预训练变换器(Generative Pre-trained Transformer, GPT)的对话模型,主要通过大量的文本数据训练生成自然语言回复。以下是ChatGPT的基本原理解读: 1. 基本架构 ChatGPT 是基于 GPT…...

单目标应用:基于蛇鹫优化算法SBOA的微电网优化(MATLAB代码)
一、微电网模型介绍 微电网多目标优化调度模型简介_vmgpqv-CSDN博客 参考文献: [1]李兴莘,张靖,何宇,等.基于改进粒子群算法的微电网多目标优化调度[J].电力科学与工程, 2021, 37(3):7 二、蛇鹫优化算法求解微电网 2.1算法简介 蛇鹫优化算法(Secre…...

MySQL系列-安装配置使用说明(MAC版本)
1、前言 本文将介绍MySQL的安装配置以及基本语法操作说明 环境:mac 版本:MySQL 8.0.28 之前电脑安装卸载过,后面在装的时候遇到一些问题,用了四五天才解决,主要是参考 https://blog.csdn.net/zz00008888/article/deta…...

vue elementui el-input 正则验证,限制只能输入数字和小数
vue elementui el-input 正则验证 限制只能输入数字和小数,以下两种方法都可以: 1、οninput“value value.replace(/[^0-9.]/g,‘’)” 2、οninput“value value.replace(/[^\d.]/g, ‘’)” 限制只能输入数字: 1、oninput “valuevalu…...

强化学习入门
简介 强化学习(Reinforcement Learning, RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化…...

简约不简单,建筑装饰演绎现代美学
走在城市的大街小巷,你是否曾被那些独特而精美的建筑装饰所吸引?每一栋建筑都像是艺术家的杰作,通过精美的装饰诉说着它的故事。 我们的建筑装饰,不仅注重外在的美观,更追求内在的品质。从古典的雕花到现代的简约线条&…...

SpringBoot调用WebService的实践
作者所在公司的系统间的信息交互是通过webservice完成。如:MES与SAP的交互,MES与WMS的交换,MES与SRM的交互,MES与IOT的交互等。 MES是用.NET VS2008 C#写的,调用webservice很简单,这里不再赘述。如有想了解…...

源码编译构建LAMP
Apache 起源 源于A Patchy Server,著名的开源Web服务软件1995年时,发布Apache服务程序的1.0版本由Apache软件基金会(ASF)负责维护最新的名称为“Apache HTTP Server”官方站点:http://httpd.apache.org/ 主要特点 开发源代码/…...

搜索是门艺术,大神都是这样找资源
以下所有资源均可在星云导航找到,网站地址:https://www.xygalaxy.com/ 浏览器搜索高级用法 1、排除干扰,指定关键词 1.1、排除指定关键字 格式:关键字1 -关键字2比如搜索:星云导航,不想要CSDN的内容 星…...

【设计模式深度剖析】【5】【行为型】【迭代器模式】
👈️上一篇:策略模式 | 下一篇:中介者模式👉️ 设计模式-专栏👈️ 文章目录 迭代器模式定义英文原话直译如何理解呢? 迭代器模式的角色1. Iterator(迭代器)2. ConcreteIterator(具体迭代器…...