有没有办法在OpenCV中导入RapidMiner MLP-ANN? [英] Is there a way to import a RapidMiner MLP-ANN in OpenCV?

查看:371
本文介绍了有没有办法在OpenCV中导入RapidMiner MLP-ANN?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在RapidMiner Studio中训练并验证了MLP模型。
我的输入值已经归一化为[-1,1]。
据我所知,MLP已经由它的权重定义。
正如你所看到的,ANN有一个隐藏层:
http: //i.stack.imgur.com/qhVP0.png



现在我想在OpenCV中导入,因为我不想重新训练整个模型。
我从RapidMiner获得每个Node + Bias的所有权重。



OpenCV提供了函数CvANN_MLP :: load(),其中我可以加载XML或YML文件。
我试图修改一个现有的YML配置为我的需要。正如你所看到的,我已经定义了图层/数据的尺寸。



我有23个输入,15个隐藏节点和5个输出。
所以我得到了(23 + 1)* 15 = 360个隐藏层的权重和输出层的(15 + 1)* 5 = 80个权重。



我的主要问题是:




  • 这是可能吗?


  • 输出缩放到底是什么?
  • $ b $ b
  • 如何从OpenCV中的响应矩阵中确定预测的标签? (是最大值的索引吗?)



我已经尝试导入修改的文件和编译的程序。



这是我的YML文件:

 %YAML:1.0 
