Улучшить скорость первого обнаружения в face-api.js? - PullRequest
0 голосов
/ 26 мая 2019

В 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 голосов
/ 04 июня 2019

Я нажал на картинку с лицом, в пропорциях 512х512 и сделал распознавание при загрузке приложения.Когда пользователь распознает его, это займет 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));
          });
      };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...