浅谈基于深度森林的年龄估计

2018-10-23 06:00沈为过一路赵凯
自然杂志 2018年5期
关键词:决策树人脸神经网络

沈为,过一路,赵凯

①上海大学 通信与信息工程学院,上海 200444;②南开大学 计算机与控制工程学院,天津 300071

人从降生的那一刻起,便带有了年龄这一个属性。年龄伴随着人的一生,是一个人的重要生物特征。从年轻到衰老,年龄的变化常常反映在人的容貌上。人们第一次见面时,总是会在心中估计对方的年龄从而更好地进行交流。但是,有些人长得年轻,而有些人比较显老,因此,一个大概的年龄容易估计而准确的年龄往往难以估计。有许多因素都会影响人的容貌,主要包含内因和外因两部分:内因主要是先天基因的影响,由于每个人的基因都有所不同,导致了不同人的容貌千差万别,而且容貌随年龄的变化也各有不同;而外因主要是后天生活环境的影响,如大量接触紫外线会导致皮肤老化,长期喝酒抽烟也容易衰老,生活不如意、长期高强度的劳动也会使衰老速度加快。各种因素都影响着人的容貌,每个人的容貌随着时间的推移各自以不同的方式在发生着改变,所以将容貌与年龄准确地联系起来是一个比较困难的任务。

那么是否可以借助计算机,也就是人工智能技术,来自动实现年龄估计呢?人工智能一直是许多科学家的梦想,其目标是让计算机具有和人类一样的能够感知和识别周围场景的能力。比如让计算机根据摄像头的输入图像或者视频,识别图像中有哪些物体,这些物体在什么地方,这些物体的类别是什么,有什么属性。这样一些问题对于人类来说很简单,但是对于计算机来说是不容易的。随着人工智能技术的不断发展,尤其是近几年深度学习技术的飞速发展,人工智能正在逐步普及到我们的日常生活中。战胜柯洁和李世石的AlphaGo、综艺节目中的智能机器人、Siri智能语音识别、人脸识别门禁系统,这些产品的背后都是基于深度学习的人工智能技术。

借助人工智能技术实现自动年龄估计,一直是人工智能领域的一个热门问题。在这个问题上,计算机相比人类甚至还具备一些优势。因为人类也无法做到精确地去估计一个陌生人的年龄,而计算机可以通过海量的数据学习,去作出最优的估计。现在,自动年龄估计在我们的生活中也有一些应用。比如,我们用有些智能手机拍摄人脸的时候,人脸旁边会显示出一个年龄。一些网站也推出这样的应用:根据一个人的照片估计他的年龄(图1)。

随着互联网的发展,各种潜在应用的需求日益增加,人们对面部图像的年龄估计越来越感兴趣。它可以应用于许多场景,例如:法医学研究——用于刑事案件的侦察;基于年龄的人机交互系统——根据用户的不同年龄,提供不同的交互界面,更好地为用户服务;基于年龄的访问控制,如禁止未成年人访问色情网站、购买烟酒等。

如前所述,人类的衰老是一个非常复杂、不受人的意志控制的过程,具有多样性和不确定性的特点。这使得容貌与年龄之间的关系难以刻画,而年龄估计需要从单个人脸图像中固定不变的人脸角度、表情来估计年龄,所以自动年龄估计依然是一个很困难的问题。随着深度学习的发展,人脸年龄估计这个问题被越来越广泛地研究,估计效果也在变得越来越好。

接下来,本文将深入浅出地介绍一些自动年龄估计的方法,包括基于传统人工智能技术的方法和基于深度学习技术的方法,其中详细介绍我们发表在2017年人工智能领域顶级国际会议——IEEE计算机视觉与模式识别大会上的研究成果《基于深度森林的年龄估计》[1]。

图1 图像中的人脸年龄估计

1 年龄估计

