【问题标题】:How to train HOG and use my HOGDescriptor?如何训练 HOG 并使用我的 HOGDescriptor?
【发布时间】:2026-01-03 03:30:01
【问题描述】:

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

我准备了 1000+ 个阳性样本和 1000+ 个阴性样本。它们被裁剪成 50 * 100 的大小,我已经做了列表文件。

我已经阅读了互联网上的一些教程,它们都很复杂,有时甚至很深奥。其中大部分是分析HOG的源代码和算法。但是只有更少的例子和简单的anylize。

一些指令表明libsvm\windows\svm-train.exe可以用来训练,谁能根据1000+ 50*100个正样本给出例子吗?
比如haartraing,我们可以从opencv开始,比如haartraining.exe –a –b加上一些参数,得到一个*.xml作为结果,用于人员检测?

或者有没有其他方法可以训练和检测?

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

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

【问题讨论】:

    标签: opencv histogram feature-descriptor


    【解决方案1】:

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

    简而言之,算法确实太复杂,无法提供,但基本思想是:

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

    最好的问候

    【讨论】:

    • 您的示例代码似乎无法再访问。它重定向到 opencv.org。你知道到达那里的另一种方式吗?
    • @DaHoC 我可以确认此链接不再有效。
    • github 链接有效。在我看来,文档记录得很好,教程也很好。我个人认为这个答案是正确的。
    • openCV 用户教程正在转换为新的 wiki 格式,因此目前不可用。到 github 的链接基本上提供了相同的信息。感谢您更新@Benoit Favre
    • trainHOG 不适合我。我已经将它与 INRIA 的数据集一起使用,我只能得到大约 8% 的行人命中率。缺少一些东西:(
    最近更新 更多