我正在尝试使用 Vision API 检测网络摄像头中的人脸。 CPU 使用率非常高,大约 60% 或 80%。有什么办法可以减少吗?
我已经尝试减少从网络摄像头传输的每秒帧数。然而这并没有帮助。 这是我尝试检测面孔的方式。这必须实时更新。
try? VNSequenceRequestHandler().perform([VNDetectFaceRectanglesRequest()], on: image)
if let results = VNDetectFaceRectanglesRequest().results as? [VNFaceObservation] {
DispatchQueue.main.async {
// update UI
}
}
最佳答案
愿景
- 尝试在
VNDetectFaceRectanglesRequest
中定义一个regionOfInterest
- 使用
usesCPUOnly
属性验证您的请求“[…] 请求可以免费利用 GPU 加速其处理。” - 如果您的使用允许,请尝试
preferBackgroundProcessing
AVFoundation
如果您正在使用 AVCapture
,您还可以为您的捕获设备选择较低的质量
比如根据 ProcessInfo.processInfo.thermalState
选择正确的设置:
- 'AVCaptureSession.sessionPreset'
- 每秒分析最大数量的人脸
- 如果您的
AVCaptureDevice
不需要,请禁用 HDR
其他
- 减少
CVPixelBuffer
的更新次数- 为其分配固定大小
- 如果给用户展示,只使用展示的部分
- 如果您要进行一些后期图像处理,请考虑使用
Accelerate
Avoid as much work on the main thread
关于swift - MacOS:减少 VNFaceObservation 的 CPU 使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58664586/