一种基于最佳相似性的人脸检测算法
2021-11-15刘广瑞孟少飞
王 钊 刘广瑞 孟少飞
(郑州大学机械与动力工程学院 河南 郑州 450001)
0 引 言
人脸检测是现代所有基于视觉的人与电脑、人与机器人和人机交互系统的基础,在人脸识别、人脸追踪、表情识别、数字视频,以及游戏领域具有重要的应用价值。目前,国内外学者提出了许多有效的人脸检测算法,常见的有先验知识法、统计训练法、肤色检测法、模板匹配法[1]。其中模板匹配法具有过程简单、容易实现等优点。
近年Dekel等[2]提出了一种基于最佳相似性(BBS)的模板匹配算法,该方法通过统计模板图像和目标图像搜索窗之间的最佳相似对(BBP)的数目,将对数最大的搜索窗作为最优匹配结果。该算法稳健性好、匹配精度高,并且能够在部分遮挡的情况下完成匹配,但是该算法采用的搜索方式是逐点滑窗,计算量大,不能满足实时要求,而且难以实现对旋转、缩放目标的检测。
针对以上问题,考虑以尺度迭代最近点算法[3](SICP)作为BBS算法的搜索方式,首先计算模板图像与目标搜索窗之间的最佳相似点对,将其作为两个图像之间的对应点,然后利用SICP算法对搜索窗进行变换,得到新的搜索窗口,再计算得到最佳相似点对,直到满足阈值要求。
1 基本原理
1.1 最佳相似性(BBS)
在模板匹配过程中,传统匹配算法会将窗口中所有像素或其他特征考虑在内,但是当检测目标的背景发生变化时,这种策略是不可取的,不同的背景带来的像素或特征变化是任意的,因此可能会导致匹配错误。针对此问题,Dekel等提出了一种新的相似性度量方法,该方法只考虑搜索窗内与模板相似的点,这种新的相似性度量准则称为最佳相似性(BBS)。
(1)
其中:
(2)
d(p,qj)是一种距离测度,最常用的是欧氏距离:
(3)
式中:上标A表示像素值,一般为RGB颜色空间;上标L表示像素坐标位置;根据经验,在实验中一般令λ=2。文献[5]中使用曼哈顿距离代替欧氏距离,使得计算效率更高,差异性更小;而在颜色空间中,HSV空间比RGB空间能更好地反映出颜色信息,所以本文采用的距离测度如式(4)所示。
d(p,q)=MDxy+λMDHSV
(4)
s.t.MDxy=|xp-xq|+|yp-yq|,
MDHSV=|Hp-Hq|+|Sp-Sq|+|Vp-Vq|
为了提高计算效率,在BBP中将模板和搜索窗内图像分解为k×k的小块,并取小块的中心点代表这个小块的所有点,这些小块则组成了待匹配的点集。
1.2 尺度迭代最近点(SICP)
迭代最近点算法(ICP)是运用最广泛的点集配准方法,该算法配准精度高,易于实现,但是没有考虑尺度变换的配准问题。在此基础上,Du等提出了尺度迭代最近点算法(SICP),但是对较大点集处理的迭代速度比较缓慢。针对收敛速度问题,赵夫群等[6]引进了带边界的尺度矩阵,在不影响算法精度和收敛方向的情况下,减少迭代次数,提高收敛速度。
(5)
s.t.RTR=Im,det(R)=1
S=diag(s1,s2,…,sq),sj∈[aj,bj]
式中:S是一个有边界的尺度矩阵。
迭代过程主要分为以下两步[7]:
(1) 根据当前的变换参数(Sk-1,Rk-1,tk-1)建立点集之间的对应关系:
(6)
(2) 通过最小化距离公式计算出新的变换参数(Sk,Rk,tk):
(7)
重复以上两个步骤,直到满足停止条件。
2 算法提出
原始BBS算法采用简单的逐点滑窗匹配,逐个窗口计算BBS相似性度量值,选取相似性值最大的窗口作为最终匹配结果。这种策略重复计算多,计算量大,而且对于尺度变化、旋转变化的目标检测失效。而尺度迭代最近点算法作为一种点集配准算法,搜索速度快,对尺度变换和旋转变换的图像均能有较高的匹配效果,但是对点集的选择要求比较高。因此考虑将两种算法结合起来,以两个图像之间的最佳相似对点集作为SICP算法的配准点集进行迭代搜索,直到满足阈值条件。BSICP算法如下:
1) 初始化变换参数(S0,R0,t0),将初始搜索窗口定义在目标图像左上角。
2) 将模板大小调为与窗口大小一致,根据式(1)计算模板图像与窗口之间的所有最佳相似对,生成窗口点集Pk和模板点集Qk。
3) 计算新的变换参数(Sk,Rk,tk):
(8)
式中:NBBPS表示最佳相似点对的数量。
4) 当满足两次变换之间的ΔS=|Sk-Sk-1|小于阈值ε或迭代次数k大于最大迭代次数Kstep时,停止迭代,否则返回步骤2)。
该算法在人脸检测中的实现流程如图1所示。
图1 人脸检测算法流程
3 实 验
实验选用一台Inter Corei5-8250U 1.60 GHz CPU和8 GB内存的计算机作为测试环境,仿真软件为MATLAB 2018a。为了验证算法的有效性、实用性,进行了两个实验。实验一比较了几种经典检测算法和本文算法在数据集上的检测率和检测速度;实验二是本文算法在视频序列人脸检测中的应用。
3.1 人脸检测算法对比实验
本实验所用的IMDB-WIKI数据集是具有年龄和性别标签的最大面部图像公共数据集,包含各个年龄和不同姿态、背景的人物面部图像。从中随机选取了100幅图片作为实验测试数据,统一图片大小为300×300,然后分别进行四种变换,生成包括旋转、缩放、旋转缩放和部分遮挡的四组图像,加上原始图像一共五组500幅图像。
为了分析本文算法的检测效果,选用了包括本文算法在内共五种人脸检测算法进行比较,包括:SAD[8]、NCC[9]、HM[10]、YOLO[11]、BSICP。实验结果如图2和图3所示,结果分析如表1和表2所示。
图2 算法检测率对比
表1 检测率数据分析(%)
图3 算法检测速度对比
表2 检测时间数据分析
由图2和表1可知,HM、YOLO和本文算法平均检测率比较高,分别为94%、95.6%和98.2%;由图3和表2可知,NCC、YOLO和本文算法的平均检测速度比较快,分别为0.095 s、0.845 s和0.077 s。不管在检测率还是在检测速度上,本文算法都有优于其他算法的检测效果,对人脸检测具有很好的使用价值。
3.2 视频序列人脸检测实验
本实验所用数据来源于文献[12]的标准视频序列图像库,从中选取了6段彩色视频,并从每段视频中每相隔20帧以上取一幅共5幅图像组成一组,其中一组序列检测结果如图4所示,(a)为手工标记,其余为检测结果。通过实验发现,本文算法能够很好地完成检测任务,有利于人脸检测的应用。
(a)
(b)
(c)
(d)
(e)图4 视频序列人脸检测结果
4 结 语
本文提出一种人脸检测算法,在算法中引入最佳相似性这样一种相似性度量来寻找对应点,然后利用SICP算法快速搜索到最优目标,实现了在图像中对人脸的快速检测。实验数据表明,该算法在速度和检测率上均优于其他常用的人脸检测算法。由于复杂的人脸表情种类以及背景环境影响,该算法的计算量比较大,如何降低计算量和如何对非彩色图像中的人脸进行检测将是下一步的工作重点。