SeetaFace人脸检测体验

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hjl240/article/details/53769370

简要介绍

       SeetaFace Detection,即人脸检测,是Funnel-Structuredcascade的一种实现,可以实时多视角进行人脸检测。FuSt目标是,通过使用coarse-to-fine架构,达到准确率和速度的一个平衡。它包括3层:

1.      multiple view-specific fastLAB cascade classifiers

2.      coarse Multilayer Perceptron(MLP) cascades

3.     oneunified fine MLP cascade, processing all proposed windows in a centralized style

FuSt开源版本包括人脸检测的代码,还有用于检测几乎是正面人脸(一些非正面的人脸也能检测)的模型,该模型是在大概200K个人脸图像中训练得到的。开源代码的实现与相应的论文中的描述有一些不同,不同点如下:

1.      The fine MLP cascade使用SURF特征,而不是SIFT

2.      增加了Non-MaximalSuprresionNMS

3.     Landmark预测被替换为bounding box regression 

代码是用C++写的,不包含任何第三方库,目前只在Windows上测试过,但是代码并不包含Windows特有的头文件。使用了一些并行的技术。

性能评估

     SeetaFace Detection在FDDB数据库上的ROC曲线如下图。SeetaFace Detector为了达到下面图表中的结果,检测脸的最小大小( the minimum size of faces todetect)设置为20,滑动窗户的步长(step of sliding window)设置为2或者4(如图中所示),尺度因子(scaling factor)设置为0.8(OpenCV下设置为1.25)。


各个算法的速度表现如下表格。输入图片大小为640*480。 SeetaFace detector的滑动窗口的步长设置为4,尺度因子为0.8。Cascade CNN使用图像金字塔,尺度因子为0.7(OpenCV下为1.414)。

SeetaFace Detector测试环境为:3.40GHz i7-3770 CPU

Cascade CNN 测试环境为:a 2.0 GHz CPU core,NVIDIA Titan Black GPU


Detector

Min Face Size

Speed on CPU

Speed on GPU

SeetaFace Detector

40x40

16.0 FPS

n/a

SeetaFace Detector

80x80

55.0 FPS

n/a

Cascade CNN [1]

80x80

9.1 FPS

100 FPS

FacenessNet [2]

80x80

n/a

20 FPS

实际测试

我的测试环境:Win7 64位+ Visual Studio 2015 + OpenCV310

作者给的源代码中,提供了配置好的Visual Studio 2013版本的示例程序,找到SeetaFaceEngine-master\FaceDetection\examples下,我用Visual Studio 2015打开,打开之后,只需要重新配置一下Opencv的相关路径便可以使用。具体配置的方法为:

1.     examples----属性

2.     在VC++目录中修改opencv的包含目录以及库目录

比如我的opencv包含目录为:D:\opencv\opencv310\build\include

我的opencv库目录为:D:\opencv\opencv310\build\x64\vc14\lib


3.     在链接器---输入--附加依赖项中,加入opencv相关库文件。


注意Debug与Release模式下,附加依赖项名称略有不同。

配置好之后,便可以运行人脸检测的程序了。

检测结果如下:


可以看出,在我的笔记本上,人脸检测消耗时间为1.88273秒。



SeetaFace github地址:https://github.com/seetaface/SeetaFaceEngine





猜你喜欢

转载自blog.csdn.net/hjl240/article/details/53769370