OpenCV  4.1.0
Open Source Computer Vision
Public Types | Public Member Functions | Static Public Member Functions | List of all members
cv::ml::ANN_MLP Class Referenceabstract

Artificial Neural Networks - Multi-Layer Perceptrons. More...

#include <opencv2/ml.hpp>

Inheritance diagram for cv::ml::ANN_MLP:
cv::ml::StatModel cv::Algorithm

Public Types

enum  ActivationFunctions {
  IDENTITY = 0,
  SIGMOID_SYM = 1,
  GAUSSIAN = 2,
  RELU = 3,
  LEAKYRELU = 4
}
 
enum  TrainFlags {
  UPDATE_WEIGHTS = 1,
  NO_INPUT_SCALE = 2,
  NO_OUTPUT_SCALE = 4
}
 
enum  TrainingMethods {
  BACKPROP =0,
  RPROP = 1,
  ANNEAL = 2
}
 
- Public Types inherited from cv::ml::StatModel
enum  Flags {
  UPDATE_MODEL = 1,
  RAW_OUTPUT =1,
  COMPRESSED_INPUT =2,
  PREPROCESSED_INPUT =4
}
 

Public Member Functions

virtual double getAnnealCoolingRatio () const =0
 
virtual double getAnnealFinalT () const =0
 
virtual double getAnnealInitialT () const =0
 
virtual int getAnnealItePerStep () const =0
 
virtual double getBackpropMomentumScale () const =0
 
virtual double getBackpropWeightScale () const =0
 
virtual cv::Mat getLayerSizes () const =0
 
virtual double getRpropDW0 () const =0
 
virtual double getRpropDWMax () const =0
 
virtual double getRpropDWMin () const =0
 
virtual double getRpropDWMinus () const =0
 
virtual double getRpropDWPlus () const =0
 
virtual TermCriteria getTermCriteria () const =0
 
virtual int getTrainMethod () const =0
 
virtual Mat getWeights (int layerIdx) const =0
 
virtual void setActivationFunction (int type, double param1=0, double param2=0)=0
 
virtual void setAnnealCoolingRatio (double val)=0
 
virtual void setAnnealEnergyRNG (const RNG &rng)=0
 Set/initialize anneal RNG.
 
virtual void setAnnealFinalT (double val)=0
 
virtual void setAnnealInitialT (double val)=0
 
virtual void setAnnealItePerStep (int val)=0
 
virtual void setBackpropMomentumScale (double val)=0
 
virtual void setBackpropWeightScale (double val)=0
 
virtual void setLayerSizes (InputArray _layer_sizes)=0
 
virtual void setRpropDW0 (double val)=0
 
virtual void setRpropDWMax (double val)=0
 
virtual void setRpropDWMin (double val)=0
 
virtual void setRpropDWMinus (double val)=0
 
virtual void setRpropDWPlus (double val)=0
 
virtual void setTermCriteria (TermCriteria val)=0
 
virtual void setTrainMethod (int method, double param1=0, double param2=0)=0
 
- Public Member Functions inherited from cv::ml::StatModel
virtual float calcError (const Ptr< TrainData > &data, bool test, OutputArray resp) const
 Computes error on the training or test dataset.
 
