4D Facial Expression Diffusion Model

207 阅读12分钟

4D Facial Expression Diffusion Model

image.png

DDPM 是一种模型,它代表 "Diffusion-Deformation Probabilistic Models"(扩散变形概率模型)。这是一种概率生成模型,用于建模数据的生成过程。DDPM 的主要思想是通过模拟数据点从简单分布开始,然后经历一系列扩散(diffusion)和形变(deformation)步骤来生成复杂的数据分布。这一模型在许多机器学习和深度学习任务中都具有广泛的应用,尤其在生成对抗网络(GANs)和密度估计等领域。

简单来说,DDPM 是一种用于学习和生成复杂数据分布的概率模型,它通过扩散和形变的过程逐渐从简单分布生成数据,具有广泛的应用前景。

METHOD

该方法的核心是利用基于DDPM的模型生成3D关键点坐标序列x={L1,...,LF}x=\{L_1,...,L_F\},其中LfRN×3L_{f}\in\mathbb{R}^{\boldsymbol{N}\times3}ff从1到FF)表示NN个3D关键点的坐标点。LfL_f的3D排列隐含编码了个体面部结构的几何特征,可以看作是中性姿势LL下的面部特征和包含了姿势变换的结合,即Lf=ΔLf+LL_{f}=\Delta L_{f}+L.

该方法主要由两个任务组成:\

image.png

对提出的方法进行概述。通常,扩散过程用于训练噪声逼近器,而逆过程用于从分布q中采样x0x_0。但在本篇文章的下游任务中采样需要两个过程。双向transformer将3个嵌入层的输出之和作为输入:作为输入t的时序嵌入层( TE ),作为输入从1到F的整数序列的位置编码层( PE ),以及作为输入xtx_t的特征嵌入层( FE )。地标引导的编码器-解码器将LfL_f的表达式重定向到输入网格M上,以估计每一帧的MfM_f

首先, 无条件下训练一个DDPM(Diffusion-Deformation Probabilistic Model),也就是在没有特定条件或输入的情况下进行训练。在模型的训练过程中,它学会了如何从一个简单的概率分布(通常是高斯分布或均匀分布)生成复杂的数据。当需要进行有条件的生成时,可以通过对逆过程进行条件化来实现。也就是说,可以通过在已经生成的数据上施加条件或提供额外的信息,来生成符合特定条件或特定要求的数据样本。这个过程实际上是将已生成的数据反向变换回潜在的简单分布,并确保生成的数据满足所设定的条件。
这种无条件和有条件生成的结合使得 DDPM 具有灵活性,既可以生成随机的、无条件的样本,也可以根据需要生成满足特定条件的样本,使其在各种应用中都具有广泛的适用性。 可以执行不同形式的映射来完成不同的下游任务。

然后, 特征点引导的编解码器使用目标中性人脸网格MMΔLf\Delta L_f作为输入,在每一帧(ff = 1 to FF)处估计ΔMf\Delta M_f。在每一帧对应的MM上加上估计的ΔMf\Delta M_f,得到所需的动画网格序列{M1,...MF}\{M_1,...M_F\}Mf=M+ΔMfM_f = M+\Delta M_f.

3.1 Denoising Diffusion Probabilistic Models

从联合分布函数pθ(x0:T)p_\theta(x_{0:T})推导出似然函数pθ(x0)=pθ(x0:T)dx1:Tp_\theta(x_0)=\int p_\theta(x_{0:T})dx_{1:T}的这个过程被称作逆过程;近似后验q(x1:Tx0)q(x_{1:T}|x_0)的这个过程称作 正过程或扩散过程.

似然函数(likelihood function)通常表示为给定一组参数(或模型)下观测数据的条件分布。在这个情况下,要从联合分布中导出似然函数,可以使用边缘化的方法。

首先,给定联合分布pθ(x0:T)p_\theta(x_{0:T}),其中x0x_0xTx_T是一个样本序列,你希望从中导出似然函数 pθ(x0)p_\theta(x_0)

边缘化是一种常用的方法,可以从联合分布中得到较低维度的分布。在这里,你想要从联合分布中得到初始样本x0x_0的分布,因此需要边缘化掉所有其他时间步的样本。

