AdaBoost+LBP人脸检测时间用量分析
检测流程
人脸检测过程采用多尺度滑窗搜索方式,每个尺度通过一定步长截取大小为20x20的窗口,然后将窗口放到级联分类器中进行是不是人脸的判决,如果是人脸则该窗口通过所有级联分类器;反之,会在某一级分类器被排除。
流程如下:
图中所示为主要的人脸检测步骤,其中:
1. 多尺度搜索是对图像按一定的ScaleFactor进行缩小,每缩小一次,在缩小后的图像上进行大小为20x20的人脸检测;
2. 单尺度搜索是在缩小到某一尺度的图像中,在x, y两个维度上通过一定步长(如2 pixel)进行20x20的窗口扫描,将截取的窗口送到分类器中进行特征提取和判决;
滑窗扫描示意图
可以看出,单尺度滑窗操作的待判断窗口数数量约为(height-20) /ystep *(width-20) /xstep,以100*100的待检测图像为例,xstep,ystep为2的情况下,需要判断的窗口数约为1600个;多尺度情况下,每个尺度都要进行滑窗,所以总检测窗口数数量会大很多。搜索空间大是所有基于多尺度滑窗检测算法在效率方面面临的主要问题。
时间分析
下面对检测过程的时间用量分析采用了两种方式,一种是基于Visual Studio2013的分析工具profiler的分析结果,一种是在程序中嵌入时间测量代码进行断点测量结果。二者的测试平台均为PC, Win7 32bit, i5-4590 3.3GHz, 4G内存, OpenCV 2.4.10
注意,两种方法的测试图像不同,所以结果有所差异,但并不影响对程序中各部分用时的分析;结果的差异主要是测试的图像分辨率不同,导致不同步骤的运算量的变化量不同,在总时间的所占比例上会产生差异。<