virtual bool empty () const CV_OVERRIDE
 Returns true if the Algorithm is empty (e.g. in the very beginning or after unsuccessful read.
 
virtual int getVarCount () const =0
 Returns the number of variables in training samples.
 
virtual bool isClassifier () const =0
 Returns true if the model is classifier.
 
virtual bool isTrained () const =0
 Returns true if the model is trained.
 
virtual float predict (InputArray samples, OutputArray results=noArray(), int flags=0) const =0
 Predicts response(s) for the provided sample(s)
 
virtual bool train (const Ptr< TrainData > &trainData, int flags=0)
 Trains the statistical model.
 
virtual bool train (InputArray samples, int layout, InputArray responses)
 Trains the statistical model.
 
- Public Member Functions inherited from cv::Algorithm
 Algorithm ()
 
virtual ~Algorithm ()
 
virtual void clear ()
 Clears the algorithm state.
 
virtual String getDefaultName () const
 
virtual void read (const FileNode &fn)
 Reads algorithm parameters from a file storage.
 
virtual void save (const String &filename) const
 
virtual void write (FileStorage &fs) const
 Stores algorithm parameters in a file storage.
 
void write (const Ptr< FileStorage > &fs, const String &name=String()) const
 simplified API for language bindingsThis is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
 

Static Public Member Functions

static Ptr< ANN_MLPcreate ()
 Creates empty model.
 
static Ptr< ANN_MLPload (const String &filepath)
 Loads and creates a serialized ANN from a file.
 
- Static Public Member Functions inherited from cv::ml::StatModel
template<typename _Tp >
static Ptr< _Tp > train (const Ptr< TrainData > &data, int flags=0)
 Create and train model with default parameters.
 
- Static Public Member Functions inherited from cv::Algorithm
template<typename _Tp >
static Ptr< _Tp > load (const String &filename, const String &objname=String())
 Loads algorithm from the file.
 
template<typename _Tp >
static Ptr< _Tp > loadFromString (const String &strModel, const String &objname=String())
 Loads algorithm from a String.
 
template<typename _Tp >
static Ptr< _Tp > read (const FileNode &fn)
 Reads algorithm from the file node.
 

Additional Inherited Members

- Protected Member Functions inherited from cv::Algorithm
void writeFormat (FileStorage &fs) const
 

Detailed Description

Artificial Neural Networks - Multi-Layer Perceptrons.

Unlike many other models in ML that are constructed and trained at once, in the MLP model these steps are separated. First, a network with the specified topology is created using the non-default constructor or the method ANN_MLP::create. All the weights are set to zeros. Then, the network is trained using a set of input and output vectors. The training procedure can be repeated more than once, that is, the weights can be adjusted based on the new training data.

Additional flags for StatModel::train are available: ANN_MLP::TrainFlags.

See Also
Neural Networks

Member Enumeration Documentation

possible activation functions

Enumerator
IDENTITY 

Identity function: \(f(x)=x\)

SIGMOID_SYM 

Symmetrical sigmoid: \(f(x)=\beta*(1-e^{-\alpha x})/(1+e^{-\alpha x})\)

Note
If you are using the default sigmoid activation function with the default parameter values fparam1=0 and fparam2=0 then the function used is y = 1.7159*tanh(2/3 * x), so the output will range from [-1.7159, 1.7159], instead of [0,1].
GAUSSIAN 

Gaussian function: \(f(x)=\beta e^{-\alpha x*x}\)

RELU 

ReLU function: \(f(x)=max(0,x)\)

LEAKYRELU 

Leaky ReLU function: for x>0 \(f(x)=x \) and x<=0 \(f(x)=\alpha x \)

Train options

Enumerator
UPDATE_WEIGHTS 

Update the network weights, rather than compute them from scratch. In the latter case the weights are initialized using the Nguyen-Widrow algorithm.

NO_INPUT_SCALE 

Do not normalize the input vectors. If this flag is not set, the training algorithm normalizes each input feature independently, shifting its mean value to 0 and making the standard deviation equal to 1. If the network is assumed to be updated frequently, the new training data could be much different from original one. In this case, you should take care of proper normalization.

NO_OUTPUT_SCALE 

Do not normalize the output vectors. If the flag is not set, the training algorithm normalizes each output feature independently, by transforming it to the certain range depending on the used activation function.

Available training methods

Enumerator
BACKPROP 

The back-propagation algorithm.

RPROP 

The RPROP algorithm. See.

RPROP93 for details.

ANNEAL 

The simulated annealing algorithm. See.

Kirkpatrick83 for details.

Member Function Documentation

static Ptr<ANN_MLP> cv::ml::ANN_MLP::create ( )
static
Python:
retval=cv.ml.ANN_MLP_create()

Creates empty model.

Use StatModel::train to train the model, Algorithm::load<ANN_MLP>(filename) to load the pre-trained model. Note that the train method has optional flags: ANN_MLP::TrainFlags.

virtual double cv::ml::ANN_MLP::getAnnealCoolingRatio ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getAnnealCoolingRatio()
ANNEAL: Update cooling ratio.

It must be >0 and less than 1. Default value is 0.95.

See Also
setAnnealCoolingRatio
virtual double cv::ml::ANN_MLP::getAnnealFinalT ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getAnnealFinalT()
ANNEAL: Update final temperature.

It must be >=0 and less than initialT. Default value is 0.1.

See Also
setAnnealFinalT
virtual double cv::ml::ANN_MLP::getAnnealInitialT ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getAnnealInitialT()
ANNEAL: Update initial temperature.

It must be >=0. Default value is 10.

See Also
setAnnealInitialT
virtual int cv::ml::ANN_MLP::getAnnealItePerStep ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getAnnealItePerStep()
ANNEAL: Update iteration per step.

It must be >0 . Default value is 10.

See Also
setAnnealItePerStep
virtual double cv::ml::ANN_MLP::getBackpropMomentumScale ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getBackpropMomentumScale()
BPROP: Strength of the momentum term (the difference between weights on the 2 previous iterations).

This parameter provides some inertia to smooth the random fluctuations of the weights. It can vary from 0 (the feature is disabled) to 1 and beyond. The value 0.1 or so is good enough. Default value is 0.1.

See Also
setBackpropMomentumScale
virtual double cv::ml::ANN_MLP::getBackpropWeightScale ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getBackpropWeightScale()
BPROP: Strength of the weight gradient term.

The recommended value is about 0.1. Default value is 0.1.

See Also
setBackpropWeightScale
virtual cv::Mat cv::ml::ANN_MLP::getLayerSizes ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getLayerSizes()
 Integer vector specifying the number of neurons in each layer including the input and output layers.

The very first element specifies the number of elements in the input layer. The last element - number of elements in the output layer.

See Also
setLayerSizes
virtual double cv::ml::ANN_MLP::getRpropDW0 ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getRpropDW0()
RPROP: Initial value \form#692 of update-values \form#693.

Default value is 0.1.

See Also
setRpropDW0
virtual double cv::ml::ANN_MLP::getRpropDWMax ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getRpropDWMax()
RPROP: Update-values upper limit \form#697.

It must be >1. Default value is 50.

See Also
setRpropDWMax
virtual double cv::ml::ANN_MLP::getRpropDWMin ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getRpropDWMin()
RPROP: Update-values lower limit \form#696.

It must be positive. Default value is FLT_EPSILON.

See Also
setRpropDWMin
virtual double cv::ml::ANN_MLP::getRpropDWMinus ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getRpropDWMinus()
RPROP: Decrease factor \form#695.

It must be <1. Default value is 0.5.

See Also
setRpropDWMinus
virtual double cv::ml::ANN_MLP::getRpropDWPlus ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getRpropDWPlus()
RPROP: Increase factor \form#694.

It must be >1. Default value is 1.2.

See Also
setRpropDWPlus
virtual TermCriteria cv::ml::ANN_MLP::getTermCriteria ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getTermCriteria()
Termination criteria of the training algorithm.

You can specify the maximum number of iterations (maxCount) and/or how much the error could change between the iterations to make the algorithm continue (epsilon). Default value is TermCriteria(TermCriteria::MAX_ITER + TermCriteria::EPS, 1000, 0.01).

See Also
setTermCriteria
virtual int cv::ml::ANN_MLP::getTrainMethod ( ) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getTrainMethod()

Returns current training method

virtual Mat cv::ml::ANN_MLP::getWeights ( int  layerIdx) const
pure virtual
Python:
retval=cv.ml_ANN_MLP.getWeights(layerIdx)
static Ptr<ANN_MLP> cv::ml::ANN_MLP::load ( const String filepath)
static
Python:
retval=cv.ml.ANN_MLP_load(filepath)

Loads and creates a serialized ANN from a file.

Use ANN::save to serialize and store an ANN to disk. Load the ANN from this file again, by calling this function with the path to the file.

Parameters
filepathpath to serialized ANN
virtual void cv::ml::ANN_MLP::setActivationFunction ( int  type,
double  param1 = 0,
double  param2 = 0 
)
pure virtual
Python:
None=cv.ml_ANN_MLP.setActivationFunction(type[, param1[, param2]])
Initialize the activation function for each neuron.

Currently the default and the only fully supported activation function is ANN_MLP::SIGMOID_SYM.

Parameters
typeThe type of activation function. See ANN_MLP::ActivationFunctions.
param1The first parameter of the activation function, \(\alpha\). Default value is 0.
param2The second parameter of the activation function, \(\beta\). Default value is 0.
virtual void cv::ml::ANN_MLP::setAnnealCoolingRatio ( double  val)
pure virtual
Python:
None=cv.ml_ANN_MLP.setAnnealCoolingRatio(val)
virtual void cv::ml::ANN_MLP::setAnnealEnergyRNG ( const RNG rng)
pure virtual

Set/initialize anneal RNG.

virtual void cv::ml::ANN_MLP::setAnnealFinalT ( double  val)
pure virtual
Python:
None=cv.ml_ANN_MLP.setAnnealFinalT(val)
See Also
getAnnealFinalT
virtual void cv::ml::ANN_MLP::setAnnealInitialT ( double  val)
pure virtual
Python:
None=cv.ml_ANN_MLP.setAnnealInitialT(val)
virtual void cv::ml::ANN_MLP::setAnnealItePerStep ( int  val)
pure virtual
Python:
None=cv.ml_ANN_MLP.setAnnealItePerStep(val)
virtual void cv::ml::ANN_MLP::setBackpropMomentumScale ( double  val)
pure virtual
Python:
None=cv.ml_ANN_MLP.setBackpropMomentumScale(val)
virtual void cv::ml::ANN_MLP::setBackpropWeightScale ( double  val)
pure virtual
Python:
None=cv.ml_ANN_MLP.setBackpropWeightScale(val)
virtual void cv::ml::ANN_MLP::setLayerSizes ( InputArray  _layer_sizes)
pure virtual
Python:
None=cv.ml_ANN_MLP.setLayerSizes(_layer_sizes)
 Integer vector specifying the number of neurons in each layer including the input and output layers.

The very first element specifies the number of elements in the input layer. The last element - number of elements in the output layer. Default value is empty Mat.

See Also
getLayerSizes
virtual void cv::ml::ANN_MLP::setRpropDW0 ( double  val)
pure virtual
Python:
None=cv.ml_ANN_MLP.setRpropDW0(val)
See Also
getRpropDW0
virtual void cv::ml::ANN_MLP::setRpropDWMax ( double  val)
pure virtual
Python:
None=cv.ml_ANN_MLP.setRpropDWMax(val)
See Also
getRpropDWMax
virtual void cv::ml::ANN_MLP::setRpropDWMin ( double  val)
pure virtual
Python:
None=cv.ml_ANN_MLP.setRpropDWMin(val)
See Also
getRpropDWMin
virtual void cv::ml::ANN_MLP::setRpropDWMinus ( double  val)
pure virtual
Python:
None=cv.ml_ANN_MLP.setRpropDWMinus(val)
See Also
getRpropDWMinus
virtual void cv::ml::ANN_MLP::setRpropDWPlus ( double  val)
pure virtual
Python:
None=cv.ml_ANN_MLP.setRpropDWPlus(val)
See Also
getRpropDWPlus
virtual void cv::ml::ANN_MLP::setTermCriteria ( TermCriteria  val)
pure virtual
Python:
None=cv.ml_ANN_MLP.setTermCriteria(val)
See Also
getTermCriteria
virtual void cv::ml::ANN_MLP::setTrainMethod ( int  method,
double  param1 = 0,
double  param2 = 0 
)
pure virtual
Python:
None=cv.ml_ANN_MLP.setTrainMethod(method[, param1[, param2]])
Sets training method and common parameters.
Parameters
methodDefault value is ANN_MLP::RPROP. See ANN_MLP::TrainingMethods.
param1passed to setRpropDW0 for ANN_MLP::RPROP and to setBackpropWeightScale for ANN_MLP::BACKPROP and to initialT for ANN_MLP::ANNEAL.
param2passed to setRpropDWMin for ANN_MLP::RPROP and to setBackpropMomentumScale for ANN_MLP::BACKPROP and to finalT for ANN_MLP::ANNEAL.

The documentation for this class was generated from the following file: