【发布时间】:2019-08-12 22:22:34
【问题描述】:
我正在为人脸识别系统构建一个原型,在编写算法时,我有几个问题。
算法:
收集一对 (A(i),P(i),N(i)) - 组的锚点,在 XYX 公司工作的员工的正面、负面图像。
-
使用梯度下降训练三元组损失函数来学习 CNN 参数。实际上,在这里我正在训练一个Siamese network(在 2 个不同的输入上运行两个相同的 CNN 的想法[一次在 A(i)-P(i) 和下一个 A(i)-N(i)] 上)然后比较他们)。
-
现在,创建一个数据库,您将在其中存储 XYX 公司员工的每个培训图像的编码!
简单地通过训练好的CNN进行前向传递,并将每张图像的对应编码存储在数据库中
-
在测试时,你有一个 XYX 公司员工的形象和一个局外人的形象!
您将通过 CNN 传递两个测试图像并获得相应的编码!
-
现在,问题来了,您如何找到数据库中测试图片编码和所有训练图片编码之间的相似性?
第一个问题,你会做余弦相似度还是我需要做其他事情?你能增加更多的清晰度吗?
第二个问题,另外,在效率方面,您将如何处理数据库中存在 100,000 名员工培训图片编码以及您需要的每个新人的情况查看这 100,000 个编码并计算余弦相似度并在
- 第三个问题如果我们使用方法(Image-->CNN-->SoftMax--> output)通常用于人脸识别任务,每次有新人加入您的组织时,您都需要重新训练您的网络,那就是为什么这是一个不好的方法!
这个问题可以通过使用第二种方法来缓解,其中我们在一对员工图像上使用学习距离函数“d(img1,img2)”,如上文第 1 点到3。
- 我的问题是,如果有新员工加入组织,当这个学习距离函数根本没有在训练集中使用时,它如何能够泛化?测试和训练集的数据分布变化不是问题吗?这方面的任何建议
谁能帮助理解这些概念性故障?
【问题讨论】:
标签: deep-learning computer-vision conv-neural-network face-detection face-recognition