OpenCV SVM:更新经过训练的 SVM
OpenCV SVM: Update a trained SVM
我正在使用 OpenCV 2.4.6(此 PC 上可用的唯一版本)。
所以我有一个 SVM Modell,其默认参数已经过训练。现在我想用新的示例更新它。
CvSVM Support_VectorMachine;
Support_Vector_Machine.load(FilePath);
struct CvSVMParams Parameter;
Parameter = Support_Vector_Machine.get_params();
Support_Vector_Machine.train(TrainMatrix, Labels, cv::Mat(), cv::Mat(), Parameter);
所以问题是,如 OpenCV 统计模型文档中所述,train 方法调用了 CvStatModel::clear() 方法,所以我训练的模型被覆盖了。
是否有任何解决方案,或者我是否必须使用更新版本的 open CV 或其他机器学习库?
感谢您的帮助。
SVM 不是在线算法。这意味着它不支持您正在尝试做的增量学习。所以如果你想添加新的点,你必须重新训练模型。
支持在线学习的 SVM 有一些变体(即 Pegasos SVM),但我认为 OpenCV 没有实现它们。
我正在使用 OpenCV 2.4.6(此 PC 上可用的唯一版本)。 所以我有一个 SVM Modell,其默认参数已经过训练。现在我想用新的示例更新它。
CvSVM Support_VectorMachine;
Support_Vector_Machine.load(FilePath);
struct CvSVMParams Parameter;
Parameter = Support_Vector_Machine.get_params();
Support_Vector_Machine.train(TrainMatrix, Labels, cv::Mat(), cv::Mat(), Parameter);
所以问题是,如 OpenCV 统计模型文档中所述,train 方法调用了 CvStatModel::clear() 方法,所以我训练的模型被覆盖了。
是否有任何解决方案,或者我是否必须使用更新版本的 open CV 或其他机器学习库?
感谢您的帮助。
SVM 不是在线算法。这意味着它不支持您正在尝试做的增量学习。所以如果你想添加新的点,你必须重新训练模型。
支持在线学习的 SVM 有一些变体(即 Pegasos SVM),但我认为 OpenCV 没有实现它们。