本书在前面章节已经介绍了6种人脸检测算法及两款商业软件,分别是DPM、LAEO、CNN Facial Point Detection、Viola&Jones、DDFD和Fast R-CNN,以及VeriLook和Face++。为了解这些算法的检测效果,本书进行了大规模的测试实验。该大规模测试的算法有4个,分别是DPM、LAEO、CNN Facial Point Detection和Viola&Jones,不包括DDFD,因为DDFD噪声太多。大规模测试的数据集有4个,两个公开的数据集LFW和FDDB;两个自己收集的数据集Wanwan1(100张图片,每张图片都是人的侧脸)、Wanwan2(100张图片,每张图片都是360°人脸)。关于这4个数据集的介绍,请参考本书第1章的内容。
每个算法分别在这4个数据集上进行测试,大规模测试结束后,统计每个算法在各个数据集上检测后的TP和FP数量。TP即True Positive,表示已检测到的并且是人脸的图片数量;FP即False Positive,表示已检测到的但不是人脸的图片数量。图8-15所示为某个算法的检测结果,该图片检测结果的TP=1,FP=1。
图8-15 某个算法的检测结果
表8-1中统计了每个数据集上人脸的数量,以及每个算法在该数据集上检测到的TP数量和FP数量。
表8-1 人脸检测结果对比
根据表8-1,我们可以计算出每个算法在各个数据集上的检测率和检错率。表8-2统计了各个算法在4个数据集上检测完成所需的时间,以及在各个数据集上的检测率。表8-3统计了每个算法在各个数据集上的检错率。
例如,DPM在LFW数据集上的检测率为:534/601×100%=88.85%,DPM在LFW数据集上的检错率为:61/601×100%=10.15%。
表8-2 各算法的检测率及运行时间
表8-3 各算法的检错率汇总
注:由于LFW数据集中有13 233张图片,FDDB数据集中有28 736张图片,图片数量太多,在统计检测数量和检错数量时,本书只统计了LFW和FDDB数据集中的前500张图片。运行时间仍然是4个数据集全部运行完成所花费的时间。
综合表8-2和表8-3可知,DPM在各个数据集上的检测率都是最高的,但是它的检错率也比较高,并且运行时间太长。所以,DPM的优势为:适合各种角度的人脸检测,如正脸、侧脸、360°人脸;缺点为:运行时间长,是CNN Facial Point Detection的64倍。
CNN Facial Point Detection在数据集LFW、FDDB和Wanwan1上的检测率仅比DPM低一点,但它的检错率几乎为0,并且运行时间最短,2个小时就能检测完将近5万张图片。所以,CNN Facial Point Detection的优势为:检测时间短,对于正脸和侧脸检测效果好,错检率几乎为0;缺点是:不适合检测360°人脸。
Viola&Jones在LFW和FDDB数据集上检测率一般,但在Wanwan1和Wanwan2数据集上检测率非常低。Viola&Jones检测时间非常短,和CNN Facial Point Detection不相上下。所以,Viola&Jones的优点为:适合检测正脸,检测时间短,检错率也较低;缺点是:不适合检测侧脸和360°人脸。
LAEO在各个数据集上的检测率都比DPM低,并且运行时间长,是CCN Facial Point Detection运行时间的61倍,和DPM的运行时间不相上下。所以,LAEO的优点是:可以检测各个角度的人脸;缺点是:运行时间长,和其他算法相比,检测率低。