/** * @file laplaceTests.cpp * @brief Laplace Approximation Tests * @author Erik Rodner * @date 02/17/2010 */ #include "core/imagedisplay/ImageDisplay.h" #include "core/basics/Config.h" #include "vislearning/baselib/ICETools.h" #include "vislearning/cbaselib/LabeledSet.h" #include "vislearning/classifier/kernelclassifier/LikelihoodFunction.h" #include "vislearning/classifier/kernelclassifier/LaplaceApproximation.h" #include "vislearning/classifier/kernelclassifier/KCGPLaplace.h" #include "vislearning/math/kernels/KernelData.h" #include "vislearning/math/kernels/Kernel.h" #include "vislearning/math/kernels/KernelRBF.h" #include "vislearning/math/kernels/KernelExp.h" using namespace std; using namespace OBJREC; using namespace NICE; /** Laplace Approximation Tests */ int main (int argc, char **argv) { #ifdef __GLIBCXX__ std::set_terminate(__gnu_cxx::__verbose_terminate_handler); #endif Config conf ( argc, argv ); LabeledSetVector train; train.read ( conf.gS("main", "set" ), LabeledSetVector::FILEFORMAT_NOINDEX ); LOOP_ALL_NONCONST ( train ) { EACH_NONCONST (classno, v ); v[0] /= 300.0; v[1] /= 300.0; } double rbf_sigma = conf.gD("main", "rbf_sigma", -2.0 ); KernelRBF kernelFunction ( rbf_sigma, 0.0 ); //KernelExp kernelFunction ( rbf_sigma, 0.0, 0.0 ); KernelClassifier *classifier = new KCGPLaplace ( &conf, &kernelFunction ); classifier->teach( train ); FloatImage predictions ( 100, 100 ); for ( uint i = 0 ; i < (uint)predictions.height(); i++ ) for ( uint j = 0 ; j < (uint)predictions.width(); j++ ) { double yy = i/(double)predictions.height(); double xx = j/(double)predictions.width(); Vector vec (2); vec[0] = xx; vec[1] = yy; if ( train.dimension() == 3 ) vec.append(1.0); ClassificationResult r = classifier->classify ( vec ); predictions.setPixel(j,i,r.scores[1]); } ColorImage img; ICETools::convertToRGB ( predictions, img ); LOOP_ALL(train) { EACH(classno,vec); int xx = vec[0]*predictions.width(); int yy = vec[1]*predictions.height(); img.setPixel(xx,yy,0, 255*classno ); img.setPixel(xx,yy,1, 255*classno ); img.setPixel(xx,yy,2, 255*classno ); } showImage ( img ); return 0; }