【问题标题】:OpenCV SVM - object does not belong to any of trained classesOpenCV SVM - 对象不属于任何经过训练的类
【发布时间】:2017-09-15 21:39:37
【问题描述】:

我正在使用具有 3 个类的 OpenCV (3.1) SVM。有什么方法可以处理不属于这些类的输入数据?有没有可能从预测中得到概率?

我只是想将来自未知类的数据标记为“不属于任何经过训练的类”。

谢谢

【问题讨论】:

  • (1) 引入第 4 类或 (2) 训练另一个二元分类器(例如 SVM),将“已知”与“未知”分类并将“已知”样本传递给 3 类 SVN 或(3 ) 训练一对多 SVM,或者... 有很多解决方案。它并不是真正特定于 OpenCV。

标签: c++ opencv svm


【解决方案1】:

看看SVM docs(尤其是预测函数),似乎你能做的最好的事情就是得到与支持向量的距离,而且看起来你甚至只能从二元分类器中得到它。

不确定您对 OpenCV 的限制有多大,但如果您可以使用 scikit learn 来解决您的问题,他们的 SVM 有一个 predict_proba 函数应该会有所帮助。如果您愿意,还有一个 predict_log_proba 函数。另外,请注意,如果您走这条路线,则在调用 fit 函数时需要设置probability=true。

如果您受限于 C/C++,您可能会查看LibSVM,因为他们也有能力给出概率,尽管我对他们的 api 不太熟悉。另请注意,OpenCV 和 scikit learn 实现均基于 LibSVM

希望其中一个对你有用!

【讨论】:

    猜你喜欢
    • 2015-06-14
    • 2015-05-04
    • 2015-07-25
    • 2016-09-03
    • 2015-04-18
    • 2015-01-22
    • 2013-05-25
    • 2018-12-26
    相关资源
    最近更新 更多