computeLocalFeatures.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /**
  2. * @file computeLocalFeatures.cpp
  3. * @brief compute some features for training and testing (separate specifications possible)
  4. * @author Alexander Freytag
  5. * @date 14-06-2013
  6. */
  7. //STL
  8. #include <iostream>
  9. #include <limits>
  10. //core -- basic stuff
  11. #include <core/basics/Config.h>
  12. #include <core/basics/ResourceStatistics.h>
  13. #include <core/basics/Timer.h>
  14. #include <core/image/Convert.h>
  15. #include <core/vector/VectorT.h>
  16. //vislearning -- basic stuff
  17. #include <vislearning/baselib/Globals.h>
  18. #include <vislearning/baselib/ICETools.h>
  19. #include <vislearning/cbaselib/MultiDataset.h>
  20. #include <vislearning/cbaselib/Example.h>
  21. #include <vislearning/cbaselib/ClassificationResult.h>
  22. #include <vislearning/cbaselib/ClassificationResults.h>
  23. // vislearning -- local features
  24. #include <vislearning/features/localfeatures/GenericLFSelection.h>
  25. //
  26. using namespace std;
  27. using namespace NICE;
  28. using namespace OBJREC;
  29. /**
  30. a complete BoW pipeline
  31. possibly, we can make use of objrec/progs/testClassifier.cpp
  32. */
  33. int main( int argc, char **argv )
  34. {
  35. #ifndef __clang__
  36. #ifndef __llvm__
  37. std::set_terminate( __gnu_cxx::__verbose_terminate_handler );
  38. #endif
  39. #endif
  40. NICE::Config * conf = new NICE::Config ( argc, argv );
  41. const std::string resultsfile = conf->gS( "main", "resultsfile", "/tmp/results.txt" );
  42. ResourceStatistics rs;
  43. // ========================================================================
  44. // TRAINING STEP
  45. // ========================================================================
  46. MultiDataset md( conf );
  47. const LabeledSet *trainFiles = md["train"];
  48. //**********************************************
  49. //
  50. // FEATURE EXTRACTION FOR TRAINING IMAGES
  51. //
  52. //**********************************************
  53. std::cerr << "FEATURE EXTRACTION FOR TRAINING IMAGES" << std::endl;
  54. OBJREC::LocalFeatureRepresentation * featureExtractor = OBJREC::GenericLFSelection::selectLocalFeatureRep ( conf, "features", OBJREC::GenericLFSelection::TRAINING );
  55. //TODO replace the nasty makro by a suitable for-loop to make it omp-ready (parallelization)
  56. int imgCnt ( 0 );
  57. // the corresponding nasty makro: LOOP_ALL_S( *trainFiles )
  58. for(LabeledSet::const_iterator classIt = trainFiles->begin() ; classIt != trainFiles->end() ; classIt++)
  59. {
  60. for ( std::vector<ImageInfo *>::const_iterator imgIt = classIt->second.begin();
  61. imgIt != classIt->second.end();
  62. imgIt++, imgCnt++
  63. )
  64. {
  65. // the corresponding nasty makro: EACH_INFO( classno, info );
  66. int classno ( classIt->first );
  67. const ImageInfo imgInfo = *(*imgIt);
  68. std::string filename = imgInfo.img();
  69. NICE::ColorImage img( filename );
  70. //compute features
  71. //variables to store feature information
  72. NICE::VVector features;
  73. NICE::VVector positions;
  74. Globals::setCurrentImgFN ( filename );
  75. featureExtractor->extractFeatures ( img, features, positions );
  76. }
  77. }
  78. // ========================================================================
  79. // TEST STEP
  80. // ========================================================================
  81. const LabeledSet *testFiles = md["test"];
  82. delete featureExtractor;
  83. featureExtractor = OBJREC::GenericLFSelection::selectLocalFeatureRep ( conf, "features", OBJREC::GenericLFSelection::TESTING );
  84. LOOP_ALL_S( *testFiles )
  85. {
  86. EACH_INFO( classno, info );
  87. std::string filename = info.img();
  88. //**********************************************
  89. //
  90. // FEATURE EXTRACTION FOR TEST IMAGES
  91. //
  92. //**********************************************
  93. NICE::ColorImage img( filename );
  94. //compute features
  95. //variables to store feature information
  96. NICE::VVector features;
  97. NICE::VVector positions;
  98. Globals::setCurrentImgFN ( filename );
  99. featureExtractor->extractFeatures ( img, features, positions );
  100. }
  101. return 0;
  102. }