FYI,

I've updated the bug report as I tried to reproduce the issue. I've got
some differences in the output confusion matrix with or without
optimization using tests of the TrainImagesClassification but I agree
also that their is something wrong when I read the openCV documentation
of the train_auto method.

Manuel

Le 26/03/2014 11:17, Jordi Inglada a écrit :
> Hi,
>
> Thanks for having a look.
>
> I have read [2] and, as far as I understand, the discussion is about the 
> updating of the parameters in the GUI after the learning, but not about 
> whether the optimization is really done or not.
>
> I will fill a bug report so that the issue is tracked.
>
> Thank you.
>
> Jordi
>
> Julien Michel <[email protected]> wrote:
>> Hi Jordi and Benjamin,
>>
>> If you read it in the code, then it must be true ... I am pretty sure
>> we had this tested but it seems not according to [1]. I remember
>> discussions about this when we developed the OpenCV ML models, and I
>> found the following Jira task and discussion about it [2].
>>
>> But I would need some hint from the development team on this issue.
>>
>> Whatever comes out, this is at least worth a bug report.
>>
>> Regards,
>>
>> Julien
>>
>> [1]
>> http://hg.orfeo-toolbox.org/OTB/file/9890c6c5f335/Testing/Code/Learning/otbTrainMachineLearningModel.cxx
>> [2] http://scrum.orfeo-toolbox.org/jira/browse/OTB-454
>>
>> Le 25/03/2014 15:37, Jordi Inglada a écrit :
>>> 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-xmd5yjdbdmrexy1tmh2ibg-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.
>>>> -- 
>>
>> -- 
>> Julien MICHEL
>> CNES - DCT/SI/AP - BPI 1219
>> 18, avenue Edouard Belin
>> 31401 Toulouse Cedex 09 - France
>> Tel: +33 561 282 894 - Fax: +33 561 283 109
>>
>> -- 

-- 
-- 
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.

Reply via email to