【问题标题】:Export Random Forest model from R to OpenCV [closed]将随机森林模型从 R 导出到 OpenCV [关闭]
【发布时间】:2014-12-13 23:07:20
【问题描述】:

如何将使用 R 创建的随机森林模型导出到 OpenCV?

我问是因为我在 R(特别是随机森林)中进行原型设计,但由于 OpenCV 处理大图像的速度,我希望能够在 OpenCV 中运行我的模型。

【问题讨论】:

  • 我假设这被标记为 OT,因为它接近于对图书馆和/或教程的推荐。我问这个问题是因为我不知道如何根据我在该主题上找到的内容来完成这项任务。我想知道其他人是如何完成这项任务的,或者考虑到目前的知识状况,他们将如何完成这项任务。我已将问题改写为更直接,并删除了我认为对完成任务有用的库的任何提及。

标签: r opencv translate


【解决方案1】:

实际上,PMML 是一条单行道。将模型从任何特定于框架的表示(例如 OpenCV、R)导出到 PMML 表示相当容易,但反之则不那么容易。这个想法是,一旦您的模型采用 PMML 表示,您通常应该使用专用的 PMML 评分引擎来使用它,而不是使用其他一些技术。

就您而言,您要做的是在OpenCV's CvRTrees class 和R's randomForest data structure 之间进行转换。开发直接双向转换器(即CvRTrees randomForest)可能比使用 PMML 作为中间人(即CvRTrees PMML randomForest)更好)。这个决定很容易合理化,因为目前只有randomForest -> PMML 转换组件可用。因此,开发两个缺失的转换组件(即前一个“直接”转换场景)可能比开发三个缺失的转换组件(即后一个“中介”转换场景)更容易。

为简单起见,我建议通过使用共享训练数据集来实现“模型可移植性”。也就是说,如果你需要一个OpenCV的RF模型,那么你直接使用CvRTrees::train方法调用来训练它,如果你需要一个R的RF模型,那么你直接使用randomForest()方法调用来训练它。

【讨论】:

  • 感谢 PMML 的提醒。至于最后一条评论,我不确定这是否适合我,因为在 R 中训练的模型使用 caret 和其他一些巧妙的技巧来推导出最终模型。我认为用 OpenCV 的 RF 实现在 R 中复制我的模型调整是不可能的。
  • 为了完整起见,您能否解释一下为什么从 PMML 转到给定框架(例如,PMML -> OpenCV)并不容易?我的理解是这就是 PMML 的目的。
  • 主要问题是“不匹配”的词汇。 PMML 可能包含无法在 OpenCV 或 R 中表示的表达式,反之亦然。至于caret 包,它基本上是在RF 参数空间中执行搜索(例如ntree、mtry 等)。一旦您知道最佳参数是什么,您就可以“手动”将它们传输到 OpenCV。
猜你喜欢
  • 2018-10-09
  • 2019-02-08
  • 2020-02-25
  • 2018-09-26
  • 2022-11-11
  • 2016-07-20
  • 2011-11-28
  • 2020-01-16
  • 2019-07-10
相关资源
最近更新 更多