1

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

我花了很多时间寻找一些与姿势无关的人脸检测器。在我的项目中,我使用的是 OpenCV,但 OpenCV 人脸检测器甚至没有接近我需要的检测率。它在正面效果非常好,但在侧面效果几乎为零。使用在个人资料图像上训练的 haarcascade .xml 文件并没有真正的帮助。结合正面和轮廓级联会产生更好的结果,但仍然不接近我需要的结果。

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

到目前为止,我要问的是有关此事的任何帮助或建议。我可以使用的面部检测器的要求是:

  • 很好的检出率。我不介意非常高的误报率,因为在我的视频中使用一些时间一致性我可能能够摆脱其中的大多数
  • 用 c++ 编写,或者可以在 c++ 应用程序中工作

实时性现在不是问题,检测率是我现在关心的一切。

我已经看到很多论文实现了这些结果,但我找不到任何可以使用的代码。

我真诚地感谢您能够提供的任何帮助。

4

1 回答 1

1

也许不是答案,但时间太长,无法发表评论。

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

于 2013-08-05T05:51:20.660 回答