Commit eb1ea6ef862693c6e90c2db6feffde018d07dfd1
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) |