2014-05-02 44 views
1

我在OpenCV中使用SVM和HOG来实现人员检测。 请使用我自己的数据集:3000个正样本和6000个负样本。 我的问题是,每次检测到人时,SVM是否需要学习? 如果是这样,学习时间和预测时间可能非常耗时。有没有什么方法可以实现实时人员检测? 预先感谢您。每次检测到人时,SVM是否需要进行学习?


谢谢你的回答。我已经获得了训练后的xml结果(3000正数和6000负数),所以我可以使用这个结果来编写另一个独立的程序,只需使用svm.load()和svm.predict()?那很棒。此外,我发现1000个检测窗口大小的图像(128x64)的预测时间也非常耗时(约10秒),因此如何使用1或2像素扫描来处理正常的监控摄像机捕获(320x240或更高)实时步进?我根据原始纸张实现了HOG,每个单元格8x8像素,每个区块2x2个单元格(50%重叠),因此一个检测窗口(128x64)的3780维度矢量。时间问题是由巨大的特征向量造成的吗?我应该减少每个窗口的尺寸吗?

+0

它应该学习一次,让您的SVM“理解”到行人分类的方式(即发现您的功能的参数)。然后,每次做预测时,都会直接预测(即在内部它应该更多或更少(学习参数*特征))。 –

回答

3

这是一个非常具体的问题,一般的主题。

简短回答:不,您不需要每次使用SVM时都要学习。这是一个两步过程。第一步,学习(通过为您的学习算法提供许多标签(包含,不包含)包含人物或不包含人物的图片),产生一个用于第二步的模型:测试(在您的情况下检测人员)。

1

不,你不必每次都重新训练一个svm。

你做训练一旦,然后svm.save()训练模型到一个xml/yml文件。

以后你只是svm.load(),而不是(再)培训,并做你的预测

相关问题