基于RNN的人脸老化方法研究*

2018-05-05 07:29刘振宇
通信技术 2018年4期
关键词:人脸矫正老化

刘振宇,崔 智

(沈阳工业大学 信息科学与工程学院,辽宁 沈阳 110870)

0 引 言

人脸的形状和纹理等特征会随着时间逐渐改变,老化是不可逆转的必然趋势[1-2]。人脸老化与生活习惯、环境等因素有关。因此,老化过程具有多样性和不确定性,已经成为生物识别和机器视觉的一个研究热点[3-4]。人脸老化方法可以分为基于实证知识的方法和基于统计学习的方法。基于实证知识的方法是通过研究随年龄增长而变化的颅骨、皮肤来模拟人脸老化的状态。Wu等人建立一个3层面部结构(皮下肌肉层、脂肪组织层、皮肤层)动态模拟老化过程[5];吴雪峰利用主动形状模型(Active Shape Models)算法对儿童人脸进行特征提取,通过改变几何特征和纹理特征进行老化[6]。人脸特征点位置体现了人脸的几何特征,是人脸姿态矫正的基础。彭明超等人提出基于形状参数回归的特征点标定方法,可直接应用于手机等设备[7];T.F.Cootes提出主动表观模型(Active Appearance Models,AAM)分别建立形状模型、纹理模型,然后将形状模型与纹理模型组合成表观模型,是一种具有一定鲁棒性的可以快速收敛的人脸特征点标定的方法[8];遗传算法在全局特征点搜索中能够快速得到较好的效果[9];Torre等人利用Supervised Descent Method(SDM)进行人脸特征点标定,取得了非常高的准确率[10]。

基于统计学习的方法是通过大规模的跨年龄人脸数据库来研究人脸几何、纹理随年龄的变化情况。Liu等人提出通过老化增亮分布函数来描述年龄对人脸的影响,进而实现人脸老化,还在此基础上提出了一种分析框架将人脸重构至其他任何年龄段的方法[11];胡伟平通过使用基于特征线对的图像变形算法和基于小波分解和重构的方法,完成了人脸老化图像的合成[12]。Ramanathan等人提出人脸形状变化模型来预测肌肉的物理变化特征和几何变化方向,提出了一种基于图像梯度的纹理变换函数,使人脸老化效果更真实[13]。Burt等人提出了经典的基于原型的人脸老化合成方法;在人脸画像合成、分割等工作中,也提到基于图模型的人脸老化合成方法[14-15]。Liang等人提出了多层的由粗到细的人脸表示方法和老化模拟方法。在“粗”层上建立一个全局统计的外观模型,然后学习一组耦合字典,将当前人脸老化至目标年龄,在“细”层上模拟皱纹,使老化效果更逼真[16]。Wang等人利用光流法对人脸图像进行表情归一化,然后利用递归神经网络(Recurrent Neural Network,RNN)进行老化学习[17]。

人脸老化是平稳渐进的过程。所以,本文利用RNN的变体门循环单元(Gated Recurrent Unit,GRU)对人脸进行预测。RNN以时间步长为神经网络深度,可以保留早期信息,以达到人脸平滑老化的目的[18]。虽然人们从20世纪40年代就开始对神经网络进行了研究,但是神经网络的应用是在最近15年才兴起的。2015年,RNN得以应用,且多被应用于语言模型[19-20]。传统算法是将人脸局部提取老化模型。但是,老化是个平缓的过程,更适合用平滑变化状态的方法进行人脸老化,而通过GRU进行人脸老化则可以更真实展现人脸缓慢老化的过程。图1为本文人脸老化的主要步骤。

图1 人脸老化流程

1 特征点标定

尺度不变特征转换(SIFT)具有旋转、尺度、平移等不变性,充分利用了图像的局部信息,鲁棒性更好。所以,本文提取人脸的SIFT特征,通过监督下降法(SDM)实现人脸特征点的自动标定。SDM是有监督机器学习,通过一系列训练对函数进行逼近的方法。假设I是一张图片,大小为m×m,L(x)表示该图片的特征点,H表示提取非线性特征的函数,则H(L(x))表示特征点处的SIFT特征。目标函数为:

其中,Jf(x0)和H(x0)表示雅克比(Jacobian)矩阵和黑塞(Hessian)矩阵。对Δx求导,可知:

所以,利用式(4)第一次更新Δx,得到:

其中,R0表示梯度的下降方向。于是,由式(5)、式(6)可知:

