Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
poppy-kine:gmmriemannian [2018/04/10 08:51] m16devan [Code] |
poppy-kine:gmmriemannian [2018/04/10 09:49] m16devan [Code] |
||
---|---|---|---|
Line 49: | Line 49: | ||
save('modelExo3','model'); | save('modelExo3','model'); | ||
</code> | </code> | ||
- | Le modèle GMM est appris à partir des données d'apprentissage. Le nombre de gaussiennes du modèle est décidé par l'intermédiaire du paramètre //model.nbStates// au début du code. Le paramètre //nbIter// détermine le nombre d'itérations maximum pour l'apprentissage. Le modèle appris est ensuite sauvegardé. | + | Le modèle GMM est appris à partir des données d'apprentissage. Le nombre de gaussiennes du modèle est décidé par l'intermédiaire du paramètre //model.nbStates// au début du code. Le paramètre //nbIter// détermine le nombre d'itérations maximum pour l'apprentissage. |
+ | De plus, pour segmenter la séquence en différent segments temporels correspondant à différents mouvements unitaires, et ainsi utiliser ces segments lors de l'évaluation, la fonction ' | ||
+ | Le modèle appris est ensuite sauvegardé. | ||
* 2. Evaluation | * 2. Evaluation | ||
Line 71: | Line 73: | ||
dataTest{1}=dataTest_;oriMatTestLong{1}=oriMatTest_;posMatTestLong{1}=posMatTest_; | dataTest{1}=dataTest_;oriMatTestLong{1}=oriMatTest_;posMatTestLong{1}=posMatTest_; | ||
</code> | </code> | ||
+ | |||
+ | Ensuite la séquence peut être évaluée: | ||
+ | <code matlab> | ||
+ | %% Evaluate sequence | ||
+ | for rep=1:length(dataTest) | ||
+ | % temporal alignment | ||
+ | if registration==1 | ||
+ | [dataTestAligned,r,allPoses,poses,motion,distFI] = temporalAlignmentEval(model, dataTrain,dataTest{rep},fastDP); | ||
+ | posMatTest=posMatTestLong{rep}(:,r); | ||
+ | else | ||
+ | dataTestAligned=dataTest{rep}; | ||
+ | end | ||
+ | |||
+ | % compute likelihoods | ||
+ | [Lglobal,Lbodypart,Ljoints] = computeLikelihoods(model,dataTestAligned); | ||
+ | |||
+ | % get scores | ||
+ | seuils=[seuil seuil seuil seuil seuil seuil];minseuils=[-500 -500 -500 -500 -500 -500]; %default values | ||
+ | [Sglobal,Sbodypart,Sjoints] = computeScores(model,Lglobal,Lbodypart,Ljoints,seuils,minseuils); | ||
+ | scoreLA=[Sbodypart{1}.global.global Sbodypart{1}.global.perSegment]; | ||
+ | scoreRA=[Sbodypart{2}.global.global Sbodypart{2}.global.perSegment]; | ||
+ | scoreCol=[Sbodypart{3}.global.global Sbodypart{3}.global.perSegment]; | ||
+ | % For each score, the first value corresponds to global score for the | ||
+ | % whole sequence, and then for each temporal segment | ||
+ | end | ||
+ | </code> | ||
+ | Le score pour chaque partie du corps se trouve dans //scoreLA//, //scoreRA// et //scoreCol// pour le bras gauche, le bras droit et la colonne respectivement. Chaque vecteur contient d'abord le score calculé pour toute la séquence puis pour chaque segment temporel. |