OpenCV - 训练新的 LatentSVMDetector 模型

5
我还没有找到使用openCV训练新的潜在svm检测器模型的方法。目前我正在使用xml文件中提供的现有模型,但我想训练自己的模型。是否有相应的方法可以实现呢?
谢谢,
Gil.

你找到解决方案了吗? - Fadwa
2个回答

8
目前OpenCV中只实现了DPM检测,没有训练功能。如果您想要训练自己的模型,最可靠的方法是使用Felzenszwalb和Girshick的Matlab代码(大部分重要内容已经实现在C语言中)http://www.rossgirshick.info/latent/。它是可靠且运行速度相当快的。
如果您想要使用纯C语言实现,这里有一个实现http://libccv.org/doc/doc-dpm/,但我自己没有尝试过。

你是在说我可以使用“判别式训练的可变形部件模型”来训练潜在SVM,然后将文件加载到OpenCV中并用于检测我的物体吗? - dephinera
@Crash-ID,作者的代码只能用于训练Matlab模型。你不能在OpenCV中使用该模型。我也在寻找一种将Matlab模型转换为OpenCV中xml格式的代码。 - killogre
@killogre 你 '可能' 可以使用此处找到的 mat2opencvxml.m :https://github.com/Itseez/opencv_extra/tree/master/testdata/cv/dpm 进行转换(我没有尝试过,所以不确定) - Scott
@kamjagin 第一个链接现在无法使用。第二个链接是关于如何训练Matlab模型的,没有关于将其转换为OpenCV XML模型的内容。 - Fadwa

0

我认为作者的代码的Octave版本中有一个函数在这里(Octave Version of DPM)。它在第5步中,

mat2opencvxml('./INRIA/inriaperson_final.mat', 'inriaperson_cascade_cv.xml');

我会尝试它并让你知道结果。


编辑

  • 我尝试将之前提到的Octave版本的.mat文件转换为.xml文件,并将结果与内置的OpenCV .xml模型进行比较,发现两个XML的构建方式不同(标签、#组件等),看来这个版本的Octave DPM生成的XML文件是针对以后的OpenCV版本(我正在使用2.4)。

  • VOC-release3.1是与OpenCV2.4.14相匹配的版本。我尝试使用OpenCV中可用的mat2xml函数将此版本的已训练模型转换,并成功加载并与OpenCV一起使用。以下是一些有用的链接:

mat2xml代码

VOC-release-3.1

如何在新对象上训练 DPM


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接