使用svmlight模型文件在opencv



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

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

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

c)将"训练文件"(特征文件)传递给svm_learn binary,它为我生成了一个模型文件。

d)将"测试文件"传递给svm_classified binary,并在预测文件中得到结果。

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

我真的很感激你的好意!

OpenCV(假设你在谈论CvSVM)只使用一个支持向量是不正确的。正如QED所指出的,OpenCV所做的是将线性支持向量机优化到一个支持向量。我认为这里的想法是支持向量定义了分类边界,但是要做实际的分类只需要分离超平面,它可以用一个向量来定义。

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

  1. 训练CvSVM并将模式保存为CvStatsModel文件,您可以稍后加载以获得支持向量。
  2. 编写一些代码将svmlight模型文件转换为CvStatsModel文件(但为此您必须了解两种格式)。
  3. 获取svmlight的源代码,读取模型文件的位,并将其集成到您的OpenCV应用程序
  4. 你可以用LIBSVM代替,但是你会遇到和svmlight一样的问题。

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

最新更新