【问题标题】:How to resuse train information in SVM classifier如何在 SVM 分类器中重用训练信息
【发布时间】:2015-02-28 18:15:07
【问题描述】:

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

当我运行我的程序时,以下功能(训练)会花费很多时间

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

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

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

【问题讨论】:

    标签: c++ opencv


    【解决方案1】:

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

    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(...);
    

    【讨论】:

    • 什么是 .yml 扩展名?
    • yaml。但您也可以使用 xml。 (yaml 只是有点短)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    • 2017-09-05
    • 2012-06-27
    • 2023-04-09
    • 2016-01-22
    相关资源
    最近更新 更多