Python face_recognition需要太长时间才能处理每一帧

时间:2019-07-12 15:10:14

标签: python face-recognition cv2

嘿,我正在使用来自face_recognition github的以下代码:code 一切正常,除了当我检测到脸部时我以每秒2 fps的速度运行时,否则帧率约为30。

我抬头看了任务管理器,看看我的计算机运行状况如何,CPU和GPU都在15%左右,所以这不是硬件问题。我还尝试将分辨率更改为320x240,但没有发生相同的问题。

如何提高fps? 编辑: 我只有一种编码要处理,所以多线程可能无济于事

2 个答案:

答案 0 :(得分:0)

此程序有两个处理步骤:

  1. 在while循环中,face_detection在帧中搜索人脸,然后对其进行编码(使用线性代数将人脸数据简化为唯一的向量)。

  2. 在for循环中(仅在检测到面部时运行),程序将对所有其他“已知”编码运行第1步的编码,如果满足默认的确定性阈值,则返回最佳匹配。

如果您完全修改了代码,增加了“已知”面孔的数量,则会使此过程变慢。另外,我不知道线程的优化程度。某些程序可能在单个线程上运行,即使该程序正在最大化其可以有效访问的资源,这也会显示较低的CPU使用率。

故障排除步骤:在循环2(for循环)中,首先注释掉框架行(或compare_faces之后的所有内容),然后查看它是否在加速。这样,您可以缩小处理能力最大的范围。如果发现compare_faces IS 瓶颈,请尝试减少“已知”面孔的数量。如果该速度急剧提高fps,则很可能受到内核/线程数量的限制。


您正在使用的示例代码是优化程度较低的版本。 Here是一个稍快的版本。调整包括:

  1. 以1/4分辨率处理每个视频帧(尽管仍以全分辨率显示)

  2. 仅在视频的其他每一帧中检测人脸。

基本上,通过减少处理量可以加快处理速度。

答案 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确实具有这些优势。