/** * @file computeLocalFeatures.cpp * @brief compute some features for training and testing (separate specifications possible) * @author Alexander Freytag * @date 14-06-2013 */ //STL #include #include //core -- basic stuff #include #include #include #include #include //vislearning -- basic stuff #include #include #include #include #include #include // vislearning -- local features #include // using namespace std; using namespace NICE; using namespace OBJREC; /** a complete BoW pipeline possibly, we can make use of objrec/progs/testClassifier.cpp */ int main( int argc, char **argv ) { #ifndef __clang__ #ifndef __llvm__ std::set_terminate( __gnu_cxx::__verbose_terminate_handler ); #endif #endif NICE::Config * conf = new NICE::Config ( argc, argv ); const std::string resultsfile = conf->gS( "main", "resultsfile", "/tmp/results.txt" ); ResourceStatistics rs; // ======================================================================== // TRAINING STEP // ======================================================================== MultiDataset md( conf ); const LabeledSet *trainFiles = md["train"]; //********************************************** // // FEATURE EXTRACTION FOR TRAINING IMAGES // //********************************************** std::cerr << "FEATURE EXTRACTION FOR TRAINING IMAGES" << std::endl; OBJREC::LocalFeatureRepresentation * featureExtractor = OBJREC::GenericLFSelection::selectLocalFeatureRep ( conf, "features", OBJREC::GenericLFSelection::TRAINING ); //TODO replace the nasty makro by a suitable for-loop to make it omp-ready (parallelization) int imgCnt ( 0 ); // the corresponding nasty makro: LOOP_ALL_S( *trainFiles ) for(LabeledSet::const_iterator classIt = trainFiles->begin() ; classIt != trainFiles->end() ; classIt++) { for ( std::vector::const_iterator imgIt = classIt->second.begin(); imgIt != classIt->second.end(); imgIt++, imgCnt++ ) { // the corresponding nasty makro: EACH_INFO( classno, info ); int classno ( classIt->first ); const ImageInfo imgInfo = *(*imgIt); std::string filename = imgInfo.img(); NICE::ColorImage img( filename ); //compute features //variables to store feature information NICE::VVector features; NICE::VVector positions; Globals::setCurrentImgFN ( filename ); featureExtractor->extractFeatures ( img, features, positions ); } } // ======================================================================== // TEST STEP // ======================================================================== const LabeledSet *testFiles = md["test"]; delete featureExtractor; featureExtractor = OBJREC::GenericLFSelection::selectLocalFeatureRep ( conf, "features", OBJREC::GenericLFSelection::TESTING ); LOOP_ALL_S( *testFiles ) { EACH_INFO( classno, info ); std::string filename = info.img(); //********************************************** // // FEATURE EXTRACTION FOR TEST IMAGES // //********************************************** NICE::ColorImage img( filename ); //compute features //variables to store feature information NICE::VVector features; NICE::VVector positions; Globals::setCurrentImgFN ( filename ); featureExtractor->extractFeatures ( img, features, positions ); } return 0; }