computeLocalFeatures.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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. std::set_terminate( __gnu_cxx::__verbose_terminate_handler );
  36. NICE::Config * conf = new NICE::Config ( argc, argv );
  37. const std::string resultsfile = conf->gS( "main", "resultsfile", "/tmp/results.txt" );
  38. ResourceStatistics rs;
  39. // ========================================================================
  40. // TRAINING STEP
  41. // ========================================================================
  42. MultiDataset md( conf );
  43. const LabeledSet *trainFiles = md["train"];
  44. //**********************************************
  45. //
  46. // FEATURE EXTRACTION FOR TRAINING IMAGES
  47. //
  48. //**********************************************
  49. std::cerr << "FEATURE EXTRACTION FOR TRAINING IMAGES" << std::endl;
  50. OBJREC::LocalFeatureRepresentation * featureExtractor = OBJREC::GenericLFSelection::selectLocalFeatureRep ( conf, "features", OBJREC::GenericLFSelection::TRAINING );
  51. //TODO replace the nasty makro by a suitable for-loop to make it omp-ready (parallelization)
  52. int imgCnt ( 0 );
  53. // the corresponding nasty makro: LOOP_ALL_S( *trainFiles )
  54. for(LabeledSet::const_iterator classIt = trainFiles->begin() ; classIt != trainFiles->end() ; classIt++)
  55. {
  56. for ( std::vector<ImageInfo *>::const_iterator imgIt = classIt->second.begin();
  57. imgIt != classIt->second.end();
  58. imgIt++, imgCnt++
  59. )
  60. {
  61. // the corresponding nasty makro: EACH_INFO( classno, info );
  62. int classno ( classIt->first );
  63. const ImageInfo imgInfo = *(*imgIt);
  64. std::string filename = imgInfo.img();
  65. NICE::ColorImage img( filename );
  66. //compute features
  67. //variables to store feature information
  68. NICE::VVector features;
  69. NICE::VVector positions;
  70. Globals::setCurrentImgFN ( filename );
  71. featureExtractor->extractFeatures ( img, features, positions );
  72. }
  73. }
  74. // ========================================================================
  75. // TEST STEP
  76. // ========================================================================
  77. const LabeledSet *testFiles = md["test"];
  78. delete featureExtractor;
  79. featureExtractor = OBJREC::GenericLFSelection::selectLocalFeatureRep ( conf, "features", OBJREC::GenericLFSelection::TESTING );
  80. LOOP_ALL_S( *testFiles )
  81. {
  82. EACH_INFO( classno, info );
  83. std::string filename = info.img();
  84. //**********************************************
  85. //
  86. // FEATURE EXTRACTION FOR TEST IMAGES
  87. //
  88. //**********************************************
  89. NICE::ColorImage img( filename );
  90. //compute features
  91. //variables to store feature information
  92. NICE::VVector features;
  93. NICE::VVector positions;
  94. Globals::setCurrentImgFN ( filename );
  95. featureExtractor->extractFeatures ( img, features, positions );
  96. }
  97. return 0;
  98. }