haar分类器的最佳参数

Posted

技术标签:

【中文标题】haar分类器的最佳参数【英文标题】:Optimal Parameters for haarclassifiers 【发布时间】:2014-04-29 20:31:31 【问题描述】:

我正在尝试使用提供的 xml 文件 haarcascade_frontalface_althogcascade_pedestrians.xml 检测人脸和行人。到目前为止,我可以得到一些检测,但是行人检测很差,人脸检测是平均的。我在 iphone 上使用 640x480 或 480x640 图像进行操作。我也可以使图像更大,但是处理速度更快。我也可能将处理移至服务器,但问题仍然存在。到目前为止,我正在这样做以获得结果。

Faces:下面的第一个甚至不起作用。它不会编译。

faceDetector.detectMultiScale(matgrey, faces, 1, 1, 2, 0|CV_HAAR_SCALE_IMAGE, cv::Size(30,30));

所以我使用了下面的函数调用。

faceDetector.detectMultiScale(matgrey, faces);

行人:

hog.detectMultiScale(rgbMat, found, 0, cv::Size(8,8), cv::Size(32,32), 1.05, 2);

我真的很想提高结果质量。我很好奇为此更改参数是否会增强结果。我想要最佳结果,所以处理时间不是一个大问题。

谢谢,任何反馈都会很棒。

【问题讨论】:

【参考方案1】:

对于人脸检测,您不能将第三个参数(即scaleFactor - 指定每个图像比例缩小多少图像大小的参数)设置为1,您将无法在其中搜索人脸多尺度方式,因为它将无法重新调整大小。尝试将其更改为1.05(即默认值)或其他。

要获得更好的人脸检测,请查看this thread 以获取CascadeClassifier::detectMultiScale() 参数的推荐值。


对于行人检测,为了提高其质量,应尝试修改HOGDescriptor::detectMultiScale()的第三个参数(即hit_threshold)和最后一个参数(即group_threshold)。

特别是,为了获得更好的行人检测结果,您应该将它们都设置得更高:

hit_threshold:特征与 SVM 分类平面之间的距离阈值。 group_threshold:调节相似度阈值的系数。检测到时,一些对象可以被许多矩形覆盖。阈值用于一组矩形中以保留它。

【讨论】:

以上是关于haar分类器的最佳参数的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV中的Haar级联分类器数据:

opencv_haar分类器的训练

如何在GridSearchCV中使用最佳参数作为分类器的参数?

浅析人脸检测之Haar分类器方法

如何提高 Weka 中 SMO 分类器的性能?

分类器的选择