Commit eb1ea6ef862693c6e90c2db6feffde018d07dfd1

Authored by Scott Klum
1 parent f3b973b6

Added MLP initialization params

Showing 1 changed file with 22 additions and 3 deletions
openbr/plugins/nn.cpp
@@ -50,27 +50,46 @@ static void loadMLP(CvANN_MLP &mlp, QDataStream &stream) @@ -50,27 +50,46 @@ static void loadMLP(CvANN_MLP &mlp, QDataStream &stream)
50 * \ingroup transforms 50 * \ingroup transforms
51 * \brief Wraps OpenCV's multi-layer perceptron framework 51 * \brief Wraps OpenCV's multi-layer perceptron framework
52 * \author Scott Klum \cite sklum 52 * \author Scott Klum \cite sklum
  53 + * \brief http://docs.opencv.org/modules/ml/doc/neural_networks.html
53 */ 54 */
54 class MLPTransform : public MetaTransform 55 class MLPTransform : public MetaTransform
55 { 56 {
56 Q_OBJECT 57 Q_OBJECT
57 58
  59 + Q_ENUMS(Kernel)
  60 + Q_PROPERTY(Kernel kernel READ get_kernel WRITE set_kernel RESET reset_kernel STORED false)
  61 + Q_PROPERTY(float alpha READ get_alpha WRITE set_alpha RESET reset_alpha STORED false)
  62 + Q_PROPERTY(float beta READ get_beta WRITE set_beta RESET reset_beta STORED false)
58 Q_PROPERTY(QStringList inputVariables READ get_inputVariables WRITE set_inputVariables RESET reset_inputVariables STORED false) 63 Q_PROPERTY(QStringList inputVariables READ get_inputVariables WRITE set_inputVariables RESET reset_inputVariables STORED false)
59 - BR_PROPERTY(QStringList, inputVariables, QStringList())  
60 Q_PROPERTY(QStringList outputVariables READ get_outputVariables WRITE set_outputVariables RESET reset_outputVariables STORED false) 64 Q_PROPERTY(QStringList outputVariables READ get_outputVariables WRITE set_outputVariables RESET reset_outputVariables STORED false)
61 - BR_PROPERTY(QStringList, outputVariables, QStringList())  
62 Q_PROPERTY(QList<int> neuronsPerLayer READ get_neuronsPerLayer WRITE set_neuronsPerLayer RESET reset_neuronsPerLayer STORED false) 65 Q_PROPERTY(QList<int> neuronsPerLayer READ get_neuronsPerLayer WRITE set_neuronsPerLayer RESET reset_neuronsPerLayer STORED false)
  66 +
  67 +public:
  68 +
  69 + enum Kernel { Identity = CvANN_MLP::IDENTITY,
  70 + Sigmoid = CvANN_MLP::SIGMOID_SYM,
  71 + Gaussian = CvANN_MLP::GAUSSIAN};
  72 +
  73 +private:
  74 + BR_PROPERTY(Kernel, kernel, Sigmoid)
  75 + BR_PROPERTY(float, alpha, 1)
  76 + BR_PROPERTY(float, beta, 1)
  77 + BR_PROPERTY(QStringList, inputVariables, QStringList())
  78 + BR_PROPERTY(QStringList, outputVariables, QStringList())
63 BR_PROPERTY(QList<int>, neuronsPerLayer, QList<int>() << 1 << 1) 79 BR_PROPERTY(QList<int>, neuronsPerLayer, QList<int>() << 1 << 1)
64 80
65 CvANN_MLP mlp; 81 CvANN_MLP mlp;
66 82
67 void init() 83 void init()
68 { 84 {
  85 + if (kernel == Gaussian)
  86 + qWarning("The OpenCV documentation warns that the Gaussian kernel, \"is not completely supported at the moment\"");
  87 +
69 Mat layers = Mat(neuronsPerLayer.size(), 1, CV_32SC1); 88 Mat layers = Mat(neuronsPerLayer.size(), 1, CV_32SC1);
70 for (int i=0; i<neuronsPerLayer.size(); i++) 89 for (int i=0; i<neuronsPerLayer.size(); i++)
71 layers.row(i) = Scalar(neuronsPerLayer.at(i)); 90 layers.row(i) = Scalar(neuronsPerLayer.at(i));
72 91
73 - mlp.create(layers,CvANN_MLP::SIGMOID_SYM, 1, 1); 92 + mlp.create(layers,kernel, alpha, beta);
74 } 93 }
75 94
76 void train(const TemplateList &data) 95 void train(const TemplateList &data)