如果给你一个人的正脸和侧脸图像让你估计他的年龄,肯定是正脸的更容易估计,也更容易估计得准确,因为我们能从正脸得到更多的信息,所以通常年龄估计需要的人脸图像是正脸。在得到人脸图像后,一般需要对人脸图像进行对齐、剪裁:将形状各异的人脸图像进行归一化处理,根据眼睛、鼻子、嘴角等人脸上的一些关键点进行几何变换,让人脸尽可能处于正对的状态,同时剪裁掉多余的背景,去掉一些背景的干扰,让人脸图像更符合估计模型的需要,有利于提取人脸图像的特征。

年龄估计主要可以分为年龄组估计和实际年龄估计两类。实际年龄估计是根据人脸图像估计出人的真实年龄,也就是实足年龄;而年龄组估计是判断人脸图像属于哪一个年龄范围。从人工智能技术角度来说,年龄组估计是一个分类问题,即把年龄或者年龄范围看成一个类别;实际年龄估计是一个回归问题,即把实足年龄看成一个数值。不论是分类还是回归,都需要解决两个问题,一个是提取能够表示人脸图像的特征(通常为一个向量),另一个是找到一个函数,使其能表示人脸图像特征到年龄之间的映射。这样一个函数(通常称为分类器或者回归器)需要通过学习得到。所谓学习,如同我们人类学习过程一样,需要大量的已经标记好年龄的人脸图像,让计算机知道什么样的人脸对应什么样的年龄。所以研究人脸年龄估计需要大量标注好年龄的人脸图片,目前较为常用的是FG-NET数据集[2]和Morph数据集[3]。FG-NET中包括了82个人从小到大共1 002张照片,年龄范围在0岁到69岁之间;Morph是一个较大的人脸年龄数据集,包含大约13 000人的50 000多张照片,年龄范围在16岁到77岁之间。

下面将对于年龄估计中的基于传统人工智能技术的方法与基于深度学习的方法进行一些介绍。

1.1 基于传统人工智能技术的年龄估计方法

基于传统人工智能技术的年龄估计方法着重于如何设计一个对于年龄变化更有代表性、更丰富、更合适的特征。虽然这样设计出的特征有很好的可解释性,但要设计一个好的特征往往比较困难。

早期的年龄估计方法精度较低,大多是年龄组估计,通过人工设计的一些方法来提取特征,然后判断人脸图像属于哪一个年龄范围。Kwon和Lobo[4]在1994年最早对人脸年龄估计进行了研究,那时的研究只是粗略地将年龄分成了小孩、年轻人、老年人三类。虽然工作看似简单,但是这是年龄估计的一个开端。Kwon和Lobo的方法主要受到颅面发展理论的启发。颅面发展理论认为颅骨的变化可以用一个充满液体的球体来模拟,该模型能有效地描述一个人从孩童成长为成年人过程中头部轮廓的变化规律。他们根据面部模板检测出脸部的轮廓并找到眼睛、鼻子、嘴巴、下巴等人脸关键点的位置,然后由这些位置计算一系列几何比例(图2),经过统计设置一个合适的阈值用于区分儿童与成年人。在人发育成熟后骨骼结构一般不会有太大的改变,但皮肤会随着衰老变得松弛而产生皱纹。他们根据之前检测的人脸关键点和皱纹地理图谱得到人脸主要的皱纹区域(图2),然后放大这些区域提取snakelet(蛇形的曲线段),以蛇形曲线段的数量作为皱纹特征用来区分年轻人与老年人。

图2 面部模板与皱纹地理图谱[4]