本文利用式(7)通过迭代进行图片训练,得到通用的梯度下降方向R和偏置项b。而R和b通过式(8)求得:

在特征空间中,真实特征点与估计特征点之间的误差距离可以通过线性回归使其逐渐趋近最小。每一次当前估计的特征点都是由式(8)而得。经过多次迭代后,估计的特征点位置与真实特征点位置愈来愈接近。

测试过程中,首先提取当前估计特征点处的SIFT特征φi,其次利用训练得到的{R,b}计算最后进行特征点位置更新xi+1=xi+Δxi。通过多次迭代,最终得到人脸特征点位置。

2 基于仿射变换的人脸姿态矫正

人脸姿态不同很可能造成人脸年龄信息不足,为老化建模造成困难。因此,要进行头部姿态矫正。本文以两眼连线方向为x轴方向,垂直人眼连线方向为y轴方向,而后应用右手定则确定z轴,从而建立人脸坐标系。图2为人脸正切面主视图及人脸坐标系。

图2 人脸正切面主视图

2.1 人脸滚转角矫正

滚转角为人脸绕z轴转动角度,表现为人脸倾斜的程度。在标定人脸特征点后,可以通过特征点坐标得知左右眼的大概位置,以此判断人脸是否倾斜。人脸向右倾斜角度θ为正,则向左倾斜角度为负。本文利用仿射变换中旋转变化特性对其进行矫正,则人脸滚转角矫正公式为:

式中,(x, y)是原图像中的像素坐标,(x',y')是矫正后对应点像素坐标,θ为仿射变换角度。

2.2 人脸偏航角矫正

人脸偏航角为人脸绕y轴旋转角度。观察可以发现,人脸产生偏航角后,一边脸较窄,一边脸较宽,是不对称的。所以,矫正时将窄的一边脸扩张,宽的一边脸压缩达到左右脸对称。在侧脸矫正过程中,将人脸视为一个圆柱体的切面,俯视图及坐标系如图3所示。

图3 人脸俯视示意图

图2 中人脸图像以鼻尖所在中线将人脸划分为左右两部分,然后根据左右眼角坐标到鼻尖所在中线坐标的距离判断人脸旋转的角度。图3中,人脸看作一钝角等腰三角形,两腰视为两颊,则人脸旋转可视为鼻尖绕圆心旋转,角度为θ,两颊夹角为2α。水平旋转比例的定义如下:

水平旋转比例(H)=左眼眼角到人脸中线的距离/右眼眼角到人脸中线的距离 (10)

本文认为,人脸偏航角θ是关于水平旋转比例(H)的线性回归函数。求取偏航角得回归方程为:

本文偏航角矫正采用的扩张和压缩公式如下:

①扩张公式:

其中,nose是鼻尖位置;δ是调节因子,用来调节压缩或者扩张的程度,以达到更好的效果。

2.3 人脸俯仰角矫正

人脸俯仰角为人脸绕x轴转动角度。本文将鼻尖的位置作为上半脸与下半脸的分界线。若是低头,则将上半脸压缩,下半脸扩张;反之,将上半脸扩张,下半脸压缩。

垂直旋转比例的定义如下:

垂直旋转比例(V)=两眼中点到鼻尖距离/鼻尖到两嘴角中点距离 (14)

本文中认为,人脸俯仰角θ是关于垂直旋转比例(V)的线性回归函数。于是,求得角度回归方程为:

θ=-50.822 4V+63.082 0 (15)

本文采用的人脸俯仰角矫正的扩张和压缩公式如下。

①扩张公式:

3 基于GRU的人脸老化建模

GRU是RNN的一种变体。RNN神经网络是与时间序列相关可用来进行预测的神经网络。但是,现在RNN被广泛用于语言模型建模,在图像处理方面应用较少。人脸老化是平缓的过程,RNN可以真实平缓地显示老化结果。RNN神经网络如图4所示。

图4 RNN网络结构

图4 为RNN循环神经网络,由一个输入层X、隐藏层S、输出层O组成。每层的输出不仅受当前输入xt影响,也受前一层的隐藏层输出的影响。

其中,f是隐藏层激活函数,g是输出层激活函数,St是时刻t隐藏状态,Ot是时刻t的输出,U为输入层到隐藏层的权重,W是隐藏层到隐藏层的权重,V是隐藏层到输出层的权重。假设xt是m维向量,St是n维向量,则U为n×m的矩阵。

