如何从头开始构建人脸识别系统?

时间:2019-03-22 00:10:18

标签: deep-learning computer-vision conv-neural-network face-detection face-recognition

我正在为人脸识别系统构建原型,并在编写算法时遇到了一些问题。

算法:

  1. 收集(A(i),P(i),N(i))对-在XYX公司工作的员工的锚,正,负图像的集合。

  2. 使用梯度下降训练三重损失函数来学习CNN参数。实际上,在这里,我正在训练Siamese network(在两个不同的输入上运行两个相同的CNN的想法(一次在A(i)-P(i)上,然后在下一个A(i)-N(i)上运行),然后进行比较)。

      

    enter image description here   enter image description here   这些学习的参数将确保相同图像的平展n-dim编码之间的距离较小,而不同图像则较大。

  3. 现在,创建一个数据库,您将在其中存储XYX公司员工的每个培训图像的编码!

      

    只需经过训练后的CNN,并将每个图像的相应编码存储在数据库中

  4. 在测试时,您具有XYX公司员工的形象和局外人的形象!

      
        
    • 您将通过CNN传递两个测试图像,并获得相应的编码!

    •   
    • 现在,问题来了,您将如何在数据库中找到测试图像编码和所有训练图像编码之间的相似性?

           
          
      • 第一个问题,您要进行余弦相似度还是我需要做其他事情?您可以在上面添加更多的清晰度吗?

      •   
      • 第二个问题,此外,在效率方面,您将如何处理这样的情况:您的数据库中有100,000名员工进行培训图片编码,并且需要每个新人员查找这些100,000种编码并计算余弦相似度,并在2秒内给出结果?这方面有什么建议吗?

      •   
    •   
      如果使用方法(图像-> CNN-> SoftMax->输出),通常会在人脸识别任务中使用
    • 第三个问题,每次有新人加入您的组织时,您都需要重新培训网络,这就是为什么这种方法不好!
      
        
    • 可以通过使用第二种方法来缓解此问题,其中,我们在要点1到5所述的一对员工图像上使用学习的距离函数“ d(img1,img2)”。 3

    •   
      •   
      • 我的问题是在新员工加入该组织的情况下,当完全不在训练集中使用该学习的距离功能时,如何将其推广?改变测试和训练集的数据分布不是问题吗?在这方面的任何建议
      •   
    •   

有人可以帮助您理解这些概念性故障吗?

1 个答案:

答案 0 :(得分:0)

在对计算机视觉中的面部验证和识别/检测研究论文进行了一些文献调查之后。我想我已经回答了所有问题,所以我想在这里回答。

第一个问题,您会进行余弦相似度吗?您可以在上面添加更多的清晰度吗?

  • 通过简单地计算试验与每个保存的火车图像enc之间的最小距离,即可找到它们之间的最小距离。

  • 不保留阈值,例如0.7,并且最小距离是<0.7,返回员工的姓名,否则返回“不在数据库中错误!”。

第二个问题,同样,在效率方面,您将如何处理这样一个场景:在当前数据库中有100,000名员工进行培训图片编码,对于每个新员工,您都需要查看这100,000个编码并计算余弦相似度并在<2秒内给出结果?

    应该注意的是,在训练过程中使用了128维浮点矢量,但是可以将其量化为128字节而不会损失精度。因此,每个人脸都可以由128维字节向量紧凑地表示,这对于大规模聚类和识别非常理想。较小的嵌入可能会降低准确性,并且可以在移动设备上使用

第三个​​问题: -首先,我们通过最小化三重态损耗函数来学习深层CNN(Siamese n / w)的网络参数!

  • 第二,假设您已经在数以百万计的庞大数据集上训练了这些模型权重,这些权重既了解了诸如个人身份,性别等更高层次的特征,又了解了它们!以及与人脸相关的边缘等低级特征。
  
      
  • 现在,假设这些模型参数一起至少可以代表任何人的脸!,因此,您将继续前进并通过网络,然后再使用,将“新人”编码保存在数据库中。答案1计算该人是否属于组织(人脸识别问题)。此外,在FaceNet论文中提到,我们保留了大约一百万张图像的保留集,其分布与我们的训练集相同,但是身份不相交。
  •   
    第三,这两种技术的不同之处在于,我们在第一种技术中使用损失函数训练交叉模型权重:交叉熵softmax与第二种技术中的损失函数:三重损失函数!
相关问题