use*_*314 1 opencv haar-classifier
我正在使用 OpenCV 来检测相机捕获的图片中的人脸。但我意识到有些面孔不是正面的,眼睛也没有聚焦在相机上。我在哪里可以找到 haar Cascades xml 文件,该文件仅用于正面,没有任何倾斜,并且眼睛必须聚焦在相机上。有人有这样的xml文件吗?
所以我的答案是这样的:默认情况下OpenCV提供了两个用于检测人脸的分类器:正面和侧面。因此,如果我理解正确的话,您希望检测以下面孔:
条件2很容易用正面haar分类器来满足,这意味着你可以使用opencv默认提供的分类器。对于条件 1,您可以尝试使用轮廓检测器。
另一种可能性是使用面部其他部分的检测器,例如耳朵检测器。如果您检测到一只耳朵,则可以很好地暗示这只耳朵属于您想要检测的侧脸。
我最后(但最不重要)的建议是,当您尝试的所有解决方案都失败时,您可以尝试学习自己的 haar 分类器。这不是一项艰巨的任务,您可以在网上(尤其是在 stackoverflow 上)找到有关它的很多信息,例如那里
编辑:( 在评论澄清问题之后):
首先让我用数字更详细地说明您的要求,因为我不知道正面脸对您的头部姿势意味着什么。如果你的意思是正面,比如倾斜和平移角度属于区间 [-15; 15] 度,因此这解决了 opencv 正面分类器的问题(这些数字是由我迄今为止所做的所有经验测试大致给出的)。我的意思是,如果脸部不是正面(即双眼或嘴巴不可见/部分可见),分类器将无法检测到它。换句话说,如果我给出的这些角度适合您,则只需使用默认分类器即可。如果没有,请参阅下面的段落。
关于第二个要求,要求人看相机。这是默认分类器无法区分的东西 - 它是在不同的人脸上学到的,而不仅仅是您想要实现的人脸。我很确定你很难在互联网上找到这样的分类器,因为它是非常具体的任务。但我可以向你保证,你可以尝试学习自己的面部分类器,它可能会效果很好。如果您取得了好的成绩,请告诉我们。
EDIT2:(关于仅检测头部且仅当倾斜和平移为零度时的分类器)
我认为这样的分类器不存在。根据我的经验,即使存在,明确为自己的目的准备这样的分类器的人也不会与所有人分享,因为它是非常具体的要求。准备好的 haar 分类器需要一些时间(您需要数百个带有手动裁剪平移和倾斜零点的面部的正面示例),所以我认为这是解决您问题的一种方法,训练您自己的检测器。
让我建议另一种方法,它是关于头部姿势估计的。这是一种从面部图像确定所有姿势角度的方法。有许多算法适合您的要求 - 运行时、独立于人,可以回答倾斜和平移角度是否接近 0 的问题。它们不需要任何类型的学习,可以直接从算法描述中编码。然而,你需要某种愿意进入本文的研究,但我认为实现头部姿势估计可能比学习你自己的 haar 分类器更好。
EDIT3:(关于头部姿势估计)
这不是那么复杂的任务。在我的硕士论文中,我证明了可以仅使用有关面部标志(眼睛、嘴巴和鼻尖)位置的几何假设来构建实时头部姿势估计跟踪器,该跟踪器具有人不变性和鲁棒性。这会立即给出头部姿势估计。您也可以从这篇文章开始,这里有文章的摘要。
| 归档时间: |
|
| 查看次数: |
16927 次 |
| 最近记录: |