基于深度学习与有向无环图SVM的局部调整年龄估计

2023-02-17 01:54
计算机应用与软件 2023年1期
关键词:邻域人脸调整

赵 卫 刘 渊

1(无锡商业职业学院 江苏 无锡 214153) 2(江南大学 江苏 无锡 214122)

0 引 言

年龄估计,旨在判别输入人脸图像的年龄值或者年龄组别。虽然基于人脸图像的年龄自动估计是多媒体应用、公安刑侦和人机交互等许多实际应用中涉及的一项重要技术,但从人脸图像中估计年龄仍然是一个具有挑战性的问题。由于不同的人衰老的方式不同,衰老的过程不仅取决于人的基因,还取决于许多外部因素,如身体状况、生活方式、居住地点和天气状况等。此外由于使用化妆品和配饰的程度不同,男性和女性的年龄也可能不同。如何在降低个体差异的负面影响的同时,提取出一般的判别性老化特征仍然是一个有待解决的问题。

在基于经典机器学习的年龄估计方法中,通常包含特征提取与年龄判别两步骤,其中特征提取通常利用主动外观模型[1]、局部二值模式[2]、流形学习[3]或者仿生特征[4]等浅层表征方法,此后再采用K近邻法[4]、二次回归函数[5]或者支持向量回归[6]等机器学习方法进行最终的年龄判别。

近些年在研究年龄估计时,常常采用深度学习的方法。文献[6]利用CNN网络的第2到5层特征图作为特征向量,然后对其进行非线性降维处理,最终利用支持向量分类、支持向量回归、偏最小二乘法与典型性相关分析进行年龄预测。文献[7]采用一个类AlexNet的CNN模型进行年龄估计。文献[8]首先将人脸图像分为不同的大小,再在其中划出多个局部对齐块,最终将其输入进4层的网络,此种方法通过增加样本容量来增强CNN的泛化能力。文献[9]通过将年龄标签看作实数,使得输出层含有一个神经元,因此本质上进行的是年龄回归。

在上述基于传统机器学习或者深度学习的方法中通常只采用一种特定的生成式模型、判别式模型、分类CNN或者回归CNN进行年龄估计,这样做的弊端为样本容量、迭代次数等超参数设置一旦不合理或者参数没有完全收敛,便毫无容错率可言,以至于对最终的年龄估计精度产生决定性影响。

针对此种不足之处且为了进一步提高年龄估计的精度,将经典的机器学习方法与深度学习方法进行结合,提出一种由粗到细,全局到局部的局部调整年龄估计方法(Local Adjusted Age Estimation,LAAE)。如图1所示,在训练阶段,首先将经过VGGFace2数据集预训练的SE-ResNet-50网络进行微调,待到收敛时提取出全连接层,将其首尾相连形成的向量作为表征并训练出多个One-Versus-One SVM;在测试阶段,先将待估计人脸图像送入SE-ResNet-50以得到一个较为粗略的年龄估计值,然后设定具体邻域并将训练而成的SVM组合为一个有向无环图SVM以进行精准的年龄估计。

图1 年龄估计的总体流程

1 SE-ResNet-50

1.1 残差网络

在VGG中,其卷积神经网络达到了19层,在GoogleNet中,网络的层数史无前例地达到了22层,但是在深度学习中,网络层数增多一般会伴随着几个问题:计算资源的消耗,模型容易过拟合且容易产生梯度消失与梯度爆炸问题。计算资源的不足对企业或者科研经费充足的高校来说,只需要通过GPU集群就可以解决;过拟合也可通过大量采集有效样本数据并配合Dropout等正则化方法来解决;而梯度方面的问题通过批量归一化也可以很好地解决。貌似只要一直增加神经网络的层数,就可以获得收益,但是实验数据却不能有效地支撑此观点[10],即随着网络层数的增加,网络发生了退化的现象。随着神经网络层数的增多,训练误差逐渐下降,然后趋于饱和。再增加网络深度的话,训练误差反而会增大。当网络退化时,浅层网络能够达到比深层网络更好的训练效果,这时如果将低层的特征传到高层,那么效果应该至少不比浅层的网络效果差。例如,如果一个VGG100网络在第99层使用的是和VGG16第15层一模一样的表征,那么VGG100的性能应该会和VGG16的性能相同。因此可以在VGG-100的99层和15层之间添加一条恒等映射来达到此效果。从信息论的角度讲,由于数据处理不等式的存在,在前向传输的过程中,随着层数的加深,特征图谱包含的原图像信息会逐层减少,而恒等映射的加入,保证了网络后一层一定比前一层包含更多的图像信息。基于这种快捷映射的思想,便有了残差神经网络。

