首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >利用OpenCV/EmguCV提高人脸检测性能

利用OpenCV/EmguCV提高人脸检测性能
EN

Stack Overflow用户
提问于 2011-07-15 15:44:24
回答 3查看 5.9K关注 0票数 6

我目前正在成功地使用EmguCV (OpenCV C# wrapper)实时检测人脸(网络摄像头).我大约有7个FPS。

现在我希望改进性能(并节省CPU周期),我正在寻找选项,以下是我的想法:

  • 检测人脸,提取人脸的特征,并尝试在下一帧中找到这些特征(使用SURF算法),因此这就变成了一种“人脸检测+跟踪”。如果找不到,请再次使用人脸检测。
  • 检测人脸,在下一帧中,尝试在人脸先前所在的ROI中检测人脸(即在图像的较小部分中查找人脸)。如果没有找到这张脸,再试着在整个图像中寻找它。
  • 侧重点:如果没有检测到2-3帧的人脸,并且图像中没有移动,那么在检测到运动之前,不要再尝试检测人脸。

你对我有什么建议吗?

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2011-07-15 18:06:08

  • 对于冲浪算法,你可以试一试,但我不确定它是否能提供面部相关的特征,也许是在眼睛周围,或者如果你离得很近,皮肤有不规则的地方,或者如果分辨率足够的话,可能会再次出现在头发上。而且,冲浪并不是真的快,如果你想节省CPU时间的话,我只想避免做更多的计算。
  • roi是个好主意,你可以选择它,它不会节省很多CPU,但是你可以尝试,因为camshift是一个非常轻量级的算法。再次,我不确定这是否真的相关,但你在你的第二篇文章中有一个好主意:最小化搜索区域.
  • 侧面的想法对我来说似乎很好,你可以尝试检测运动(例如全球运动),如果没有那么多,那么就不要再尝试检测你已经检测到的东西……你可以试着用运动模板来做这件事,因为你知道从meanshift或面部检测到的水晶石.一个非常简单,重量轻,但不稳健的模板匹配的框架n-1和帧n也可以给你一个系数,衡量这两个框架之间的某种相似性,你可以说,低于一定的阈值,你激活人脸检测.为什么不呢?如果C#包装器具有matchTemplate()等效函数,则应该需要5分钟才能实现.

如果我有更好的(更深的)想法,我会回来的,但现在,我刚从工作中回来,很难再想出更多.

朱利安

票数 3
EN

Stack Overflow用户

发布于 2011-07-16 16:14:01

你介绍的所有解决方案似乎都是明智和合理的。然而,如果您使用Haar进行人脸检测,您可能会尝试创建一个梯级较少的级联。虽然20阶段是推荐的人脸检测,10-15可能是足够的。这将显著改善业绩。关于创建自己的级联的信息可以在教程: OpenCV训练(基于Haar类特征的增强分类器级联快速目标检测)上找到。

再一次,使用冲浪是一个好主意。您也可以尝试P学习:基于结构约束的二进制分类器的引导。有有趣的视频在YouTube上呈现这种方法,试图找到他们。

票数 3
EN

Stack Overflow用户

发布于 2012-04-29 05:49:12

这不是一个完美的答案,而是一个建议。

在我在CS的B.Tech的最后一学期的数字图像处理课程中,我学习了位位置切片,以及图像仅仅是它的MSB平面信息如何提供了几乎70%的有用图像信息。所以,你将处理几乎原始的图像,但只有原来的八分之一的大小。

因此,虽然我还没有在我自己的项目中实现它,但我想知道它,以加快人脸检测。因为后来,眼睛检测、瞳孔和眼角检测也占用了大量的计算时间,使整个程序运行速度变慢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6709673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档