Probé comparar en algunas imágenes y funciona, cuando probé en 6500 imágenes no funciona. ¿Qué echo de menos? Obtengo este resultado:
{ "sucesss": true, "bestMatchPerson": { "_label": "unknown", "_distance": 0.653006573156487 } }Aquí está el ejemplo de código que carga el modelo, carga la imagen desde el disco, crea un comparador de caras y encuentra la mejor coincidencia
// 1, Load model faceapi.env.monkeyPatch({ Canvas: canvas.Canvas, Image: canvas.Image, ImageData: canvas.ImageData }); const faceDetectionNet = new faceapi.FaceDetectionNet(); const modelPath = '../../node_modules/@vladmandic/face-api/model'; await faceDetectionNet.loadFromDisk(path.join(__dirname, modelPath)); await faceapi.nets.ssdMobilenetv1.loadFromDisk(path.join(__dirname, modelPath)); await faceapi.nets.faceLandmark68Net.loadFromDisk(path.join(__dirname, modelPath)); awai t faceapi.nets.faceRecogn itionNet.loadFromDisk(path.join(__dirname, modelPath)); // 2.Load image from disk console.log(imagePath); const referenceImage = await canvas.loadImage(imagePath); // 3.Create face matcher const singleResult = await faceapi .detectSingleFace(referenceImage) .withFaceLandmarks() .withFaceDescriptor() //4.Find best match let labeledFaceDescriptors = singeltonCache.get("BbtFaceMatcher"); let bestMatchPerson ='There is no people to compare to'; if(labeledFaceDescriptors){ let matcher = new faceapi.FaceMatcher(labeledFaceDescriptors); bestMatchPerson = matcher.findBestMatch(singleResult.descriptor); utils.logger.log({ level: 'info', message: `compare all: ${"The results " + bestMatchPerson.toString()}`, label: 'faceRecognition.ts' }); } else{ utils.logger.log({ level: 'info', message: `compare all: There is no people to compare to}`, label: 'faceRecognition.ts' }); }