如何训练HOG并使用我的HOGDescriptor?

时间:2013-03-29 19:53:22

标签: opencv histogram feature-descriptor

我想训练数据并使用HOG算法来检测行人。 现在我可以在defaultHog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());中使用opencv进行检测,但结果对我的测试视频效果不佳。所以我想训练使用我的数据库。

我准备了1000多个阳性样本和1000多个阴性样本。它们被裁剪为50 * 100,我已经完成了列表文件。

我在互联网上阅读了一些教程,它们都非常复杂,有时甚至是深奥的。他们中的大多数都是分析HOG的源代码和算法。但只有更少的例子和简单的任意大小。

有些说明表明libsvm\windows\svm-train.exe可以用于训练,任何人都可以根据1000 + 50 * 100个阳性样本给出一个例子吗?
例如,与haartraing类似,我们可以从opencv开始执行此操作,例如haartraining.exe –a –b使用一些参数,并获得*.xml作为结果用于人员检测?

或者还有其他培训和检测方法吗?

我更喜欢知道如何使用它和详细程序。作为细节算法,对我来说并不重要。我只是想实现它。

如果有人知道,请给我一些提示。

1 个答案:

答案 0 :(得分:7)

我提供了一些示例代码和说明,以便使用openCV开始训练您自己的HOG描述符: 请参阅https://github.com/DaHoC/trainHOG/wiki/trainHOG-Tutorial

该算法确实过于复杂而无法提供,但基本思路是:

  1. 从相同大小和类型的阴性和阳性样本图像中提取HOG特征。
  2. 使用提取的特征向量及其各自的类来训练SVM分类器,在此步骤中,您可以将svm-train.exe与包含特征向量及其类的正确格式的生成文件一起使用(或直接包含并解决源代码中的libsvm库类。
  3. 生成的SVM模型和支持向量计算为单个描述符向量,可以与openCV检测器一起使用。
  4. 祝你好运