8 #include <boost/thread/thread.hpp>
9 #include <boost/thread/mutex.hpp>
10 #include <boost/bind.hpp>
11 #include "../CEBLModel.hpp"
20 this->is_classifying =
false;
22 this->currently_training_classifier =
false;
23 this->train_classifier_thread = NULL;
24 this->selected_class = -1;
25 this->training_failed =
false;
41 return is_classifying;
46 std::vector<int> ret = classification_queue;
54 return classification_queue;
64 classification_queue.resize(0);
73 this->training_failed =
false;
74 this->currently_training_classifier =
true;
75 this->halt_training =
false;
82 for(
int cls = 0; cls < training_data.
numClasses(); cls++)
84 for(
int seq = 0; seq < training_data.
numSequences(cls); seq++)
89 this->currently_training_classifier =
false;
90 this->training_failed =
true;
94 temp = training_data.
get(cls,seq);
100 cout <<
"Featurizing class " << cls <<
", seq " << seq <<
"\n";
105 this->training_failed =
true;
106 cerr << e.what() <<
". Make sure you have installed the most recent feature plugins.\n";
107 this->currently_training_classifier =
false;
111 processed_data.
set(cls,seq,temp);
115 this->currently_training_classifier =
false;
116 this->training_failed =
true;
130 cerr << e.what() <<
"\n";
131 this->currently_training_classifier =
false;
132 this->training_failed =
true;
135 this->currently_training_classifier =
false;
149 is_classifying =
true;
166 this->is_classifying =
false;
174 if(new_data.
size1() == 0)
185 cerr <<
"Caught exception when extracting features.\n";
187 this->is_classifying =
false;
191 ublas::vector<int> classes;
198 cerr <<
"Caught exception when classifying: " << e.what() <<
"\n";
200 this->is_classifying =
false;
205 cerr <<
"Caught exception when classifying: No Message\n";
207 this->is_classifying =
false;
213 for(
unsigned i=0;i<classes.size();i++)
214 classification_queue.push_back(classes[i]);
220 using namespace cppR;
223 if(model->classifierGetUseProbs())
225 std::vector<std::vector<double> > probs
226 = model->classifierGetLastProbs();
229 model->decisionUpdateWithProbabilities(probs);
233 cerr <<
"Realtime Classificaton: Probabilities are empty. Using predicted classes instead.\n";
234 model->decisionUpdateWithClassification(classes);
239 model->decisionUpdateWithClassification(classes);
243 this->class_proportions = model->decisionDecideClasses();
244 ublas::vector<double> props =
248 if(
max(props) >= 1.0)
250 this->selected_class =
whichMax(props);
262 return currently_training_classifier;
267 obj->currently_training_classifier =
true;
274 cerr <<
"Exception caught when training classifier: " << e.what() <<
"\n";
276 obj->currently_training_classifier =
false;
277 delete obj->train_classifier_thread;
278 obj->train_classifier_thread = NULL;
279 cout <<
"Classifier training stopped.\n";
289 if(currently_training_classifier && train_classifier_thread != NULL)
291 halt_training =
true;