Direct Graphical Models  v.1.7.0
TrainNodeCvSVM.h
1 // Support Vector Machines (based on OpenCV) training class interface
2 // Written by Sergey G. Kosov in 2017 for Project X
3 #pragma once
4 
5 #include "TrainNode.h"
6 
7 namespace DirectGraphicalModels
8 {
9  class CSamplesAccumulator;
10 
12  typedef struct TrainNodeCvSVMParams {
13  double C;
14  int maxCount;
15  double epsilon;
17  size_t maxSamples;
18 
22 
24  0.4, // Parameter C of a SVM optimization problem
25  10000, // The maximum number of iterations (time / accuracy)
26  0.01, // The desired accuracy or change in parameters at which the iterative algorithm stops
27  TermCriteria::MAX_ITER | TermCriteria::EPS, // Termination cirteria (according the the two previous parameters)
28  0 // Maximum number of samples to be used in training. 0 means using all the samples
29  );
30 
31  // ====================== OpenCV Support Vector Machines Train Class =====================
39  class CTrainNodeCvSVM : public CTrainNode {
40  public:
47  DllExport CTrainNodeCvSVM(byte nStates, word nFeatures, TrainNodeCvSVMParams params = TRAIN_NODE_CV_SVM_PARAMS_DEFAULT);
56  DllExport CTrainNodeCvSVM(byte nStates, word nFeatures, size_t maxSamples);
57  DllExport virtual ~CTrainNodeCvSVM(void);
58 
59  DllExport void reset(void);
60  DllExport void save(const std::string &path, const std::string &name = std::string(), short idx = -1) const;
61  DllExport void load(const std::string &path, const std::string &name = std::string(), short idx = -1);
62 
63  DllExport void addFeatureVec(const Mat &featureVector, byte gt);
64 
65  DllExport void train(bool doClean = false);
66 
67 
68  protected:
69  DllExport void saveFile(FILE *pFile) const { }
70  DllExport void loadFile(FILE *pFile) { }
71  DllExport void calculateNodePotentials(const Mat &featureVector, Mat &potential, Mat &mask) const;
72 
73 
74  private:
75  void init(TrainNodeCvSVMParams params); // This function is called by both constructors
76 
77 
78  protected:
79  Ptr<ml::SVM> m_pSVM;
81  };
82 }
void calculateNodePotentials(const Mat &featureVector, Mat &potential, Mat &mask) const
Calculates the node potential, based on the feature vector.
CSamplesAccumulator * m_pSamplesAcc
Samples Accumulator.
OpenCV Support Vector Machines training class.
void reset(void)
Resets class variables.
double epsilon
The desired accuracy or change in parameters at which the iterative algorithm stops.
const TrainNodeCvSVMParams TRAIN_NODE_CV_SVM_PARAMS_DEFAULT
Ptr< ml::SVM > m_pSVM
Support Vector Machine.
TrainNodeCvSVMParams(double C, int maxCount, double epsilon, int term_criteria_type, int maxSamples)
void load(const std::string &path, const std::string &name=std::string(), short idx=-1)
Loads the training data.
void save(const std::string &path, const std::string &name=std::string(), short idx=-1) const
Saves the training data.
struct DirectGraphicalModels::TrainNodeCvSVMParams TrainNodeCvSVMParams
OpenCV Support Vector machine parameters.
OpenCV Support Vector machine parameters.
int maxCount
The maximum number of iterations (time / accuracy)
int term_criteria_type
Termination cirteria type (according the the two previous parameters)
double C
Parameter C of a SVM optimization problem.
Samples accumulator abstract class.
void init(TrainNodeCvSVMParams params)
void loadFile(FILE *pFile)
Loads the random model from the file.
void train(bool doClean=false)
Random model training.
Base abstract class for node potentials training.
Definition: TrainNode.h:47
CTrainNodeCvSVM(byte nStates, word nFeatures, TrainNodeCvSVMParams params=TRAIN_NODE_CV_SVM_PARAMS_DEFAULT)
Constructor.
void addFeatureVec(const Mat &featureVector, byte gt)
Adds new feature vector.
size_t maxSamples
Maximum number of samples to be used in training. 0 means using all the samples.
void saveFile(FILE *pFile) const
Saves the random model into the file.