具体步骤如下:

  1. 计算边缘分布:首先,需要计算边缘分布pθ(x0)p_\theta(x_0)。这可以通过对联合分布 pθ(x0:T)p_\theta(x_{0:T})进行边缘化来实现。边缘化是通过对其他时间步的变量进行积分或求和来消除它们的影响,从而得到x0x_0的分布。

pθ(x0)=pθ(x0:T)dx1dxTp_\theta(x_0) = \int p_\theta(x_{0:T}) dx_1 \ldots dx_T

  1. 得到似然函数:一旦你计算出x0x_0的边缘分布pθ(x0)p_\theta(x_0),这就是你所需的似然函数。它表示在给定参数θ\theta下,初始样本x0x_0的分布。

pθ(x0)p_\theta(x_0)

这样,就从联合分布中导出了似然函数,该似然函数表示了初始样本x0x_0的条件分布。这个似然函数通常用于统计建模和参数估计中。

扩散过程通过往初始数据x0x_0中添加高斯噪声,并根据方差表β1,...,βT\beta_1,...,\beta_T,生成噪声逐渐增大的样本(x1,x2,xT)(x_1,x_2,\ldots x_T)

image.png

(1)该公式描述了条件概率分布q(x1:Tx0)q(x_{1:T}|x_0),它表示在给定初始状态x0x_0的情况下生成一系列数据点x1x_1TT的概率分布。

  • x1:Tx_{1:T}表示从x1x_1TT的一系列数据点
  • |表示“在给定”的意思,即在给定x0x_0的条件下
  • q(xtxt1)q(x_t|x_{t-1})表示在给定前一时刻的数据点xt1x_{t-1}的条件下,生成当前时刻的数据点xtx_t的概率分布。

整个公式可以解释为:在已知初始状态x0x_0的情况下,我们通过连续地从t=1t=1TT,依次生成每个时刻的数据点xtx_t。生成每个数据点的概率分布由条件概率分布q(xtxt1)q(x_t|x_{t-1})给出,并且每一步的生成都是基于前一时刻的数据点。

在概率论中,当我们希望计算多个随机变量的联合分布时,我们可以使用联合概率分布来表示这些变量之间的关系。对于一个时间序列中的一系列随机变量,我们可以通过将它们的条件概率分布相乘,从而得到整个序列的联合分布。

在给定条件下,每个时间步上的状态𝑥𝑡𝑥_𝑡可以被视为一个随机变量,其条件概率分布为𝑞(𝑥𝑡𝑥𝑡1)𝑞(𝑥_𝑡 |𝑥_{𝑡−1})。当我们希望计算整个时间序列𝑥1,𝑥2,,𝑥𝑇𝑥_1, 𝑥_2, \ldots, 𝑥_𝑇的联合分布时,我们可以使用以下步骤:

  1. 从初始状态𝑥0𝑥_0开始,根据条件概率分布𝑞(𝑥1𝑥0)𝑞(𝑥_1 |𝑥_0)采样得到𝑥1𝑥_1
  2. 在知道𝑥1𝑥_1的情况下,再根据条件概率分布𝑞(𝑥2𝑥1)𝑞(𝑥_2 |𝑥_1)采样得到𝑥2𝑥_2
  3. 依此类推,重复𝑇𝑇次,直到得到整个序列𝑥1,𝑥2,,𝑥𝑇𝑥_1, 𝑥_2, \ldots, 𝑥_𝑇

在每个时间步上,我们都采样一个新的状态,而每个状态的采样都受到前一个时间步状态的影响,这是由条件概率分布𝑞(𝑥𝑡𝑥𝑡1)𝑞(𝑥_𝑡 |𝑥_{𝑡−1})决定的。当我们乘以每个时间步的条件概率分布时,实际上是在计算整个序列的联合概率分布,因为每个时间步上的状态都受到前面所有时间步上状态的联合影响。

这种计算方式基于贝叶斯概率理论,允许我们从一个初始状态出发,生成具有一定依赖关系的整个时间序列。这在许多概率建模和机器学习任务中非常有用,特别是在生成模型、蒙特卡罗采样和序列建模中。

这种连续生成的过程可以用于估计数据点之间的关联性和演变趋势,通常在时间序列建模、生成模型和序列预测等任务中有应用

