我正在使用OpenCV的CvSVM来学习29个类的SVM分类器。
应用程序是人脸识别,我将人脸图像划分为3x6网格。对于网格中的每个块,我在从块中提取的SURF特征上训练SVM分类器。
我在这里阅读http://www.csie.ntu.edu.tw/~cjlin/talks.html,同样地扩展训练和测试数据非常重要。
CvSVM是否会扩展数据?如果没有,OpenCV是否提供了我可以用来进行缩放的任何功能?
答案 0 :(得分:0)
在实践中有一个非常好的跨平台库用于利用机器学习算法:
http://www.nickgillian.com/software/grt
我不知道OpenCV是否提供了扩展训练/测试数据的机会以获得更好的分类结果,但是使用GRT你可以做到:
https://github.com/nickgillian/grt/blob/master/GRT/ClassificationModules/SVM/SVM.h
...
@param bool useScaling: sets if the training/prediction data will be scaled to the default range of [-1. 1.]. The SVM algorithm commonly achieves a better classification result if scaling is turned on. The default useScaling value is useScaling=true
...
SVM(UINT kernelType = LINEAR_KERNEL,UINT svmType = C_SVC,bool useScaling = true,bool useNullRejection = false,bool useAutoGamma = true,double gamma = 0.1,UINT degree = 3,double coef0 = 0,double nu = 0.5,double C = 1,bool useCrossValidation = false,UINT kFoldValue = 10);
这也是libsvm的包装类。