From 731597dff02e85fd8aa4bcb75dcc4cbf0af0aa1c Mon Sep 17 00:00:00 2001 From: Ludovic Hussonnois <ludovic.hussonnois@c-s.fr> Date: Mon, 27 Mar 2017 16:30:03 +0100 Subject: [PATCH] COMP: Add check for empty unsupervised classifier. --- .../include/otbLearningApplicationBase.txx | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Modules/Applications/AppClassification/include/otbLearningApplicationBase.txx b/Modules/Applications/AppClassification/include/otbLearningApplicationBase.txx index adbe6db9ca..73f24df848 100644 --- a/Modules/Applications/AppClassification/include/otbLearningApplicationBase.txx +++ b/Modules/Applications/AppClassification/include/otbLearningApplicationBase.txx @@ -60,7 +60,9 @@ LearningApplicationBase<TInputValue,TOutputValue> InitUnsupervisedClassifierParams(); std::vector<std::string> allClassifier = GetChoiceKeys("classifier"); - m_UnsupervisedClassifier.assign(allClassifier.begin() + m_SupervisedClassifier.size(), allClassifier.end()); + // Check for empty unsupervised classifier + if( allClassifier.size() > m_UnsupervisedClassifier.size() ) + m_UnsupervisedClassifier.assign( allClassifier.begin() + m_SupervisedClassifier.size(), allClassifier.end() ); } template <class TInputValue, class TOutputValue> @@ -68,10 +70,16 @@ typename LearningApplicationBase<TInputValue,TOutputValue>::ClassifierCategory LearningApplicationBase<TInputValue,TOutputValue> ::GetClassifierCategory() { - bool foundUnsupervised = - std::find(m_UnsupervisedClassifier.begin(), m_UnsupervisedClassifier.end(), - GetParameterString("classifier")) != m_UnsupervisedClassifier.end(); - return foundUnsupervised ? Unsupervised : Supervised; + if( m_UnsupervisedClassifier.empty() ) + { + return Supervised; + } + else + { + bool foundUnsupervised = std::find( m_UnsupervisedClassifier.begin(), m_UnsupervisedClassifier.end(), + GetParameterString( "classifier" ) ) != m_UnsupervisedClassifier.end(); + return foundUnsupervised ? Unsupervised : Supervised; + } } template <class TInputValue, class TOutputValue> @@ -202,7 +210,7 @@ LearningApplicationBase<TInputValue,TOutputValue> #endif } - + // OpenCV SVM implementation is buggy with linear kernel // Users should use the libSVM implementation instead. // else if (modelName == "svm") -- GitLab