c++ - 如何在 SVM 分类器中重用训练信息

标签 c++ opencv

我正在使用 opencv SVM 分类器对数字和字母进行分类。 (特征数 = 20000,每个特征向量的长度 = 125,类别数 36)。

当我运行我的程序时,以下函数(训练)花费了大量时间

svmob.train_auto(m_features, m_labels, cv::Mat(), cv::Mat(), m_params, 10);

有没有办法存储上述函数的输出并在程序的下一次运行中使用它?

这样我就可以避免训练时间?

最佳答案

是的,只保存训练好的模型:

svmob.train_auto(m_features, m_labels, cv::Mat(), cv::Mat(), m_params, 10);
svmob.save("svmob.yml.gz"); // zipping saves 3/4 space.

稍后,不是重新训练,而是读回:

SVM svmob;
svmob.load("svmob.yml.gz");
svmob.predict(...);

关于c++ - 如何在 SVM 分类器中重用训练信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27741745/

相关文章:

python - 打开CV轮廓-将凹面多边形分成多个凸面多边形

c++ - 线性方程组与opencv,c++

c++ - 简单密集光流程序 calcOpticalFlowFarneback() openCV 3.2 cpp

c++ - C++ 中的数据类型

c++ - 在函数内部使用声明函数?

c++ - 无法分配抽象类型的对象 'Rectangle'

c++ - 为什么使用 cv::line 函数绘制的不同线条具有不同的透明度 (alpha) 级别?

C++/VS 2010 : Bug(s) occur only when running without a debugger

future.get 上的 C++ bad_alloc 异常

opencv - 是否有将 3 channel 垫拆分为三个 3 channel 垫而不是分成三个 1 channel 垫的内置函数?