然而,训练RNN网络存在梯度消失和梯度爆炸问题。从式(18)、式(19)可知,t时刻输出对t-1时刻的隐藏层求偏导,得:

由链式求导公式可知,t时刻输出对0时刻的隐藏层求偏导,得:

由式(21)可知,当W小于0时,网络深度越深,梯度越小,直至消失;反之,W大于1,梯度随深度加深而变大,直至梯度爆炸。而GRU增加了重置门和更新门,使早期信息与当前信息用加法计算,避免了梯度消失和梯度爆炸。所以,本文选用GRU进行人脸老化建模。

本文在人脸归一化后,采用GRU对表示纹理信息的系数构建人脸老化图像。首先,将人脸按列向量排列成矩阵M=[I1,I2,…,In],Ii表示人脸。然后,利用奇异值分解将人脸矩阵M分解为M=USVT,U的每一列都是MMT的特征向量,保留矩阵U的前K个特征向量,表示为H=U(:,1:k),则H为特征脸空间。H的每一列都表示一个特征脸,但是因为神经网络训练具有随机性,大量相似样本会增加训练时间和降低预测结果,所以这些列向量彼此正交。将I向H做投影重构人脸图像I'=H(HTI)。本文重新定义前面提到的矩阵表示两个相邻年龄组的特征脸,且是单位向量。Λk=(λ1,λ2,…,λn)T是每个特征脸的特征值。损失函数为:

式中 x0、x0'是真实的老化人脸和预测的老化人脸在特征脸空间的系数。基于Kemelmacher-Shlizerman的研究可知[21],该系数的前4个值相对应的是人脸的亮度,其余值表示纹理特征。为了保证亮度与年轻人脸图片的一致,直接从年轻人脸图片转移前4个系数至老化人脸图像。GRU单元框架图,如图5所示。

图5 两层GRU框架

由图5可以看出,本文中GRU单元分为2层,有效改善了传统RNN固定输入输出长度带来的局限性。底层GRU为编码器,将输入的xt序列经过双曲正切(tanh)层进行编码成固定长度。而顶层GRU为解码器,可以将底层输入的高维向量解码成老化后人脸。每个GRU都有2个门和隐藏状态。这2个门分别是更新门和重置门。

更新门zt可以控制从上一时间的人脸状态转移到当前人脸状态的信息量大小。当更新门不被激活时,该网络具有长时记忆,之前的信息将一直被保留。当zt为0时,表示上一时间人脸信息完全舍弃;zt值为1时,则表示上一时间人脸信息完全转移至当前人脸状态。

更新门zt的表达式如下:

重置门rt决定是否需要忽略前一个人脸信息。若重置门被激活,该网络具有短时记忆,将忽略之前的人脸信息。

重置门rt表达式如下:

重置门和更新门都由非线性Sigmoid函数控制信息的输出,值在[0,1]内。通过tanh层将ct归一化到-1和1之间,构造新的人脸信息,表达式如下:

ht为底层GRU在t时刻之前人脸信息与tanh层构造的新的人脸信息ct融合的新的人脸:

底层输出传入顶层GRU与上一GRU单元h't-1作为输入。过程与底层GRU相同:

其中,xk+1是真实老化人脸状态,Wt是t时刻人脸的权重。

4 实验结果与分析

本文采用matlab进行实验,通过SDM算法标定68个特征点。使用lfpw人脸数据库,将其分为训练集和测试集。训练集包含811张人脸图片,并标有68个特征点。测试集包含224张人脸图片,也标有68个特征点,包括17个人脸轮廓特征点、10个眉毛特征点、9个鼻子特征点、12个眼睛特征点和20个嘴巴特征点。

本算法训练前先对训练集的第一张图片预处理。首先,根据测试图片真实特征点的坐标取包含特征点的最小矩形,然后长和宽各放大2倍,以保证人脸全部保留,再将图片放缩至400×400大小后变换特征点坐标。其次,将其他训练图片进行同样的预处理,使得每张图片大小统一后,特征点都相应变化。最后,求得训练图片平均特征点,并计算平均特征点处的SIFT特征。

