【问题标题】:Why OpenCV face detection recognition the faces for untrained face?为什么OpenCV人脸检测识别未经训练的人脸?
【发布时间】:2017-08-29 15:57:40
【问题描述】:
我使用“haarcascade_frontalface_default.xml”为人 A 训练了 472 张独特的图像以进行人脸识别。
虽然我正在尝试为我训练过的相同图像检测同一个人 A 的面部,但我得到了 20% 到 80% 的置信度,这对我来说很好。
但是,我也获得了 20% 到 80% 的人 B 的置信度,我没有将其包括在训练图像中。为什么在我进行人脸检测时会发生在 B 身上?
我使用的是 python 2.7 和 OpenCV 3.2.0-dev 版本。
【问题讨论】:
标签:
python-2.7
opencv3.0
face-detection
face-recognition
opencv3.1
【解决方案1】:
我想在你的问题中你实际上并不是指检测,而是识别,你必须知道这两件事之间的区别:
1-detection不区分人,它只是根据之前训练的haarcascade检测一个人的面部形状
2-识别是您首先检测到一个人,然后尝试将该人与您裁剪和对齐的图片数据库区分开来的情况,我建议您按照 philipp wagner 教程进行操作。
【解决方案2】:
这是因为 Haar-cascade Detection 用于检测具有相同特征集的对象。 '
尽管 face B 与 face A 不同,但它们具有相同的特征;两只眼睛,一只鼻子和一张嘴,因此对A和B的信心是一样的。仅使用 Haar Cascades 不足以区分不同的面孔。
我推荐阅读Viola-Jones的原论文。