导语:本文提出一种用于深度三维形变模型中特征聚合的可学习模块。当前深度三维形变模型中特征聚合依赖于网格抽取等方法,存在聚合方式无法学习,与模型优化目标不一致等问题,从而限制了模型的表达能力。我们提出了使用基于注意力机制的模块实现对特征聚合方式的学习。在人脸,人体和人手数据集上的实验结果表明,基于注意力机制的特征聚合能有效提升模型的表达能力。
作者 | 陈志祥
编辑 | 刘冰一
在计算机视觉和计算机图形学中的很多关于一类物体的表征使用到三维形变模型(3DMM)。在这里三维变形模型建模的物体通常为人脸,人体和人手,同时也包括像马和猫这样的动物。
三维变形模型广泛服务用包括形状动画,姿态估计,三维重建,身份识别,虚拟现实和增强现实等人机交互中。由于三维数据与二维图像数据存在拓扑形态上的不同,传统的卷积神经网络难以在三维数据上发挥作用。目前广泛应用的模型主要是基于主成分分析的模型,并考虑到物体的关节活动进行变形,仍然存在形状细节难以刻画的问题。
本文提出了一种用于深度三维形变模型的特征聚合方法,通过注意力机制进行对不同层特征之间的关系进行建模,旨在提高深度三维形变模型的能力,以实现对物体形状细节的更好描述。
论文题目:Learning Feature Aggregation for Deep 3D Morphable Models
论文地址:https://arxiv.org/abs/2105.02173
代码:https://github.com/zxchen110/Deep3DMM
在以下视频中,论文一作陈志祥对研究进行了分享,分享提纲如下:
1、三维形变模型简介
2、深度三维形变模型中的特征聚合问题
3、基于注意力机制的特征聚合
4、实验验证
三维形变模型将原始的三维形状编码成隐向量,并能从该隐向量中恢复出物体的形状信息。在本文中,我们所关注的三维形状是指经过配准,与该类物体模板形状对齐的三维网格数据。
传统的三维形变模型中人脸主要使用基于主成分分析的线性模型,人体和人手分别有SMPL和MANO这类线性模型。与这类线性模型相比,非线性模型,特别是基于深度学习的模型,具备进行对例如皱纹在内的细节变形进行刻画的能力,在通用性和紧凑性上会优于线性模型。
使用传统的线性模型时,我们需要对每类物体的三维变形模型进行设计,而使用深度三维变形模型时,可以将设计好的网络结构模型在不同类的物体数据上进行训练即可得到对应物体的三维形变模型。
在将深度学习应用到三维网格数据的尝试中,现有方法分别提出了各向同性和各向异性的卷积操作以适配网格数据的拓扑结构。这些卷积操作与特征聚合操作一通构成了三维变形模型的自编码器。这些特征聚合操作用于完成编码器中的特征下采样和解码器中的特征上采样。虽然现有的模型在三维网格数据上已经取得了不俗的表现,但是这些特征聚合操作仍然是由单独的预处理阶段决定的,并且这个预处理阶段是针对表面误差近似优化进行的网格抽取,而非对三维形变模型的重建目标进行优化的。这一过程限制了形变网络对形状细节的表达能力。
在本文中,我们提出一种基于注意力机制的特征聚合策略,用于在处理具有固定拓扑结构的三维网格数据时构建层次化表征。不同于预先计算的映射矩阵,我们提出使用可学习的注意力模块从查询(query)和键(key)计算得到映射矩阵。Key和query可以看做是对应层次的特征的紧凑表示。通过该模块,我们可以实现对聚合权重和感受野的同时学习。并且通过灵活配置key和query,该模块可以适配于上采样和下采样。
由于三维形变模型只需要使用映射矩阵,在推理阶段无需使用该注意力模块,只需保留学习到的映射矩阵,因此几乎不会增加模型的参数量。我们在重构任务上测试了本文中的方法,在人脸,人体和人手数据集上的定性和定量实验表明我们的方法能够大幅度提升现有模型的表达能力,无论使用的卷积操作是各向同性的还是各向异性的。
深度三维形变模型包含两部分:编码器和解码器。这两者的网络结构通常互为镜像。编码器将输入的三维网格转化成一个紧致的表征。通过一个从细到粗的层次化网络结构,该表征能够捕获全局和局部的形状信息。当给定紧致表征时,解码器通过从粗到细的方式生成三维网格模型以恢复形状信息。在这个层次化结构的每一层中,解码器使用了串联的卷积和上采样操作,类似的在编码器中使用了卷积和下采样操作。如前所属,卷积操作可以是各向同性或者各向异性的卷积操作,包括上采样和下采样在内的特征聚合则通常是将映射矩阵和特征进行相乘来完成。
在形式定义上,三维网格可以表示成一个顶点和边的集合,
,其中
表示那个顶点,
表示顶点之间的稀疏连接。设该三维形变模型的编码器和解码器的层数为L。在以下的分析中,我们使用解码器为例对我们的方法进行阐述。对于编码器我们可以使用类似的分析。使用
表示解码器在
层的输出特征,其中和分别代表顶点的数量和特征的维度。
则可以用于表示第层的输入特征。
在现有方法中,特征聚合操作可以形式化为
(1)
其中
表示用于上采样和下采样的不同聚合权重。虽然基于上述公式的现有的模型表现出了极富潜力的性能,其中的映射矩阵
是在网格模板上机型网格抽取得到的,并且在模型的学习过程中保持不变。与此相反,我们希望能够在训练中将该映射矩阵和网络模型中的卷积操作一同进行学习。一个直接的方法是将该映射矩阵进行参数化,对每个矩阵元素进行学习。然而,这种方法会遇到过参数问题,特别是针对高分辨率的网格数据,从而使得网络模型的性能下降,甚至出现无法从训练数据中进行有效学习的情形。针对此,我们提出了使用注意力机制的特征聚合操作。
特别地,我们考虑从特征
到
的特征聚合过程以阐述我们提出的注意力模块。注意力机制可以看做是给定键值对后对于每个输入的查询值给出对应的输出。在特征聚合中,
就是输出,
就是给定的值。那么聚合权重
就可以通过作用于查询向量
与和值
对应的键
上的函数得到,具体可以表示成
通过这种方法,我们将映射矩阵的构造拆分成了查询向量query和键key的构造,以及相应函数的设计。
3.1 查询向量和键向量
由于查询向量和键向量是和顶点特征一一对应的,我们也就期望它们的值和顶点的序号或者特征相关联。考虑到现有方法中的映射矩阵是和顶点特征无关,且已经能够得到不错的效果。在此,我们将查询向量和键向量建模成顶点序号而非顶点特征的函数。换言之,我们旨在学习类感知的映射矩阵而非实例感知的映射矩阵。另一方面,在我们所考虑的三维网格数据中,所有的数据都是经过配准的,也就是说每个顶点是有固定的对应语义含义的。因此,这些查询向量和键向量就可以建模成无需任何输入的独立变量。使用这样的参数化方式带来的一个好处是在推理阶段,我们可以直接使用学习到的映射矩阵,而无需借助注意力模块。此外,这种参数化方式也规避了将查询向量与顶点特征相关联带来的查询向量和输出之间的鸡和蛋的问题。对于查询向量和键向量的维度大小而言,向量数量的多少取决于对应的顶点的数量,每个向量的特征维度则是当做需要探索的超参。
3.2 注意力函数
在给定查询向量和键向量后,注意力函数则用于计算相邻两层的每两个顶点之间的匹配程度。一般而言,我们可以使用任意的距离度量函数来进行上述计算。在本文中,我们使用余弦距离函数来计算
和
之间的相似性,
直接将上式计算得到的相似性分数用做聚合权重会得到一个稠密的映射矩阵。换言之,一层中的任意一个顶点的特征都会受到前一层中的所有顶点的特征的影响。然而,这样的聚合方式并非是层次化学习中所希望的方式。
为了能够同时捕获全局和局部信息,不同顶点特征
的感受野应该具有区分性。我们希望后一层中的每个顶点特征
对应的上一层中的关联的顶点集合各不相同。我们将这个先验知识通过一个可选的掩膜操作来实现。该掩膜操作通过使用top-k选择将上述顶点集合的大小限制为一个固定的值k。该集合中的每个元素的值从训练形状中自动学习。具体而言,我们针对权重分数
定义了一个二值的掩膜
掩膜后得到的权重分数可以看作是原始的权重分数与该二值掩膜相乘的结果
然后将权重分数归一化可以得到
3.3 映射矩阵
使用上述公式替代现有的预先计算的权重是个可行的方案。与此同时,我们注意到现有方法中采用预先计算的映射矩阵也取得了不俗的性能。为此,我们提出进一步将上式中的映射矩阵和现有方法中预先计算的映射矩阵进行融合以获得双方的优势。这个融合可以看做是带有一个固定头和一个可学习头的多头注意力模型。具体而言,我们在融合中使用加权组合
其中是个可学习的权重,
是现有方法中预先计算的上采样或者下采样系数。特别地,当的值固定为0时,上式就和现有方法中使用预先计算的上(下)采样系数相同。本文中最终使用的权重系数按照上式计算得到。
我们在三个人脸,人体和人手的数据集上进行重构任务的实验以验证本文方法的有效性。
4.1 数据集
COMA数据集由Ranjan等人在2018年提出,包含了12个人的12个不同表情序列,总共包括20K+已经配准过的人脸形状,每个三维网格形状包含5023个顶点。
DFAUST数据集是一个包含40K+人体形状的数据集,其中每个人体的三维网格包含6890个顶点。整个数据集有超过100段运动序列,覆盖了10个不同身份。
SYNHAND数据集由Malik等人于2018年提出,总共包含了五百万个合成的人手形状,我们随机选了了100K用于实验,其中90K用于训练,剩下的用于测试。
4.2 基线方法
本文分别在各向同性卷积和各向异性卷积方法上对所提方法进行验证,其对应的基线方法分别为CoMA和Neural3DMM。所使用的的网络结构和训练配置参照CoMA方法。
4.3 定量结果
我们使用每顶点欧式距离误差来度量重构误差。下图给出了在3个数据集上的结果。从图中可以看出本文所提的特征聚合方法能够在所有测试的情形下取得性能的提升,不论采用各向同性还是各向异性的卷积操作,不论测试的隐向量的长度为8/16/32/64,不论测试的人脸,人体还是人手。在人脸和人体数据集上,对于越短的隐向量,性能提升效果越好。普遍而言,在各向异性卷积上的提升效果不如在各向同性卷积上的提升效果明显,这可能是由于本文所提方法和各向同性卷积结合后在本质上相当于进行了各向异性卷积。
4.4 定性结果
上图给出了使用各向同性卷积下的重建结果和误差的可视化,其中测试的隐向量长度为8.从图中可以看出,本文提出的特征聚合方法可以在很大程度上减小重建误差,实现对细节的更好刻画。
4.5 映射矩阵的可视化
上图给出了将下采样(上采样)映射矩阵的列向量(行向量)使用t-SNE投影到一维流型上后值大小。从图中比较可以看出本文所提方法得到的映射矩阵和现有方法的结果存在很大不同。本文所提方法学习到的映射矩阵在相邻位置的值更接近。
上图给出了在COMA数据集上几个示意点的感受野对比情况。从图中可以看出,本文所提方法的感受野相比于现有方法更大,随着网络的不断训练,学习到的感受野也在发生变化。并且我们注意到本文方法出现了一些非邻域的感受野,说明本文方法可能捕获了非局部的顶点之间的关系。
4.6 和其他聚合方法的比较
从表中我们可以看出,直接将映射矩阵参数化的方法的误差最大。采用Diffpool的方法,由于仍然是对整个映射矩阵进行直接建模,相比于直接将映射矩阵参数化的方法而言,其映射矩阵是通过网络生成的,其性能依然不理想。基于邻域的三种特征聚合方法表现出了相似的性能,其中权重可学习的方法(variant weight)的性能略有优势。本文所提的方法相比于这些方法有大幅度的性能提升,这得益于对全局顶点关系的建模和权重的可学习。
4.7 不同卷积核设置下的结果
我们还在实验中探索了不同卷积核配置下的性能结果变化。表中的simple表示使用的滤波器数量较少,具体对于编码器为(3,16,16,16,32),对于解码器为(32,32,16,16,16,3)。Wider表示使用的滤波器数量较多,具体对于编码器为(3,16,32,64,128),对于解码器为(128,64,32,32,16,3)。从表中数据可以看出,在COMA数据集上,当隐向量的长度为8时,在使用较多滤波器的配置下,本文所提的特征聚合方法依然可以实现性能的有效提升。
4.8 特征聚合的消融实验
为了验证本文所提的特征聚合方法在编码器和解码器中对模型性能的影响,我们进行了消融实验。实验结果表明,在解码器中引入可学习的特征聚合模块对模型的性能远大于在编码器中引入可学习的特征聚合模块。这可能是由于本文所关注的任务是重构任务,决定了解码器对实验结果的影响更大更直接。
4.9 隐空间运算
内插。给定两个形状的隐空间表示和,对其进行线性内插可得到一个新的隐空间表示
其中
。对内插得到的隐空间表示进行解码即可得到内插的形状。上图中给出了一些示例,从中可以看出,本文方法的效果更佳。
外插。与内插类似,外插也是使用公式
来计算外插得到的隐空间表示,不过的值域为
。上图中给出了为与具备同样身份信息的中性形状,可以看出本文方法生成的形状更加自然。
变形转移。我们还可以使用三维形变模型通过在隐空间进行算数操作,实现不同身份之间的形变转移。上图中给出了人脸和人体上的结果,可以看出使用可学习的特征聚合有利于形变的捕获。
在本文中,我们提出了用于深度三维形变模型的特征聚合方法。具体而言,我们引入了作为可训练参数的查询向量和键向量,并采用了注意力机制来计算用于上采样和下采样的映射矩阵。本文方法可以实现对感受野和权重的同时学习。在三种物体的实验表明本文提出的特征聚合方法能够提升深度三维形变模型的表达能力。