摘" 要:文章报告了面部特征点检测的现状,分析了AdaBoost算法的分类性能和AAM模型的建模特性。对面部特征点检测进行了研究,通过训练多个弱分类器并组合它们,提高了面部特征点检测的准确性和鲁棒性。利用AdaBoost强分类器识别的结果作为AAM模型训练的输入,提取面部特征点候选区域,降低了AAM模型重构次数,进一步降低了计算复杂度,尤其是在面部姿态和表情变化较大的情况下,提高了匹配的准确率。同时,AAM模型可以为AdaBoost提供一个更为精细的面部特征点定位,从而提高整体的面部特征点检测性能。
关键词:特征点检测;Adaboost;AAM模型
中图分类号:TP391.4" 文献标识码:A" 文章编号:2096-4706(2024)18-0172-04
Research on Facial Feature Point Detection Technology Based on AdaBoost and AAM
JIA Xiaoqi
(Department of Computer and Information Engineering, Shanxi Institute of Energy, Jinzhong" 030600, China)
Abstract: This paper reports the current status of facial feature point detection and analyzes the classification performance of the AdaBoost algorithm and the modeling characteristics of the AAM model. It researches the facial feature point detection, and improves the accuracy and robustness by training multiple weak classifiers and combining them. It uses the results identified by the AdaBoost strong classifier as inputs for training the AAM model, extracts candidate regions for facial feature points, reduces the reconstruction frequency of the AAM model and further lowers the computational complexity, particularly in cases where there are significant variations in facial pose and expression, thereby improving the matching accuracy. Additionally, the AAM model can provide a more precise localization of facial feature points for AdaBoost, thus enhancing the overall performance of facial feature point detection.
Keywords: feature point detection; Adaboost; AAM model
0" 引" 言
面部检测是计算机视觉领域的一个经典问题。近年来,面部检测和跟踪的应用范围不断扩大,不仅限于面部识别的应用范围:在视频检索、视频监控、面部表情分析、性别、种族、年龄歧视、数字娱乐等方面也有广泛应用。传统的面部特征点检测方法通常基于手工设计的特征和算法[1]。当前研究者们常用深度学习模型进行特征点检测。然而,深度学习模型由于其从数据中学习的特性,通常需要大量的标注数据进行学习,且计算复杂度高,难以在实际应用中快速部署。
基于活动外观模型(Active Appearance Model, AAM)[2]和AdaBoost算法[3]为基础,本文提出了两种算法相结合的方法来改进算法。在检测到人脸和特征点的同时,提高了检测侧面人脸的效率。首先使用矩形特征(Haar特征)[4]和AdaBoost算法对视频帧中的人脸进行检测,将检测到的人脸区域提交给AAM,然后AAM在该区域内检测特征,经过多次迭代选择最优解以增加权重。这样可以提高面部识别和特征点检测的鲁棒性及效率。
1" 方法研究
1.1" AdaBoost算法
该算法首先迭代训练数据样本,获取多个弱分类器,然后通过调整弱分类器权重,最终构成强分类器[5]。首先输入图像的Haar特征,并利用这些特征进行训练。训练时采用了一种加权方法,这种加权方法可以保证每个样本在训练过程中的重要性,并且在训练完成后,能够得到一些能够进行目标检测的弱分类器。将这些弱分类器的输出进行加权组合,可以得到一个更加强大的分类器,它可以根据目标检测任务的特点,对图像中的目标进行更加精确和快速的检测[6]。
算法的具体流程如下:
1)样本数据集。准备训练数据库。
2)初始化。训练开始时,平均分配每个样本的权重。
3)Haar特征。获取样本图像Haar特征并处理。
4)初始训练。利用样本的当前权重和Haar特征进行学习,训练的结果就是生成多个弱分类器。
5)评估并更新权重。对弱分类器在学习训练中的表现进行评估,重点评估分类的准确度,然后调整每个弱分类器所对应的权重,原则是提高准确度较高的弱分类器权重,降低准确度较低的弱分类器的权重;不断迭代更新,使的模型得到进一步优化。值得注意的是,被提高权重的弱分类器在后续的训练中会得到更强烈的依赖。
6)计算若分类器的阈值。根据更新后的权重,计算每个弱分类器的阈值。
7)构建并评估强分类器。重复步骤4)~5),达到最大迭代次数或准确率达到预设值后,将所有训练好的弱分类器组合起来,形成一个强分类器。根据评估结果,调整AdaBoost算法的参数,如迭代次数、弱分类器的数量等。
8)强分类器的应用。最终就可以通过强分类器来进行精确的识别任务。
1.2" AAM模型
AAM(Active Appearance Model)模型是用于人脸建模和分析的计算机视觉技术,是一种参数化表观模型,它结合了形状模型和纹理模型[7]。可以对人脸进行建模,并实现人脸特征的定位、跟踪和重建。它可以用于人脸识别、表情分析、姿态估计等领域。AAM模型使用训练集中的人脸图像来构建一个人脸特征空间,在该空间中,每个人脸都可以用一个参数向量表示。
形状建模通常使用普克拉提斯分析(Procrustes Analysis)来去除尺度、旋转和平移等影响,并对形状进行主成分分析(PCA),从而得到形状的平均模型和主要变化模式。这一步骤有助于描述人脸的几何结构和边界。在纹理建模中,通常会在形状建模的基础上将目标间的形状差别消除,单独针对纹理进行主成分分析,以得到纹理的平均模型和主要变化模式。这样可以描述人脸的外观信息和纹理特征。最终的统一建模则是对形状和纹理模型的参数进行主成分分析,从而消除形状和纹理之间的冗余信息。通过这一过程,AAM模型可以将形状和纹理信息统一起来,使得模型能够更好地适应不同的人脸特征。
AAM模型算法过程主要基于主成分分析(PCA)和二范数最小化策略,流程主要包括以下步骤:
1)采集样本:采集目标的样本,建立样本库。
2)样本取点:人工标注人脸轮廓,提取特征点。
3)样本数据预处理:样本图像处理为灰度图,消除图像亮度(归一化),将样本点的位置保存为向量的形式。
4)形状建模:使用主成分分析(PCA)方法对训练集中的面部特征点进行降维和建模,得到形状模型。形状模型描述了面部特征点的位置关系。
5)纹理建模:在图像空间中,将面部图像与对应的标准形状对齐,然后将对齐后的图像划分为网格,提取每个网格内的纹理特征,如灰度值、梯度等。使用主成分分析(PCA)方法对纹理特征进行降维和建模,得到纹理模型。
6)模型参数优化:利用训练集中的人脸图像和对应的面部特征点,采用二范数最小化策略来优化AAM模型中的形状和纹理参数。该策略的目标是最小化模型预测结果与真实面部特征点之间的欧氏距离。
7)融合模型:将两种基础模型融合构建主动表观模型。
2" 基于AdaBoost和AAM的面部特征点检测方法
AdaBoost主要基于图像的局部特征来进行分类,而AAM主要利用面部形状信息来进行定位。将两者结合,综合利用图像的特征和形状信息,可以充分发挥图像的特征和形状信息的优势,提高检测和定位的准确性。
在将AdaBoost与AAM结合时,可以将AAM模型看作是一种弱分类器,通过训练多个AAM模型并将它们组合,可以形成一个更强大的分类器。这样,AAM模型的特征点检测能力可以得到增强。具体而言,在AdaBoost算法中,每个弱分类器都会根据权重对训练数据进行分类,而错误分类的样本会被赋予更高的权重。通过不断迭代训练和加权,最终得到一个强分类器,它能够更准确地分类图像数据。将AAM模型作为弱分类器,可以利用AdaBoost的机制来训练和优化AAM模型,从而改善特征点检测的准确性。
另外,AAM模型在面临形变和噪声时可能出现定位偏差,而AdaBoost具有良好的鲁棒性和抗噪性。结合AdaBoost和AAM可以有效地对抗面部形变和噪声,提高特征点检测的鲁棒性。并且,AAM模型的定位过程相对较慢,而AdaBoost分类器通过快速特征计算可以实现快速的特征点定位。结合两者可以在保持精度的同时提高定位的速度。
总之,将AdaBoost与AAM结合可以进一步强化AAM模型的特征点检测能力,提高检测结果的准确性、稳定性和鲁棒性。
2.1" 数据准备
在本次实验过程中,采用了FERET(Face Rec-ognition using Error, Excitation and Template)人脸数据库。FERET人脸数据库包含了1 000多人的14 051幅人脸图像,该数据库中的人脸图像包含了面部特征变化的丰富样本,时间间隔长达3年之久,并且FERET人脸数据库被分为训练集、参考集和测试集三部分。图1展示了部分人脸数据图像。
2.2" 图像预处理
在进行样本训练前,首先对图像进行预处理。
1)灰度化。将彩色图像转换为灰度图像。由于大多数面部特征点检测算法更适合处理灰度图像,因此灰度化可以简化后续处理步骤并提高算法的效率。在灰度图像中,每个像素的取值范围通常是0到255之间的整数,表示灰度级别。灰度化的目的是简化图像处理过程,并降低计算复杂度。
灰度化公式如下:
Gray=0.2989×R+0.5870×G+0.1140×B" " (1)
R、G、B分别表示红、绿、蓝通道的亮度值。通过对每个像素块应用上述公式,可以得到对应的灰度图像。
2)归一化。归一化可以消除图像中的亮度差异,将像素值映射到特定的范围内,并使得图像的动态范围更适合后续处理步骤。
归一化公式如下:
Normalized=(Pixel-Min)/(Max-Min) (2)
其中Pixel表示原始像素值,Min和Max分别表示图像中的最小和最大像素值。归一化后的图像可以更好地适应不同的算法和模型,提高图像处理和分析的效果。
2.3" 基于Haar特征的AdaBoost算法
计算黑白两部分矩形面积的差值,得到Haar特征值:Haar_feature=Area1-Area2。
1)初始化样本权重。训练开始时,平均分配每个样本的权重P。
2)迭代,使用具有权重分布的训练数据集学习得到基本分类器ht:
(3)
其中t为1,2,3…,xi表示训练库中标号为i的特征向量,yi表示它对应的标签。
计算ht误差率,误差率用表示:
(4)
1·(yi≠hi(xi))表示如果第i个样本的真实标签与基本分类器ht的输出不相等,则为1,否则为0。
计算基本分类器ht的权重at:
(5)
在每次迭代后,权重被归一化以确保所有权重的和为1。在加权的样本上训练弱分类器,并计算加权的错误率。如果加权的错误率小于预定的阈值,算法停止。否则,训练下一个弱分类器并再次更新权重:
(6)
在上述算法中,通过归一化因Zt子保证了分布概率的严谨性。
3)AdaBoost构建强分类器:
(7)
通过这个强分类器H(x)来区分样本图像中面部特征点和非特征点。
2.4" AAM模型生成
将Adaboost算法的分类结果作为AAM模型的输入特征,去除无关信息并增强有用特征,建立对应人脸的AAM模型。因为AAM模型的建立需要不断的迭代从而优化建模效果。
1)形状向量(Shape vector)。形状模型专门用来描述人脸的形状变化。将经过Adaboost算法增强后的每个面部特征点的坐标以列向量的方式组成一个矩阵X,对其进行主成分分析(PCA)方法,得到前k个主成分向量V1,V2,…,Vk,将它们组成一个形状向量S。
2)纹理向量(Texture vector)。纹理模型用来描述人脸的纹理变化。将样本训练集中的每个图像提取出表面纹理信息,通过PCA算法降维,得到前k个主成分向量W1,W2,…,Wk,将它们组成一个纹理向量T。
3)模型构建。将待处理的纹理向量映射到形状向量中,然后通过最小化形状误差和纹理误差的方式,结合实际特征点坐标的差异,调整关键点位置和像素值,估计模型参数,实现人脸的建模和重建。将两种模型的控制参数通过参数p和λ串联起来,并通过对角矩阵Ws来调整p和λ之间的差异,从而计算表观向量B0:
(8)
在表观向量B上应用PCA处理,以得到表观模型:
(9)
其中,Bt表示基于表观特征向量后的第t个特征值,ct用于控制该参数的变化。
将2.3中处理后的人脸图像样本数据库中的图像作为AAM训练样本,每次迭代后,再次重新分配权重,并使用P和λ更新参数,然后再次重新分配权重、更新参数p和λ…依次循环,使图像中人脸与AAM模型之间的最小均方误差为最小均方误差,人脸的特征形状趋于收敛,最终得到识别结果。
3" 实验结果及分析
通过基于AdaBoost和AAM的面部特征点检测技术的实验,发现该方法在一定范围内解决了目前阶段AAM算法不考虑灰度、初始位置和人脸检测问题。实验结果如图3所示。
本方法结果与其他方法检测结果比较如表1所示。
结果表明将AdaBoost和AAM结合起来,可以优势互补:
1)AdaBoost可以提高AAM模型对面部特征点的检测准确性,尤其是在面部姿态和表情变化较大的情况下。
2)AAM模型可以为AdaBoost提供一个更为精细的面部特征点定位,从而提高整体的面部特征点检测性能。
4" 结" 论
AAM模型通过构建活动模型,能够快速适应面部的局部变化,而AdaBoost算法可以快速训练出强分类器,两者结合可以加快检测速度,提高效率。AdaBoost算法能够对AAM模型的初始化提供优化,帮助模型更好地捕捉到面部特征点,尤其是在处理复杂表情和姿态变化时,可以提高检测的准确性。AAM模型能够自适应地调整面部特征点的位置,以适应不同的人脸形态和表情变化,而AdaBoost则可以动态地调整模型权重,以适应新的数据分布。这种结合方法在一定程度上解决了AAM算法在灰度值处理、初始位置设置以及人脸检测方面的问题,降低了AAM的迭代工作量,同时提高了AAM建模的效率。
参考文献:
[1] 邓雄,王洪春,赵立军,等.人脸识别活体检测研究方法综述 [J].计算机应用研究,2020,37(9):2579-2585.
[2] COOTES T F,TAYLOR C J,COOPER D H,et al. Active shape models—their training and application [J].Computer Vision and Image Understanding,1995,61(1):38-59.
[3] FREUND Y,SCHAPIRE R E. A Decision-Theoretic Generalization of On-Line Learning and an Application to Boosting [J].Journal of Computer and System Sciences,1997,55(1):119-139.
[4] MAALE R B,NANDYAL S D. Face Recognition Based on Haar Cascade Classifier [J].Journal of Research in Science and Engineering,2021,3(5):145-148.
[5] 杨磊.基于AdaBoost的人脸检测算法 [J].山西大同大学学报:自然科学版,2023,39(3):12-17.
[6] 陈奋,张晓兰,张宁.基于几何形状的AdaBoost 人脸检测算法研究 [J].福建工程学院学报,2017,15(1):49-54.
[7] 闫保中,何伟,韩旭东. 基于表观模型的人脸特征点提取 [J].应用科技,2020,47(6):47-52.
[8] 傅铭,刘从军.基于Adaboost与LDP算法的人脸识别研究 [J].计算机与数字工程,2023,51(7):1626-1630.
[9] 董林鹭,赵良军,杨明中,等.一种基于Viola-Jones 的改进人脸定位算法 [J].计算机技术与发展,2020,30(10):42-46.
[10] 仲柔在,熊磊,刘畅.利用形状估计的人脸特征点定位算法 [J].计算机应用研究,2017,34(7):2207-2211.
[11] 颜丽,谷学静.基于Canny-AAM的人脸特征定位算法 [J].湖南科技大学学报:自然科学版,2018,33(2):66-71.
作者简介:贾晓琪(1992—),女,汉族,山西临汾人,讲师,硕士研究生,研究方向:软件工程、图像处理。