主动外观模型(active appearance model,AAM)[5]是一个将形状与灰度结合起来用主成分分析建模的统计模型,它通过对人脸形状特征和纹理特征进行统计分析,建立人脸混合模型。Lanitis等人[6]首次将主动外观模型应用于人脸的特征提取中,以AAM模型参数作为人脸特征参数,建立特征参数与年龄之间的函数关系,并在训练集中对函数参数进行训练优化。在对一张新的人脸图像进行年龄估计时,先利用AAM提取人脸特征,将提取到的特征代入优化好的年龄函数中就能计算出人脸图像的年龄。Lanitis等人[7]之后又分别运用最近邻分类器、自组织映射网(SOM)、多层感知器分类器(MLP)对基于主动外观模型提取到的特征进行人脸估计。他们通过实验发现多层感知器分类器的效果比较好。多层感知器是最简单也是最常见的一种神经网络结构,可以说是其他各种神经网络结构的基础,但由于当时计算机的计算能力的限制,神经网络一般只有2~3层,性能并不特别突出。

每个人的脸会以不同的方式成熟、衰老,对于特定的某个人来说,他在不同年龄的脸部图像一般来说和他在其他年龄时期的图像更相近。Xin等人[8]由此提出了一种年龄成长模式子空间模型。该模型把每个人的衰老过程作为一个独立的年龄成长模式,每个人的年龄成长模式由其不同年龄时期的人脸图像按时间顺序排列构成,人脸图像在图像序列中的位置点对应该人的年龄值。也就是说,根据图像的相似度找到图像在年龄成长模式中的位置就能得到相应的年龄(图3)。将不同个体的年龄成长模式按照一定的关系进行映射得到年龄成长模式子空间,年龄成长模式子空间中的每一个点代表了一个年龄成长模式,每一个点中的各个位置又对应了一个年龄。给定一张人脸图像,提取其特征向量,找出它在年龄成长模式子空间中最合适的点、最合适的位置,根据位置就能得到人脸相应的年龄。年龄成长模式子空间将每个人的年龄成长模式作为一个整体来看待,更符合年龄成长的客观特点,在FG-NET数据集上平均绝对误差(mean absolute error,MAE)达到了6.77岁,但这种方法要求每个人有不同年龄上的多幅人脸图像,对数据采集要求较高。

图3 年龄成长模式[8]

人脸随着年龄增长而变化,具有时间特性,所以人脸图像的年龄特征中可能会显示出一些低维的序列模式。Fu等人[9]将流形学习引入到人脸图像的年龄模型中来挖掘这种序列模式。流形学习的观点认为,我们所能观察到的数据实际上是由一个低维流形映射到高维空间上的,高维数据在维度上是有冗余的。流形学习要做的就是发现高维数据分布的内在规律,将高维数据映射回低维,并且使该低维数据保留原高维数据的某些结构特征,能够反映数据的本质。年龄特征的流形学习就是寻找一种特征空间,将人脸原始图像数据通过该特征空间转化为一组具有序列模式的低维年龄特征用于年龄估计中。流形学习极大地减少了年龄特征的维度冗余,能够捕获潜在的脸部年龄成长结构,使模型拟合更加容易。

Guo等人[10]将流形学习与支持向量回归(support vector regression,SVR)结合来进行年龄估计。他们认为年龄估计是一个复杂的非线性回归问题,年龄变化的差异很大,为了提高模型的泛化能力,SVR倾向于找到一条平滑的曲线来拟合年龄特征,这样SVR能拟合出数据集中年龄变化的大致趋势,但对于精确的年龄估计效果较差。为了改进SVR方法的缺陷,Guo等人提出了局部调整鲁棒回归方法(locally adjusted robust regression,LARR)。LARR先用SVR估计出年龄变化的大致趋势,然后在得到的估计值附近的一个年龄范围采用支持向量机(support vector machine,SVM)进行分类,对估计值进行局部调整,以得到更准确的年龄估计值。局部调整鲁棒回归方法在FG-NET数据集上平均绝对误差达到了5.07岁。

