123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- /**
- * @file boviceObjectBankFeatures.cpp
- * @brief convert ObjectBank features to a sparse BoV histogram representation
- * @author Erik Rodner
- * @date 01/23/2012
- */
- #include <algorithm>
- #include "core/basics/Config.h"
- #include "vislearning/cbaselib/MultiDataset.h"
- #include "vislearning/cbaselib/MutualInformation.h"
- #include "vislearning/baselib/Globals.h"
- using namespace std;
- using namespace NICE;
- using namespace OBJREC;
- void boviceFeatures ( const Config & conf, const Vector & thresholds,
- const LabeledSet & ls, const string & srcExtension, const string & dstExtension )
- {
- string cacheroot = conf.gS("cache", "root");
- LOOP_ALL_S ( ls )
- {
- EACH_S(classno, imgfn);
- Globals::setCurrentImgFN ( imgfn );
- string cachefn = Globals::getCacheFilename ( cacheroot, Globals::SORT_CATEGORIES ) + srcExtension;
- cerr << "processing " << cachefn << endl;
- vector<double> x;
- ifstream ifs ( cachefn.c_str(), ios::in );
- if ( ! ifs.good() )
- fthrow(Exception, "File not found: " << cachefn );
- while ( !ifs.eof() ) {
- double val = 0.0;
- if ( ifs >> val )
- x.push_back(val);
- }
- ifs.close();
-
- Vector xnew ( 177, 0.0 );
- for ( uint i = 0 ; i < 177; i++ )
- for ( uint j = 0 ; j < 252 ; j++ )
- xnew[i] += ( x[j + i*252] > thresholds[i] ) ? 1.0 : 0.0;
- xnew.normalizeL1();
- string dst_cachefn = Globals::getCacheFilename ( cacheroot, Globals::SORT_CATEGORIES ) + dstExtension;
- ofstream ofs ( dst_cachefn.c_str(), ios::out );
- if ( ! ofs.good() )
- fthrow(Exception, "Unable to write to " << dst_cachefn );
- ofs << xnew << endl;
- ofs.close ();
- }
-
- }
- /**
-
- convert ObjectBank features to a sparse histogram representation
-
- */
- int main (int argc, char **argv)
- {
- std::set_terminate(__gnu_cxx::__verbose_terminate_handler);
- Config conf ( argc, argv );
-
- MultiDataset md ( &conf );
- const LabeledSet *train = md["train"];
- const LabeledSet *test = md["test"];
- string dstExtention = conf.gS("main", "dstext", ".txt");
- string threshFile = conf.gS("main", "threshfile");
- Vector thresholds ( 177 );
- ifstream ifs ( threshFile.c_str(), ios::in );
- if ( !ifs.good() )
- fthrow(Exception, "Unable to open threshold file!");
- int index = 0;
- while ( !ifs.eof() )
- {
- double val;
- if ( ifs >> val ) {
- if ( index >= thresholds.size() )
- fthrow(Exception, "Error parsing threshold file!");
- thresholds[index] = val;
- }
- index++;
- }
- ifs.close();
- boviceFeatures ( conf, thresholds, *train, ".jpg.feat", dstExtention );
- boviceFeatures ( conf, thresholds, *test, ".jpg.feat", dstExtention );
-
- return 0;
- }
|