残差网络是在原先的神经网络中加入一系列残差模块而形成的,如图2所示。

图2 残差模块

1.2 挤压激励模块

在卷积神经网络的卷积层当中,一系列卷积核的集合可看作是输入通道上的邻域空间连接模式,它将空间维度上的信息和通道信息融合在局部感受野内[11]。卷积神经网络通过将一系列卷积层,非线性激活函数与池化操作进行堆叠以此产生鲁棒的表征,从而捕获层次模式并获得理论上的全局感受野。有很多研究工作从空间维度信息层面来提高网络的性能,如Inception结构中嵌入了多尺度信息,依次聚合多种感受野上的特征;Inside-Outside中考虑了空间的邻域信息。挤压-激励模块(Squeeze-and-Excitation Module,SE)通过考虑特征通道中的关系来提升网络性能,其方法是自动学习每个特征通道的重要程度,然后依照此重要程度去提升有用的特征同时抑制对当前任务用处不大的特征。

以下分别对挤压激励模块中的操作进行解释:

(1) 卷积(Convolution)操作。同一般卷积神经网络中的卷积操作类似,挤压激励模块中的卷积层让每个可学习的滤波器都在输入数据的高度与宽度上进行滑动并求内积,最终生成激活图谱(Feature Map)并送入下一层。

(2) 挤压(Squeeze)操作。我们顺着空间维度来进行特征压缩,使得输出的维度和输入的特征通道数相匹配。此外将每个二维的特征通道变成一个标量,此标量在某种程度上具有全局的感受野,它表征着在特征通道上响应的全局分布,而且使得靠近输入的层也可以获得全局感受野。

(3) 激励(Excitation)操作。它是一个类似于循环神经网络中门的机制,通过学习用来显式地建模特征通道间的相关性参数来为每个特征通道生成对应权重。

(4) 重赋值(Scale)操作。将激励输出的权重视为经过特征选择后的每个特征通道的重要性,然后逐通道相乘到先前的特征上,完成在通道维度上的对原始特征的重标定(Feature Recalibration)。

挤压-激励模块可集成到诸如Inception或者残差网络中,本课题便使用的是SE-ResNet-50作为主干网络,如图3所示。

图3 SE-ResNet示意图

首先经过一个残差模块,然后使用全局平均池化操作进行“挤压”,紧接着以两个全连接层去显式建模通道间的相关性:首先将特征维度降为原来的1/r(r一般取16),然后经过再通过一个全连接操作升回到原维度。这种“瓶颈”模块具有更强非线性且极大减少了参数量与运算量。然后通过Sigmoid将特征权重归一化为0到1间的值,最后通过Scale操作来对各通道特征进行加权。

2 基于局部调整的年龄估计

2.1 局部调整

LAAE的思想是将CNN估计到的年龄值在局部邻域内尽可能靠近真实年龄。具体的示意图可参见图4。

图4 局部调整示意图

假设对于输入数据y,对应的CNN输出为f(y),即图4中的空心小圆。也许f(y)离图中实心小圆的实际年龄值L仍有一段距离,局部调整的年龄估计的思想便是在邻域范围2d内左右滑动(即为增大或者减小)估计值f(y),使其更接近于实际年龄值L,以公式可表示为L∈[f(y)-d,f(y)+d]。

基于上述想法,局部调整年龄估计可分为两步来进行:① 利用CNN网络对所有训练数据进行年龄分类。此步骤可看作是粗估计或全局估计。② 以第1步的结果作为中心在小范围内的邻域中进行局部调整。对应地,此步骤可看作是细调或者局部估计。

此时问题的关键在于如何在一定范围内验证不同的年龄值,以便进行局部调整。我们的目标是通过全局回归将最初估计的年龄值尽可能向真实年龄靠拢。我们将每个年龄标签看作是一个类,并采用分类的方法对不同的年龄值进行局部调整或者验证。因为只有少量的年龄标签用于每个局部调整,因此回归方法不能正常工作。对于基于分类方法的局部调整,在分类器方法有许多可选项,但是这里采用线性SVM用于局部调整。主要的原因是SVM对于训练样本较少的情况仍具有较好的鲁棒性。这在之前的小样本案例学习中已经被论证过,如人脸识别[12-13]、图像检索[14]、音频分类与检索[15]和人脸表情识别[16]。

