首页 > 解决方案 > 查找与@vladmandic/face-api 的最佳匹配不起作用

问题描述

我对几张图片进行了比较测试,它可以工作,当我在 6500 张图片上进行测试时,它不起作用。我想念什么?我得到这个结果:

 {
            "sucesss": true,
            "bestMatchPerson": {
                "_label": "unknown",
                "_distance": 0.653006573156487
            }
        }

这是加载模型、从磁盘加载图像、创建面部匹配器并找到最佳匹配的代码示例

    // 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'
     });
   }

标签: javascriptmatchface-detectionface

解决方案


推荐阅读