大家是否有办法提高haarObjectDetect的速度?在人脸检测方面,我尝试用肤色检测缩小范围

大家是否有办法提高haarObjectDetect的速度?在人脸检测方面,我尝试用肤色检测缩小范围

版主: ollydbg23, bebekifis, chai2010

发表回复

大家是否有办法提高haarObjectDetect的速度?在人脸检测方面,我尝试用肤色检测缩小范围

由 morocco » 2010-06-02 10:41

640x480的分辨率,如果设定最小检测人脸的宽度为50像素的话,一帧需要200ms甚至400ms,完全无法接受。


之前如果是设定最小检测人脸宽度为150的情况下,大概需要40ms,而我首先将画面线性缩小3倍甚至5倍再检测,能将时间消耗减少到15ms左右。



但是实际上要求人在较远位置也能检测到,这样人脸的宽度只有40像素左右,之前的方法依然无法达到实时。


现在有这么一个想法,先用低代价的方法减小搜索范围。首先将画面进行分割,比如分割成4份,如果某一份内部肤色检测出来皮肤区域面积超过多少,才对其进行检测。


不过经过我的实验,发现很难找到一种很好的肤色检测方法,opencv本身那个adaptiveSkinDetection(好像是这个名字)的例子效果已经不错了,但是干扰太大,任何木制品等都会被误认为是皮肤。


看了一个国外的帖子( http://www.computer-vision-software.com/blog/2009/06/fastfurious-face-detection-with-opencv/),他们有一个项目把速度提高了2.5倍,但是不开源,是要卖钱的。他大概提了几种思路:
1。采用整数,不过我的位图本来就是8位深的整数RGB图。
2。 修改源码,减少cvRunHaarClassifierCascade的调用次数,可是我的情况不大允许修改opencv的源码。
其中有个他们的演示, http://www.computer-vision-software.com/blog/2009/10/audience-measurement-face-tracker-gender-recognition-attention-recognition-etc/,下载里面那个am-3.avi,已经可以说是实时了,非常稳定的面部检测并且能识别性别。


后来又有个在Iphone上做的opencv人脸检测,他有个很好的优化措施,那就是记录下上一帧的人脸区域,下一帧就只在那附近检测人脸。但是这样只能检测单脸,而我必须检测多脸,这种方法无法发现突然出现在屏幕中的人脸。

你可能感兴趣的:(大家是否有办法提高haarObjectDetect的速度?在人脸检测方面,我尝试用肤色检测缩小范围)