【问题标题】:Blurry faces in open CV2 face detection开放式 CV2 人脸检测中的模糊人脸
【发布时间】:2020-09-06 17:28:58
【问题描述】:

我在 Python 中使用 Open CV2 人脸检测。它工作得很好,但经常会发现虽然它们确实是人脸,但仍然模糊得没有用的人脸。它成功地找到了无法识别为男性或女性、成人或儿童但仍清晰的人脸的面孔。

检测到无法识别的面部并不是有用的结果,但我不知道如何以编程方式阻止这些结果,或者确定应该忽略它们。

我目前唯一的方法是忽略任何小于某个阈值的人脸,但我仍然会得到一些大的模糊人脸。

有什么建议吗?我正在使用 haarcascade_frontalface_alt_tree.xml 进行检测。

【问题讨论】:

  • 所以你不高兴你的代码太擅长检测人脸? opencv应该怎么知道脸对你没用?在我看来,这与说人脸检测应该拒绝你不认识的人的脸没什么不同——也就是说,这取决于你的代码来实现它。也许在面部区域尝试pyimagesearch.com/2015/09/07/blur-detection-with-opencv
  • 我不觉得你的评论很有用。检测到一张看起来像 5 岁儿童画的细节太少的人脸是成功的人脸检测,但对人脸识别的目标毫无用处。我希望找到的是一个分数,它可以衡量一张脸的细节水平,以表明最终识别它的可能性。

标签: python cv2 facial-identification


【解决方案1】:

基于深度学习的面部检测器(例如 ssd 或 mtcnn)也会返回置信度分数。

deepface 封装了这些最先进的人脸检测器。

#!pip install deepface
from deepface import DeepFace
backends = ['ssd', 'mtcnn']
detected_face = DeepFace.detectFace("img.jpg", detector_backend = backends[0])

在这里,ssd expexts 90% 的置信度得分。那会解决你的问题。

【讨论】:

  • 感谢您的建议。我一定会研究 deepface。
【解决方案2】:

如果您的问题是检测男性、女性或儿童的面孔,您需要输入性别图像并训练您的程序。它涉及很多编程,但可以通过opencv轻松解决。您需要使用数千张图像来训练您的模型(项目)以确保准确性。

如果你只想检测某些人脸,你需要做同样的事情,但是用你想检测的人脸图像训练你的模型.....

【讨论】:

  • 也许我的意思不是很清楚。我对确定一张脸是男性还是女性、成人还是儿童没有任何兴趣。我试图指出,检测一张细节太少以至于人类甚至无法分辨它是男性/女性/成人/儿童的面部是没有用的(至少对我而言),因为面部检测不是目标——这只是迈向人脸识别的一步。我正在寻找一个分数,它表明面部有足够的细节可以识别。
猜你喜欢
  • 2018-08-04
  • 1970-01-01
  • 1970-01-01
  • 2019-11-18
  • 1970-01-01
  • 2012-04-17
  • 2013-09-24
  • 1970-01-01
  • 2019-02-27
相关资源
最近更新 更多