为什么opencv3 svm的模型文件比opencv2的参数大得多?

时间:2018-08-03 07:22:58

标签: windows opencv svm

我正在使用opencv的svm对两种图片进行分类。 旧项目基于opencv2.4.9,neg样本和pos样本均具有10000。 svm的参数,例如:

CvSVM *svm;
svm = new CvSVM;
CvSVMParams params;
params.svm_type = CvSVM::C_SVC;
params.kernel_type = CvSVM::LINEAR;
params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 1000, 1e-7);
params.C = 120;
svm->train(*trainHist, *labelsMat, Mat(), Mat(), params );
svm->save(modeName.c_str());

保存的模型大小约为550KB。

现在opencv升级到3.4.2, 所以我重写了火车代码,例如

Ptr<SVM> svm = SVM::create();
svm->setType(SVM::C_SVC);
svm->setKernel(SVM::LINEAR);
svm->setC(120);
svm->setTermCriteria(cvTermCriteria(CV_TERMCRIT_ITER, 1000, 1e-7));
Ptr<TrainData> tdata = TrainData::create(*trainHist, ROW_SAMPLE, *labelsMat);
svm->train(tdata);
svm->save(modeName);

我只选择neg和pos对这400张图片进行采样,那么保存的模型文件将近100MB,似乎比opencv2的模型文件大得多。

我很好奇为什么参数相同,但模型却有很大差异? 有什么需要做的额外设置吗?

0 个答案:

没有答案