独立于姿势的人脸检测
Pose independent face detection
我正在做一个项目,我需要在非常混乱的视频中检测人脸(从以自我为中心的角度录制,所以你可以想象…)。人脸的偏航角可以在-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分钟)(有助于确定探测器是否会产生你期望的输出)。
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 使用CMake检测支持的C++标准
- 当套接字连接断开时检测C/C++Unix
- c++r值引用应用于函数指针
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- C/C++预处理器是否可以检测一些编译器选项
- WMI检测进程创建事件-c++
- 如何仅使用对象名称打印特定于对象的成员
- 相当于LocaleMatcher的ICU4C
- 等<thing>效于char32_t
- 基于树莓pi的tensorflow lite量化ssd目标检测
- 类似于strcat()的函数出现问题
- 下面是我为检测链接列表中的循环而制作的代码
- 落砂模拟碰撞检测C++和SFML
- 我可以检测和更改 gcc/g++ 中结构的当前数据对齐设置吗?
- 为什么C++编译器没有检测到正确声明的类?
- 是否有适用于张量流对象检测 API 的C++包装器
- 在OSX上的Objective C或C++中检测文件夹访问(类似于fs_usage命令)
- 如何将光流矢量仅应用于检测到的圆
- 独立于姿势的人脸检测