Guo等人[11]利用Gabor滤波器提取人脸纹理特征,并提出了一种生物启发式特征(biologically inspired features,BIF)用于年龄估计。BIF的提出受到“HMAX”模型[12]的影响。研究发现从初级视觉皮层到颞下叶皮层视觉信息的复杂度越来越高,而“HMAX”模型模拟了大脑皮层的视觉处理过程。该模型由简单和复杂单元交替组成,模拟了这种复杂度递增的结构。Guo等人根据年龄估计的特点只选用了“HMAX”模型的S1层和C1层,并且调整了波段和方向,然后将得到的特征进行降维用于年龄估计。他们利用生物启发式特征使年龄估计的效果又有了提升,在FG-NET数据集上平均绝对误差达到了4.77岁。

1.2 基于深度学习的年龄估计方法

近年来深度学习席卷了人工智能的各个领域,在使用了深度学习技术后很多任务的性能都得到极大的提升。卷积神经网络(convolutional neural network,CNN)是深度学习技术中一种重要的模型,在计算机视觉领域中得到广泛的应用。基于传统人工智能的方法采用的人工设计的特征虽然解释性较好,但是在对任务目标的表示性上通常有所欠缺。在卷积神经网络中,如图4所示,图像通过卷积层、池化层等操作提取特征,根据具体任务设计相应的损失函数,损失函数产生的残差通过梯度反向传导对网络中的参数进行更新优化。卷积神经网络将原本相对独立的特征提取与任务学习有机地结合在一起,使得产生的特征包含的信息更加丰富,与任务更加契合。一般来说,越深的神经网络可以表示的特征抽象程度越高,对函数的拟合能力也越强,特征的表示性也越好。

近几年,有许多人将深度学习应用于年龄估计中。相比基于传统人工智能的方法,基于深度学习的年龄估计方法取得了极大的性能提升。

图4 神经网络示意图

Levi等人[13]较早地将卷积神经网络用于年龄估计。他们设计了一个较为浅层的网络,采用了3个卷积层和3个全连接层来提取人脸年龄特征,将年龄划分成8个年龄组并用Softmax进行分类。Softmax是一种常用的多类分类器,它产生的是属于各类别的概率,我们从中挑选概率值最大的类别作为结果。

年龄是具有顺序性质的。平时我们估计一个人的年龄时,会将他与我们熟悉且知道年龄的人进行比较,通过大量的比较结果来判断年龄。Niu等人[14]基于这样的思路提出了ORCNN(ordinal regression CNN)网络。他们将年龄标签看作是一个次序,将年龄估计问题转换为待估计年龄是大于某个年龄还是小于某个年龄的问题,这样就能将其分成多个二值分类的子问题来处理。他们对原本标签为年龄的数据集进行处理,形成多个子数据集,第i个子数据集中大于i的图片标签为1,小于等于i的图片标签为0。经过卷积神经网络训练学习,每个二分类器对应一个子数据集,输出的结果判断了年龄是否大于分类器对应的次序,将所有结果结合起来就能输入图像对应的次序,也就能得到年龄了。同时,这多个二分类子问题被视为多个任务,在同一个卷积神经网络中进行处理共享了网络的权重,能够利用任务之间的相关性,让多个任务在训练中相互促进,有利于提高最终的性能。

神经网络是一种数据驱动模型,借助大量的数据训练神经网络往往能对性能产生一些提升。Rothe等人[15]将一种较深的VGG网络[16]运用于年龄估计,同时利用大量的数据去训练,取得了很好的效果。VGG最早是用于图像分类的,它在大规模图像识别竞赛(ILSVRC2014)上取得了第二名的成绩。由于VGG简洁合理的网络结构、优秀的特征提取能力,之后在许多任务上得到了应用。Rothe等人一开始尝试以欧式距离作为最后的回归函数,但是网络难以收敛且结果很不稳定,后来他们使用Softmax进行分类。他们将每一个年龄值作为一个类别,Softmax产生的就是属于各个年龄值的概率,将年龄值与相应的概率相乘再累加起来得到一个估计值,以数学期望的方式很直观地将Softmax分类转化成回归。这种方法在FG-NET数据集上平均绝对误差达到4.63岁,在Morph数据集上平均绝对误差达到3.25岁。

