人脸识别找不到人脸怎么办?

数据挖掘 机器学习 卷积神经网络 图像识别
2022-02-05 15:46:37

我目前正在实施一个 CNN 来识别人的身份,给出一个人的肖像照片。目标是最大化 sklearn 中的 clf.score 函数,该数据库由 70 个不同个体的 144 张图像组成。该程序将在我无权访问的相同 70 个人的图像数据库上进行测试。

对于大部分图片,我的面部识别算法(openCV)会检测并裁剪出背景,只留下人脸,但在某些情况下,它找不到人脸。

什么解决方案将返回最佳分类分数?

我考虑过的选项是:

  • 保留图片原样(不删除无用的背景信息)
  • 裁剪预定义区域(可能会裁剪掉部分面部)
2个回答

我猜你有一个训练数据数量少的学习问题。我建议您采用两步解决方案。

  1. 首先,您需要进行错误分析。找到分类器无法识别的图像,并尝试与分类器正确分类的图像进行比较。找到你的分类器在它们上做得不好的特征,并尝试添加你的分类器可以区分的特征,我的意思是试着找出你的分类器在这些图像上出错的原因,以及为什么你在识别过程中没有出错他们。尝试添加您关心但分类器不关心的那些特征并将它们添加为输入。
  2. 尝试使用数据增强来增强您的数据,以解决您犯的错误和没有犯的错误。这里有一个重要的事实。不要改变数据的分布。我的意思是,如果一个班级的人口数量是另一个班级的两倍,那么在扩充后尽量保持这个比例。原因是,也许在使类的数量相等之后,您会减少贝叶斯错误,但在类的边界处,答案将是随机的。

对于大部分图片,我的面部识别算法(openCV)会检测并裁剪出背景,只留下人脸,但在某些情况下,它找不到人脸。

在此处输入图像描述

解决您的问题的另一种解决方案是使用 D-lib 面部标志点而不是 OpenCV haar 级联。D-lib 面部标志在面部提供 68 个不同的点,因此根据您考虑的选项,您可以准确地裁剪感兴趣区域(面部)。

这是示例代码的链接。