每次检测人员时,SVM是否需要学习?

时间:2014-05-02 05:15:25

标签: opencv svm detection

我在OpenCV中使用SVM和HOG来实现人员检测。 比如使用我自己的数据集:3000个正样本和6000个负样本。 我的问题是每次检测人员时SVM是否需要学习? 如果是这样,学习时间和预测时间可能非常耗时。有没有办法实现实时人员检测? 提前谢谢。


感谢您的回答。我在训练后获得了xml结果(3000正面和6000负面),所以我可以使用这个结果编写另一个独立程序只需使用svm.load()和svm.predict()?太棒了。此外,我发现1000个检测窗口大小图像(128x64)的预测时间也非常耗时(大约10秒),所以它如何使用1或2像素扫描处理正常的监控摄像头捕获(320x240或更高)实时调整大小?

我根据原始论文实现了HOG,每个单元8x8像素,每块2x2个单元(50%重叠),因此一个检测窗口(128x64)的3780维度向量。时间问题是由巨大的特征向量引起的吗?我应该减少每个窗口的尺寸吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

你进行一次的训练,然后将训练过的模型svm.save()训练到xml / yml文件中。

稍后你只需要svm.load()而不是(重新)训练,然后进行预测