用新数据训练现有的opencv模型

Train an existing opencv model with new data

本文关键字:opencv 模型 新数据 数据      更新时间:2023-10-16

我使用opencv决策树来创建分类器。我想知道是否有可能重新训练该模型(可以保存并加载在.yml文件中)添加新数据。我使用的Opencv版本是2.4.

我正在考虑这样的事情

CvDTree dtree;
dtree.load("existingTree.yml");
dtree.train(newValues, CV_ROW_SAMPLE, newResponses);

newValues只包含新的样本,而newResponses包含这些值的类。这将产生一个新的决策树,用第一个训练过程的旧值和这个新值训练?

我没有在opencv文档中找到关于这个的任何信息。

简短回答:否

长答:在训练过程中,当决策树通过一个大的训练集时,树中的每个分裂节点学习一个特征集和相应的阈值。树的分支以叶节点终止,叶节点随后存储预测值。如果你已经训练了一个决策树,那么它已经从一个训练集中学习了所有的特征、阈值和预测值。使用额外的数据再次训练它将使先前学习的参数无效。

另一种看待这个问题的方式是考虑随机森林,它是由树木的集合组成的。假设您的新数据集与模型之前看到的数据没有太大不同。如果你愿意,你可以训练一个新的树,并把它添加到一组以前训练过的树。在预测期间,您可以对所有树的预测进行平均,以获得总体预测。