【问题标题】:How to compare probe face images with gallery images with feature extractor | Python如何使用特征提取器将探测人脸图像与图库图像进行比较 | Python
【发布时间】:2020-10-16 13:19:24
【问题描述】:

我有一个包含 1500 张人脸图像的数据集,我选择了 150 张图像作为探测。 现在有 150 张图片在探针文件夹中,其他图片在图库文件夹中。

我有 facenet 特征提取器,它从图像中提取特征并保存到 .npy 数组中以计算欧几里德距离。

我如何将这 150 张图像与整个画廊文件夹进行比较,并绘制 rank-1,5 和 10 以及相似图像之间的准确度图并计算 mAP?

【问题讨论】:

    标签: machine-learning compare feature-extraction facenet


    【解决方案1】:

    首先,我将对测试图像运行特征提取器。然后计算每 150 张图像特征提取结果(假设是训练集)与测试图像特征提取结果之间的差异。

    all_res = []
    for set in train sets : 
       res = set - test_res
       res = sum(res)
       all_res.append(res)
    all_res = all_rest.sort()
    

    所以all_res 列表中最小的索引是第一个排名,最大的一个是最新的排名。我希望它可以成为很好的参考。您也可以使用 sklearn 来评估您的模型,例如 SVC、accuracy_score 等。

    【讨论】:

      【解决方案2】:

      假设 source 文件夹中存放 1500 张人脸图像,target 文件夹中存放 150 张人脸图像。

      #!pip install deepface
      from deepface import DeepFace
      targets = ["img1.jpg", "img2.jpg", "img150.jpg"]
      resp = DeepFace.find(img_path = targets, db_path = "source", model_name = "Facenet")
      

      顺便说一句,您可以设置 Facenet、VGG-Face、OpenFace、DeepFace 或 DeepID 作为模型名称。

      响应对象将返回熊猫数据框列表。每个数据帧从最相似的一个到最不相似的一个进行排序。这就是为什么,我会得到第一个。

      index = 0
      for df in resp:
         if df.shape[0] > 0:
            #print(targets[index], ": ", df.head(1))
             df.to_csv("%s" % (targets[index]), index = False)
         index = index + 1
      

      这将匹配两个文件夹中的身份。

      【讨论】:

      • 它是否创建任何关于图像排名的 CSV 文件?喜欢哪一个最相似?
      • 你可以做到。我更新了上面评论中的代码。
      猜你喜欢
      • 2012-07-24
      • 1970-01-01
      • 2015-04-06
      • 2015-02-07
      • 2018-03-18
      • 2014-04-04
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多