Direct Graphical Models
v.1.5.1
|
Potts edge training class. More...
#include <TrainEdgePotts.h>
Public Member Functions | |
CTrainEdgePotts (byte nStates, word nFeatures) | |
Constructor. More... | |
virtual | ~CTrainEdgePotts (void) |
virtual void | reset (void) |
Resets class variables. More... | |
virtual void | addFeatureVecs (const Mat &featureVector1, byte gt1, const Mat &featureVector2, byte gt2) |
Adds a pair of feature vectors. More... | |
Public Member Functions inherited from DirectGraphicalModels::CTrainEdge | |
CTrainEdge (byte nStates, word nFeatures) | |
Constructor. More... | |
virtual | ~CTrainEdge (void) |
void | addFeatureVecs (const Mat &featureVectors, const Mat >, const CGraphExt *pGraph) |
Adds a block of new feature vectors. More... | |
void | addFeatureVecs (const vec_mat_t &featureVectors, const Mat >, const CGraphExt *pGraph) |
Adds a block of new feature vectors. More... | |
virtual void | train (bool doClean=false) |
Random model training. More... | |
Mat | getEdgePotentials (const Mat &featureVector1, const Mat &featureVector2, float *params, size_t params_len, float weight=1.0f) const |
Returns the edge potential, based on the feature vectors. More... | |
Public Member Functions inherited from DirectGraphicalModels::ITrain | |
ITrain (byte nStates, word nFeatures) | |
Constructor. More... | |
virtual | ~ITrain (void) |
word | getNumFeatures (void) const |
Returns number of features. More... | |
Public Member Functions inherited from DirectGraphicalModels::CBaseRandomModel | |
CBaseRandomModel (byte nStates) | |
Constructor. More... | |
virtual | ~CBaseRandomModel (void) |
virtual void | save (const std::string &path, const std::string &name=std::string(), short idx=-1) const |
Saves the training data. More... | |
virtual void | load (const std::string &path, const std::string &name=std::string(), short idx=-1) |
Loads the training data. More... | |
byte | getNumStates (void) const |
Returns number of features. More... | |
Static Public Member Functions | |
static Mat | getEdgePotentials (float val, byte nStates) |
Returns the data-independent edge potentials. More... | |
static Mat | getEdgePotentials (float *values, byte nStates) |
Returns the data-independent edge potentials. More... | |
Protected Member Functions | |
virtual void | saveFile (FILE *pFile) const |
Saves the random model into the file. More... | |
virtual void | loadFile (FILE *pFile) |
Loads the random model from the file. More... | |
virtual Mat | calculateEdgePotentials (const Mat &featureVector1, const Mat &featureVector2, float *params, size_t params_len) const |
Returns the data-independent edge potentials. More... | |
Protected Member Functions inherited from DirectGraphicalModels::CBaseRandomModel | |
std::string | generateFileName (const std::string &path, const std::string &name, short idx) const |
Generates name of the data file for storing random model parameters. More... | |
Additional Inherited Members | |
Protected Attributes inherited from DirectGraphicalModels::ITrain | |
word | m_nFeatures |
The number of features (length of the feature vector) More... | |
Protected Attributes inherited from DirectGraphicalModels::CBaseRandomModel | |
byte | m_nStates |
The number of states (classes) More... | |
Potts edge training class.
This class implements the Potts model for edge (pairwise) potentials, which is both training- and test-data-independent, and thus may be applied without edge training procedure, i.e. functions reset(), save(), load(), addFeatureVecs() are unnecessary here.
This class may be used in case when the training- and test-data for edges is not available.
Definition at line 19 of file TrainEdgePotts.h.
|
inline |
Constructor.
nStates | Number of states (classes) |
nFeatures | Number of features |
Definition at line 27 of file TrainEdgePotts.h.
|
inlinevirtual |
Definition at line 28 of file TrainEdgePotts.h.
|
inlinevirtual |
Adds a pair of feature vectors.
Used to add featureVector1 and featureVector2, corresponding to the ground-truth states (classes) gt1 and gt2 for training. Here the couple {featureVector1, gt1} corresponds to the first node of the edge, and the couple {featureVector2, gt2} - to the second node.
featureVector1 | Multi-dimensinal point: Mat(size: nFeatures x 1; type: CV_8UC1), corresponding to the first node of the edge. |
gt1 | The ground-truth state (class) of the first node of the edge, given by featureVector1 |
featureVector2 | Multi-dimensinal point: Mat(size: nFeatures x 1; type: CV_8UC1), corresponding to the second node of the edge. |
gt2 | The ground-truth state (class) of the second node of the edge, given by featureVector2 |
Implements DirectGraphicalModels::CTrainEdge.
Reimplemented in DirectGraphicalModels::CTrainEdgePrior.
Definition at line 32 of file TrainEdgePotts.h.
|
protectedvirtual |
Returns the data-independent edge potentials.
This function returns matrix with diagonal elements equal to parameter \(\vec{\theta}\) provided through argument params; all the other elements are 1's - this imitates the Potts model.
\[edgePot[nStates][nStates] = \begin{bmatrix} \theta_1 & 1 & \cdots & 1 \\ 1 & \theta_2 & \cdots & 1 \\ \vdots & \vdots & \ddots & \vdots \\ 1 & 1 & \cdots & \theta_{nStates} \end{bmatrix} \]
featureVector1 | Multi-dimensinal point \(\textbf{f}_1\): Mat(size: nFeatures x 1; type: CV_{XX}C1), corresponding to the first node of the edge
|
featureVector2 | Multi-dimensinal point \(\textbf{f}_2\): Mat(size: nFeatures x 1; type: CV_{XX}C1), corresponding to the second node of the edge
|
params | Array of control parameters \(\vec{\theta}\), which may consist either from one parameter (in this case all the diagonal elemets will be the same), or from nStates parameters, specifying smoothness strength for each state (class) individually. |
params_len | The length of the params parameter. It must be equal to (1 || nStates). |
Implements DirectGraphicalModels::CTrainEdge.
Reimplemented in DirectGraphicalModels::CTrainEdgePottsCS, and DirectGraphicalModels::CTrainEdgePrior.
Definition at line 23 of file TrainEdgePotts.cpp.
|
static |
Returns the data-independent edge potentials.
This function returns matrix with diagonal elements equal to the argument val, all the other elements are 1's, what imitates the Potts model.
\[edgePot[nStates][nStates] = \begin{bmatrix} val & 1 & \cdots & 1 \\ 1 & val & \cdots & 1 \\ \vdots & \vdots & \ddots & \vdots \\ 1 & 1 & \cdots & val \end{bmatrix} \]
val | The diagonal element of the matrix |
nStates | Number of states (classes) |
Definition at line 8 of file TrainEdgePotts.cpp.
|
static |
Returns the data-independent edge potentials.
This function returns matrix with diagonal elements specified by argument array values, all the other elements are 1's, what imitates the Potts model.
\[edgePot[nStates][nStates] = \begin{bmatrix} values_1 & 1 & \cdots & 1 \\ 1 & values_2 & \cdots & 1 \\ \vdots & \vdots & \ddots & \vdots \\ 1 & 1 & \cdots & values_{nStates} \end{bmatrix} \]
values | The array of diagonal elements of the matrix. In must include nStates values, specifying smoothness strength for each state (class) individually. |
nStates | Number of states (classes) |
Definition at line 16 of file TrainEdgePotts.cpp.
|
inlineprotectedvirtual |
Loads the random model from the file.
Allows to re-use the class.
pFile | Pointer to the file, opened for reading. |
Implements DirectGraphicalModels::CBaseRandomModel.
Reimplemented in DirectGraphicalModels::CTrainEdgePrior.
Definition at line 55 of file TrainEdgePotts.h.
|
inlinevirtual |
Resets class variables.
Allows to re-use the class.
Implements DirectGraphicalModels::CBaseRandomModel.
Reimplemented in DirectGraphicalModels::CTrainEdgePrior.
Definition at line 30 of file TrainEdgePotts.h.
|
inlineprotectedvirtual |
Saves the random model into the file.
Allows to re-use the class.
pFile | Pointer to the file, opened for writing. |
Implements DirectGraphicalModels::CBaseRandomModel.
Reimplemented in DirectGraphicalModels::CTrainEdgePrior.
Definition at line 54 of file TrainEdgePotts.h.