在opencv中使用svmlight模型文件

时间:2014-08-01 20:07:36

标签: opencv svmlight

我一直致力于根据HOG功能训练行人检测分类器。现在我做了以下事情:

a)提取所有文件的HOG功能,即正面和负面,并使用标签保存这些功能,即+1为正面,-1为负面文件。

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

c)通过"培训文件" (特征文件)到svm_learn二进制文件,它为我生成了一个模型文件。

d)通过"测试文件"到svm_classify二进制文件并在预测文件中得到结果。

现在我的问题是"下一步做什么以及如何做?"。我想我知道现在我需要使用#34;模型文件"而不是"预测文件"在openCV中用于检测视频中的行人,但在某处我读到openCV仅使用1个支持向量但我得到了295 SV,所以我如何将其转换为一种正确的格式并使用它以及任何进一步的必要步骤(如果有的话)。

我非常感谢你的善意!

1 个答案:

答案 0 :(得分:2)

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

由于你有一个svmlight模型文件,并且CvSVM无法读取它,你有以下选择:

  1. 训练一个CvSVM并将该模式​​保存为CvStatsModel文件,您可以加载该文件以获得支持人员。
  2. 编写一些代码将svmlight模型文件转换为CvStatsModel文件(但为此您必须了解这两种格式)。
  3. 获取svmlight的源代码,重新获得modelfile的位,并将其集成到OpenCV应用程序中
  4. 您可以改用LIBSVM,但实际上您遇到的问题与svmlight相同。
  5. 有关如何转换支持向量的想法,以便您可以将它们与HOG检测器一起使用,请参阅Training custom SVM to use with HOGDescriptor in OpenCV