|
@@ -0,0 +1,134 @@
|
|
|
+
|
|
|
+* @file computeLocalFeatures.cpp
|
|
|
+* @brief compute some features for training and testing (separate specifications possible)
|
|
|
+* @author Alexander Freytag
|
|
|
+* @date 14-06-2013
|
|
|
+*/
|
|
|
+
|
|
|
+
|
|
|
+#include <iostream>
|
|
|
+#include <limits>
|
|
|
+
|
|
|
+
|
|
|
+#include <core/basics/Config.h>
|
|
|
+#include <core/basics/ResourceStatistics.h>
|
|
|
+#include <core/basics/Timer.h>
|
|
|
+#include <core/image/Convert.h>
|
|
|
+#include <core/vector/VectorT.h>
|
|
|
+
|
|
|
+
|
|
|
+#include <vislearning/baselib/Globals.h>
|
|
|
+#include <vislearning/baselib/ICETools.h>
|
|
|
+#include <vislearning/cbaselib/MultiDataset.h>
|
|
|
+#include <vislearning/cbaselib/Example.h>
|
|
|
+#include <vislearning/cbaselib/ClassificationResult.h>
|
|
|
+#include <vislearning/cbaselib/ClassificationResults.h>
|
|
|
+
|
|
|
+#include <vislearning/features/localfeatures/GenericLFSelection.h>
|
|
|
+
|
|
|
+
|
|
|
+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 )
|
|
|
+{
|
|
|
+ std::set_terminate( __gnu_cxx::__verbose_terminate_handler );
|
|
|
+
|
|
|
+ NICE::Config * conf = new NICE::Config ( argc, argv );
|
|
|
+
|
|
|
+ const std::string resultsfile = conf->gS( "main", "resultsfile", "/tmp/results.txt" );
|
|
|
+
|
|
|
+ ResourceStatistics rs;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ MultiDataset md( conf );
|
|
|
+ const LabeledSet *trainFiles = md["train"];
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ std::cerr << "FEATURE EXTRACTION FOR TRAINING IMAGES" << std::endl;
|
|
|
+
|
|
|
+ OBJREC::LocalFeatureRepresentation * featureExtractor = OBJREC::GenericLFSelection::selectLocalFeatureRep ( conf, "features", OBJREC::GenericLFSelection::TRAINING );
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ int imgCnt ( 0 );
|
|
|
+
|
|
|
+
|
|
|
+ for(LabeledSet::const_iterator classIt = trainFiles->begin() ; classIt != trainFiles->end() ; classIt++)
|
|
|
+ {
|
|
|
+ for ( std::vector<ImageInfo *>::const_iterator imgIt = classIt->second.begin();
|
|
|
+ imgIt != classIt->second.end();
|
|
|
+ imgIt++, imgCnt++
|
|
|
+ )
|
|
|
+ {
|
|
|
+
|
|
|
+ int classno ( classIt->first );
|
|
|
+ const ImageInfo imgInfo = *(*imgIt);
|
|
|
+
|
|
|
+ std::string filename = imgInfo.img();
|
|
|
+
|
|
|
+ NICE::ColorImage img( filename );
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ NICE::VVector features;
|
|
|
+ NICE::VVector positions;
|
|
|
+
|
|
|
+ Globals::setCurrentImgFN ( filename );
|
|
|
+ featureExtractor->extractFeatures ( img, features, positions );
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ 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();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ NICE::ColorImage img( filename );
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ NICE::VVector features;
|
|
|
+ NICE::VVector positions;
|
|
|
+
|
|
|
+ Globals::setCurrentImgFN ( filename );
|
|
|
+ featureExtractor->extractFeatures ( img, features, positions );
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|