mlp:!! opencv-ml-ann-mlp
layer_sizes:!! opencv-matrix
rows:1
cols:3
dt:i
data:[23,15,5]
activation_function:SIGMOID_SYM
f_param1:0.6666666666666666
f_param2 :1.7159000000000000
min_val:-0.9500000000000000
max_val:0.9500000000000000
min_val1:-0.9800000000000000
max_val1:0.9800000000000000
training_params:
train_method:RPROP
dw0 :0.1000000000000000
dw_plus:1.2000000000000000
dw_minus:0.5000000000000000
dw_min:1.1920928955078125e-07
dw_max:50.
term_criteria:{epsilon:9.9999997764825821e-03, 1000}
input_scale:[1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1 ,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1,-1,1 ,-1,1,-1,1,-1,1,-1,1,-1]
output_scale:[1,-1,1,-1,1,-1,1,-1 ,1,-1]
inv_output_scale:[1,-1,1,-1,1,-1,1,-1,1,-1]
权重:
- 10.063,8.812,3.996,19.716,-10.239,2.720,-21.349,16.635,0.797,-0.906,-3.003,-5.882,-2.595,-0.957,-4.255,-2.008,2.978,17.362,2.2426,9.740,0.491 ,3.492,23.299,10.214,
31.730,-23.089,0.369,-72.193,2.193,-9.687,4.19,2.285.858,2.780,5.791,0.348,-3.331,2.822,-15.520,-9.149,-16.861 ,-10.512,-17.079,-14.414,-14.371,-0.278,10.420,-3.733,-1.921,
-0.198,50.929,0.355,3.136,4.892,0.496,-10.206,-2.844,0.606,1.570 ,-3.054,6.012,1.654,-2.043,-2.194,-3.776,-4.745,-6.988,-4.795,-0.397,-2.280,-7.741,-12.301,-4.852,
21.052,17.829, 5.563,-4.054,-4.946,0.678,12.326,3.211,-0.077,0.134,2.265,1.193,-0.252,-1.217,2.801,-6.759,-0.816,-1.864,3.791,-1.765,-0.300,-0.838 ,2.362,4.991,
9.959,5.587,0.087,1.134,-0.840,-2.012,9.899,3.960,-1.249,2.009,-1.026,0.461,0.856,0.985,-1.318,-3.725,-0.370, -1.032,3.027,1.670,3.671,3.336,-0.966,0.772,
2.141,6.319,1.173,37.751,2.052,-4.105,-33.639,-18.147,-1.244,-1.832,-1.618,2.928, 0.035,-6.696,-3.505,-4.559,0.323,-1.206,-10.850,0.375,2.033,-6.208,7.072,-2.194,
-106.173,23.689,-1.622,-32.154,12.832,-55.287 ,-5.667,20.985,16.064,4.68,3.423,9.451,3.948,1.577,-2.676,15.881,-3.287,-6.384,2.212,3.454,​​-17.373,0.446,-0.158,-12.710,
-50.325 ,-19.556,11.445,4.624,17.463,40.003,-18.085,-40.158,-4.420,-3.204,9.482,16.973,-0.983,5.422,-3.963,3.192,4.276,0.048,0.945,-0.705,12.549, - 20.505,-23.406,-17.500,
2.170,25.429,-0.580,-43.367,-12.480,45.753,-14.348,-52.088,7.153,-0.057,-2.941,-3.973,-1.758, -4.490,-4.230,-5.430,-4.688,-3.771,-3.549,-0.440,-7.770,-2.080,12.518,
11.252,7.898,-0.520,-17.707,-4.407,-5.331,30.505 ,13.269,0.283,3.721,-1.135,-1.546,-0.606,7.173,-1.892,-7.053,-7.691,0.806,5.935,9.022,-0.864,12.893,-4.822,4.370,
-1.093, 9.921,-0.802,-7.914,-1.993,-1.787,-6.430,-5.814,0.252,0.518,-0.331,-3.952,-1.088,0.780,0.433,0.413,-1.318,2.360,0.420,1.616,0.146, 0.591,0.732,2.001,
57.532,-41.869,-12.159,-5.874,5.427,-8.832,23.333,30.359,-1.924,0.381,2.1499,5.306,1.218,-0.096,6.807,0.768,-1.179 ,-2.081,3.161,3.027,-4.115,4.467,-8.611,-5.322,
-7.083,2.329,-1.774,-7.084,3.629,2.580,8.041,-30.396,4.485,3.507,5.641,3.479 ,4.649,16.726,-10.149,-2.149,12.574,-3.936,-14.388,-16.592,10.642,-16.776,-28.675,-3.649,
-20.185,-3.553,-0.956,21.986,2.851, 5.577,-15.121,2.955,1.307,-1.009,2.845,-0.853,1.353,2.904,3.493,0.152,-0.209,15.398,13.453,-1.700,-4.743,-0.650,16.701,-2.937,
7.023,0.194,1.299,-50.949,-2.719,-6.921,22.979,25.758,1.773,1.856,1.130,-0.082,0.4911,3.782,0.131,-2.763,-2.333,-2.575,-3.118,3.226,2.422, -0.072,1.284,2.726]
- [-7.520,-9.371,-22.550,-18.724,-6.839,-2.827,8.158,7.286,-7.619,-14.201,-1.802,-7.981,17.489, 12.048,-0.711,-2.863,
5.659,9.175,17.781,-3.963,-16.634,17.243,-7.931,-7.002,7.120,-19.737,-13.348,7.506,-17.768,12.578,1.903, 10.863,
7.543,-7.573,0.975,6.101,-3.182,-8.354,-0.534,-1.656,-7.454,11.196,-3.254,-3.823,0.541,-9.587,-25.693,-1.856,
-1.394,-12.486,-0.036,-2.638,6.597,-12.324,-0.735,-6.608,0.773,2.329,-13.445,-0.192,-0.605,5.244,15.621,-13.113,
-4.430,17.325,3.450,3.499,-11.163,-14.549,0.957,-9.089,1.989,9.820,22.517,7.370,-9.074,-3.695,1.741,-16.864]
经过一段时间玩弄重量,位置和尺度后,我得出结论,一般来说



这样做的原因在我看来是无法处理分类数据的原因(看看官方文档)。
权重和尺度的整个结构对我来说有点难以理解。



我不得不直接用OpenCV重新训练网络。这很可悲,因为我不能使用RapidMiner的很好的交叉验证特性来验证分类。此外,训练的算法似乎有很大的不同,所以我得到了一个不同的网络。



如果有人有一个解决方案将权重导入OpenCV未来,请让我知道。


I trained and validated a MLP Model in RapidMiner Studio. My Input Values are already normalized to [-1, 1]. As far as I understood, the MLP is already defined by its weights. As you can see here, the ANN has one Hidden Layer: http://i.stack.imgur.com/qhVP0.png

