【问题标题】:How do I build OpenCV with TBB?如何使用 TBB 构建 OpenCV?
【发布时间】:2011-11-03 11:40:42
【问题描述】:

我正在尝试让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 它是单线程的。有谁知道我做错了什么?

【问题讨论】:

    标签: opencv tbb


    【解决方案1】:

    如果你在 Mac 上,你可以用 homebrew 做到这一点:

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

    或者如果你已经安装了自制软件:

    brew uninstall opencv
    brew install opencv --with-tbb
    

    此外,info 命令会告诉您您可能感兴趣的其他标志,例如--with-java

    brew info opencv 
    

    【讨论】:

    • 该操作显然是在 Windows 上。
    • @Goddard - 答案不仅适用于 OP。实际上,您可以像我一样通过谷歌搜索 build Open CV Mac 登陆此页面。
    【解决方案2】:

    我知道这是一个旧线程,但我认为问题在于您使用的是带有 Haart 功能的 Traincascade,而不是使用使用整数而不是浮点的 LBP 功能,并且工作速度快了 3 倍。

    有关作者的更多信息,请参阅this question 中的评论。快速总结:Haart 训练很难并行化,但 LBP 更容易,并且可以利用很多处理器。

    希望对您有所帮助!

    【讨论】:

      【解决方案3】:

      对于 linux,请执行以下操作:

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

      【讨论】:

        【解决方案4】:

        尝试 setNumThreads(),将处理器内核的数量作为参数。有一个辅助函数可以找到最佳线程数(等于内核数),但我不记得了。

        并确保您还重建了 train_cascade exe

        【讨论】:

        • 我在哪里设置这个?我需要运行一些东西来安装 TBB 吗?我所做的只是提取 .zip 文件。
        • 在您的代码中调用该函数...如果您有自己的项目。但是.. 嗯,您是否在系统 PATH 中添加了 TBB?如果没有,请执行此操作,注销并重新登录并尝试。
        • CMake 生成的 .vcproj 文件将 TBB 目录列为附加包含目录。我已将 TBB 添加到系统路径并重建,但没有运气。 opencv.itseez.com/trunk/doc/user_guide/ug_traincascade.html 此处的文档指出“注意 opencv_traincascade 应用程序是 TBB 并行化的。要在多核模式下使用它,OpenCV 必须使用 TBB 构建。”它没有提到多核标志作为输入,因此似乎建议 opencv_traincascade 应该自动运行多线程。但事实并非如此。
        【解决方案5】:
        【解决方案6】:

        构建 tbb 二进制文件后,确保您的路径正确地将可执行文件定向到 tbb dll。您可能正在加载非 tbb dll(这发生在我身上)并且这些将不提供多线程。

        【讨论】:

          【解决方案7】:

          另外,一个接触点是在系统上安装 Intel TBB:

          $ sudo apt-get install libtbb-dev
          

          【讨论】:

            猜你喜欢
            • 2015-06-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多