2011-11-03 12 views
10

Próbuję i nie mogę użyć opencv_traincascade użyć wielu wątków. Jedyną dostępną dokumentacją jest "zbuduj OpenCV z TBB". Nie jestem pewien, czy nie udało mi się pomyślnie zbudować OpenCV z TBB, czy też muszę ustawić flagę na opencv_traincascade.Jak zbudować OpenCV z TBB?

Pobrałem pakiet superpaków Windows XP w wersji 2.3.1 i tbb40_20111003oss_win.zip, który wypakowałem do C:\tbb40_20111003oss. Następnie generowany VC8 .sln i .proj plików przy użyciu CMake, ustawienie

WITH_TBB: ON

TBB_INCLUDE_DIR:PATH=C:\tbb40_20111003oss\include

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

OpenCV następnie buduje bez błędów, ale gdy uruchamiam opencv_traincascade to singlethreaded. Czy ktoś wie, co robię źle?

Odpowiedz

1

Spróbuj setNumThreads(), z liczbą rdzeni procesora jako parametrami. Jest funkcja pomocnika, która pozwala znaleźć optymalną liczbę wątków (równa się liczbie rdzeni), ale nie pamiętam.

I upewnij się, że również odbudować exe train_cascade

+0

Gdzie mogę to ustawić?Czy muszę uruchomić coś, aby zainstalować TBB? Wszystko, co zrobiłem, to wyodrębnić plik .zip. – theotherphil

+0

wywołaj funkcję w kodzie ... jeśli masz własny projekt. Ale .. hmm, czy dodałeś TBB do PATH systemu? jeśli nie, zrób to, wyloguj się i zaloguj ponownie i wypróbuj. – Sam

+0

Pliki .vcproj wygenerowane przez CMake wyświetlają katalogi TBB jako dodatkowe katalogi. Dodałem TBB do ścieżki systemowej i przebudowałem, ale bez powodzenia. Dokumentacja tutaj http://opencv.itseez.com/trunk/doc/user_guide/ug_traincascade.html stwierdza, że ​​"Uwaga aplikacja opencv_traincascade jest zrównoleglona TBB. Aby użyć jej w trybie wielordzeniowym, OpenCV musi być zbudowany z TBB." Nie wspomina o flagach wielordzeniowych jako danych wejściowych, więc wydaje się sugerować, że opencv_traincascade powinien automatycznie uruchamiać wielowątkowe. Ale tak nie jest. – theotherphil

2

Wiem, że to stary wątek, ale myślę, że problem jest, że używasz Traincascade z HAART fabularnego insdead korzystania z funkcje LBP, które używają liczby całkowitej zamiast zmiennoprzecinkowej i działają 3 razy szybciej.

Zobacz komentarz w this question, aby uzyskać więcej informacji od autora na ten temat. Szybkie podsumowanie: trening Haart jest trudny do paralelizacji, ale LBP jest znacznie łatwiejszy i wykorzystuje wiele procesorów.

Mam nadzieję, że to pomoże!

5

Jeśli jesteś na Mac można to zrobić z homebrew:

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

lub jeśli masz już zainstalowany z homebrew:

brew uninstall opencv 
brew install opencv --with-tbb 

Również komenda info opowiada o innych flag ty może być zainteresowany np --with-java

brew info opencv 
+0

Operacja jest oczywiście w systemie Windows. – Goddard

+1

@Goddard - Odpowiedzi nie dotyczą tylko PO. Możesz wylądować na tej stronie, logując się do 'build Open CV Mac ', tak jak ja. – Robert

0

Po zbudowaniu binaria TBB, upewnij się, że ścieżka jest poprawnie kierując swój plik wykonywalny do bibliotek DLL TBB. Możliwe, że ładujesz biblioteki DLL inne niż tbb (tak mi się stało), a te nie zapewnią wielowątkowości.

1

dla systemów Linux, wykonaj następujące czynności:

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

Również jeden punkt dotykowy jest instalacja Intel TBB w systemie:

$ sudo apt-get install libtbb-dev