本发明涉及一种学习方法,具体涉及一种基于分布独立性的3d人脸解耦表示学习方法。
背景技术:
人脸的形状主要由身份及表情决定,由于人脸的表情丰富并且多变,易造成复杂的非线性形变,因此建立鲁棒的3d人脸模型是一项具有挑战性的任务。而学习身份、表情解耦的3d人脸模型对于人脸属性迁移、人脸重建、识别以及人脸动画等具有重要意义。
目前3d人脸解耦表示学习的方法主要分为两类:3d人脸的线性解耦表示;3d人脸的非线性解耦表示。3d人脸线性解耦表示方法一般基于3d可形变模型(3dmm),其通过主成分分析(pca)分别学习一组3d人脸身份基底和表情基底后,可以优化3dmm参数以拟合任意3d人脸的形状。然而,这类方法局限于其线性性,pca学习的基底表示能力有限,难以表达3d人脸细节以及夸张的表情。
现有的3d人脸非线性解耦表示方法多采用现将3d人脸映射成2d几何图像,再使用深度卷积神经网络实现解耦表示学习,而将3d人脸映射成2d图像的过程势必会造成信息损失。
技术实现要素:
针对现有3d人脸解耦表示方法的不足,本发明的目的在于提供一种基于分布独立性的3d人脸解耦表示学习方法。
为实现上述目的,本发明采用如下的技术方案:
一种基于分布独立性的3d人脸解耦表示学习方法,包括以下步骤:
步骤1:收集3d人脸数据集,将数据集分为训练集和测试集;
步骤2:根据训练目标对数据集全体数据进行预处理及配准;
步骤3:构造用于解耦表示学习的图卷积神经网络模型;
步骤4:使用训练集训练用于解耦表示学习的图卷积神经网络模型;
步骤5:训练完成后,用于解耦表示学习的图卷积神经网络模型将输入的3d人脸解耦为身份和表情两个部分。
本发明进一步的改进在于,步骤2中,配准后,每个3d人脸样本用若干节点和边构成的网格m={v,a}表示;|v|=n代表3d欧氏空间中的n个节点,v∈rn×3;稀疏邻接矩阵a∈{0,1}n×n表示节点之间的连接关系,aij=0表示节点vi和vj之间没有连接,反之,aij=1表示节点vi和vj之间有连接。
本发明进一步的改进在于,步骤3中,用于解耦表示学习的图卷积神经网络模型包括三个部分,分别为编码器、解码器和判别器;编码器输入3d人脸网格,输出对应的身份表示和表情表示,解码器的输入层为编码器的输出层的结果,解码器将身份表示和表情表示重建出3d人脸,判别器的输入层也连接编码器的输出层,用于判别身份表示与表情表示是否分布独立。
本发明进一步的改进在于,根据需求分析,编码器将3d人脸编码为身份表示以及表情表示,编码器结构为6层图卷积神经网络及全连接层组合而成,第一个卷积层为gcn(3,16),输入3通道的3d人脸网格,输出为16通道,第二个卷积层为gcn(16,64),输入16通道,输出64通道,第三、四、五个卷积层均为gcn(64,64),输入与输出都是64通道,第6个卷积层为gcn(64,32),输入64通道,输出32通道,最后一个卷积层同时连接两个各有4个神经元的全连接层fc(4),分别输出3d人脸的身份和表情在特征空间分布的均值μid,μexp和方差σid,σexp,从身份分布中采样得到zid=uid×ε σid作为3d人脸的身份表示,从表情分布采样得到zexp=uexp×ε σexp作为表情表示,ε~n(0,1)。
本发明进一步的改进在于,解码器分为身份解码器did和表情解码器dexp,各包含两个全连接层,第一个全连接层有512个神经元,第二个全连接层有n×3个神经元,n为输出的3d人脸的节点个数,与输入的3d人脸节点个数一致;身份解码器did和表情解码器dexp分别从3d人脸的身份表示、表情表示重建出3d人脸的身份和表情,将身份解码器did和表情解码器dexp重建的结果逐点相加作为最终重建的3d人脸。
本发明进一步的改进在于,判别器由两个全接连层构成,每个全连接层有64个神经元,判别器输入来自编码器编码的3d人脸身份表示和表情表示,输出[0,1]之间的数表明身份表示与表情表示是否分布独立,梯度反向层用于连接编码器和判别器,将来自判别器的损失函数梯度乘以-λ传递给编码器,梯度反向层与判别器组成分布独立模块。
本发明进一步的改进在于,步骤4中,输入3d人脸若干节点和边构成的网格m,经过编码器编码为身份表示zid及表情表示zexp,将身份、表情表示传递给解码器did与dexp,解码器重建的3d人脸与原始输入相似:
lrec=||did(zid) dexp(zexp)-m||1
其中,lrec为重建损失,did为身份解码器,zid为身份表示,dexp为表情解码器,zexp为表情表示;
分别约束表情重建与身份重建的结果:
其中,mid为m的中性表情,mexp为带有与m相同的表情的模板脸,mid和mexp分别表示m的身份和表情,
同时约束3d人脸的身份、表情在特征空间的分布为标准正态分布n(0,1):
判别器损失为交叉熵损失:
其中,zj和
训练过程的总损失为:
其中,α1,α2,β为超参数,ltotal为总损失函数。
与现有技术相比,本发明具有如下有益效果:
(1)与基于3dmm的3d人脸解耦方法相比,本发明采用非线性表示,具有更强的3d人脸表示能力。
(2)与借助2d几何图像的3d人脸解耦方法相比,本发明直接作用于3d人脸网格,避免了将3d映射成2d图像造成的信息损失。
(3)本发明使用公平、合理的评价的标准验证了所提方法的有效性,能够取得更好的3d人脸重建与解耦效果,可用于学习身份、表情解耦的3d人脸表示。
进一步的,使用判别器判别身份、表情分布独立的方式简单、易实现。
附图说明
图1为本发明中基于分布独立的3d人脸解耦表示学习方法的示意图。
图2为本发明中3d人脸身份、表情解耦的效果展示。
具体实施方式
为使本发明实例的技术方案和优点更加清楚,下面将结合本发明的附图,对本发明的技术方案进行详细、完整的描述。
本发明采用图卷积神经网络学习非线性人脸解耦表示,以获得更好的人脸细节表示,并且直接对3d人脸网格进行操作,避免转换为2d图像过程的信息损失。多个数据集的实验测试表明本发明的有效性,不仅能够将身份与表情充分解耦,而且可以从身份、表情的表示精确重建出原始3d人脸。本发明设计了一种简单而有效的基于分布独立学习3d人脸解耦表示的方法,能够在特征空间分解人脸的身份及表情,并且能够从解耦的表示重建出的对应的3d人脸。
本发明具体是通过以下步骤实现的:
步骤1:收集3d人脸数据集,将数据集分为训练集和测试集。
步骤2:根据训练目标对数据集全体数据进行预处理及配准,配准后,每个3d人脸样本用若干节点和边构成的网格m={v,a}表示。|v|=n代表3d欧氏空间中的n个节点,v∈rn×3。稀疏邻接矩阵a∈{0,1}n×n表示节点之间的连接关系,aij=0表示节点vi和vj之间没有连接,反之,aij=1表示节点vi和vj之间有连接。
步骤3:构造用于解耦表示学习的图卷积神经网络模型,如图1所示,该模型包括三个部分,分别为编码器、解码器和判别器。编码器输入3d人脸网格,输出对应的身份表示和表情表示,解码器的输入层为编码器的输出层的结果,解码器将身份表示和表情表示重建出3d人脸,判别器的输入层也连接编码器的输出层,用于判别身份表示与表情表示是否分布独立。图中gcn表示图卷积层,对输入x进行图卷积操作后输出
编码器、解码器、判别器具体如下。
(1)编码器
根据需求分析,编码器将3d人脸编码为身份表示以及表情表示。其结构为6层图卷积神经网络及全连接层组合而成,具体为第一个卷积层为gcn(3,16),输入3通道的3d人脸网格,输出为16通道,第二个卷积层为gcn(16,64),输入16通道,输出64通道,第三、四、五个卷积层均为gcn(64,64),输入与输出都是64通道,第6个卷积层为gcn(64,32),输入64通道,输出32通道,最后一个卷积层同时连接两个各有4个神经元的全连接层fc(4),分别输出3d人脸的身份和表情在特征空间分布的均值μid,μexp和方差σid,σexp,从身份分布中采样得到zid=uid×ε σid作为3d人脸的身份表示,类似的,从表情分布采样得到zexp=uexp×ε σexp作为表情表示,ε~n(0,1)。
(2)解码器
解码器分为身份解码器did和表情解码器dexp,各包含两个全连接层,第一个全连接层有512个神经元,第二个全连接层有n×3个神经元,n为输出的3d人脸的节点个数,与输入的3d人脸节点个数一致。身份、表情解码器分别从3d人脸的身份表示、表情表示重建出3d人脸的身份和表情,将两个解码器重建的结果逐点相加作为最终重建的3d人脸。
(3)判别器
判别器由两个全接连层构成,每个全连接层有64个神经元,判别器输入来自编码器编码的3d人脸身份表示和表情表示,输出[0,1]之间的数表明身份表示与表情表示是否分布独立。梯度反向层(grllayer)用于连接编码器和判别器,将来自判别器的损失函数梯度乘以-λ传递给编码器,以便可以同时优化编码器、解码器与判别器。梯度反向层(grllayer)与判别器组成图1中的分布独立模块(dimodule)。
步骤4:使用训练集训练用于解耦表示学习的图卷积神经网络模型。输入3d人脸若干节点和边构成的网格m,经过编码器编码为身份表示zid及表情表示zexp,将身份、表情表示传递给解码器did与dexp,解码器重建的3d人脸应当与原始输入相似:
lrec=||did(zid) dexp(zexp)-m||1
其中,lrec为重建损失,did为身份解码器,zid为身份表示,dexp为表情解码器,zexp为表情表示;
并分别约束表情重建与身份重建的结果:
其中,mid为m的中性表情,mexp为带有与m相同的表情的模板脸,mid和mexp分别表示m的身份和表情。
同时约束3d人脸的身份、表情在特征空间的分布为标准正态分布n(0,1):
判别器损失为交叉熵损失:
其中,zj和
训练过程的总损失为:
其中,α1,α2,β为超参数,ltotal为总损失函数。
步骤5:训练完成后,该模型可以将输入的3d人脸解耦为身份和表情两个部分。
本发明在测试集定性、定量评价模型的解耦效果以及重建效果,图2展示了部分3d人脸身份、表情解耦效果。
1.一种基于分布独立性的3d人脸解耦表示学习方法,其特征在于,包括以下步骤:
步骤1:收集3d人脸数据集,将数据集分为训练集和测试集;
步骤2:根据训练目标对数据集全体数据进行预处理及配准;
步骤3:构造用于解耦表示学习的图卷积神经网络模型;
步骤4:使用训练集训练用于解耦表示学习的图卷积神经网络模型;
步骤5:训练完成后,用于解耦表示学习的图卷积神经网络模型将输入的3d人脸解耦为身份和表情两个部分。
2.根据权利要求1所述的一种基于分布独立性的3d人脸解耦表示学习方法,其特征在于,步骤2中,配准后,每个3d人脸样本用若干节点和边构成的网格m={v,a}表示;|v|=n代表3d欧氏空间中的n个节点,v∈rn×3;稀疏邻接矩阵a∈{0,1}n×n表示节点之间的连接关系,aij=0表示节点vi和vj之间没有连接,反之,aij=1表示节点vi和vj之间有连接。
3.根据权利要求1所述的一种基于分布独立性的3d人脸解耦表示学习方法,其特征在于,步骤3中,用于解耦表示学习的图卷积神经网络模型包括三个部分,分别为编码器、解码器和判别器;编码器输入3d人脸网格,输出对应的身份表示和表情表示,解码器的输入层为编码器的输出层的结果,解码器将身份表示和表情表示重建出3d人脸,判别器的输入层也连接编码器的输出层,用于判别身份表示与表情表示是否分布独立。
4.根据权利要求3所述的一种基于分布独立性的3d人脸解耦表示学习方法,其特征在于,根据需求分析,编码器将3d人脸编码为身份表示以及表情表示,编码器结构为6层图卷积神经网络及全连接层组合而成,第一个卷积层为gcn(3,16),输入3通道的3d人脸网格,输出为16通道,第二个卷积层为gcn(16,64),输入16通道,输出64通道,第三、四、五个卷积层均为gcn(64,64),输入与输出都是64通道,第6个卷积层为gcn(64,32),输入64通道,输出32通道,最后一个卷积层同时连接两个各有4个神经元的全连接层fc(4),分别输出3d人脸的身份和表情在特征空间分布的均值μid,μexp和方差σid,σexp,从身份分布中采样得到zid=uid×ε σid作为3d人脸的身份表示,从表情分布采样得到zexp=uexp×ε σexp作为表情表示,ε~n(0,1)。
5.根据权利要求3所述的一种基于分布独立性的3d人脸解耦表示学习方法,其特征在于,解码器分为身份解码器did和表情解码器dexp,各包含两个全连接层,第一个全连接层有512个神经元,第二个全连接层有n×3个神经元,n为输出的3d人脸的节点个数,与输入的3d人脸节点个数一致;身份解码器did和表情解码器dexp分别从3d人脸的身份表示、表情表示重建出3d人脸的身份和表情,将身份解码器did和表情解码器dexp重建的结果逐点相加作为最终重建的3d人脸。
6.根据权利要求3所述的一种基于分布独立性的3d人脸解耦表示学习方法,其特征在于,判别器由两个全接连层构成,每个全连接层有64个神经元,判别器输入来自编码器编码的3d人脸身份表示和表情表示,输出[0,1]之间的数表明身份表示与表情表示是否分布独立,梯度反向层用于连接编码器和判别器,将来自判别器的损失函数梯度乘以-λ传递给编码器,梯度反向层与判别器组成分布独立模块。
7.根据权利要求1所述的一种基于分布独立性的3d人脸解耦表示学习方法,其特征在于,步骤4中,输入3d人脸若干节点和边构成的网格m,经过编码器编码为身份表示zid及表情表示zexp,将身份、表情表示传递给解码器did与dexp,解码器重建的3d人脸与原始输入相似:
lrec=||did(zid) dexp(zexp)-m||1
其中,lrec为重建损失,did为身份解码器,zid为身份表示,dexp为表情解码器,zexp为表情表示;
分别约束表情重建与身份重建的结果:
其中,mid为m的中性表情,mexp为带有与m相同的表情的模板脸,mid和mexp分别表示m的身份和表情,
同时约束3d人脸的身份、表情在特征空间的分布为标准正态分布n(0,1):
判别器损失为交叉熵损失:
其中,zj和
训练过程的总损失为:
其中,α1,α2,β为超参数,ltotal为总损失函数。
技术总结