2.2 线性SVM

给定分属两类的训练向量(y1,z1),(y2,z2),…,(yn,zn),其中yi∈Rd,zi∈{-1,1},线性SVM可以学习一个最优分类超平面wy+b=0以最大化两类之间的间隔(margin)[17-18]。SVM的学习本质为求下列拉格朗日泛函的鞍点:

(1)

式中:αi为拉格朗日乘子。它的优化目标可以被转化为如下的对偶问题:

(2)

此时最优超平面可表示为对偶解:

(3)

而b的值可被代入原方程wy+b=0中进行求解。

当测试时,对于任意数据点y,分类结果可由下列函数给出:

f(y)=sign(w·y+b)

(4)

若训练数据不可分,则可引入松弛变量ξi,关于这部分的详细介绍可参考文献[17]。

2.3 有向无环图SVM

经典SVM的设计之初是为了解决二分类问题,当它被拓展到多分类问题时有下列几种方法:① one-versus-one:为每两类学习一个分类器。② one-versus-many:为每一类与剩余的其他类训练出多个SVM。③ many-versus-many:为所有类同时训练SVM。最后的两种方法显然不适合于本算法,因为在进行局部调整时只有少量的部分样本包含在内。若采用后面两种方法则SVM将会在每次局部调整时动态地重新训练,这毫无疑问地会增加训练复杂度。第一种方法在本次任务中是可行的,原因在于它不需要在线地训练SVM,即所有成对SVM分类器都会被离线训练。

图5 有向无环图SVM

由图5可见,有向无环图的顶层只含有一个节点,即根节点,第二层有2个节点,以此类推,第i层含有i个节点,直到最底层即将n类分类完毕。若输入一个样本,有向无环图由根节点开始,计算每个节点的符号函数sign(w·y+b)决策值(见式(4)),若为-1则进入左子节点,若为1则转入右子节点。依次类推,在最后一层叶节点的输出就可以表示样本的类别。从这点来看,有向无环图实际相当于一个表格运算:初始时表格中包含所有类,此后每次的节点运算中对表格中的首尾两类进行比较,排除样本中最不可能属于的类别,并删除表中的一个类,到最后表格中剩下的唯一一类即为样本所属的类别。

