Как создать OpenCV с TBB?

Я пытаюсь и не могу сделать opencv_traincascade использование нескольких потоков. Единственная документация, которую я могу найти, говорит "построить OpenCV с TBB". Я не уверен, что я не смогу успешно построить OpenCV с TBB, или есть ли какой-то флаг, который мне нужно установить для opencv_traincascade.

Я загрузил суперзагрузку окон OpenCV версии 2.3.1 и tbb40_20111003oss_win.zip, которые я извлек для C:\tbb40_20111003oss. Затем я сгенерировал файлы VC8 .sln и .proj, используя CMake, установив

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

Если вы находитесь на Mac, вы можете сделать это с помощью доморощенного:

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

Или, если вы уже установили с homebrew:

brew uninstall opencv
brew install opencv --with-tbb

Кроме того, команда info сообщает вам о других флагах, которые могут вас заинтересовать, например. --with-java

brew info opencv 

Ответ 2

Я знаю, что это старый поток, но я думаю, что проблема заключается в том, что вы используете Traincascade с функцией Haart для использования с функциями LBP, которые используют целое число вместо плавающей запятой и работают в 3 раза быстрее.

См. комментарий в этот вопрос для получения дополнительной информации от автора об этом. Краткое описание: Обучение Haart трудно парализовать, но LBP намного проще и использовать множество процессоров.

Надеюсь, что это поможет!

Ответ 3

Попробуйте setNumThreads(), с количеством ядер процессора в качестве параметров. Существует вспомогательная функция для поиска оптимального количества потоков (равна числу ядер), но я не могу ее запомнить.

И убедитесь, что вы также перестроили train_cascade exe

Ответ 4

Для linux выполните:

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

Ответ 6

После создания бинарных файлов tbb убедитесь, что ваш путь правильно направляет ваш исполняемый файл в dll tbb. Возможно, вы загружаете не-tbb dll (это случилось со мной), и они не будут содержать многопотоков.

Ответ 7

Кроме того, одним касанием является установка Intel TBB в системе:

$ sudo apt-get install libtbb-dev