OpenCV 多核支持
OpenCV Multi Core Support
我想知道 OpenCV 库是否有多核支持。我正在试验 Haar 级联,它在我的 Raspberry 2 上非常慢,它有四个内核,但我的应用程序目前 运行 仅在一个内核上。
有什么想法吗?
我已经简要浏览了 modules\objdetect\src\cascadedetect.cpp
中的 class CascadeClassifier
,parallel_for_
似乎有相当数量的实现,内置 OpenCV 多线程工具。
不过,您的里程可能会有所不同。至少在训练阶段似乎有很多顺序代码,正如 OpenCV 支持论坛中的 this thread 所建议的那样。
因此,如果您可以让 OpenCV 使用 OpenMP(可能最容易设置)、TBB 或类似工具进行编译,那么您就可以开始了。
希望对您有所帮助!
CascadedDetect
支持多核。
使用 WITH_TBB
或 WITH_OPENMP
(或 OpenCV 支持的任何其他线程框架)标志重新编译 OpenCV 以启用它。
最近我发现了 Simd Library, which has an implementation 的 HAAR 和 LBP 级联分类器。它可以使用来自 OpenCV 的标准 HAAR 和 LBP 级联。此实现使用 SSE4.1、AVX2 和 NEON(ARM) 进行了 SIMD 优化。
我没有检查它是否适用于 Raspberry 2,但我已经检查过它是否适用于 Raspberry 3(它的工作速度比原始 OpenCV 实现快约 2 倍)。
我想知道 OpenCV 库是否有多核支持。我正在试验 Haar 级联,它在我的 Raspberry 2 上非常慢,它有四个内核,但我的应用程序目前 运行 仅在一个内核上。
有什么想法吗?
我已经简要浏览了 modules\objdetect\src\cascadedetect.cpp
中的 class CascadeClassifier
,parallel_for_
似乎有相当数量的实现,内置 OpenCV 多线程工具。
不过,您的里程可能会有所不同。至少在训练阶段似乎有很多顺序代码,正如 OpenCV 支持论坛中的 this thread 所建议的那样。
因此,如果您可以让 OpenCV 使用 OpenMP(可能最容易设置)、TBB 或类似工具进行编译,那么您就可以开始了。
希望对您有所帮助!
CascadedDetect
支持多核。
使用 WITH_TBB
或 WITH_OPENMP
(或 OpenCV 支持的任何其他线程框架)标志重新编译 OpenCV 以启用它。
最近我发现了 Simd Library, which has an implementation 的 HAAR 和 LBP 级联分类器。它可以使用来自 OpenCV 的标准 HAAR 和 LBP 级联。此实现使用 SSE4.1、AVX2 和 NEON(ARM) 进行了 SIMD 优化。
我没有检查它是否适用于 Raspberry 2,但我已经检查过它是否适用于 Raspberry 3(它的工作速度比原始 OpenCV 实现快约 2 倍)。