Jordi Inglada <jordi.inglada-L4RxXcqyP7Z0EDqhht/[email protected]> wrote:
>
> Hi,
>
> I have had a look at the code, and in otbSVMMachineLearningModel.txx (about
> line 79) we have this:
> // Train the SVM
> if (!m_ParameterOptimization)
> {
> m_SVMModel->train(samples, labels, cv::Mat(), cv::Mat(), params);
> }
> else
> {
> //Trains SVM with optimal parameters.
> //train_auto(const Mat& trainData, const Mat& responses, const Mat&
> varIdx, const Mat& sampleIdx,
> //CvSVMParams params, int k_fold=10, CvParamGrid
> Cgrid=CvSVM::get_default_grid(CvSVM::C),
> //CvParamGrid gammaGrid=CvSVM::get_default_grid(CvSVM::GAMMA),
> //CvParamGrid pGrid=CvSVM::get_default_grid(CvSVM::P), CvParamGrid
> nuGrid=CvSVM::get_default_grid(CvSVM::NU),
> //CvParamGrid coeffGrid=CvSVM::get_default_grid(CvSVM::COEF), CvParamGrid
> degreeGrid=CvSVM::get_default_grid(CvSVM::DEGREE),
> //bool balanced=false)
> //We used default parameters grid. If not enough, those grids should be
> expose to the user.
> m_SVMModel->train_auto(samples, labels, cv::Mat(), cv::Mat(), params);
> }
>
> So the train_auto method is called and it should work. However, reading the
> OpenCV documentation
> (http://docs.opencv.org/modules/ml/doc/support_vector_machines.html#cvsvm) I
> see this:
>
>
> "If there is no need to optimize a parameter, the corresponding grid step
> should be set to any value less than or equal to 1. For example, to avoid
> optimization in gamma, set gamma_grid.step = 0, gamma_grid.min_val,
> gamma_grid.max_val as arbitrary numbers. In this case, the value params.gamma
> is taken for gamma."
>
> I understand that if the grid steps are < 1 there is no optimization. And the
> default constructor for the parameter grids is this:
>
> CvParamGrid::CvParamGrid()
> {
> min_val = max_val = step = 0;
> }
>
> So I guess that the optimization is not done.
>
> Can anybody confirm this hypothesis?
>
To add some information, Benjamin has used libSVM instead of OpenCV's SVM (just
choosing the other option in the application) and the parameter optimization
works.
Is this a big or are we doing something wrong?
Thanks.
Jordi
> Thank you.
>
> Jordi
>
> Benjamin Tardy
> <tardybenjamin4-re5jqeeqqe8avxtiumwx3w-xmd5yjdbdmrexy1tmh2...@public.gmane.org>
> wrote:
>>
>> Hello,
>>
>> I'm trying to use TrainImageClassifier Application, with svm model and
>> optimization.
>>
>> OTB Version:3.18.1
>>
>> I set all parameters with SetParameter...:
>>
>> model= otb.Registry.CreateApplication("TrainImagesClassifier")
>>
>> model.SetParameterStringList("io.il","im.tif")
>>
>> model.SetParameterStringList("io.vd","training.shp")
>>
>> model.SetParameterString("io.imstat","stats.xml")
>>
>> model.SetParameterString("io.confmatout","mat.csv")
>>
>> model.SetParameterString("io.out","model.svm")
>>
>> model.SetParameterFloat("sample.vtr",0.5)
>>
>> model.SetParameterString("sample.vfn","Class")
>>
>> model.SetParameterString("classifier","svm")
>>
>> model.SetParameterString("classifier.svm.m","csvc")
>>
>> model.SetParameterString("classifier.svm.k","rbf")
>>
>> model.SetParameterFloat("classifier.svm.c",1)
>>
>> model.SetParameterFloat("classifier.svm.gamma",1)
>>
>> model.SetParameterInt("rand",3)
>>
>> model.SetParameterInt("classifier.svm.opt",0)
>>
>> model.ExecuteAndWriteOutput()
>>
>> This program works and gives results. But when I change the
>> classifier.svm.opt to 1: I got same results and
>> confusion matrix.
>> I try to use model.SetParameterString("classifier.svm.opt",true) and false,
>> but nothing change.
>> I use the command line application too, with parameter 0,1 and
>> true,false,and change default values for c and
>> gamma ( 1 to 100000 or 0.5), always same results...
>>
>> Any help is welcome
>> Thank you,
>>
>> Benjamin
>>
>> --
>> --
>> Check the OTB FAQ at
>> http://www.orfeo-toolbox.org/FAQ.html
>>
>> You received this message because you are subscribed to the Google
>> Groups "otb-users" group.
>> To post to this group, send email to
>> otb-users-/[email protected]
>> To unsubscribe from this group, send email to
>> otb-users+unsubscribe-/[email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/otb-users?hl=en
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "otb-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to otb-users+unsubscribe-/
>> JYPxA39Uh5TLH3MbocFFw-XMD5yJDbdMReXY1tMh2IBuG/[email protected]
>> For more options, visit https://groups.google.com/d/optout.
>
> --
--
--
Check the OTB FAQ at
http://www.orfeo-toolbox.org/FAQ.html
You received this message because you are subscribed to the Google
Groups "otb-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/otb-users?hl=en
---
You received this message because you are subscribed to the Google Groups
"otb-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.