我正在为人脸识别系统构建原型,并在编写算法时遇到了一些问题。
算法:
收集(A(i),P(i),N(i))对-在XYX公司工作的员工的锚,正,负图像的集合。
使用梯度下降训练三重损失函数来学习CNN参数。实际上,在这里,我正在训练Siamese network(在两个不同的输入上运行两个相同的CNN的想法(一次在A(i)-P(i)上,然后在下一个A(i)-N(i)上运行),然后进行比较)。
现在,创建一个数据库,您将在其中存储XYX公司员工的每个培训图像的编码!
只需经过训练后的CNN,并将每个图像的相应编码存储在数据库中
在测试时,您具有XYX公司员工的形象和局外人的形象!
您将通过CNN传递两个测试图像,并获得相应的编码!
现在,问题来了,您将如何在数据库中找到测试图像编码和所有训练图像编码之间的相似性?
第一个问题,您要进行余弦相似度还是我需要做其他事情?您可以在上面添加更多的清晰度吗?
第二个问题,此外,在效率方面,您将如何处理这样的情况:您的数据库中有100,000名员工进行培训图片编码,并且需要每个新人员查找这些100,000种编码并计算余弦相似度,并在2秒内给出结果?这方面有什么建议吗?
可以通过使用第二种方法来缓解此问题,其中,我们在要点1到5所述的一对员工图像上使用学习的距离函数“ d(img1,img2)”。 3 。
- 我的问题是在新员工加入该组织的情况下,当完全不在训练集中使用该学习的距离功能时,如何将其推广?改变测试和训练集的数据分布不是问题吗?在这方面的任何建议
有人可以帮助您理解这些概念性故障吗?
答案 0 :(得分:0)
在对计算机视觉中的面部验证和识别/检测研究论文进行了一些文献调查之后。我想我已经回答了所有问题,所以我想在这里回答。
第一个问题,您会进行余弦相似度吗?您可以在上面添加更多的清晰度吗?
通过简单地计算试验与每个保存的火车图像enc之间的最小距离,即可找到它们之间的最小距离。
不保留阈值,例如0.7,并且最小距离是<0.7,返回员工的姓名,否则返回“不在数据库中错误!”。
第二个问题,同样,在效率方面,您将如何处理这样一个场景:在当前数据库中有100,000名员工进行培训图片编码,对于每个新员工,您都需要查看这100,000个编码并计算余弦相似度并在<2秒内给出结果?
第三个问题: -首先,我们通过最小化三重态损耗函数来学习深层CNN(Siamese n / w)的网络参数!
- 现在,假设这些模型参数一起至少可以代表任何人的脸!,因此,您将继续前进并通过网络,然后再使用,将“新人”编码保存在数据库中。答案1计算该人是否属于组织(人脸识别问题)。此外,在FaceNet论文中提到,我们保留了大约一百万张图像的保留集,其分布与我们的训练集相同,但是身份不相交。