0

我一直致力于训练基于 HOG 特征的行人检测分类器。目前我做了以下工作:

a) 提取所有文件的 HOG 特征,即 Positive 和 Negative,并将这些特征用标签 ie +1 表示正例,-1 表示负例保存在文件中。

b) 下载 svmlight,提取二进制文件,即 svm_learn、svm_classify。

c)将“训练文件”(特征文件)传递给 svm_learn 二进制文件,它为我生成了一个模型文件。

d) 将“测试文件”传递给 svm_classify 二进制文件并在预测文件中得到结果。

现在我的问题是“下一步该做什么以及如何做?”。我想我知道现在我需要在 openCV 中使用该“模型文件”而不是“预测文件”来检测视频中的行人,但在某处我读到 openCV 仅使用 1 个支持向量但我得到了 295 个 SV,那么我该怎么做将其转换为一种适当的格式并使用它以及任何进一步的强制性步骤(如果有)。

我很感激你的好意!

4

1 回答 1

2

OpenCV(大概您在谈论CvSVM)仅使用一个支持向量是不正确的。正如 QED 所指出的,OpenCV 所做的是将线性 SVM 优化为一个支持向量。我认为这里的想法是支持向量定义分类余量,但要进行实际分类,只需要分离超平面,并且可以用一个向量定义。

由于您有一个 svmlight 模型文件,而 CvSVM 无法读取该文件,因此您有以下选项:

  1. 训练 CvSVM 并将模式保存为 CvStatsModel 文件,您可以稍后加载该文件以获得支持向量。
  2. 编写一些代码将 svmlight 模型文件转换为 CvStatsModel 文件(但为此您必须了解这两种格式)。
  3. 获取 svmlight 的源代码,读取模型文件的位,并将其集成到您的 OpenCV 应用程序中
  4. 您可以改用 LIBSVM,但实际上您将面临与 svmlight 相同的问题。

有关如何转换支持向量以便您可以将它们与 HOG 检测器一起使用的想法,请参阅训练自定义 SVM 以在 OpenCV 中与 HOGDescriptor 一起使用

于 2014-08-02T02:33:54.667 回答