独立于姿势的人脸检测

Pose independent face detection

本文关键字:检测 于姿势 独立      更新时间:2023-10-16

我正在做一个项目,我需要在非常混乱的视频中检测人脸(从以自我为中心的角度录制,所以你可以想象…)。人脸的偏航角可以在-90到+90之间变化,俯仰角几乎有相同的变化(嗯,由于人体的限制,稍微低一点…),还可能有一些滚转变化。

我花了很多时间寻找一些独立于姿势的人脸检测器。在我的项目中,我使用OpenCV,但OpenCV人脸检测器甚至没有达到我需要的检测率。它在正面上有很好的结果,但在侧面上几乎没有结果。使用在配置文件图像上训练的haarcascade.xml文件并没有真正的帮助。将正面和侧面级联相结合会产生稍好的结果,但仍然没有达到我所需要的水平。

由于巨大的计算(或时间)需求,训练我自己的haarcascade将是我最后的资源。

到目前为止,我所要求的是关于这件事的任何帮助或建议。我可以使用的人脸检测器的要求是:

  • 非常好的检测率。我不介意很高的假阳性率,因为在我的视频中使用一些时间一致性,我可能会消除大部分假阳性
  • 用c++编写,或者可以在c++应用程序中使用

到目前为止,实时性还不是问题,检测率是我现在关心的一切。

我看过很多论文都取得了这些结果,但我找不到任何可以使用的代码。

我真诚地感谢你所能提供的任何帮助。

也许不是一个答案,但太长了,无法放入注释中。

您可以使用opencv_traincascade.exe来训练一个新的检测器,该检测器可以检测更广泛的姿势。这篇文章可能会有所帮助。http://note.sonots.com/SciSoftware/haartraining.html.我已经设法通过使用feret数据集训练了一个在-50:+50偏航范围内敏感的探测器。对于我的情况,我们不想检测纯粹的侧面,因此相应地准备了训练数据。由于feret已经提供了方便的姿态变化,因此可能会训练一个与您的规范有些接近的检测器。如果你使用lbp功能,时间不是问题,训练最多在4-5小时内完成,通过设置适当的参数和使用更少的训练数据,训练速度会更快(15-30分钟)(有助于确定探测器是否会产生你期望的输出)。