iOS Vision框架人脸跟踪的高CPU和高能耗



我正在制作一款应用程序的原型,该应用程序将使用iOS Vision框架,通过前置摄像头连续紧密地裁剪用户的面部。我从苹果官方文档中找到了一个很棒的教程:https://developer.apple.com/documentation/vision/tracking_the_user_s_face_in_real_time

我的计划是对其进行调整,以裁剪视频,而不是绘制边界框,然后围绕它构建我的应用程序的其余部分。

然而,我注意到这个示例应用程序使用了大量的能量和CPU。如果这是不可避免的,该应用程序将不可行,因为它会迅速耗尽用户的电池。

愿景框架是否只是为了在短时间内使用?尝试优化它值得吗?

我修改了本教程:https://www.raywenderlich.com/1163620-face-detection-tutorial-using-the-vision-framework-for-ios

每5帧仅使用VNDetectFaceLandmarksRequest方法。这已经将CPU使用率降低到可接受的水平,同时在跟随面部时仍然具有可接受的性能。我也会尝试调整官方教程。

var frameCounter: UInt64 = 0
func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
frameCounter += 1
if frameCounter % 5 == 0 {
// 1
guard let imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {
return
}
// 2
let detectFaceRequest = VNDetectFaceLandmarksRequest(completionHandler: detectedFace)
// 3
do {
try sequenceHandler.perform(
[detectFaceRequest],
on: imageBuffer,
orientation: .leftMirrored)
} catch {
print(error.localizedDescription)
}
}
}

最新更新