人脸年龄估计可以看作是人脸年龄特征与年龄之间的一个非线性映射问题,但非线性映射往往不容易解决,那能不能将年龄估计问题转化成线性映射问题呢?Agustsson等人[17]提出了一个锚定回归网络(anchored regression networks,ARN)。ARN的设计基于在特征的局部区域内回归问题可以被线性化的假设,将非线性映射进行了分段,划分成一个个局部区域,然后在局部区域内进行线性映射。在特征空间中选取一组锚点,每个锚点都有相应的线性函数,为每一个特征计算与各个锚点的相似度,选择与其相似度最高的锚点对应的线性函数进行年龄计算。如果将特征完全归属于各个锚点,这样硬性的划分在计算上不可导(梯度不存在),就不能与神经网络进行结合。所以,ARN采用一种软性的划分,对特征计算了所有锚点对应的线性函数,再按相似度的高低对这些线性函数的结果进行加权求和作为最后的结果。锚点的选取和线性函数的参数都能通过卷积神经网络进行自动的优化。ARN在Morph数据集上平均绝对误差达到3.00岁。

1.3 基于深度回归森林的年龄估计

在介绍了前面这些深度学习的方法后,下面着重介绍一下基于深度回归森林的年龄估计方法[1]。深度回归森林是卷积神经网络与随机森林的一种有机结合。随机森林是一种基于决策树的集成学习模型[18]。下面我们先简单介绍决策树。

决策树是一种常见的机器学习模型,通过树的结构表示了对象属性与结果之间的一种映射关系。树中每一个内部节点表示一个属性或特征,根据这些特征的取值分配其子节点,最终达到叶节点,叶节点则对应着最后的输出结果。决策树在每个节点处选取信息增益最大的特征作为分裂的判断条件。决策树可以看成是一个“如果—那么”规则的集合,从根节点到叶节点的每一条路径构建了一种规则,内部节点对应着规则的条件,叶节点对应着规则的结论。决策树能够对非线性关系进行较好的映射,它能看作是对输入空间的一系列划分以及在各个划分区域上的输出值。

决策树对应的一系列的规则具有天然的解释性。如图5所示,我们用一棵决策树对一组水果进行分类。首先,我们可以用颜色把这些水果分成绿色、黄色和红色的水果;然后又可以通过形状或者大小对这三种颜色的水果进行进一步的细分。决策树对数据量的需求较小,没有复杂的参数设置。由于这些优点,决策树在许多方面都有应用。但是决策树很容易过拟合,“设置的规则过于复杂”,使得在测试数据中效果很差。决策树的泛化能力也较差,对于没有“见过”的数据,其效果往往不好。为了解决决策树的这些缺陷,人们提出了随机森林算法。就像“三个臭皮匠顶一个诸葛亮”,随机森林算法采用了多棵决策树来进行处理,结合多棵树的结果产生最后的结果。但多棵树的结果就一定比一棵树的好吗?也不一定。如果每棵树产生的结果都是一样的,那最后综合起来的结果和一棵树的并没有差别。要让多棵树的效果优于一棵树,那就需要让每棵树都有其他树不具备的“能力”。因此,随机森林引入了“随机”,每一棵树随机地从数据集中选择学习数据,从特征中随机选择一部分,再取其中最优的特征作为分裂的条件。这样每棵树都与众不同,具有了不同的“能力”,增加了树之间的独立性,整体的效果就提升了。

图5 决策树示意图

在传统的决策树中,决策树的分裂生长是“非左即右”的离散过程,从一个节点往下分裂只能通向它的一个子节点,这个过程是不可导的。为了使决策树能与神经网络结合,Kontschieder等人[19]提出了可导的决策树,将原本“非左即右”的分裂方式改变成了按概率分裂,这样整个过程就变得可导了;而且传统的决策树是在节点处局部最优,采用按概率分裂的模式使得节点之间联系在一起,从而使全局最优成为可能。

