我在哪里可以找到最好的haar cascades xml来检测正面?

时间:2014-08-04 10:57:26

标签: opencv haar-classifier

我正在使用OpenCV来检测相机拍摄的照片中的脸部。但我意识到有些面孔没有正面,眼睛也没有聚焦在相机上。 我在哪里可以找到只用于正面而没有任何瘦度的haar级联xml文件,并且眼睛必须专注于相机。有人有像这样的xml文件吗?请帮帮我。

也许我的英语不好。所以,如果你不明白我在这里提到的。请让我知道,我会更改它以使其更清楚地理解。希望你帮帮我。非常感谢你。

2 个答案:

答案 0 :(得分:4)

所以我的答案是这样的:默认情况下,OpenCV提供两个用于检测面部的分类器:正面和轮廓面。所以如果我理解正确的话,你想要检测一下:

  1. 不一定是正面的
  2. 眼睛不专注于相机。
  3. 使用正面哈尔分类器很容易实现条件2,这意味着您可以使用默认情况下在opencv中提供的一个。对于条件1,您可以尝试使用轮廓检测​​器。

    其他可能性是将检测器用于耳朵检测器等其他部位。如果您检测到耳朵,则很可能暗示此耳朵属于您想要检测的轮廓面。

    我的最后一个(但至少是机器人)的建议是,当你尝试的所有解决方案都失败时,你可以尝试学习你自己的haar分类器。这不是一项艰巨的任务,您可以在线查找(特别是在stackoverflow上)有关它的大量信息,例如there

    编辑:(在评论澄清问题后):

    首先让我在数字上更多地说明你的要求,因为我不知道正面在头部姿势方面对你意味着什么。如果你的意思是正面,我们说倾斜和平移角度属于区间[-15;因此,这解决了opencv正面分类器(这些数字大致由我迄今为止所做的所有经验测试给出)。我的意思是如果脸不是正面的(即双眼或嘴不可见/部分可见),分类器将不会检测到它。换句话说,如果我给出的那些角度对你没问题,只需使用默认的分类器。如果没有,请参阅下面的段落。

    关于要求人们看相机的第2个要件。这是默认分类器无法区分的东西 - 它已经在各种人脸上学习,而不仅仅是你想要实现的那些。而且我很确定你很难在互联网上找到这样的分类器,因为它是如此具体的任务。但我可以向你保证,你可以尝试学习自己的面部分类器,它可能会很好用。如果您取得了良好的效果,请告诉我们。

    EDIT2:(关于仅检测头部的分类器,仅当倾斜和平移为零度时)

    我不认为这样的分类器存在。根据我的经验,即使它存在,为某人的目的明确准备这样的分类器的人并没有与所有人分享,因为它是如此具体的要求。并且需要一些时间来准备好的haar分类器(你需要几百个正面的例子,面部有手动裁剪的平移和倾斜零点)所以我认为这是解决问题的一种方法,训练你自己的探测器。

    让我建议另一种方法,它是关于头部姿势估计。这是一种从面部图像确定所有姿势角度的方法。存在许多适合您的要求的算法 - 运行时,独立于人,可以回答倾斜和平移角是否接近0的问题。它们不需要任何类型的学习,可以从算法描述中直接编码。但是,你需要一些愿意进入这篇文章的研究,但我认为实现头部姿势估计而不是学习你自己的haar分类器可能更好。

    EDIT3:(关于头部姿势估计)

    这不是那么复杂的任务。在我的硕士论文here中,我证明了一个人可以构建实时头部姿势估计跟踪器,它是人不变的,只使用关于面部标志(眼睛,嘴和鼻尖)位置的几何假设。这会立即给出头部姿势估计。您还可以启动with this articlethere's文章摘要。

答案 1 :(得分:0)

在官方的opencv github页面上的链接在这里:

https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml

易于使用且相当准确。