2010-09-21 130 views
6

我编译并安装了OpenCV(来自SVN的最新版本)Mac Os X(这也许是问题的根源)。OpenCV上的慢脸检测?

该示例有效,但人脸检测算法似乎对我来说很慢。脸部的检测时间大约是400ms(我刚刚使用了包含的示例)。 FPS非常低。

在youtube和所有,我看到超光滑的视频与实时面部检测(即使在iPhone上),所以我感到困惑。我记得我的旧Windows PC速度更快。

400毫秒是正确的检测时间吗?

注意:我的Macbook不是旧的(2009),一切运行良好。我使用iSight网络摄像头(集成网络摄像头)。我在网络摄像头上只有一张脸(我的脸)。大约在同一时间,如果没有脸。

+1

您是否使用OpenMP进行编译?它没有它就吮吸。 – GManNickG 2010-09-21 23:16:38

+0

我使用默认配置进行编译(所以我不知道)。这是默认启用的吗? – 2010-09-22 15:10:59

+0

取决于您的编译器,但通常不是。你的编译器是什么?查看如何启用OpenMP,重新编译并尝试。 – GManNickG 2010-09-22 18:26:50

回答

5

输入图像的大小是多少?我猜640x480。通常,发布YouTube视频的人将图片大小调整为160x120。在640x480的全分辨率下,获取超过2-3 fps的图像非常困难。尝试发送160x120图像。你应该至少得到10fps。

+0

谢谢,这是一个很好的建议。这个项目现在暂停,但答案为+1。 – 2011-02-02 20:15:28

+0

我目前在LiveHD网络摄像头流上运行人脸检测。将视频缩小到480x270,并使用OpenCV 1.0在我的Corei7上以交互式速率(20-40ms)运行人脸检测。 – rotoglup 2011-02-02 22:57:11

0

我有同样的问题,四核机器上有4GB RAM 500ms的是每一个探测,但是我注意到有一个Scale选项....得到这个:

./facedetect - 进制= 4

我得到< 20ms的

希望帮助,

Keukpa

+2

投入比例= 4是错误的! scalefactor表示您想要更改searchWindowSize的步骤...意思是,假设您正在使用大小为1 * 100的窗口进行搜索,则下一次您将使用windowSize = 1 * 400 ....进行搜索,因此我们执行次数较少迭代,但我们也可能会错过两个之间的面孔。默认步长接近1.1,这意味着将窗口大小改变10%。 – 2011-05-31 09:10:46

3

的检出率添加到预虔诚的答案:

你也可以通过设置最大值和最重要的最小尺寸为detectMultiScale来加快速度。 [另外,正如前面的答案所述,重量比例缩小是为了Haar检测器使用非常简单的特征(对于最多6个像素的关系;在更大的比例尺上,您将矩形区域合并为好像它是只有一个像素)。在标准的mac/mbp2011上我可以达到60fps左右,这已经足够了。]

为了更好的加速,还可以使用say templateMatching消除不变区域。

0

当在图像上运行时,您应该缩小到某些限制。在视频的情况下,还可以尝试跟踪以及人脸检测。您可以对每个替代帧进行脸部检测,并在帧之间跟踪脸部位置。

另外,OpenCv支持使用Canny来丢弃找到Face的机会不存在的区域。

3

最近我发现了一个Simd Library,其中有一个implementation HAAR和LBP级联分类器。它可以使用OpenCV的标准HAAR和LBP casscades。该实现通过使用SSE4.1,AVX2和NEON(ARM)进行SIMD优化,所以它的工作速度比原来的OpenCV实现快2-3倍。