繁体   English   中英

Python face_recognition 处理每一帧的时间太长

[英]Python face_recognition takes too long to process each frame

嘿,我正在使用来自 face_recognition github 的以下代码: 代码除了检测到人脸时我获得 2 fps/sec 之外,其他一切都有效,如果不是,则帧速率为 ~30。

我查看了任务管理器以查看我的计算机如何运行,并且 CPU 和 GPU 都在 ~15% 上,因此它不是硬件问题。 我也尝试将分辨率更改为 320x240,但没有出现同样的问题。

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

这个程序有两个处理步骤:

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

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

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

故障排除步骤:在循环 #2(for 循环)内,首先注释掉框架行(或 compare_faces 之后的所有内容),看看它是否加速。 通过这种方式,您可以缩小处理能力最强的内容。 如果您发现 compare_faces瓶颈,请尝试减少“已知”面孔的数量。 如果这大大提高了 fps,则您可能会受到内核/线程数量的限制。


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

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

  2. 仅检测每隔一帧视频中的人脸。

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

我在装有 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 确实有这些优点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM