MCPcopy Create free account
hub / github.com/OpenPTrack/open_ptrack_v2 / train

Method train

detection/src/haardispada.cpp:190–254  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

188 }
189
190 void
191 HaarDispAdaClassifier::train(string filename)
192 {
193 //CvBoostParams bparams = CvBoostParams();
194 //float priorFloat[] = { 1.0, HaarDispAdaPrior_ }; // preliminary priors based on ROC)
195 //bparams.priors = &priorFloat[0];
196 //bparams.use_surrogates = false;
197 //bparams.weak_count = 100;
198 vector<double> priors(2);
199 priors[0] = 1;
200 priors[1] = 26;
201
202 // copy sub matrix for training
203 cv::Mat VarIdx;
204 cv::Mat Features(numSamples_,num_filters_,CV_32F);
205 for(int i=0;i<numSamples_;i++){
206 for(int j=0;j<num_filters_;j++){
207 Features.at<float>(i,j) = trainingSamples_.at<float>(i,j);
208 }
209 }
210 cv::Mat Responses(numSamples_,1,CV_32S);
211 for(int i=0; i<numSamples_;i++){
212 if(trainingLabels_.at<int>(i,0) == -1) trainingLabels_.at<int>(i,0) = 0;//classes: 0,1
213 Responses.at<int>(i,0) = trainingLabels_.at<int>(i,0);
214 }
215 cv::Mat vIdx=cv::Mat::ones(Features.cols,1,CV_8UC1); // variables of interest
216 cv::Mat sIdx=cv::Mat::ones(Responses.rows,1,CV_8UC1); // samples of interest
217 cv::Mat vtyp=cv::Mat(Features.cols,1,CV_8UC1,cv::ml::VAR_ORDERED); // could be VAR_CATAGORICAL(discrete)
218 //Mat MDM; // no missing mask
219
220 //boost->setBoostType(Boost::DISCRETE);
221 HDAC_->setWeakCount(100);
222 HDAC_->setWeightTrimRate(0.95);
223 //HDAC_->setMaxDepth(2);
224 HDAC_->setUseSurrogates(false);
225 HDAC_->setPriors(cv::Mat(priors));
226
227 //prepare_train_data( Features, Responses );
228 //HDAC_.train(Features, CV_ROW_SAMPLE, Responses,vIdx,sIdx,vtyp,MDM,bparams,false);//
229 cv::Ptr<cv::ml::TrainData> tdata = cv::ml::TrainData::create(Features, cv::ml::ROW_SAMPLE, Responses, vIdx, sIdx, cv::noArray(), vtyp);
230 HDAC_->train(tdata);
231 ROS_ERROR("saving trained classifier to %s",filename.c_str());
232 loaded = true;
233 HDAC_->save(filename.c_str());
234 // Determine Recall Statistics
235 int num_TP = 0;
236 int num_FP = 0;
237 int num_people = 0;
238 int num_neg = 0;
239 int num_TN = 0;
240 int num_FN = 0;
241 for(int i=0;i<Features.rows;i++){
242 float result = HDAC_->predict(Features.row(i));//float s = model->predict( temp_sample, noArray(), StatModel::RAW_OUTPUT );
243 if(Responses.at<int>(i,0) == 1) num_people++;
244 if(Responses.at<int>(i,0) != 1) num_neg++;
245 if(result==1 && Responses.at<int>(i,0) == 1) num_TP++; // true pos
246 else if(result==1 && Responses.at<int>(i,0) == 0) num_FP++; // false pos
247 else if(result==0 && Responses.at<int>(i,0) == 0) num_TN++; // true neg

Callers 3

imageCbMethod · 0.80
imageCbMethod · 0.80
imageCbMethod · 0.80

Calls 3

MatClass · 0.85
saveMethod · 0.45
predictMethod · 0.45

Tested by

no test coverage detected