视频网络自由人脸检测算法

时间:2012-09-08 14:37:47

标签: opencv machine-learning

我正在开发一个应用程序,它需要使用放置在桌面高度的网络摄像头(稍微偏离用户侧面)来检测视频流中人脸的位置。

我已经实现了OpenCV的版本(使用他们的Haar检测)并且它可以正常运行...问题是如果用户将头转向的话,它往往会失去面部的位置一边(或抬头)。

由于网络摄像头正坐在桌面上,因此它以30度角倾斜。 OpenCV检测算法使用完全正面图像进行训练,但不使用像我正在使用的那些直角图像。我知道OpenCV也有一个可以使用的配置文件Haar文件..但是根据我的研究,结果在配置文件检测上看起来很混杂。另外,我实际上无法控制图像的背景或光照......所以这有时也会影响OpenCV检测算法的功效。

所以,我想我要问的是......是否有其他人脸检测算法(希望免费,因为这是我大学研究的一部分),这对于检测此类设置的面部更好?看起来有些内置的网络摄像头(适用于Mac和PC)实际上具有相当强大的检测面部算法(然后在脸上覆盖俗气的卡通图像)......但它们似乎无论背景还是照明都能很好地工作。你有什么建议? 感谢。

2 个答案:

答案 0 :(得分:1)

出于研究目的,您可以在OpenCV中使用Haar级联,如果您想要商业化,则情况会有所不同(在这种情况下,您需要考虑使用LBP级联)。请务必在参考文献中引用Viola-Jones论文。

为了改善面部检测的结果,您有几条路径:

  • 单个图像检测:您可以将旋转图像发送到正面级联,以便在不训练自己的级联的情况下解决一些变化
  • 单个图像检测但更多工作):在更接近应用程序的操作条件下训练自己的级联
  • 视频流中的稳定性(如在网络摄像头和公司中):这是通过在面部检测周围添加一层跟踪来实现的。根据您对该主题的了解,您可以使用自己的过滤器,享受OpenCV粒子或卡尔曼滤波器的乐趣,在面部位置上实现简单的一阶或二阶低通滤波器或在检测到的面上实现PID跟踪器...... / LI>

任何这些跟踪过滤器都会在处理视频流时增强您的结果。

答案 1 :(得分:0)

使用CLM-framework进行准确的实时人脸检测并进行地标检测。 实际系统示例:http://youtu.be/V7rV0uy7heQ

您可能会发现它很有用。