嘿,我正在使用来自face_recognition github的以下代码:code 一切正常,除了当我检测到脸部时我以每秒2 fps的速度运行时,否则帧率约为30。
我抬头看了任务管理器,看看我的计算机运行状况如何,CPU和GPU都在15%左右,所以这不是硬件问题。我还尝试将分辨率更改为320x240,但没有发生相同的问题。
如何提高fps? 编辑: 我只有一种编码要处理,所以多线程可能无济于事
答案 0 :(得分:0)
此程序有两个处理步骤:
在while循环中,face_detection在帧中搜索人脸,然后对其进行编码(使用线性代数将人脸数据简化为唯一的向量)。
在for循环中(仅在检测到面部时运行),程序将对所有其他“已知”编码运行第1步的编码,如果满足默认的确定性阈值,则返回最佳匹配。
如果您完全修改了代码,增加了“已知”面孔的数量,则会使此过程变慢。另外,我不知道线程的优化程度。某些程序可能在单个线程上运行,即使该程序正在最大化其可以有效访问的资源,这也会显示较低的CPU使用率。
故障排除步骤:在循环2(for循环)中,首先注释掉框架行(或compare_faces之后的所有内容),然后查看它是否在加速。这样,您可以缩小处理能力最大的范围。如果发现compare_faces IS 瓶颈,请尝试减少“已知”面孔的数量。如果该速度急剧提高fps,则很可能受到内核/线程数量的限制。
您正在使用的示例代码是优化程度较低的版本。 Here是一个稍快的版本。调整包括:
以1/4分辨率处理每个视频帧(尽管仍以全分辨率显示)
仅在视频的其他每一帧中检测人脸。
基本上,通过减少处理量可以加快处理速度。
答案 1 :(得分:0)
我在装有OSX的Windows PC和Macbook pro上尝试了相同的项目。我发现MacBook Pro上的FPS可以达到30 FPS以上,而Windows PC只能以2 FPS运行。 Windows PC上的CPU是Ryzen 3900X,而MacBook使用i9 CPU。从我的角度来看,瓶颈不是CPU本身,操作系统应该是主要问题。尝试安装基于Linux的操作系统,然后再做一次。我不知道原因,但是Linux确实具有这些优势。