KSquare Utilities
TrainingClass.h
Go to the documentation of this file.
1 #if !defined(_TRAININGCLASS_)
2 #define _TRAININGCLASS_
3 /**
4  *@class KKMLL::TrainingClass
5  *@brief Specify where training examples and other related data for a MLClass that is needed to train a classifier.
6  *@details
7  * You create one instance of this object for each MLClass instance that you want to include in a classifier. Each instance
8  * will tie a class to the directories where you can find training examples. Other info that is included is 'CountFator',
9  * training Weight, dun-classifier that is to be used to further define the prediction.
10  */
11 
12 
13 #include "KKStr.h"
14 #include "KKQueue.h"
15 #include "XmlStream.h"
16 
17 namespace KKMLL
18 {
19  #if !defined(_MLCLASS_)
20  class MLClass;
21  typedef MLClass* MLClassPtr;
22  class MLClassList;
23  typedef MLClassList* MLClassListPtr;
24  #endif
25 
26  #if !defined(_TrainingConfiguration2_Defined_)
29  #endif
30 
31  #if !defined(_TrainingConfiguration2List_Defined_)
34  #endif
35 
36 
37 
39  {
40  public:
41  TrainingClass ();
42 
43  /**
44  *@brief Constructor, Creates a new instance of TrainingClass and populates
45  *fields with respective data from parameters.
46  *@param[in] _directories A list of directories where training examples for class '_name' can be found.
47  *@param[in] _name The name of the class that this'TrainingClass' instance will be pointing to.
48  *@param[in] _weight You can give extra weight to a class with this parameter; its impact/use varies with particular algorithm(Model) used.
49  *@param[in] _countFactor
50  *@param[in] _subClassifier If not NULL points to the configuration that is to be used if this class
51  * is predicted. This is how multi-level classifier is implemented.
52  *@param[in,out] _mlClasses List of classes.
53  */
54  TrainingClass (const VectorKKStr& _directories,
55  KKStr _name,
56  float _weight,
57  float _countFactor,
58  TrainingConfiguration2Ptr _subClassifier,
59  MLClassList& _mlClasses
60  );
61 
62  TrainingClass (const TrainingClass& tc);
63 
64 
65  float CountFactor () const {return countFactor;}
66  const KKStr& Directory (kkuint32 idx) const;
67  kkuint32 DirectoryCount () const;
68  const VectorKKStr& Directories () const {return directories;}
69  const KKStr& FeatureFileName () const {return featureFileName;}
70  const MLClassPtr MLClass () const {return mlClass;}
71  const KKStr& Name () const;
72  TrainingConfiguration2Ptr SubClassifier () const {return subClassifier;}
73  const KKStr& SubClassifierName () const {return subClassifierName;}
74 
75  float Weight () const {return weight;}
76 
77  KKStr ExpandedDirectory (const KKStr& rootDir,
78  kkuint32 idx
79  );
80 
81  void AddDirectory (const KKStr& _directory);
82  void AddDirectories (const VectorKKStr& _directories);
83 
84  void CountFactor (float _countFactor) {countFactor = _countFactor;}
85  void FeatureFileName (const KKStr& _featureFileName) {featureFileName = _featureFileName;}
86  void MLClass (MLClassPtr _mlClass) {mlClass = _mlClass;}
87  void SubClassifier (TrainingConfiguration2Ptr _subClassifier) {subClassifier = _subClassifier;}
88  void SubClassifierName (const KKStr& _subClassifierName) {subClassifierName = _subClassifierName;}
89  void Weight (float _weight) {weight = _weight;}
90 
91  void Directory (kkuint32 idx,
92  const KKStr& directory
93  );
94 
95  virtual
96  void ReadXML (XmlStream& s,
97  XmlTagConstPtr tag,
98  VolConstBool& cancelFlag,
99  RunLog& log
100  );
101 
102 
103  virtual
104  void WriteXML (const KKStr& varName,
105  std::ostream& o
106  ) const;
107 
108  virtual
109  void WriteXML (const KKStr& varName,
110  const KKStr& rootDir,
111  std::ostream& o
112  ) const;
113 
114 
115 
116  private:
117  float countFactor; /**< Used when counting particles, specifies the impact on the count that this [articular trainingClass has. */
118  VectorKKStr directories;
119  KKStr featureFileName;
120  MLClassPtr mlClass;
121 
123  subClassifier; /**< The classifier hat is to be used to further define the class; for example
124  * if 'mlClass' is predicted 'subClassifier' is to be called to further define the
125  * prediction. The instance of 'TrainingClass' will not own this classifier; it will
126  * be owned by 'subClassifiers' in 'TrainingConfiguration2'.
127  */
128 
129  KKStr subClassifierName;
130 
131  float weight; /**< Will be used in 'TrainingProcess::ExtractFeatures' to weight images.
132  * the SVM Cost parameter from examples in this class will be weighted by this value.
133  */
134 
135  }; /* TrainingClass */
136 
137 
138 
140 
141 
143  {
144  public:
146 
147  TrainingClassList (const KKStr& rootDir,
148  bool owner
149  );
150 
151  private:
152  TrainingClassList (const TrainingClassList& tcl);
153 
154  public:
156  bool _owner
157  );
158 
159 
160  const KKStr& RootDir () const {return rootDir;}
161  void RootDir (const KKStr& _rootDir) {rootDir = _rootDir;}
162 
163  void AddTrainingClass (TrainingClassPtr trainingClass);
164 
165 
167 
168  TrainingClassPtr LocateByMLClass (MLClassPtr _mlClass) const;
169 
170  TrainingClassPtr LocateByMLClassName (const KKStr& className);
171 
172  TrainingClassPtr LocateByDirectory (const KKStr& directory);
173 
174  virtual void ReadXML (XmlStream& s,
175  XmlTagPtr tag,
176  VolConstBool& cancelFlag,
177  RunLog& log
178  );
179 
180  virtual void WriteXML (const KKStr& varName,
181  std::ostream& o
182  ) const;
183  private:
184  KKStr rootDir;
185 
186  }; /* TrainingClassList*/
187 
189 
190 
191 
194 
195 
198 
199 } /* KKMLL */
200 
201 
202 #endif
TrainingClass(const TrainingClass &tc)
const KKStr & FeatureFileName() const
Definition: TrainingClass.h:69
TrainingClassList(const KKStr &rootDir, bool owner)
XmlTag * XmlTagPtr
Definition: Atom.h:31
TrainingClassPtr LocateByMLClassName(const KKStr &className)
void FeatureFileName(const KKStr &_featureFileName)
Definition: TrainingClass.h:85
XmlElementTemplate< TrainingClass > XmlElementTrainingClass
const KKStr & Directory(kkuint32 idx) const
TrainingClassPtr LocateByDirectory(const KKStr &directory)
TrainingClass(const VectorKKStr &_directories, KKStr _name, float _weight, float _countFactor, TrainingConfiguration2Ptr _subClassifier, MLClassList &_mlClasses)
Constructor, Creates a new instance of TrainingClass and populates fields with respective data from p...
void Weight(float _weight)
Definition: TrainingClass.h:89
virtual void ReadXML(XmlStream &s, XmlTagConstPtr tag, VolConstBool &cancelFlag, RunLog &log)
void SubClassifierName(const KKStr &_subClassifierName)
Definition: TrainingClass.h:88
kkuint32 DirectoryCount() const
const KKStr & RootDir() const
unsigned __int32 kkuint32
Definition: KKBaseTypes.h:89
XmlElementTemplate< TrainingClassList > XmlElementTrainingClassList
float CountFactor() const
Definition: TrainingClass.h:65
KKStr ExpandedDirectory(const KKStr &rootDir, kkuint32 idx)
void MLClass(MLClassPtr _mlClass)
Definition: TrainingClass.h:86
XmlElementTrainingClass * XmlElementTrainingClassPtr
virtual void ReadXML(XmlStream &s, XmlTagPtr tag, VolConstBool &cancelFlag, RunLog &log)
virtual void WriteXML(const KKStr &varName, std::ostream &o) const
XmlTag const * XmlTagConstPtr
Definition: KKStr.h:45
Manages the reading and writing of objects in a simple XML format. For a class to be supported by Xml...
Definition: XmlStream.h:46
float Weight() const
Definition: TrainingClass.h:75
virtual void WriteXML(const KKStr &varName, const KKStr &rootDir, std::ostream &o) const
void SubClassifier(TrainingConfiguration2Ptr _subClassifier)
Definition: TrainingClass.h:87
static KKStr Concat(const std::vector< std::string > &values)
Concatenates the list of &#39;std::string&#39; strings.
Definition: KKStr.cpp:1082
XmlElementTrainingClassList * XmlElementTrainingClassListPtr
const KKStr & Name() const
void AddTrainingClass(TrainingClassPtr trainingClass)
TrainingConfiguration2Ptr SubClassifier() const
Definition: TrainingClass.h:72
const MLClassPtr MLClass() const
Definition: TrainingClass.h:70
TrainingClassList * TrainingClassListPtr
TrainingConfiguration2List * TrainingConfiguration2ListPtr
Specify where training examples and other related data for a MLClass that is needed to train a classi...
Definition: TrainingClass.h:38
TrainingClassPtr LocateByMLClass(MLClassPtr _mlClass) const
void Directory(kkuint32 idx, const KKStr &directory)
KKStr & operator=(const KKStr &src)
Definition: KKStr.cpp:1390
Used for logging messages.
Definition: RunLog.h:49
void EncodeProblem(const struct svm_paramater &param, struct svm_problem &prob_in, struct svm_problem &prob_out)
void AddDirectories(const VectorKKStr &_directories)
const KKStr & SubClassifierName() const
Definition: TrainingClass.h:73
TrainingConfiguration2 * TrainingConfiguration2Ptr
Definition: Classifier2.h:56
virtual void WriteXML(const KKStr &varName, std::ostream &o) const
Maintains a list of MLClass instances.
Definition: MLClass.h:233
const VectorKKStr & Directories() const
Definition: TrainingClass.h:68
TrainingClass * TrainingClassPtr
TrainingClassList(const TrainingClassList &tcl, bool _owner)
void CountFactor(float _countFactor)
Definition: TrainingClass.h:84
TrainingClassList * DuplicateListAndContents() const
void RootDir(const KKStr &_rootDir)
void AddDirectory(const KKStr &_directory)
volatile const bool VolConstBool
Definition: KKBaseTypes.h:163