提高face-api.js中首次检测的速度?

时间:2019-05-26 19:13:35

标签: face-api

在face-api.js中,第一次调用检测照片大约需要10秒钟,然后花费毫秒进行所有后续检测。

在开始检测之前,有什么方法可以调用某些函数来进行准备并避免这种初始延迟吗?考虑到用户需要执行一项操作(单击按钮)才能开始面部检测。

我已经在做启动引导加载了。根据代码。

App Init()

const MODEL_URL = "/static/models";
faceapi.loadTinyFaceDetectorModel(MODEL_URL);
await faceapi.loadFaceLandmarkTinyModel(MODEL_URL);
await faceapi.loadFaceDetectionModel(MODEL_URL);
await faceapi.loadFaceRecognitionModel(MODEL_URL);

navigator.mediaDevices
  .getUserMedia({ video: { frameRate: { ideal: 10, max: 15 } } })
  .then(stream => {
    this.cameraPreview.srcObject = stream;
    this.cameraPreview.style.display = "block";
  })
  .catch(err => {
    alert("error");
  });

呼叫检测

start(){
    configProcessFace();
    detectFace();
}

configProcessFace() {
    let inputSize = 128;
    let scoreThreshold = 0.58;
    this.faceOptions = new faceapi.TinyFaceDetectorOptions({
        inputSize,
        scoreThreshold
    });
},
async detectFace() {
    faceapi
    .detectSingleFace(this.cameraPreview, this.faceOptions)
    .run()
    .then(res => {
        if (res && res.box) {
            ...
        }
        window.setTimeout(() => {
            this.detectFace();
        }, 40);
    })
    .catch(err => {
        console.log(err);
});

1 个答案:

答案 0 :(得分:0)

我以512x512的比例推开带有面部的图片,并在加载应用程序时进行了识别。当用户识别出它时,它需要1秒钟。

有关咨询:

prepareFaceDetector() {
      let base_image = new Image();
      base_image.src = "/static/img/startFaceDetect.jpg";
      base_image.onload = function() {
        const useTinyModel = true;
        const fullFaceDescription = faceapi
          .detectSingleFace(base_image, new faceapi.TinyFaceDetectorOptions())
          .withFaceLandmarks(useTinyModel)
          .withFaceDescriptor()
          .run()
          .then(res => {
            console.log("--------> " + JSON.stringify(res));
          });
      };
}