首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让Opencv支持向量机更快?

如何让Opencv支持向量机更快?
EN

Stack Overflow用户
提问于 2015-02-10 10:43:41
回答 1查看 1.1K关注 0票数 0

我正在使用Opencv 2.4.8实现一个图像分类解决方案。

不是的。班级数= 29

不是的。测试图像的数量=约4000

特点:冲浪描述符,潜入3x6网格后,每个图像。这给出了18个不同的SURF描述符列表。

分类器: CvSVM (NU_SVC/C_SVC) C=32,gamma=8

有18个分类器,每个网格块1个。

最终输出基于对所有SURF描述符的所有18个分类器的输出的重要性投票。

问题是支持向量机分类耗费了很多时间(每张图像大约600毫秒)。提出这项技术的IEEE论文报告了21fps的速度。我实现的程序的速度要慢8-10倍。

我会在哪里犯错误呢?

有什么建议可以加速我的测试/分类吗?

EN

回答 1

Stack Overflow用户

发布于 2015-02-11 04:50:03

在您的实现和作者的实现之间可能会有许多不同之处,但我会将它们分为三大类:

-The数据:您使用的数据与论文作者使用的数据相同吗?你的功能是完全一样的吗?也许你的数据包含更多的类,或者更难分类,从而产生更多的支持向量?如果您不使用相同的数据,并且他们使用的数据是公开可用的,那么您可能希望在这些数据上测试您的实现。如果他们在论文中指定了SV的数量,请检查您是否获得了大致相同的数量。

-The算法:您是否使用相同的内核和训练参数?OpenCV实现使用1-vs-1算法进行多类分类,您的论文中是否也是如此?请注意,对于29个类,它将导致对18个分类器中的每个分类器评估406个二进制分类器,这可能是导致问题的原因之一。

编辑:在快速浏览opencv代码后,它明确地使用了1vs1。这可能是问题之一,即使在我看到的几篇关于这个主题的论文中,1-vs-1通常比1-vs-all更快(分类器更多,但全局SV更少)。考虑到你的评论,这些特征可能是一个更可能的原因,但如果没有更多的细节,或者参考这篇论文,很难说更多。

-The实现:也许他们的实现只是更好地优化了/多线程。我不确定OpenCV实现的优化程度。它基于一个相当旧的libSVM版本,但可能已经被修改/优化过。如果这确实是问题所在,您可能还需要考虑GPGPU:http://mklab.iti.gr/project/GPU-LIBSVM

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28423212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档