2011-11-03 142 views
10

我正在嘗試並且未能使opencv_traincascade使用多個線程。我能找到的唯一文檔就是「用TBB構建OpenCV」。我不確定我是否沒有成功地使用TBB構建OpenCV,或者是否需要爲opencv_traincascade設置一些標誌。如何使用TBB構建OpenCV?

我已經下載了OpenCV版本2.3.1窗口超級包和tbb40_20111003oss_win.zip,我提取到C:\tbb40_20111003oss。然後我生成VC8 .sln和使用CMake的.proj文件,設置

WITH_TBB: ON

TBB_INCLUDE_DIR:PATH=C:\tbb40_20111003oss\include

TBB_LIB_DIR:PATH=C:/tbb40_20111003oss/lib/intel64/vc8

的OpenCV然後建立沒有錯誤,但是當我運行opencv_traincascade它的單線程。有誰知道我做錯了什麼?

回答

1

嘗試setNumThreads(),將處理器內核的數量作爲參數。有一個幫助函數可以找到最佳的線程數量(等於核心數量),但我不記得它。

並確保您還重建train_cascade EXE

+0

我在哪裏設置呢?我需要運行一些東西來安裝TBB嗎?我所做的只是提取.zip文件。 – theotherphil

+0

在代碼中調用函數...如果你有自己的項目。但是..嗯,你是否在系統PATH中添加了TBB?如果沒有,請執行此操作,註銷並重新登錄並嘗試。 – Sam

+0

由CMake生成的.vcproj文件將TBB目錄列爲附加包含目錄。我已經將TBB添加到系統路徑並重建,但沒有運氣。這裏的文檔http://opencv.itseez.com/trunk/doc/user_guide/ug_traincascade.html指出:「注意opencv_traincascade應用程序是TBB並行化的。要在多核模式下使用它,必須使用TBB構建OpenCV。」它沒有提到多核標誌作爲輸入,所以它似乎表明opencv_traincascade應該自動運行多線程。但事實並非如此。 – theotherphil

2

我知道這是一個古老的線程,但我認爲這個問題是您正在使用Traincascade與使用的哈特功能insdead LBP功能使用整數而不是浮點數,並且工作速度提高了3倍。

查看關於此作者的更多信息,在this question中的評論。快速總結:Haart培訓很難平行,但LBP更容易並且利用了很多處理器。

希望它有幫助!

5

如果你是在Mac上,你可以用自制做到這一點:

brew tap homebrew/science 
brew install opencv --with-tbb 

或者,如果您已經使用自制安裝:

brew uninstall opencv 
brew install opencv --with-tbb 

此外,info命令告訴你其他標誌你可能會感興趣,例如--with-java

brew info opencv 
+0

該操作顯然在Windows上。 – Goddard

+1

@Goddard - 答案不僅僅針對OP。您可以像本人一樣通過Google搜索「打開CV Mac」來實際登錄此頁面。 – Robert

0

建立TBB的二進制文件後,請確保您的路徑是否正確指揮你的可執行文件的TBB的DLL。您可能正在加載非tbb dll(這發生在我身上),並且這些將不提供多線程。

1

在LINUX,這樣做:

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON BUILD_TBB=ON .. 
0

此外,一個觸摸點是英特爾TBB的系統上安裝:

$ sudo apt-get install libtbb-dev