如前所述,人脸容貌和年龄之间的关系是很复杂的,之间的映射不是一种均匀映射。比如,婴儿的脸与年龄之间的映射函数和老人的脸与年龄之间的映射函数显然是不同的。既然决策树可以自然地对数据空间进行划分,那么我们利用决策树来对年龄空间进行划分,使得各个子空间中的人脸图像和年龄间的映射为均匀的,这样更容易得到一个有效的回归器。基于这样一个思路,我们提出基于深度回归森林的年龄估计方法。下面我们详细介绍该方法的细节。

我们采用卷积神经网络作为深度回归森林的前端部分来提取特征。图6表示深度回归森林的大致结构,其中红色圆圈表示这个卷积神经网络最后的全连接层(FC layer)输出的特征值。将这个特征值通过一个sigmoid函数归一化到0~1之间,然后随机分配到各个树内部节点(蓝色圆圈)上作为分裂概率。每张人脸图像在每棵树内部节点处以分裂概率被划分到左右,最终落入叶节点(绿色圆圈)中。该人脸图像所经过路径上的各个概率相乘得到路径函数,表示了人脸图像属于这个叶节点的概率。落入到各个叶节点中的人脸图像对应的年龄数据符合不同的高斯分布,表示不同的年龄分布结构。每个叶节点可以看成是一个局部回归器,能够在网络学习过程中优化。叶节点中的高斯分布与其相应的路径函数构成一个混合高斯模型的结构,决策树的输出由各个高斯分布与路径函数加权得到,再对多棵决策树产生的结果进行平均得到最后的年龄估计。卷积神经网络与随机森林结合在一起,形成端到端的网络结构。这样特征提取与树的节点在网络中共同学习优化。深度回归森林有这样几个优点:①深度回归森林构建在深度神经网络上,这样保证了提取的人脸特征具有强大的表示能力;②深度森林的数据划分是基于概率的软划分,而分裂概率又取决于提取的特征,所以深度森林的数据空间划分与数据相关,是一种数据驱动的划分,这样的划分更符合数据的分布特性;③在深度回归森林中,特征提取、数据划分和回归器的学习同时优化,使得整个端到端的模型能达到一个全局最优。深度回归森林在FG-NET数据集上MAE达到3.85岁,在Morph数据集上MAE达到2.91岁,是当前最好的年龄估计结果。

图6 深度回归森林示意图[1]

2 小结

本文从基于传统人工智能技术的方法与基于深度学习的方法两个方面对人脸年龄估计进行了介绍,并着重对第二种方法中的深度回归森林进行了阐述。从基于传统人工智能的方法中对各种特征提取的探究到基于深度学习的方法中对网络结构的设计,人脸年龄估计的性能已经越来越好,但是目前较好的算法平均绝对误差依然还有3岁左右。需要注意的是,当前的人脸年龄估计的研究普遍采用经过对齐的人脸,而在实际应用中往往需要在不受约束的环境下解决年龄估计问题。在这种情况下,背景复杂,人脸的姿势也无法保证是正面,人脸很难对齐。 因此,从人脸图像中精确可靠地估计年龄仍然是一个任重而道远的任务,尤其在实际应用中存在着更多需要克服的难点与挑战。

(2018年3月20日收稿)

猜你喜欢
决策树人脸神经网络
基于递归模糊神经网络的风电平滑控制策略
有特点的人脸
一起学画人脸
神经网络抑制无线通信干扰探究
基于神经网络的中小学生情感分析
三国漫——人脸解锁
决策树和随机森林方法在管理决策中的应用
基于决策树的出租车乘客出行目的识别
基于模糊关联规则和决策树的图像自动标注
基于肺癌CT的决策树模型在肺癌诊断中的应用