2010-09-21 128 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倍。