首页 » 刷脸背后:人脸检测 人脸识别 人脸检索 » 刷脸背后:人脸检测 人脸识别 人脸检索全文在线阅读

《刷脸背后:人脸检测 人脸识别 人脸检索》4.3 人脸检测算法融合

关灯直达底部

人脸检测算法融合,这里指将多个算法的检测结果合并,从而尽可能多地检测到所有人脸。多种人脸检测算法的融合,是行之有效的提高人脸检测准确率的方法。如图4-3所示,图(a)是Viola&Jones人脸检测算法的检测结果,图(b)是CNN Facial Point Detection人脸检测算法的检测结果,如果将这两个算法的检测框合并,就可以检测到所有的人脸。

图4-3 不同算法的人脸检测结果

如果直接合并这 10 个检测框,则同一个区域上可能会有两个检测框,如图4-4所示。所以,在合并不同人脸检测算法的结果时,需要对结果进行判断处理,如果出现图4-4(a)中的情况,则判定两个检测框指向同一个人脸,只保留一个;如果出现图4-4(b)中的情况,两个检测框重叠区域大,则也判定这两个检测框指向同一个人脸,删除一个检测框;如果出现图4-4(c)中的情况,两个检测框的重叠区域较小,则判定为不同的人脸,不做处理;如果出现图4-4(d)中的情况,两个检测框不重叠,则判断为不同的人脸,不做处理。

图4-4 合并后检测框的情况(两种不同颜色的检测框分别代表不同算法的检测结果)

图4-4(b)中重叠区域大,表示指向同一个人脸;图4-4(c)中重叠区域较小,表示指向不同的人脸。那么重叠区域大小的判断标准是什么呢?对于两个检测框A、B来说,如果A框的中心点在B框区域内,并且B框的中心点在A框区域内,则表示它们重叠区域大,即高度重合;否则表示它们重叠区域小。

本书介绍了6种人脸检测算法,分别是DPM、LAEO、Viola&Jones、CNN Facial Point Detection、DDFD、Fast R-CNN(第5章将介绍)。接下来我们对其中某些算法的检测结果进行融合。

1.DPM和LAEO算法的融合

DPM和LAEO算法的融合有两种实现途径:

(1)使用MATLAB实现的程序,对应的项目名称为:FaceDetect Algos/dpm_headdet_opencv_Matlab。

在运行之前,需要添加子文件夹dpm_headdet_opencv_Matlab/voc-release的一些函数。读者可根据实际情况,在main.m 文件中修改存放检测图片和检测结果的路径,如下:

修改好路径后,单击main.m即可测试该合并算法。

(2)使用C++在 Visual Studio 上实现的程序,对应的项目名称为:FaceDetectAlgos/ dpm_headdet_opencv_C。运行该项目只要在 Visual Studio 上配置好OpenCV视觉库即可。

读者可根据实际情况,在detectFace.cpp文件中修改存放检测图片和检测结果的路径,如下:

修改好路径后,单击detectFace.cpp即可测试该合并算法。

2.CNN Facial Point Detection和Viola&Jones算法的融合

CNN Facial Point Detection和Viola&Jones算法的融合是在 Visual Studio 平台上实现的,对应的项目名称为:FaceDetectAlgos/facedetc_windopencv。