(2)这个公式描述了条件概率分布q(xtxt1)q(x_t|x_{t-1}),它表示在给定前一时刻的数据点xt1x_{t-1}的情况下,生成当前时刻的数据点xtx_t的概率分布。

  • xtx_t是当前时刻的数据点。
  • 𝑁(𝑥𝑡; μ, Σ) 表示具有均值 μ 和协方差矩阵 Σ 的多元正态分布。在这个公式中,均值为1βtxt1\sqrt{1-\beta_t}x_{t-1},协方差矩阵为𝛽𝑡𝐼,其中 𝐼 是单位矩阵。
  • 1βtxt1\sqrt{1-\beta_t}x_{t-1}表示均值,它依赖于前一时刻的数据点xt1x_{t-1},并且通过1βt.\sqrt{1-\beta_t}.进行缩放。
  • 𝛽𝑡 表示当前时刻生成的数据点与前一时刻的数据点之间的关联程度。𝛽𝑡 的值在[0, 1]之间,决定了数据点之间的相关性。较小的 𝛽𝑡 值表示较弱的相关性,而较大的值表示较强的相关性。
  • 𝐼 是单位矩阵,表示协方差矩阵是对角矩阵,且所有对角元素相等。

总的来说,公式(2)描述了一个条件概率分布,它告诉我们在给定前一时刻的数据点xt1x_{t-1}的情况下,当前时刻的数据点xtx_t服从一个多元正态分布。生成的数据点的均值与前一时刻的数据点相关,并且关联程度由βt\beta_t决定,协方差矩阵表示了数据点之间的不确定性。这种模型通常用于时间序列建模和预测,其中当前时刻的数据点受到前一时刻的影响,但又具有一定的随机性。

从公式2中,我们可以推导出以下性质: image.png 这使得我们可以在任意时间步长t下高效地训练扩散模型。

只要时间表的定义足够好且TT充分大,xTx_T就会服从一个近似各向同性的高斯分布。DDPM正是利用了这一点对目标分布q(x0q(x0))q(x_0\sim q(x_0)) 进行采样。
这是通过反向扩散过程来实现的:

  1. 开始时,从均值为0,方差为单位矩阵的高斯分布N(0,I)\mathcal{N}(0,I)中采样一个样本xTx_T

  2. 然后,反向扩散过程逐步生成噪声减弱的样本xT1,xT2,,x1x_{T-1},x_{T-2},\ldots,x_1,直到生成符合目标分布q(x0)q(x_0)的样本x0x_0。这是通过反复使用公式5 来采样xt1x_{t-1},其中xt1x_{t-1}pθ(xt1xt)p_\theta(x_{t-1}|x_t)中采样,pθp_{\theta}是由参数为 𝜃 的神经网络估计的高斯过渡概率分布。

这个过程可以被形式化地定义为一个马尔可夫链,其过渡由学习得到的高斯分布控制,该高斯分布的均值和方差由参数为 𝜃 的神经网络估计。

总的来说,这个方法利用了扩散模型的性质,通过反向生成噪声逐渐减小的样本,从而生成满足目标分布的样本 𝑥0。这个过程受到神经网络参数 𝜃 的控制,这些参数用于估计高斯过渡分布的参数。

"时间表" 是指在扩散概率密度模型(DDPM)中定义的控制生成过程的时间步骤的规划。这个时间表决定了在生成样本时应用多少次扩散步骤,以便从最终的高斯分布中采样得到目标样本。

具体来说,时间表规定了在反向扩散过程中生成样本的数量,这些样本逐渐从高噪声到低噪声,直到生成符合目标分布的样本。时间表的设计需要考虑到生成样本的质量和效率之间的平衡。如果时间步骤太少,生成的样本可能过于嘈杂,不符合目标分布;如果时间步骤太多,生成样本的过程可能会变得非常耗时。

因此,时间表的设计是一项关键任务,需要根据具体的应用和模型性能来调整,以确保生成的样本质量和生成过程的效率都能够满足需求。

