在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);
});
答案 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));
});
};
}