9

我使用 OpenCVs HAAR 级联人脸检测开发了一个人脸检测应用程序。该算法工作正常,但每隔一段时间它会在墙上或其他不是面孔的东西上找到图案。
我想对怀疑为面孔的对象进行额外检查,但我只想对我不相信它们是面孔的对象进行检查。有没有办法为 HAAR 级联人脸检测检测到的人脸获得“置信度”级别?

4

4 回答 4

8

OpenCV 通过 CascadeClassifier 类的函数“detectMultiScale”中的参数“weights”提供置信度,您需要将标志“outputRejectLevels”设置为 true

于 2014-05-07T09:01:04.157 回答
3

OpenCV 实际上为任何特定对象找到了多个结果,每个检测到的区域在很大程度上相互重叠;然后将它们组合在一起并形成“邻居数”计数。这个计数就是所谓的信心。

执行对象检测时,其中一个参数是返回命中之前的最小邻居。增加它会减少误报,但也会减少可能检测到的人脸的数量。

于 2012-05-10T08:26:12.047 回答
1

为什么不对同一张图像运行多个 haar 级联(训练不同),看看它们是否产生相似的结果?让他们投票,就像它一样。因此,如果只有一个级联找到给定的面孔而其他级联没有,那将使您对给定的面孔失去信心。

我能够实时在 iPhone 视频源上同时运行 3 个级联,因此在许多正常情况下性能应该不是问题。更多信息: http ://rwoodley.org/?p=417

于 2013-05-22T19:39:28.733 回答
0

不是您问题的直接答案,但这可能有助于减少错误检测。

您可以通过调整 MinNeibhbours、CV_HAAR_FIND_BIGGEST_OBJECT 和 Size 值来减少错误检测。

int MinNeighbours = 7;

face_cascade.detectMultiScale(frame_gray, faces, 1.1, MinNeighbours, CV_HAAR_FIND_BIGGEST_OBJECT, Size(60, 60));

于 2014-05-27T16:21:06.093 回答