如何在opencv中减少学习模型的大小(对于CvBoost)?

时间:2015-02-24 21:13:21

标签: opencv machine-learning filesize

我正在使用opencv的CvBoost进行分类。我已经使用几千兆字节的数据训练了分类器,然后我将其保存下来。该模型有一个1000个弱学习者的树,深度为20(默认设置)。现在我想加载它来预测实时生产代码中的类。但是,学习模型的大小是巨大的(接近1千兆字节)。我相信这是因为保存功能会保存用于学习的所有数据,因此可以正确更新训练模型。但是,我在运行时不需要这个功能,我只想使用固定参数(1000个弱学习者等),这些参数应该不是很多。

有没有办法可以将弱学习者参数保存并加载到CvBoost中?

有没有人有使用这个或另一个opencv学习模型减少学习模型数据大小的经验? 注意:CvBoost继承自具有保存/加载功能的CvStatModel。 < / p>

2 个答案:

答案 0 :(得分:0)

我意识到,对于1000个学习者和20个深度,这可能是2 ^ 20 * 1000个学习参数,即大约10亿或1千兆字节。事实证明,学习模型需要所有空间来存储所有树木。

为了减小尺寸,我必须降低树深度和/或学习者数量。例如,将树深度减少到5只使用了21 mb(尽管它似乎需要大约相同的时间来构建学习模型)。也许降低重量修剪率会导致更多的树在到达深度20之前被修剪(因此也减少了内存大小)。我还没有测试过这个。

案件结案。

答案 1 :(得分:0)

CvBoostParams有一个'use_surrogates'参数,它的默认值是ture。设置为false可以减小学习模型的大小