慢脸检测Firebase MLKit

时间:2018-05-21 04:17:51

标签: swift camera firebase-mlkit

开始使用前置摄像头玩MLKit面部探测器,但处理面部的速度确实很慢

func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {

    print("Picture at ", Date())


    let visionImage = VisionImage(buffer: sampleBuffer)
    visionImage.metadata = metadata


    faceDetector?.detect(in: visionImage) { (faces, error) in
        guard error == nil, let faces = faces, !faces.isEmpty else {
            // Error. You should also check the console for error messages.
            let errorString = error?.localizedDescription
            print("Face detection failed with error: \(errorString)")
            return
        }

  }

我哪里错了?

2 个答案:

答案 0 :(得分:5)

您可以尝试一些加速检测的方法:

  1. 在发布模式(优化)中构建应用程序,而不是调试模式。

  2. 创建faceDetector时,请务必使用VisionFaceDetectorOptions并将其isTrackingEnabled设置为true。

  3. 设置AVCaptureVideoDataOutput时,请将以下键值对添加到其videoSettings中:

  4. key:kCVPixelBufferPixelFormatTypeKey

    值:kCVPixelFormatType_32BGRA

答案 1 :(得分:0)

就我而言,我没有遵循正确的准则,即: 如果要在实时应用程序中使用面部检测,请遵循以下准则以获得最佳帧率:

配置面部检测器以使用面部轮廓检测或分类和界标检测,但不能同时使用两者:

您应该这样做以获得更好的帧速率

  1. 轮廓检测
  2. 地标检测
  3. 分类
  4. 地标检测和分类

您不应该使用这些

轮廓检测和界标检测

轮廓检测和分类

轮廓检测,界标检测和分类

在此处找到所有指南: https://developers.google.com/ml-kit/vision/face-detection/android