3

我想为我正在编写的应用程序使用带有卡方内核的 SVM,但我如何应用它似乎并不明显。

我将内核定义为K(x_i, x_j) = exp( -1/A * D(x_i, x_j)),其中A是我可以选择的缩放参数,并且D(x_i, x_j)是它们之间的卡方距离。

如何才能做到这一点?它是计算机视觉文献中常用的内核,所以如果它不可能,那将是令人惊讶的。

4

2 回答 2

2

OpenCV 3.0.0.0dev 中有一个实现。有关详细信息,请参阅链接。

http://docs.opencv.org/master/modules/ml/doc/support_vector_machines.html

新链接: http ://docs.opencv.org/3.0-beta/modules/ml/doc/support_vector_machines.html

于 2014-02-18T13:26:01.813 回答
0

我认为opencv中没有卡方或自定义内核的选项。

因此,一种选择是使用不同的 SVM 库。

是对 LIBSVM 的修改,它支持卡方内核(不同的内核)和预计算内核。但它的目标是与 Matlab 一起使用。所以我不确定让它与 C++ 一起工作需要多少时间。

如果您想坚持使用 opencv svm,另一种选择可能是使用线性 SVM 并将您的数据转换为近似卡方内核。

这个答案也可能会给你更多的提示。

于 2012-09-06T08:25:19.313 回答