genericKernel.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #ifndef _NICE_OBJREC_GENERICKERNELSELECTION_INCLUDE
  2. #define _NICE_OBJREC_GENERICKERNELSELECTION_INCLUDE
  3. #include <vector>
  4. #include "KernelRBF.h"
  5. #include "KernelExp.h"
  6. #include "KernelHIK.h"
  7. #include "KernelEXPHIK.h"
  8. namespace OBJREC
  9. {
  10. class GenericKernelSelection
  11. {
  12. public:
  13. static Kernel *selectKernel ( const NICE::Config *conf, std::string kernel_type )
  14. {
  15. Kernel *kernel = NULL;
  16. if ( kernel_type == "rbf" )
  17. {
  18. double log_rbf_gamma = conf->gD ( "Kernel","log_rbf_gamma",-2.5 );
  19. kernel = new KernelRBF ( log_rbf_gamma );
  20. }
  21. else if ( kernel_type == "exp" )
  22. {
  23. double log_rbf_gamma = conf->gD ( "Kernel","log_rbf_gamma",-2.5 );
  24. double log_rbf_sv = conf->gD ( "Kernel","log_rbf_sv",0.0 );
  25. kernel = new KernelExp ( log_rbf_gamma, log_rbf_sv );
  26. }
  27. else if ( kernel_type == "hik" )
  28. {
  29. double alpha = conf->gD ( "Kernel","alpha",1.0 );
  30. double beta = conf->gD ( "Kernel","beta",1.0 );
  31. kernel = new KernelHIK ( alpha, beta );
  32. }
  33. else if ( kernel_type == "exphik" )
  34. {
  35. double alpha = conf->gD ( "Kernel","alpha",1.0 );
  36. double beta = conf->gD ( "Kernel","beta",1.0 );
  37. double gamma = conf->gD ( "Kernel","gamma",1.0 );
  38. kernel = new KernelEXPHIK ( gamma, alpha, beta );
  39. }
  40. else
  41. {
  42. fthrow ( NICE::Exception, "Kernel type " << kernel_type << " is unknown" );
  43. }
  44. return kernel;
  45. }
  46. };
  47. }
  48. #endif