Перейти к содержимому
Compvision.ru
Randel

Support Vector Machines for classification

Recommended Posts

Здравствуйте!

Использую для задачи классификации (2 класса) в том числе метод SVM из opencv. Код:

void buildSVM(cv::Mat& setN, cv::Mat& setC, cv::SVM &svm)

{

	Mat responses (setN.rows+setC.rows,1,CV_32S);

	Mat trainData (setN.rows+setC.rows,setN.cols,CV_32F);


	for (int i=0;i<setN.rows;i++)

	{

		for (int j=0;j<setN.cols;j++)

			trainData.at<float>(i,j)=setN.at<float>(i,j);


		responses.at<int>(i,0)=0;

	}

	for (int i=0;i<setC.rows;i++)

	{

		for (int j=0;j<setC.cols;j++)

			trainData.at<float>(i+setN.rows,j)=setC.at<float>(i,j);


		responses.at<int>(i+setN.rows,0)=1;

	}

	CvSVMParams params;

	params.svm_type    = SVM::C_SVC; //SVM::NU_SVC;

	params.kernel_type = CvSVM::RBF; //CV::LINEAR;//CvSVM::POLY; //CvSVM::SIGMOID; 


svm.train_auto(trainData,responses,Mat(), Mat(), params, 10, CvSVM::get_default_grid(CvSVM::C), CvSVM::get_default_grid(CvSVM::GAMMA), CvSVM::get_default_grid(CvSVM:),CvSVM::get_default_grid(CvSVM::NU), CvSVM::get_default_grid(CvSVM::COEF), CvSVM::get_default_grid(CvSVM::DEGREE),false);

}[/code]

Так вот, для пары параметров SVM::C_SVC и CvSVM::RBF все прекрасно работает.

Аналогично и для SVM::C_SVC + CV::LINEAR, SVM::C_SVC+ CvSVM::SIGMOID;

Но по какой-то причине программа падает с "runtime eroor" при попытке построить классификатор типа SVM::NU_SVC с любым ядром.

А также вылетает при C_SVC + CV::POLY;

Я думал, может причина в типе данных матрицы trainData. Но уже все перепробовал - не помогает. Пробовал разные базы данных - все равно безрезультатно.

В чем может быть ошибка?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Тоже сталкивался с падением SVM с C_SVC + CV::POLY при высоких степенях полинома (3-4 вроде работали) это может быть просто баг посмотрите тут:

http://code.opencv.org/search/index/opencv?q=SVM

можно попробовать использовать альтернативные библиотеки:

LibSVM

или

SVM light

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×