如何加速svm.predict?

我正在编写一个滑动窗口来提取特征并将其输入到CvSVM的predict函数中。然而,我发现svm.predict函数相对较慢。

基本上,窗口以固定的步长滑过图像,并在多个图像尺度上进行操作。

  • 遍历图像并为每个窗口提取特征的速度大约需要1000毫秒(1秒)。
  • 包含由adaboost训练的弱分类器后,总时间增加到大约1200毫秒(1.2秒)。
  • 然而,当我将被弱分类器标记为正的特征传递给svm.predict函数时,总体速度下降到大约16000毫秒(16秒)。
  • 尝试先收集所有“正”特征,然后使用TBB的线程传递给svm.predict,结果是19000毫秒(19秒),可能是由于创建线程等所需的开销。

我的OpenCV构建版本包含了TBB(线程处理)和OpenCL(GPU)功能。

有没有人设法加速OpenCV的SVM.predict函数?

我已经在这个问题上卡了相当长的时间,因为通过我的测试数据运行这个检测算法来进行统计和阈值调整非常令人沮丧。

非常感谢您阅读这篇文章!


回答:

(回答发布以正式化上述评论:)

SVM的预测算法需要O(nSV * f)时间,其中nSV是支持向量的数量,f是特征的数量。通过使用更强的正则化训练,即增加超参数C,可以减少支持向量的数量(可能以牺牲预测准确性为代价)。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注