姿势独立人脸检测
Posted
技术标签:
【中文标题】姿势独立人脸检测【英文标题】:Pose independent face detection 【发布时间】:2013-08-05 08:03:27 【问题描述】:我正在做一个项目,我需要在非常混乱的视频中检测人脸(从以自我为中心的角度录制,所以你可以想象......)。面部的偏航角可以在 -90 到 +90 之间变化,俯仰角度几乎相同(嗯,由于人体的限制而稍微低一点..),也可能有一些滚动变化。
我花了很多时间寻找与姿势无关的人脸检测器。在我的项目中,我使用的是 OpenCV,但 OpenCV 人脸检测器甚至没有接近我需要的检测率。它在正面效果非常好,但在侧面效果几乎为零。使用在个人资料图像上训练的 haarcascade .xml 文件并没有真正的帮助。结合正面和轮廓级联会产生稍微更好的结果,但仍然不符合我的需要。
自巨大的计算(或时间)需求以来,训练我自己的 haarcascade 将是我最后的资源。
到目前为止,我要问的是有关此问题的任何帮助或建议。 我可以使用的面部检测器的要求是:
非常好的检测率。我不介意很高的误报率,因为在我的视频中使用一些时间一致性我可能能够摆脱其中的大多数 用 c++ 编写,或者可以在 c++ 应用程序中运行现在实时不是问题,检测率是我现在关心的一切。
我已经看到很多论文实现了这些结果,但我找不到任何可以使用的代码。
衷心感谢您能够提供的任何帮助。
【问题讨论】:
要获得可靠的人脸识别结果,您不需要功能最强大的计算机以及经过巧妙设计的算法或经过大量训练的系统,而是图像中的额外维度。 3D 图片(如果可用)将解决该任务。 我实际上对人脸识别并不感兴趣。我现在只需要检测。我将使用检测到的面部进行一些面部姿势估计,使用两种不同的 SVM(一种用于偏航,一种用于俯仰)。我在头部姿势估计数据集上训练了这些 SVM,它产生了非常有趣的结果。由于真实环境中人头姿势的复杂性,我无法在“真实”视频中获得足够的检测。 【参考方案1】:也许不是答案,但时间太长,无法发表评论。
您可以使用 opencv_traincascade.exe 来训练一个新的检测器,该检测器可以检测更多种类的姿势。这篇文章可能会有所帮助。 http://note.sonots.com/SciSoftware/haartraining.html。我已经设法通过使用 feret 数据集训练了一个在 -50:+50 偏航范围内敏感的检测器。就我而言,我们不想检测纯粹的侧面,因此相应地准备了训练数据。由于 feret 已经提供了方便的姿势变化,因此可以训练一个稍微接近您的规范的检测器。如果您使用 lbp 功能,时间不是问题,训练最多在 4-5 小时内完成,通过设置适当的参数和使用更少的训练数据,训练速度更快(15-30 分钟)(有助于确定检测器是否会产生您期望的输出)。
【讨论】:
谢谢,我会再等一会儿,然后我想我必须训练自己的级联..似乎这是最好的方法。以上是关于姿势独立人脸检测的主要内容,如果未能解决你的问题,请参考以下文章