第一章 绪 论
1.1 研究背景和意义
近年来,计算机图形技术被应用到数字电影和数字游戏中。其中最典型的计算机图形学(Computer Graphics, CG)技术是人脸表情驱动,人脸表情驱动方法是在初始的无表情的人脸模型上提取一些具有代表性的特征点,然后对这些特征点进行合适的驱动,得到所需要的有表情的目标人脸模型。3D 人脸模型其实就是由一系列 3D 坐标点构成的三维几何模型,而且顶点间具有相互关联的内部连接方式。这种内部连接方式显示了人脸模型的拓扑结构。为了能够更好地完成人脸表情驱动,大多数方法都会从人脸模型上提取出一部分具有代表性的特征点(也可以包括随机选择的无代表性的特征点)作为标记数据。这是典型的半监督学习方法[1,2]。根据提取到的顶点,可以通过多种驱动方法得到所需要的人脸表情模型,例如:融合形变方法[3-5],面部肌肉建模方法[6,7],人脸行为编码系统(FacialActionCoding System, FACS)[8,9],MPEG-4 人脸建模方法[10,11]和散点数据插值方法[12]。这些人脸表情驱动方法都存在着固有的缺陷。例如:融合形变方法[4]要想得到自然的人脸表情模型,就需要根据给定的运动数据把具有多个关键的形变目标人脸模型进行线性融合。这种方法对所选择的关键形变具有很大的依赖性,也会耗费大量的时间,而且不能很好地处理人脸表情驱动过程中的一些细节问题。面部肌肉建模方法[7]会涉及到人脸表情驱动过程中一系列的肌肉变化(可以将这种变化看成是向量的变化),然而人脸模型的肌肉变化很难确定,所以驱动结果的准确性就会存在一定的偏差。在提高传统方法灵活性和适应性的基础上,一些研究学者认为灵活有效的驱动方法是直接对人脸模型上的顶点进行操作,例如散点插值方法[13],不仅可以记录人脸模型的全局变化,而且可以减少人工干预,然而这种方法会很大程度的依赖于人脸模型的特征值和其他向量的欧氏距离矩阵,这就可能产生不自然的人脸表情模型。所以为了得到更好地驱动人脸表情模型,就需要对目前存在的传统方法进行一定的改进。
.........
1.2 国内外研究现状
随着机器学习和模式识别技术的发展,研究人员提出了流形学习[17]的概念,流形学习是一种比较常用的降维方法,可以保证降维过程中数据集的拓扑结构不会发生改变。典型的流形学习方法包括局部线性嵌入方法[18]和局部切空间排列方法[19],这两种方法的计算复杂度比较低。局部线性嵌入方法(Local Linear Embedding, LLE)能够将高维度的数据坐标映射到低维度的空间,降维的同时也能够维持数据内部的拓扑结构的不变性。图 1.1 是采用局部线性嵌入方法实现降维的简单例子,左侧表示高维度的原始数据,右侧表示降维后的低维度空间内的数据,二者具有相同的拓扑结构。LLE算法可以很好地体现数据的局部细节,但不能较好地呈现数据整体的几何特征。局部切空间排列方法(Local Tangent SpaceAlignment, LTSA)可以将高维数据非线性地嵌入到低维空间坐标中,也能够通过低维的嵌入坐标反向重构高维数据。LTSA 首先寻找每个数据的 k 个近邻点构成局部小块,然后通过对每个局部小块进行主成分分析来计算该顶点的切空间坐标,切空间坐标表示的是顶点的局部几何特征;最后根据全局重构误差矩阵将该顶点的局部坐标转换成全局坐标。然而该方法对数据近邻点的选取有很大的依赖性,同时也忽略了数据的标签信息,所以不适用于高曲率和稀疏分布数据集的处理,也不能直接用于分类。与 LLE 方法相比,LTSA 算法虽然不能较好地表现数据集的局部细节,但是具有很好的全局特性。国外研究学者在对传统人脸表情驱动方法进行适当改进后,提出了一种可以直接对顶点进行操作和排列的方法,即拉普拉斯(Laplacian)方法[20,21]。拉普拉斯方法是通过半监督学习方法将初始的人脸模型转换成有表情的人脸模型:从初始的人脸模型中选取一些运动数据作为标记数据,约束条件是初始人脸模型和目标人脸模型在每一顶点处都必须具有相似的拓扑结构。该方法是目前较为常用的一种人脸表情驱动方法。
........
第二章 人脸表情驱动方法
人脸表情驱动方法大致可以分为两种类型:一类是基于几何学的方法,另一类是基于图像的方法。人脸模型中的所有顶点可以组成一个多边形的三维模型,基于几何学的方法是针对这个三维模型进行操作,如散点插值方法[12]和参数化方法[28,29];基于图像的方法是从一张图像到另一张图像的图像转换过程[30],转换后的图像就是所需要的目标人脸表情模型,传统的人脸行为编码系统 FACS[8]和MPEG-4 方法是典型的基于图像的方法。
2.1 基于几何学的方法
根据完善后的人脸模型网格重新计算新的插入函数 G (P ),然后使用新的插入函数 G (P )对初始模型网格上的所有顶点进行操作,将得到的插入结果与之前的模型网格进行拟合,从而完成眼睛和嘴角轮廓上顶点的正确排列,重复上述迭代过程,直到前后两次的目标人脸模型网格很接近。散点插值方法的迭代过程以及拟合结果如图 2.3 所示。其中第一列是初始的人脸表情模型,最后一列是采用散点插值方法得到的目标人脸表情模型,(a)是首次使用插入函数 G (P )对初始模型网格上所有顶点进行计算后得到的较为粗糙的拟合结果;(b)是插入眼睛和嘴角轮廓上散点后得到的比较丰富完善的人脸模型网格;(c)重新计算插入函数G (P )后对所有顶点进行精确拟合,经过多次迭代优化得到的准确的人脸模型网格,该模型跟目标人脸模型很接近。除了散点插值方法外,还可以使用基于关键帧的插值方法[31]完成人脸表情的驱动,该方法是指通过计算顶点从一个位置移动到特定位置的运动轨迹实现人脸表情驱动。然而基于关键帧插值方法中的关键帧需要有完整的模型规范或者至少可以存储人脸模型中顶点两个位置之间的差异[32]。散点插值方法虽然可以很方便快速地完成顶点的操作,但是并不适合复杂的人脸模型,当人脸模型很复杂时,顶点规模很大,很难得到精确的插入函数,同时需要插入的散点数量也会相应的增加,这就需要进行多次运算操作,时间复杂度比较大,而且得到的人脸模型会出现明显的不平滑的曲线。
......
2.2 基于图像的方法
基于表情分类的人脸表情方法只能简单的将人脸表情分类为典型的开心、悲伤、愤怒、厌恶、惊喜和害怕六大类表情,而人脸行为编码系统(FACS)在此基础上还可以处理一些模糊和细微的人脸表情变化[34]。但是 FACS 需要经过大量的训练,会耗费比较多的时间,同时也会存在主观意识上的偏差。Hamm 等人提出的自动化 FACS 方法[8]能够自动跟踪视频中的人脸模型,提取人脸模型的几何形状和纹理特征,并为人脸模型中各个肌肉运动生成相应的配置文件,这些配置文件会被量化为计算视频中单个行为单元和组合行为单元(AUs)的概率[35]。每个肌肉的运动都可能会改变多个 AUs 的值,一个 AUs 值的改变也可能导致多个肌肉的运动,这些 AUs 与肌肉运动之间存在着多对多的复杂关系。人脸模型的几何特征可以通过 Vio-Jones 面部检测器[36]提取。使用 Vio-Jones面部检测器对视频中的每一帧进行人脸检测,并标注人脸模型中眼睛、嘴巴等轮廓的位置。由于头部姿势变化也会影响人脸模型中轮廓的标记位置,所以需要从这些标记中提取与人脸模型表情相关的特征点。这些特征点包括几何特征和纹理特征,这两类特征包含了人脸模型的完整信息。在人脸模型的测试集中提取几何特征时,首先需要通过相似性将人脸模型与创建的标记模板[37]进行排列,然后根据同一个人脸模型在不同表情状态下边缘长度的差异来构造计算一个具有 436维矢量的几何特征。图 2.4 显示了几何特征的提取过程,最左侧的是有表情的目标人脸模型,中间的是初始的无表情的人脸模型,最右侧的是计算后得到的人脸模型的几何特征。此外,人脸模型的纹理特征可以使用 Pantic 等方法[38]计算一个伽柏小波响应来提取。获取到人脸模型的所有特征后,需要使用 Adaboost 分类器对人脸模型中的行为单元 AUs 进行检测和分类。相较于其他分类器,Adaboost 分类器有两大优点:第一,该分类器仅选择所有特征的子集,这对处理高维数据有很大的帮助;第二,Adaboost 分类器也适用于几何特征和纹理特征分布不均匀的情况。通过交叉验证,使用 Adaboost 分类器对 15 个行为单元进行分类。图 2.5 显示了不同人脸表情下 15 个 AUs 的概率分布。数量或者编号不同的 AUs 可以组合产生不同的人脸表情,所以可以通过调节 AUs 的值实现人脸表情的驱动,表2.1 列出了 FACS 中常用的 15 个 AUs 及其含义。FACS 是基于人脸面部的解剖学的人脸表情系统,虽然其中的每个肌肉运动单元和AUs可以单独进行操作,但是对于眼睛和嘴角这些关系比较复杂的区域,很难使用 FACS 中的 AUs 进行精确显示。第三章 超图学习及其应用..............213.1 超图....213.2 普通图的拉普拉斯矩阵.....223.3 超图拉普拉斯学习方法.....243.4 超图学习的应用......273.4.1 归一化的超图切割和超图聚类....273.4.2 基于超图的分类......293.4.3 直推式学习..............313.5 本章小结.......32第四章 超图在人脸表情驱动中的应用.....334.1 引言....334.2 相关背景知识..........334.3 实验设计.......344.4 实验结果分析..........374.5 本章小结.......41第五章 总结与展望....425.1 全文总结.......425.2 展望....43 第四章 超图在人脸表情驱动中的应用 4.1 引言人脸表情驱动是一种比较典型的计算机图形学技术,被越来越多地应用到数字电影和数字游戏中。传统的人脸表情驱动方法[58,59]包括 FACS 和 MPEG-4 等,它们通过调节预先设定的参数来实现人脸表情驱动。然而传统的人脸表情驱动方法也存在着明显的缺陷,比如对于具有高分辨率的人脸模型而言,难以找到一个合适的预设参数。此外,在人脸表情驱动过程中,这些方法也缺少适应性和灵活性。因此为了克服这些缺陷,可以采用拉普拉斯方法直接对人脸模型上的顶点进行驱动。人脸模型是由一系列 3D 坐标点构成的,人脸模型的拓扑结构可以用 3D 坐标点之间的内部连接关系表示。要想得到自然的人脸模型,需要保证驱动过程中人脸模型的拓扑结构不变,因此,人脸表情驱动可以看成是拓扑结构不变性的问题。而拓扑结构不变性问题可以通过流形学习方法[60]解决。流形学习方法通过在高维数据空间中寻找低维的流形结构来计算相应的低维嵌入函数,从而实现降维和数据可视化。超图是指每条边可以连接任意数量顶点的图,它可以解决多个顶点之间的相关性问题。由于初始人脸模型和目标人脸模型具有相同的拓扑结构,所以我们可以使用超图学习的方法对初始的人脸模型进行驱动。传统的基于几何学和基于图像的人脸表情驱动方法虽然能够实现人脸表情驱动,但是这些方法过于依赖特征点之间的欧式距离矩阵,所以无法获得正确的局部拓扑结构。因此本文提出了基于超图的人脸表情驱动方法,该方法直接对人脸模型中的顶点进行驱动,在保证人脸模型拓扑结构不变的同时也可以得到比较自然的人脸表情模型。.......... 总结 近年来,人脸表情驱动受到研究人员的广泛关注,逐渐成为计算机视觉和计算机动画领域的热点问题。人脸表情驱动不仅具有理论研究价值,同时还可以用于数字电影、数字游戏和人机交互领域,提高用户的视觉体验。国内外学者也提出了很多人脸表情驱动方法,传统的人脸表情驱动方法主要分为基于几何学的方法和基于图像的方法。如第二章前两节所述,这些方法都存在缺点,或是对于复杂的人脸模型很难找到合适的散点插入函数,增大了时间复杂度;或是过度依赖于特征值之间的欧式距离矩阵;或是参数化时出现参数冲突、参数不准确的现象;或是无法找到高分辨率人脸模型预定的驱动参数。这些方法都缺乏一定的适应性和灵活性,因此驱动后的人脸模型存在不自然的现象。人脸模型中每个 3D 顶点和其他 3D 顶点之间都有关联,然而普通图只能表示两个顶点之间的相似性,这种相似性的估计对高斯核中的半径参数很敏感,所以处理过程中也会损失一部分有用的信息。如第三章所述,对于需要考虑多个顶点相似性的问题,可以使用超图来解决。超图中的超边包含了多个具有相关性的顶点,同时会根据相关性性为超边分配合适的权重,例如基于星形展开和团体展开超图拉普拉斯学习方法,当不需要考虑超图中超边的权重信息时,可以使用基于 Bolla’s 的超图拉普拉斯学习方法。使用超图对数据集进行分类,聚类和直推式学习等操作时,得到的结果和性能明显优于基于普通图的学习方法。超图的学习方法也是目前较为流行的一种流形学习方法,能够保持模型的拓扑结构不变,从而保证结果的准确性。本文方法是在 SSLPA 方法上改进而来的。SSLPA 方法中假设初始人脸模型拓扑结构的局部小块与目标人脸模型的局部小块有相应的线性关系,然后使用局部线性嵌入和局部切空间排列的流形学习方法计算拉欧拉斯排列矩阵对这些局部小块进行排列得到目标人脸模型的。本文也是通过流形学习方法来实现人脸表情驱动,不同的是本文使用流形学习方法中的超图学习。..........参考文献(略)