通常来讲,对于一个n分类问题,在测试阶段只需要进行n-1次比较。这里,成对比较的次数被限制到了m-1次,因为在局部调整时只有m类涉及到了(m

2.4 邻域的设计

理论上设计局部调整时的邻域U(f(y),d)={x|f(y)-d

为了对年龄估计进行局部调整与满足有向无环图SVM的特殊拓扑结构,本文尝试了2的幂次方的不同的局部搜索范围:2(d=1),4(d=2),8(d=4),16(d=8)。理论上其实可以将搜索范围延展到数据集的样本容量大小一样,但是这样一来便不满足“局部调整”的策略,因此本文最多将搜索范围设置到16。

3 实验与结果分析

3.1 所用数据集

为了验证本方法的有效性与普适性,选择由黄种人组成的AFAD数据集[9]和白人与黑人组成的MORPH数据集[20]进行消融实验与对比实验。

(1) AFAD数据集:AFAD包括来自社交网路上的164 432幅图像,年龄范围由15岁到40岁。它不但是目前最大的用以年龄估计的开源数据集,而且对于研究无约束环境下的人脸年龄来说也相当有意义。由于官方没有提供对AFAD中训练集与测试集的划分标准,因此为了能与其他的年龄方法进行对照,随机地将AFAD划分为80%的训练集与20%的测试集。AFAD数据集中的一些示例如图6所示。

图6 AFAD示例图像

(2) MORPH数据集:MORPH包括13 015个人的55 608幅人脸图像,且年龄范围由16到77岁。MORPH数据集中的一些示例如图7所示。其划分标准与AFAD类似。

图7 MORPH示例图像

3.2 预处理、实验设置与评价指标

在进行年龄估计之前,首先对原始的人脸图像做以下预处理:采用级联VJ检测器[21]进行人脸检测,其次采用主动外观模型[1]对人脸基准点进行定位,最后将人脸图像缩放为224×224进行实验。本次实验在Caffe[22]的GPU开源框架下进行,且所用SE-ResNet-50模型来源于文献[23]。在此权重基础上,本文在MORPH与AFAD上进行微调。实验的超参数设置如下:基础学习率为0.001 5,且以指数形式衰减;权重衰减系数为0.000 5;采用随机梯度下降,且mini-batch的大小为64;动量值为默认的0.9。损失层LossLayer采用的是交叉熵损失函数,即SoftmaxLossLayer。

3.3 消融实验

为了验证LAAE的有效性,本文指定了不同的领域范围,并演示了不同局部搜索范围对于结果的影响。作为对比,还加入了只用SE-ResNet和只用SVM(此时的特征提取采用的是图像三通道像素与线性降维-主成分分析)进行的年龄估计。消融实验的结果如表1所示。

表1 不同邻域设置下的MAE对比

由表1可以得出以下结论:

(1) 在MORPH中表现得总比AFAD要好。究其原因,在于MORPH中的图像是官方进行的拍摄,因此光照条件,摄像机性能等相当良好;而AFAD中的图像是从人人网中进行爬取而获得的,因此在分辨率上参差不齐,这便造成了性能上的差异。

(2) 深度学习的方法在两个数据集中的表现均胜过经典的机器学习方法,这也进一步论证了深度学习的优越性。

(3) 局部调整的效果总是要胜过单纯的机器学习方法或者单纯的深度学习方法,但是不同的邻域所造就的性能有所差异,且两个数据集上表现最好的邻域设置是不一样的。究其原因,在于MORPH与AFAD样本容量的差异,即MORPH的类别数较多,因此它的搜索范围越大表现得越好。但这一点在AFAD中却截然相反,因为它的最好表现是在d=4中,在此之后邻域越大效果反而越差。这里只将邻域取到了d=8,除了上文所说的邻域越大不满足局部调整的先验条件之外,还有一个重要原因,即若往大取到了d=16,则局部调整的范围就扩大到了32,而AFAD中的类别为40-15+1=36,这样一来便相当于年龄的二次估计。

3.4 对比实验

为了进一步验证方法的有效性,将所得结果与其他的基于深度学习的年龄估计方法进行对比。其结果如表2、图8和图9所示。

表2 与其他方法的MAE对比

图8 局部调整年龄估计与其他方法的对比

图9 局部调整年龄估计与其他方法的对比

表2关于对Deeply learned feature,Multi-scale与MR-CNN的描述可参见引言。OH-ranker与OR-CNN通过在年龄估计中引入标签的排序信息来进行一系列的二分类,不同之处在于前者采用SVM而后者采用CNN模型。CNN-ELM采用CNN进行特征提取,而后采用极限学习机(Extreme Learning Machine,ELM)进行年龄分类。由表中也可以看出深度学习的方法优于机器学习方法并且年龄标签问题看起来也是年龄估计方法中不得不考虑的问题。此外,我们的方法在MORPH与AFAD中分别达到了3.04与3.17的平均绝对误差,很明显超出了之前方法的性能。相比于对比算法中的最好方法OR-CNN,本文方法在平均情况下的性能提升了大约6%。

在与其他方法的累计分数指标对比上,分别选取了在MORPH上表现最好的LAAE(d=8)和在AFAD上表现最好的LAAE(d=4),具体对比实验结果可参见图8与图9。由图10可以看出,当可允许的误差年龄范围大于4之后,本文方法领先于其他对比方法。在图9中,本文方法更是一直优于OR-CNN。

此外,为了更加直观地反映局部调整年龄估计的有效性,还比较了每个年龄段中只使用深度学习方法和LAAE的准确率,结果如图10与图11所示。

图11 在AFAD中各个年龄段的准确率对比

由图10与图11可看出,本文方法在绝大多数年龄段均取得了领先。这一结果说明了在局部进行年龄估计调整的有效性。

4 结 语

本文提出一种局部调整的年龄估计方法LAAE。具体来讲,首先利用深度学习进行年龄全局的粗估计,然后通过设定邻域而在有向无环图SVM上再进行局部的细估计。通过实验结果可以看出LAAE的性能好于纯深度学习与纯机器学习方法,与其他方法的对比也能进一步说明LAAE的有效性。在其他的模式识别问题上,LAAE也是理论上可行的。此外,未来的研究方向可以是以数据驱动邻域搜索范围而不是人为机械地进行设置。

猜你喜欢
邻域人脸调整
基于混合变邻域的自动化滴灌轮灌分组算法
夏季午睡越睡越困该如何调整
有特点的人脸
一起学画人脸
工位大调整
稀疏图平方图的染色数上界
三国漫——人脸解锁
基于邻域竞赛的多目标优化算法
沪指快速回落 调整中可增持白马
关于-型邻域空间