Можно ли использовать ядро ​​хи-квадрат для SVM в OpenCV?

Я хочу использовать SVM с ядром хи-квадрат для приложения, которое я пишу, но не представляется очевидным, как я могу это применить.

Я определяю ядро ​​как K(x_i, x_j) = exp( -1/A * D(x_i, x_j)), где A это параметр масштабирования, который я могу выбрать, и D(x_i, x_j) это расстояние хи-квадрат между ними.

Как это может быть сделано? Это широко распространенное ядро ​​в литературе по компьютерному зрению, поэтому было бы удивительно, если бы это было невозможно.

3

Решение

Я не думаю, что есть опция для хи-квадрат или пользовательское ядро ​​в opencv.

Поэтому одним из вариантов является использование другой библиотеки SVM.

это является модификацией LIBSVM, которая поддерживает ядро ​​хи-квадрат (другое), а также предварительно вычисленные ядра. Но его предназначено для использования с Matlab. Поэтому я не уверен, сколько нужно, чтобы заставить его работать с C ++.

Другим вариантом может быть использование линейного SVM и преобразование ваши данные приближаются к ядру хи-квадрат, если вы хотите придерживаться OpenCV SVM.

это ответ может также дать вам еще несколько советов.

0

Другие решения

В 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

2