人脸识别:每个人的所有图像是不是必须相同计数?

Posted

技术标签:

【中文标题】人脸识别:每个人的所有图像是不是必须相同计数?【英文标题】:FaceRecognition: Does all the images per person must be the same count?人脸识别:每个人的所有图像是否必须相同计数? 【发布时间】:2017-12-10 01:15:36 【问题描述】:

我想知道,在 Eigen/Fisher/LBPH FaceRecognizer 中每个人拥有相同数量的图像(例如:10 张图像/人)来训练人脸是否重要?或者它可以是不同的计数(person1:10 张图片,person2:20 张图片,...)

【问题讨论】:

【参考方案1】:

对于 Eigen/Fisherfaces,最安全的答案是必须平衡每个类的数据集量。虽然一个类只缺少一些图像可能是可以的,但如果一个类的图像比其他所有图像多一个数量级,那么肯定会导致问题。我猜,对于每项任务来说,可容忍的失衡都是因人而异的。

归根结底,上述每个算法都属于从训练数据集中寻找最近的邻居来查询图像。 Eigen/Fisherfaces 在整个给定数据集上进行训练,计算数据集图像变化最大的向量。一个类的代表过多或过少都会导致模型不平衡,从而无法充分发挥作用。

相反,LBPH 并未在整个数据集上进行训练。它独立地分析数据集中的每个图像,并将查询图像分别与每个图像进行比较。因此,数据集的全面性和代表性在这里比图像数量更重要。

OpenCV 有an intro to inner workings 的这些算法。

【讨论】:

谢谢,先生!还有一个我想问你,我们如何为这些算法设置一个好的阈值,用于确定已知和未知的面孔。如果我们设置最大值(Double.Max),那么预测结果总是为正的,那么区分已知和未知的人脸是有问题的。如果你有什么办法,请给我建议!提前致谢! 阈值是最常见(也是最直接)根据经验设置的。我建议收集另一个您希望不被识别的随机未知面孔数据集,然后调整阈值(手动或通过迭代),以便识别大多数已知面孔而大多数未知面孔不被识别。 你的意思是我测试识别训练过的人脸和未训练过的人脸并查看它们返回的阈值? 我的意思是:for (double thresh = 0; thresh < DBL_MAX; thresh += step) /*run recognition with this threshold and count false negatives (for known faces dataset) and false positives (for unknown faces)*/ 。然后选择导致数据集错误识别次数最少的阈值。

以上是关于人脸识别:每个人的所有图像是不是必须相同计数?的主要内容,如果未能解决你的问题,请参考以下文章

人脸识别原理及处理流程

人脸识别 介绍

秒懂算法 | 基于主成分分析法随机森林算法和SVM算法的人脸识别问题

吴恩达-深度学习-课程笔记-14: 人脸识别和风格迁移( Week 4 )

智能门锁人脸识别技术的原理是怎样的?

人脸识别怎么用