OpenCV的级联分类器没有充分利用CPU的全部功能

OpenCV's cascade classifier not utilizing full power of the CPU

本文关键字:CPU 全部 功能 级联 分类器 OpenCV      更新时间:2023-10-16

我使用OpenCV的级联分类器进行检测,但是我的CPU利用率从未超过50%,而应用程序仅以约8 FPS的速度运行,因此应该有更多的改进空间。我已经安装了OpenCV与TBB。我自己的程序不使用任何多线程,它只是在OpenCV的部分(detectMultiscale函数)。所有的CPU内核都在40%左右。我试过把程序的优先级设为实时,但没用。会不会有某种我不知道的瓶颈?

构建细节:

我正在使用Visual Studio 2010 IDE。目前使用这些优化:优化:最大速度(/O2),内联函数扩展:默认,启用内在函数:是(/Oi),支持快速代码(/Ot),省略帧指针:是(/Oy),启用光纤安全优化:否,整个程序优化:是(/GL)。我用的是64位的Windows 7,在发布模式下用64位构建程序。

也许您有一个带有超线程技术的英特尔处理器。(每个核心2个线程),TBB足够聪明,每个核心只使用一个线程(通常比两个线程更好)。操作系统报告一半的可用电量。

编辑

如果你想自己修改分类器,你可以调用setNumThreads(4);然后绘制亲缘关系图,每个核心将获得100%,而不是平均80%,正如评论

所解释的那样

你看到的是营销材料(8核!!)和真相(~3核)之间的区别

您需要配置允许OpenCV在CMake中使用TBB支持构建的选项。