3D Shape Variational Autoencoder Latent Disentanglement via Mini-Batch Feature Swapping for Bodies and Faces
实验表明,现有的SOTA方法并不能分离或解耦人脸和身体的身份特征,作者在这篇文章中提出的方法可以适当解耦这些特征的生成,同时保留了良好的表现和重构能力。
在本文中,作者提出了一种自监督方法,用于训练3D形状的变分自编码器,并且这个方法旨在促使该自编码器生成一个潜在表示,其中身份特征被有效地分离和表示。
1. Introduction
继三个前人工作之后,作者提出了一种解构潜在表示的方法。作者提出的这种方法,当一个潜在单元发生变化时,只会引起一个factor发生变化,而其他的factor不变。
该方法依赖于一个单一的VAE,通过小批量生成过程和一个额外的loss函数进行训练。
该方法背后的逻辑是,如果在一个可控的方式下,对输入的数据进行交换特征(例如嘴巴、耳朵等),这样我们不仅会得到一个先验(从有或没有相同的特征的mini-batch中生成),而且我们也会知道哪些是(或不是)从同一张脸(身体)上而来的。这些不同形状之间的差异和相似之处应该在潜在表征中捕捉。因此,假设不同的潜在变量子集对应不同的特征,我们可以对潜在空间进行划分,并利用输入批次的结构来鼓励更多的解缠、可解释和结构
有关这篇论文工作的主要贡献:
- 基于特征交换(feature swap)提出了一种新的mini-batch处理的方法
- 引入了一个新的损失函数,该损失函数能够利用mini-batch里的形状差异和相似性
- 基于此提出的3D-VAE能够从更具可解释性和结构化的潜在表示中生成3D网格
3. Method
所提出的方法(图1 )使我们能够获得更具可解释性和结构化的潜在表示,适用于自监督的3D生成模型。这是通过训练一个网格卷积变分自编码器(第3.1节),采用小批量受控的特征交换过程和潜在一致性损失(第3.2节)来实现的。
3.1. Mesh Variational Autoencoder
定义一个流形三角形网格,记为,其中,为其顶点嵌入,为边连通度,以此定义其拓扑结构,为其三角面。
假设网格在整个数据集中共享相同的拓扑结构,和,是恒定的,网格仅因其顶点的位置而彼此不同,这些顶点被假设是一致对齐的,缩放的和点对应的。
由于传统的卷积算子不适用于网格的非欧性质,所以在构造生成模型时,采用了Spiralnet++: A fast and highly efficient mesh convolution operator.》 中的方法来构造。 卷积算子因此被定义为在预先计算的膨胀螺旋序列上的一个可学习的函数。池化和非池化算子被定义为一个稀疏矩阵乘法(这意味着 "Pooling" 和 "Un-pooling" 算子可以通过稀疏矩阵乘法来实现),同时使用了预先计算好的变换。这些变换是通过二次采样程序获得的。
文中作者提出的3D-VAE是作为一个编解码器来构建的,解码器用于充当一个生成模型,称作生成器。作者将其模型的结构定义为一个非线性的函数对{}。
令表示顶点嵌入域,表示隐分布域。 将定义为一个变分分布,用这个分布来近似较难计算的模型后验分布,用来描述似然
在整个网络中,每个spiral++卷积层后跟一个ELU激活函数。在E卷积层中与池化层交错,在G卷积层中与非池化层交错。
除此之外,还有三个全连接层,其中两个作为E的最后一层来预测均值和对角协方差,还有一层是G的第一层,用来将变换回一个可以通过网格卷积处理的低维网格。
训练过程最小化下面的loss:
为均方误差,between输入顶点与其对应的输出顶点。这个重构误差鼓励VAE的输出尽可能与其输入接近。
KL散度 让变分分布去近似先验分布
为一个基于均匀拉普拉斯的平滑因子(正则项),它是在输出的顶点上被计算的:
其中,为第n个输出顶点的拉普拉斯项,是与第 n 个顶点相邻的顶点集,其基数为,通过矩阵算子进行高效的运算。具体而言,我们有,其中,是拉普拉斯算子,采用随机游走归一化,是邻接矩阵。是对角度矩阵,其中表示邻接矩阵中每个顶点的度。
值得注意的是,此处的顶点均是经过归一化处理的,处理方法是,减去训练集中每个顶点的均值,并将结果除以训练集中每个顶点的标准差。因此,方程式1中的损失是在归一化的顶点上计算的。同样的,所有损失项在小批量中也会减去一个均值。
3.2. Mini-Batch Feature Swapping and Latent Consistency Loss
希望得到一个生成模型,该模型的与特定网格特征对应的顶点由一个预定义的隐变量集来控制,因此,我们首先在网格模板(图1 ,右)上定义F个任意网格特征。特征是通过对网格顶点进行着色手动定义的。由于顶点具有逐点对应关系( Sec.3.1 ),可以很容易地识别数据集中每一个网格的特征,而无需手动分割它们。这使得我们可以通过替换所选特征对应的顶点,将特征从一个网格交换到另一个网格(图2 )。
特征交换是作者提出的方法的核心,它允许我们对小批量生产进行整理,以便进行适当的塑造,并且可以约束每个网格的隐表示。特征交换在大多数输入网格中会导致可见的表面不连续(图2 ),但由于公式中的拉普拉斯正则项,重建网格中不会出现不连续。
每当交换一个特征而产生一个mini-batch的时候,都会定义一个,为通过当前的mini-batch控制特征交换隐变量的子集,控制其他部分。
的定义灵感来自于三元组损失(triplet losses)和引用 《Learning to regress 3d face shape and expression from an image without 3d supervision》 的方法(在深度学习中,三元组损失通常用于学习嵌入(embedding)空间,其中要求对于一组样本,使得正样本之间的距离小于负样本之间的距离。)再加上作者对mini-batch的精心设计,可以实现通过要求匹配的对在潜在空间中的距离小于未匹配对的距离,我们可以强制在不同 的潜在表示中引入差异和相似性,其中距离之间有一个边际值 η。这是通过一种约束条件来实现的,该条件通过三元组损失的思想,迫使模型学习如何在潜在空间中使匹配对更加接近,不匹配对更加分散。
在评估时,应让列方向上相似而差异化行方向,在评估时,应相似化行方向而差异化列方向。
其中,是一个正则化项,它考虑了在计算时进行的所有潜在距离比较。