我正在尝试并且未能使opencv_traincascade
使用多个线程。我能找到的唯一文档说“用TBB构建OpenCV”。我不确定我是否未能使用TBB成功构建OpenCV,或者是否需要为opencv_traincascade
设置一些标志。
我已经下载了OpenCV版本2.3.1 windows superpack和tbb40_20111003oss_win.zip
,我将其解压缩到C:\tbb40_20111003oss
。然后,我使用CMake生成了VC8 .sln
和.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
时它是单线程的。有谁知道我做错了什么?
答案 0 :(得分: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
答案 1 :(得分:2)
我知道这是一个旧线程,但我认为问题在于你正在使用Traincascade与Haart功能使用LBP功能使用整数而不是浮点并且工作速度提高了3倍。
请参阅this question中的评论,以获取作者有关此内容的更多信息。快速摘要:Haart培训难以实现,但LBP更容易,并且可以利用大量处理器。
希望有所帮助!
答案 2 :(得分:1)
尝试使用处理器核心数作为参数的setNumThreads()。有一个辅助函数可以找到最佳线程数(等于内核数),但我记不住了。
并确保您还重建了train_cascade exe
答案 3 :(得分:1)
对于linux,请执行:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON BUILD_TBB=ON ..
答案 4 :(得分:0)
答案 5 :(得分:0)
构建tbb二进制文件后,请确保您的路径正确地将可执行文件定向到tbb dll。您可能正在加载非tbb dll(这发生在我身上),这些将不提供多线程。
答案 6 :(得分:0)
此外,一个接触点是在系统上安装英特尔TBB:
min/max-device-width