0
votes

I'm trying to use WEKA in order to make gesture recognition. I'm new in this procedure, so any help would be appreciated.

More specific what I have done in steps:

  1. install WEKA
  2. install HMMWeka library
  3. my data contains rotations form sensors, and I tried to create .arff in "simple" format and "multi-instance" format

I have 4 gestures that have been recorded and 3 repetitions for each. So my initail idea with the "simple" format, is to train the model with gesture1 from first repetition and to test it (recognize it) with the gesture1 from the rest two repetitions. With the "multi-instance" format, in each .arff file I have all the four gestures from each repetition.

So my questions are:

  • I'm not sure if my file in "multi-instance" format is correct. Here is an example of its structure

:

@relation rotation
@attribute bag_ID {1, 2, 3, 4, 5, 6, 7, 8, 9}
@attribute bag relational
@attribute rotation { rot1 , rot2 , rot3 }
@attribute x_left_hand numeric
@attribute y_left_hand numeric
@attribute z_left_hand numeric
@attribute x_right_hand numeric
@attribute y_right_hand numeric
@attribute z_right_hand numeric
@end bag
@attribute gesture { g1, g2, g3, g4}

@data
1,"rot1, 1.394962, 19.704826, 0.536432, 1.594745, 7.511097, 0.269678", g1
2,"rot1, 1.337786, 19.681709, 0.468583, 1.63736, 7.536188, 0.35687", g1
3,"rot1, 1.280635, 19.658672, 0.400756, 1.679905, 7.561322, 0.443999", g1
4,"rot1, 2.217022, 15.327432, -1.997938, 0.256819, 10.011353, 2.300805", g2
5,"rot1, 2.304201, 15.276058, -2.076832, 0.161013, 9.993914, 2.351273", g2
6,"rot1, 2.271477, 22.43351, 3.477951, 1.245202, 5.531068, -1.06918", g3
7,"rot1, 2.218041, 22.370411, 3.506101, 1.299245, 5.590856, -1.078336", g3
8,"rot1, 1.557125, 16.531981, 4.000765, 3.098644, 5.841918, -3.751997", g4
9,"rot1, 1.557125, 16.531981, 4.000765, 3.116652, 5.932492, -3.760822", g4
  • Although WEKA reads both formats, when I choose HMM for training, it selects (which is also the default) the nominal class gesture, while I would like to use either the relational attribute, or all the other attributes as a group. The result of correct classification in trainig is also very low..22%

  • The result of testing would be which gesture is, according to all attributes that I give to WEKA as input.

  • Do you know if that is possible? Can I use all numeric attributes for the training? Do I have something wrong with the format?

I searched a lot in google, finding things like http://weka.8497.n7.nabble.com/Relational-attributes-vs-regular-attributes-td29946.html and tried many combinations..but I still have problem! Also I tried to use two classifiers, gaussian processes and HMM but it pops up an error (weka.classifiers.meta.Stacking: cannot handle binary class).

Any help would be really appreciated!!

Thank you in advance!! Best regards,

1

1 Answers

0
votes

mmmm you are using time sequences but with no sequence, i mean, imagine you have an vector

x[] and each element of x is the value of x in that time, you only posted x[0], many times, in your case x is an structure that has

struct x {
    double x_left_hand;
    double y_left_hand;
    double z_left_hand;
    double x_right_hand;
    double y_right_hand;
    double z_right_hand;
}

And this is correct, but there are no evolution in time of the gesture, i dont know if i'm explaining well, so bad english...

I'm going to post you an little example that i'm working on, it may help you

@relation AUs

@attribute sequences relational
 @attribute  AU0 NUMERIC
 @attribute  AU1 NUMERIC
 @attribute  AU2 NUMERIC
 @attribute  AU3 NUMERIC
 @attribute  AU4 NUMERIC
 @attribute  AU5 NUMERIC
@end sequences
@attribute class {01, 01b, 01c, 01d, 02, 02a, 02c, 04, 05, 07, 10, 11, 13, 14, 15, 17, 18, 19, 21}

@data
"0.5840133,-0.13073722,-0.8034836,0.16867049,-0.30464363,-0.15208732\n....\n0.47603312,-0.10599292,-0.4781358,0.30258814,-0.27299756,0.07913079\n0.5878206,-0.12593555,-0.42014712,0.30809718,-0.33109784,0.013338812\n0.6120923,-0.12400548,-0.3479098,0.26818287,-0.39161837,0.07279621\n0.6180023,-0.11955684,-0.35120794,0.28354084,-0.351862,-0.017126387\n0.6166399,-0.13956356,-0.3506564,0.25470608,-0.34935358,0.025823373\n0.59575284,-0.13704558,-0.42580596,0.24725975,-0.33137816,-0.04043307\n0.5571964,-0.13607484,-0.3777615,0.21615964,-0.35109887,-0.068926826\n0.52844477,-0.10942138,-0.38436648,0.2355144,-0.3238311,-0.06743353\n0.64967036,-0.13547328,-0.28889894,0.21237339,-0.3741229,0.02283336\n0.641207,-0.13648787,-0.35315526,0.27048427,-0.39234316,0.026359601\n0.6241689,-0.14557217,-0.39503983,0.261346,-0.3732989,0.0811597\n0.46664864,-0.092378475,-0.42906052,0.29789245,-0.3076035,0.015037567\n0.528294,-0.19327107,-0.59035814,0.26079395,-0.3222413,-0.022527361\n0.56722254,-0.16849008,-0.4722441,0.2480416,-0.3971509,0.023736712",01

In this example we have time, not just an initial position.

i Hope it was helpful