我已经使用opencv人脸检测器编写了多 View 人脸检测代码。我在一个图像上运行五个检测器(针对不同的姿势 Angular 进行训练),然后权重检测图像中的人脸。我已经使用TBB parallel_for使代码并行,但是它仅将性能提高了1.7倍。我想问一下是否有更好的方法并行运行五个检测器?

我在具有16核的群集上运行代码。我认为线程数(以我的情况为5)太少,无法利用全部功能。

有什么建议么?

谢谢,

最佳答案

一些可能要研究的问题:

  • 其中一个检测器比其他检测器运行更长的时间。例如,如果一个检测器占用4个时间单位,而其他四个检测器每个占用1个时间单位,则最可能的加速速度是2倍。在这种情况下,将慢速检测器本身并行化可能会有所帮助。
  • 检测器运行得如此之快,以至parallel_for没有时间分散工作。如果每个检测器至少花费0.1秒,这应该不是问题。
  • 内存带宽可能是限制资源,尤其是在工作集不适合外部高速缓存的情况下。

  • 诸如Intel(R)VTune(TM)放大器之类的探查器有时可以帮助查找这些问题。 Amplifier具有商业和non-commercial许可证。 [免责声明:我为Intel工作。]

    关于opencv - TBB parallel_for,线程数更少,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15529499/

    10-10 16:56