预处理后对图片进行训练。首先载入训练图片及其特征点坐标。本文将平均特征点坐标作为初始化特征点坐标。其次,利用opencv的人脸检测器及人眼、嘴的检测器检测图片的人脸、人眼及嘴的位置,并分别计算人脸、人眼、嘴的中心。再次,将初始化人脸、人眼、嘴的特征点坐标的中心移到检测的位置,使初始化人脸、人眼、嘴的特征点坐标均在各个检测框内。这样使初始化特征点的位置更贴近真实特征点位置,可以更快标定特征点位置。最后,根据公式求解{R,b}。本文训练时间为1 273.694 s,而传统SDM算法的训练时间为1 843.182 s。图6为原始SDM与本文的SDM的5次迭代下的误差距离曲线图,横坐标是迭代次数,纵坐标是归一化误差距离。可以看出,原始SDM在第3次迭代时收敛,改进后在第2次迭代收敛,可见本文SDM的收敛速度提升到了30.8%,误差距离可以达到0.030 1。

图6 归一化误差与迭代次数的关系

进行测试。首先按第一步对图片进行预处理,然后利用训练得到的{R,b}预测特征点的位置,结果如图7所示。

标定特征点后,本文通过标定特征点得到人眼、鼻尖、嘴的特征点坐标,并计算人眼和嘴的中心。通过中心坐标与鼻尖关系,判断对人脸进行何种姿态矫正。本文对人脸滚转角(左倾、右倾)、人脸偏航角(水平向右旋转、水平向左旋转)、人脸俯仰角(抬头、低头)的6中姿态进行矫正,结果如图8所示。

图8 人脸姿态矫正

本文使用CACD以及Morph年龄人脸库进行人脸老化。CACD包含2 000个人,共163 446张图像,年龄范围16~62岁。Morph人脸库是目前最大的年龄人脸数据库,包含13 000个人,共55 134张图像,共涵盖了不同年龄段的人脸图像。然后,删除面部模糊的图像,最终在16 992张图片进行上实验。将图片进行分类,男性有7 764张图像,女性有9 228张图像。将图片按年龄进行分组:0~5、6~10、……、66~80岁,共14组。图像进行预处理后,计算相邻年龄组的特征脸,然后计算特征脸的特征值,将特征值降序排列,保留90%的特征,输入到图5的两层GRU神经网络中进行老化建模,从而得到老化人脸,如图9所示。

图9 人脸老化框图

图9 中向RNN老化模型中输入人脸图像,可以获得相邻年龄组之间过渡的老化图像,实现平缓老化人脸。

本文使用基于深度卷积神经网络的人脸识别[1]来评价人脸老化效果。将FG-NET中真实老化的人脸作为检索数据库。该人脸库包含82个人的1 002张图片。本文从FG-NET中选取50对正的人脸对(来自同一个人)与负的人脸对(来自不同的人)。每对中年龄小的作为输入人脸图像,然后通过本文提出的方法,将该人脸图像老化至人脸对中另一张人脸图像的年龄。老化获得的人脸图像与人脸对中年龄大的人脸图像组成一对新的人脸对。如图10中第1列与第2列为原始人脸对(Orignal Paris),第2列与第3列为本文基于RNN的老化人脸对(RNN Paris)。然后,对原始人脸对、本文老化合成人脸对进行人脸识别验证。

本文采用基于深度卷积神经网络的人脸识别,分别对原始人脸对和基于RNN老化人脸对进行验证。错误接受率与错误拒绝率是人脸识别的重要指标。图11中基于RNN的老化人脸方法的错误率比原始人脸对的错误率低,等错率由15.13%降低至8.35%,证明了基于RNN的人脸老化方法效果良好。

图10 原始人脸对与RNN老化人脸对

图11 人脸验证的错误接受率与错误拒绝率曲线

5 结 语

人脸老化在跨年龄的人脸识别、失踪人口找寻及日常娱乐等方面发挥着重要作用。本文采用的人脸老化方法包括3个步骤,分别是人脸特征点提取、人脸姿态矫正和人脸老化建模。最后,采用深度卷积神经网络通过跨年龄人脸识别评估老化人脸效果,结果等错率由15.13%降低至8.35%,证明了基于RNN的人脸老化方法效果良好。

参考文献:

[1] 舒祥波.人脸面部属性估计与老化合成研究[D].南京:南京理工大学,2016.SHU Xiang-bo.Study on Face Facial Attributes Estimation and Aging Synthesis[D].Nanjing:Nanjing University of Science and Technology,2016.

[2] Fu Y,Guo G,Huang T S.Age Synthesis and Estimation Via Faces:a Survey[J].IEEE Transactions on Pattern Analysis & Machine Intelligence,2010,32(11):1955.

[3] 邹北骥,郭伟,梁毅雄.非线性人脸老化模拟[J].计算机工程与科学,2010,32(03):45-48.ZOU Beixi,GUO Wei,LIANG Yixiong.Nonlinear Face Aging Simulation[J].Computer Engineering &Science,2010,32(03):45-48.

