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

iOS Vision framework人脸跟踪的高CPU和高能耗,ios,swift,computer-vision,Ios,Swift,Computer Vision,我正在制作一个应用程序的原型,该应用程序将使用iOS Vision框架,通过前置摄像头连续地紧紧地围绕用户的脸。我从苹果官方文档中找到了一个很棒的教程: 我的计划是调整它来裁剪视频,而不是绘制边界框,然后围绕它构建我的应用程序的其余部分 然而,我注意到这个示例应用程序使用了大量的能量和CPU。如果这是不可避免的,该应用程序将无法运行,因为它会很快耗尽用户的电池 愿景框架是否只打算在短时间内使用?值得尝试优化它吗?我修改了本教程: 每5帧仅使用VNDetetFaceLandmarksRequest

我正在制作一个应用程序的原型,该应用程序将使用iOS Vision框架,通过前置摄像头连续地紧紧地围绕用户的脸。我从苹果官方文档中找到了一个很棒的教程:

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

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


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

我修改了本教程:

每5帧仅使用VNDetetFaceLandmarksRequest方法。这使得CPU的使用率降到了可接受的水平,同时仍然具有可接受的性能。我也会尝试修改官方教程

var帧计数器:UInt64=0
func captureOutput(\uOutput:AVCaptureOutput,didOutput sampleBuffer:CMSampleBuffer,from connection:AVCaptureConnection){
帧计数器+=1
如果帧计数器%5==0{
// 1
guard let imageBuffer=CMSampleBufferGetImageBuffer(sampleBuffer)else{
返回
}
// 2
让detectFaceRequest=VNDtectFaceLandmarkRequest(completionHandler:detectedFace)
// 3
做{
尝试sequenceHandler.perform(
[detectFaceRequest],
关于:imageBuffer,
方向:。左镜像)
}抓住{
打印(错误。本地化描述)
}
}
}

尝试为其提供低分辨率图像。这可能会加快速度(即CPU成本降低)。我猜他们使用的任何东西都不仅仅是简单地寻找人脸,或者是用神经网络。它甚至可以提取额外的信息,比如你可能不需要的面部标志。