在面部 API 中.js第一次调用检测照片大约需要 10 秒,然后所有后续检测需要几毫秒。
有没有办法在开始检测之前调用一些函数来准备并避免这种初始延迟?考虑到用户需要执行操作(单击按钮(才能启动人脸检测。
我已经在执行启动的启动加载。根据代码。
应用程序初始化((
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);
});
我以 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));
});
};
}