image.png 式中,p(xT) = N(xT;0,I)p(x_T)~=~\mathcal{N}(x_T;0,I)Σθ(xt,t)\Sigma_\theta(x_t,t)设为σt2I\sigma_t^2I,在TT足够大的情况下,这个配置对于生成高质量的样本是一个合理的选择。值得注意的是,估算Σθ(xt,t)\Sigma_\theta(x_t,t)允许用更少的步骤进行采样。
可以考虑几种来参数化(5)中μθ(xt,t)\mu_\theta(x_t,t)的方法。Denoising diffusion probabilistic models 证明了逼近公式(6)中的ϵ\mathbf{\epsilon} image.png 是一个合适的合适的选择,尤其是与一个简单的损失函数结合时(见公式8)。
式(6)是式(3)的另一种表述((ϵN(0,I))(\epsilon\sim\mathcal{N}(0,I)))。最后,通过式7由ϵ\mathbf{\epsilon}的近似值可以计算出μθ(xt,t)\mu_\theta(x_t,t),记作ϵθ(xt,t)\epsilon_\theta(x_t,t)image.png 扩散模型可以通过优化负对数似然的变分下界来训练,但作者在这里采用了Denoising diffusion probabilistic models中提出的简化目标函数: image.png 其中xtx_t由式6计算而得。

许多先前的工作,特别是那些用于建模2D图像的工作,都使用了类似UNet的结构来建模均值μθ(x,t)\mu_\theta(x,t)或噪声ϵθ(x,t)\epsilon_\theta(x,t)这里采用双向transformer来有效捕捉xtx_t的时间特性。

3.2 Downstream tasks

3.2.1 Conditioning on expression label (label control).

根据表达式标签yy执行一个条件生成。利用分类器指导实现无条件DDPM逆过程的条件化。

首先,我们训练一个分类器,在给定一个隐变量xtx_t(和tt)的情况下,预测标签yy
这里使用BiT进行分类,通常的方法是添加一个额外的可学习的分类标记。需要注意的是,这里给出的BiT应该与扩散模型中的其他BiT区分开来,并用于条件化其逆过程。它是通过对xtx_t根据分布进行抽样来实现的:

image.png

其中ϕ\phi 表示分类器的参数。对式9的采样可以近似地从类似于无条件转移算子pθ(xtxt+1)p_{\theta}(x_{t}|x_{t+1})的高斯分布中采样得到(也就是说并不是直接从式9中进行采样的)。但均值也移动了一个与Σθ(xt,t)xtpϕ(yxt)\Sigma_\theta(x_t,t)\nabla_{x_t}p_\phi(y|x_t)成正比的量。
xtx_t的计算是为了最大化式9的对数,

3.2.2 Conditioning on text (text control)

使用BiT指导,但BiT不是根据xtx_ttt估计标签,而是输出维度512的向量(删除了softmax 层)

训练BiT,为了增加其输出和使用CLIP从与x0x_0相关的文本中提取的文本特征之间的余弦相似度。
通过调整标签控制的过程来实现 根据文本c对逆过程进行条件化。

计算xtx_t来最大化:

image.png

3.2.3 Conditioning on partial sequence (expression filling)

任务旨在通过利用已知帧作为条件来预测时间序列的缺失帧。

序列x0x_0FF个帧组成,这些帧要么已知,要么未知。令SKS_KSUS_U分别表示与已知框架和未知框架相关联的指标集合,令x|s\text{x|s}表示仅包含指标属于SSxx的框架的子序列。 ,

3.2.4 Geometry-adaptive generation

在给定特定主体的面部几何形状的情况下,可以进行一种作为表情填充的特殊情况的生成。

也就是说,在已知某个人的面部形状的情况下,可以使用某种方法来生成该人的特定表情,这是一种表情合成的特殊情况。

SKS_K设为{1}或{FF}(FF为序列长度),与x0SK\left.x_{0}\right|\mathcal{S}_{K} 相关联的唯一一个已知帧设为主体的中性脸L。剩余的序列被认为是未知的,模型对其进行表达式填充。

作者观察到,生成的帧可能不会平滑地连接到已知帧,为了协调条件数据xtSK\left.x_{t}\right|\mathcal{S}_{K}和生成数据xtSU\left.x_{t}\right|\mathcal{S}_{U},作者提出了一种更复杂的方法。