OpenCV HOG 描述符参数

Posted

技术标签:

【中文标题】OpenCV HOG 描述符参数【英文标题】:OpenCV HOG Descriptor Parameters 【发布时间】:2017-03-21 12:10:20 【问题描述】:

我正在尝试使用 cv2.HOGDescriptor() 并使用他们的默认人员分类器从摄像头的提要中检测人员。

识别器有点有效,但老实说,我在理解分别分配给 winStridepaddingscalegroupThreshold 的值方面存在问题。

目前,相机源的帧大小为1280 X 720,我将其调整为400 X 400,然后使用参数执行detectMultiScale

hogParams = 'winStride': (8, 8), 'padding': (32, 32), 'scale': 1.05, 'finalThreshold': 2

基于answer,我了解这些参数的作用和代表。

我的问题是,有没有办法用这些值映射图像大小?数学方程式?估计方法?我不一定要一个具体的,甚至是一个给出所有值的方法,而是比反复试验幻数更好的方法。

大部分参考资料和教程几乎都使用幻数,而没有给出它们是如何获得它们的命题。

PS:如果您仍然不确定我的问题,这是一个视觉帮助

【问题讨论】:

【参考方案1】:

这里没有灵丹妙药。不幸的是,由于 最佳 解决方案会因输入数据而异,因此非常手动。

这里有一点额外的指导:

如果 stride > 窗口大小,您的检测器甚至可能无法在人身上运行。我总是想到与窗口大小有关的步幅,例如64/8。 如果 scale~1 不会发生太多事情。像 1.2、1.3 这样的值通常更好。这个参数本质上是缩小图像,然后再次运行检测器。希望是,如果人们在第一次运行时对于探测器来说太大了,那么缩小后他们的尺寸可能会合适。例如。如果您的探测器尺寸是默认的 64x128,但图像中的某个人的高度为 150 像素,则探测器可能不会意识到这是一个人,因为它只能同时查看腿或躯干。如果我们按比例缩小 150 / 1.2 = 125,那么现在实际上可能会检测到该人。 (愚蠢的数字。如果他们是 150 像素,它可以检测到这个人是非常合理的。但你明白了。)

最好的方法是尝试一下。选择一些您认为代表您的用例的图像/视频,创建端到端设置,并使用几个不同的参数设置。如果未检测到人员,请考虑他们的尺寸与您的探测器尺寸相关。他们比那更大吗?更小?如果它们更小,则可能会增加比例因子,或增加级别数。如果它们更大,则进一步缩小输入图像。

.. 1280 X 720 我将其调整为 400 X 400...

旁注:如果您只是调整大小而不进行裁剪,您会得到不好的结果。调整大小为相同的纵横比,例如 711x400,或者在调整大小之前将初始图像裁剪为正方形。

【讨论】:

感谢您的提示。

以上是关于OpenCV HOG 描述符参数的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV 例程 300篇248. 特征描述之HOG描述符

Python和openCV:HOG描述符检测多尺度返回负边界框

使用HOG描述符peopledetect.py时出错

如何将来自不同图像的多个描述符存储在 C++ 和 OpenCV 中的向量向量中?

OpenCV - 使用 SVM 和 HOG 进行人员检测

使用可变大小的训练图像 hog 描述符训练 SVM (MATLAB)