[4] Yan H.Cost-sensitive Ordinal Regression for Fully Automatic Facial Beauty Assessment[J].Neurocomputi ng,2014,129(05):334-342.

[5] Wu Y,Kalra P,Moccozet L,et al.Simulating Wrinkles and Skin Aging[J].Visual Computer,1999,15(04):183-198.

[6] 吴学锋.儿童人脸老化模拟系统的设计与实现[D].广州:中山大学,2015.WU Xuefeng.Design and Implementation of a Child Face Aging Simulation System[D].Guangzhou:Sun Yat-sen University,2015.

[7] 彭明超,包姣,叶茂等.基于形状参数回归的人脸对齐算法[J].模式识别与人工智能,2016,29(01):63-71.PENG Ming-chao,BAO Jun,YE Mao,et al.Face Alignment Algorithm Based on Shape Parameter Regression[J].Pattern Recognition and Artificial Intelligence,2016,29(01):63-71.

[8] Cootes T F,Edwards G J,Taylor C J.Active Appearance Models[C].European Conference on Computer Vision,1998:484-498.

[9] 朱陈柔玲,张达敏,张慕雪等.遗传算法在图像处理中的应用[J].通信技术,2017,50(07):1401-1406.ZHUCHENRouling,ZHANG Damin,ZHANG Muxue,et al.Application of Genetic Algorithm in Image Processing[J].Communications Technolo gy,2017,50(07):1401-1406.

[10] Xiong X,Torre F D L.Supervised Descent Method and Its Applications to Face Alignment[C].Computer Vision and Pattern Recognition IEEE,2013:532-539.

[11] Liu J,Zheng N,Chen B,et al.Estimating Aging Pattern by Aging Increment Distribution for Re-rendering of Facial Age Effects[C].International Conference on Intelligent Computing,Springer Berlin Heidelberg,2007:782-791.

[12] 胡伟平.基于回归分析的人脸老化模型构建[J].广西科技大学学报,2016,27(03):39-44.HU Weiping.Construction of Face Aging Model Based on Regression Analysis[J].Journal of Guangxi University of Science and Technology,2016,27(03):39-44.

[13] Ramanathan N,Chellappa R.Modeling Shape and Textural Variations in Aging Faces[C].IEEE International Conference on Automatic Face & Gesture Recognition,2008:1-8..

[14] Burt D M,Perrett D I.Perception of Age in Adult Caucasian Male Faces:Computer Graphic Manipulation of Shape and Colour Information[J].Proc Biol Sci,1995,259(1355):137-143.

[15] Suo J,Chen X,Shan S,et al.A Concatenational Graph Evolution Aging Model[J].IEEE Transactions on Pattern Analysis & Machine Intelligen ce,2012,34(11):2083-2096.

[16] Liang Y,Xu Y,Liu L,et al.A Multi-layer Model for Face Aging Simulation[M].Transaction edutainment VI,2011:182-192.

[17] Wang W,Cui Z,Yan Y,et al.Recurrent Face Aging[C].IEEE Conference on Computer Vision and Pattern Recognition,IEEE Computer Society,2016:2378-2386.

[18] Schuster M,Paliwal K K.Bidirectional Recurrent Neural Networks[M].IEEE Press,1997.

[19] Mikolov T,Karafiát M,Burget L,et al.Recurrent Neural Network Based Language Model[C].Interspeech 2010,Conference of the International Speech Communication Association,2010:1045-1048.

[20] 焦李成,杨淑媛,刘芳等.神经网络七十年:回顾与展望[J].计算机学报,2016,39(08):1697-1716.JIAO Licheng,YANG Shuyuan,LIU Fang,et al.Seventy Years of Neural Network: Retrospect and Prospect[J].Chinese Journal of Computers,2016,39(08):1697-1716.

[21] Kemelmacher-Shlizerman I,Seitz S M.Collection Flow[C].Computer Vision and Pattern Recognition IEE E,2012:1792-1799.

猜你喜欢
人脸矫正老化
有特点的人脸
一起学画人脸
攻心治本开展社区矫正
三国漫——人脸解锁
节能技术在开关电源老化测试中的应用
“体态矫正”到底是什么?
杜绝初春老化肌
矫正牙齿,现在开始也不迟
改良横切法内眦赘皮矫正联合重睑术
长得象人脸的十种动物