Now I'm trying to import this in OpenCV, as I don't want to retrain the whole model. I got all weights per Node + Bias from RapidMiner.

OpenCV offers the function CvANN_MLP::load(), where I am able to load a XML or YML file. I tried to modify an existing YML config for my needs. As you can see, I already defined the dimensions of the layers/data.

I have 23 Inputs, 15 Hidden Nodes and 5 Outputs. So i got (23 + 1) * 15 = 360 weights for the Hidden-Layer and (15 + 1) * 5 = 80 weights for the Output-Layer.

My main questions are:

  • Is this even possible?
  • What is the correct order for the values?
  • Where are the Bias-Values located?
  • What exactly does the output-scaling do?
  • How to determine the predicted label from the Response Matrix in OpenCV? (Is it the Index of the largest Value?)

I already tried to import the modified file and the program compiled as well. It computes something, but I don't think / am not really sure it worked.

Here is my YML File:

%YAML:1.0
mlp: !!opencv-ml-ann-mlp
   layer_sizes: !!opencv-matrix
      rows: 1
      cols: 3
      dt: i
      data: [ 23, 15, 5 ]
   activation_function: SIGMOID_SYM
   f_param1: 0.6666666666666666
   f_param2: 1.7159000000000000
   min_val: -0.9500000000000000
   max_val: 0.9500000000000000
   min_val1: -0.9800000000000000
   max_val1: 0.9800000000000000
   training_params:
      train_method: RPROP
      dw0: 0.1000000000000000
      dw_plus: 1.2000000000000000
      dw_minus: 0.5000000000000000
      dw_min: 1.1920928955078125e-07
      dw_max: 50.
      term_criteria: { epsilon:9.9999997764825821e-03, iterations:1000 }
   input_scale: [ 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1, -1 ]
   output_scale: [ 1, -1, 1, -1, 1, -1, 1, -1, 1, -1 ]
   inv_output_scale: [ 1, -1, 1, -1, 1, -1, 1, -1, 1, -1 ]
   weights:
      - [ 10.063, 8.812, 3.996, 19.716, -10.239, 2.720, -21.349, 16.635, 0.797, -0.906, -3.003, -5.882, -2.595, -0.957, -4.255, -2.008, 2.978, 17.362, 2.246, 9.740, 0.491, 3.492, 23.299, 10.214,
          31.730, -23.089, 0.369, -72.193, 2.193, -9.687, 4.192, -26.858, 2.780, 5.791, 0.348, -3.331, 2.822, -15.520, -9.149, -16.861, -10.512, -17.079, -14.414, -14.371, -0.278, 10.420, -3.733, -1.921,
          -0.198, 50.929, 0.355, 3.136, 4.892, 0.496, -10.206, -2.844, 0.606, 1.570, -3.054, 6.012, 1.654, -2.043, -2.194, -3.776, -4.745, -6.988, -4.795, -0.397, -2.280, -7.741, -12.301, -4.852,
          21.052, 17.829, -5.563, -4.054, -4.946, 0.678, 12.326, 3.211, -0.077, 0.134, 2.265, 1.193, -0.252, -1.217, 2.801, -6.759, -0.816, -1.864, 3.791, -1.765, -0.300, -0.838, 2.362, 4.991,
          9.959, 5.587, 0.087, 1.134, -0.840, -2.012, 9.899, 3.960, -1.249, 2.009, -1.026, 0.461, 0.856, 0.985, -1.318, -3.725, -0.370, -1.032, 3.027, 1.670, 3.671, 3.363, -0.966, 0.772,
          2.141, 6.319, 1.173, 37.751, 2.052, -4.105, -33.639, -18.147, -1.244, -1.832, -1.618, 2.928, 0.035, -6.696, -3.505, -4.559, 0.323, -1.206, -10.850, 0.375, 2.033, -6.208, 7.072, -2.194,
          -106.173, 23.689, -1.622, -32.154, 12.832, -55.287, -5.667, 20.985, 16.064, 4.698, 3.423, 9.451, 3.948, 1.577, -2.676, 15.881, -3.287, -6.384, 2.212, 3.454, -17.373, 0.468, -0.158, -12.710,
          -50.325, -19.556, 11.445, 4.624, 17.463, 40.003, -18.085, -40.158, -4.420, -3.204, 9.482, 16.973, -0.983, 5.422, -3.963, 3.192, 4.276, 0.048, 0.945, -0.705, 12.549, -20.505, -23.406, -17.500,
          2.170, 25.429, -0.580, -43.367, -12.480, 45.753, -14.348, -52.088, 7.153, -0.057, -2.941, -3.973, -1.758, -2.525, -4.490, -4.230, -5.430, -4.688, -3.771, -3.549, -0.440, -7.770, -2.080, 12.518,
          11.252, 7.898, -0.520, -17.707, -4.407, -5.331, 30.505, 13.269, 0.283, 4.721, -1.135, -1.546, -0.606, 7.173, -1.892, -7.053, -7.691, 0.806, 5.935, 9.022, -0.864, 12.893, -4.822, 4.370,
          -1.093, 9.921, -0.802, -7.914, -1.993, -1.787, -6.430, -5.814, 0.252, 0.518, -0.331, -3.952, -1.088, 0.780, 0.433, 0.413, -1.318, 2.360, 0.420, 1.616, 0.146, 0.591, 0.732, 2.001,
          57.532, -41.869, -12.159, -5.874, 5.427, -8.832, 23.333, 30.359, -1.924, 0.381, 2.149, 5.306, 1.218, -0.096, 6.807, 0.768, -1.179, -2.081, 3.161, 3.027, -4.115, 4.467, -8.611, -5.322,
          -7.083, 2.329, -1.774, -7.084, 3.629, 2.580, 8.041, -30.396, 4.485, 3.507, 5.641, 3.479, 4.649, 16.726, -10.149, -2.149, 12.574, -3.936, -14.388, -16.592, 10.642, -16.776, -28.675, -3.649,
          -20.185, -3.553, -0.956, 21.986, 2.851, 5.577, -15.121, 2.955, 1.307, -1.009, 2.845, -0.853, 1.353, 2.904, 3.493, 0.152, -0.209, 15.398, 13.453, -1.700, -4.743, -0.650, 16.701, -2.937,
          7.023, 0.194, 1.299, -50.949, -2.719, -6.921, 22.979, 25.758, 1.773, 1.856, 1.130, -0.082, 0.491, 3.782, 0.131, -2.763, -2.333, -2.575, -3.118, 3.226, 2.422, -0.072, 1.284, 2.726 ]
      - [ -7.520, -9.371, -22.550, -18.724, -6.839, -2.827, 8.158, 7.286, -7.619, -14.201, -1.802, -7.981, 17.489, -12.048, -0.711, -2.863,
          5.659, 9.175, 17.781, -3.963, -16.634, 17.243, -7.931, -7.002, 7.120, -19.737, -13.348, 7.506, -17.768, 12.578, 1.903, -10.863,
          7.543, -7.573, 0.975, 6.101, -3.182, -8.354, -0.534, -1.656, -7.454, 11.196, -3.254, -3.823, 0.541, -9.587, -25.693, -1.856,
          -1.394, -12.486, -0.036, -2.638, 6.597, -12.324, -0.735, -6.608, 0.773, 2.329, -13.445, -0.192, -0.605, 5.244, 15.621, -13.113,
          -4.430, 17.325, 3.450, 3.499, -11.163, -14.549, 0.957, -9.089, 1.989, 9.820, 22.517, 7.370, -9.074, -3.695, 1.741, -16.864 ]

解决方案

After some time playing around with weights, positions and scales I came to the conclusion that it is generally not possible to use the same weights.

The reason for this is in my opinion the inability to handle categorical data as is (Look at the Official Documentation for details). The whole structure of the weights and scales becomes somehow incomprehensible for me.

I had to retrain the network directly with OpenCV. This is sad, because I am not able to use the great crossvalidation-feature from RapidMiner to validate the classification. Furthermore the algorithms for training seem to work quite different, so I get a different network.

If someone has a solution for importing the weights to OpenCV in the future, please let me know.

这篇关于有没有办法在OpenCV中导入RapidMiner MLP-ANN?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