KlassenKlassenKlassenKlassen | | | | Operatoren

evaluate_class_gmmT_evaluate_class_gmmEvaluateClassGmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmm (Operator)

Name

evaluate_class_gmmT_evaluate_class_gmmEvaluateClassGmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmm — Berechnen der Bewertung eines Merkmalsvektors durch ein Gaussian Mixture Model.

Signatur

evaluate_class_gmm( : : GMMHandle, Features : ClassProb, Density, KSigmaProb)

Herror T_evaluate_class_gmm(const Htuple GMMHandle, const Htuple Features, Htuple* ClassProb, Htuple* Density, Htuple* KSigmaProb)

Herror evaluate_class_gmm(const HTuple& GMMHandle, const HTuple& Features, HTuple* ClassProb, HTuple* Density, HTuple* KSigmaProb)

HTuple HClassGmm::EvaluateClassGmm(const HTuple& Features, HTuple* Density, HTuple* KSigmaProb) const

void EvaluateClassGmm(const HTuple& GMMHandle, const HTuple& Features, HTuple* ClassProb, HTuple* Density, HTuple* KSigmaProb)

HTuple HClassGmm::EvaluateClassGmm(const HTuple& Features, double* Density, double* KSigmaProb) const

void HOperatorSetX.EvaluateClassGmm(
[in] VARIANT GMMHandle, [in] VARIANT Features, [out] VARIANT* ClassProb, [out] VARIANT* Density, [out] VARIANT* KSigmaProb)

VARIANT HClassGmmX.EvaluateClassGmm(
[in] VARIANT Features, [out] double* Density, [out] double* KSigmaProb)

static void HOperatorSet.EvaluateClassGmm(HTuple GMMHandle, HTuple features, out HTuple classProb, out HTuple density, out HTuple KSigmaProb)

HTuple HClassGmm.EvaluateClassGmm(HTuple features, out double density, out double KSigmaProb)

Beschreibung

evaluate_class_gmmevaluate_class_gmmEvaluateClassGmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmm berechnet drei verschiedenen Wahrscheinlichkeitwerten für einen Merkmalsvektor FeaturesFeaturesFeaturesFeaturesFeaturesfeatures durch das Gaussian Mixture Model (GMM) GMMHandleGMMHandleGMMHandleGMMHandleGMMHandleGMMHandle.

Die a-posteriori-Wahrscheinlichkeit einer Klasse i für ein Merkmal FeaturesFeaturesFeaturesFeaturesFeaturesfeatures(x) wird über

berechnet und in ClassProbClassProbClassProbClassProbClassProbclassProb pro Klasse zurückgegeben. Die Berechnungsformeln für die Aktivitäten/Zentren-Dichtefunction p(x|j) sind bei create_class_gmmcreate_class_gmmCreateClassGmmcreate_class_gmmCreateClassGmmCreateClassGmm angegeben.

Die Dichtefunktion von einem FeaturesFeaturesFeaturesFeaturesFeaturesfeatures Vektor wird als Summe der Klassenwahrscheinlichkeiten berechnet

und in DensityDensityDensityDensityDensitydensity zurückgegeben. Hierbei sind Pr(i) die a-priori-Wahrscheinlichkeiten der Klassen, so wie sie von train_class_gmmtrain_class_gmmTrainClassGmmtrain_class_gmmTrainClassGmmTrainClassGmm berechnet werden. DensityDensityDensityDensityDensitydensity kann zur sog. Novelty-Detection verwendet werden, d.h. zur Rückweisung von Merkmalsvektoren, die keiner der trainierten Klassen entsprechen. Da DensityDensityDensityDensityDensitydensity jedoch von der Skalierung der Merkmalswerte abhängt und als Dichtewert auch nicht zwischen 0 und 1 liegen muss, kann die Novelty-Detection im Normalfall über KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProb (s.u.) einfacher durchgeführt werden.

Ein k-Sigma-Fehler-Ellipsoid ist der geometrische Ort von Punkten x, für die

gilt. Im eindimensionallen Fall ist er das Intervall . Für beliebige 1D-Normalverteilungen gilt, dass für k=1 ca. 65% der Werte der Zufallsvariablen innerhalb dieses Intervalls auftreten, für k=2 ca. 95%, für k=3 ca. 99% usw. Diese Wahrscheinlichkeit wird k-Sigma-Wahrscheinlichkeit genannt. Sie wird mit P[k] bezeichnet. P[k] kann numerisch berechnet werden, wobei zu beachten ist, dass für gleiche Werte von k, (hier sind N und (N+1) die Dimensionen des Merkmalsvektors). Für die GMM wird die k-Sigma-Wahrscheinlichkeit wie folgt berechnet:
wird schließlich noch mit den a-priori-Wahrscheinlichkeiten gewichtet und dann normalisiert. Der größte Wert aller Klassen wird in KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProb zurückgegeben:

KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProb kann zur Novelty-Detection verwendet werden. Normalerweise werden Merkmale, die einen KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProb-Wert kleiner als 0.0001 haben, zurückgewiesen. Der Schwellwert, der in classify_image_class_gmmclassify_image_class_gmmClassifyImageClassGmmclassify_image_class_gmmClassifyImageClassGmmClassifyImageClassGmm über den Parameter RejectionThresholdRejectionThresholdRejectionThresholdRejectionThresholdRejectionThresholdrejectionThreshold definiert wird, bezieht sich auf die entsprechenden KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProb-Werte.

Das GMM muss vor der Verwendung von evaluate_class_gmmevaluate_class_gmmEvaluateClassGmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmm mit train_class_gmmtrain_class_gmmTrainClassGmmtrain_class_gmmTrainClassGmmTrainClassGmm trainiert werden.

Die Position des Maximums von ClassProbClassProbClassProbClassProbClassProbclassProb wird typischerweise als die Klasse des Merkmalsvektors interpretiert und der zugehörige Wert als die Wahrscheinlichkeit der Klasse. In diesem Fall sollte statt evaluate_class_gmmevaluate_class_gmmEvaluateClassGmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmm classify_class_gmmclassify_class_gmmClassifyClassGmmclassify_class_gmmClassifyClassGmmClassifyClassGmm verwendet werden, da classify_class_gmmclassify_class_gmmClassifyClassGmmclassify_class_gmmClassifyClassGmmClassifyClassGmm direkt die Klasse und Wahrscheinlichkeit zurückliefert.

Parallelisierung

Parameter

GMMHandleGMMHandleGMMHandleGMMHandleGMMHandleGMMHandle (input_control)  class_gmm HClassGmm, HTupleHTupleHClassGmm, HTupleHClassGmmX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle des GMM.

FeaturesFeaturesFeaturesFeaturesFeaturesfeatures (input_control)  real-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Merkmalsvektor.

ClassProbClassProbClassProbClassProbClassProbclassProb (output_control)  real-array HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Die a-posteriori-Klassenwahrscheinlichkeit.

DensityDensityDensityDensityDensitydensity (output_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Wahrscheinlichkeitsdichte des Merkmalsvektors.

KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProb (output_control)  real HTupleHTupleHTupleVARIANTHtuple (real) (double) (double) (double) (double) (double)

Normalisierte k-Sigma-Wahrscheinlichkeit für den Merkmalsvektor.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert evaluate_class_gmmevaluate_class_gmmEvaluateClassGmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmm den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

train_class_gmmtrain_class_gmmTrainClassGmmtrain_class_gmmTrainClassGmmTrainClassGmm, read_class_gmmread_class_gmmReadClassGmmread_class_gmmReadClassGmmReadClassGmm

Alternativen

classify_class_gmmclassify_class_gmmClassifyClassGmmclassify_class_gmmClassifyClassGmmClassifyClassGmm

Siehe auch

create_class_gmmcreate_class_gmmCreateClassGmmcreate_class_gmmCreateClassGmmCreateClassGmm

Literatur

Christopher M. Bishop: „Neural Networks for Pattern Recognition“; Oxford University Press, Oxford; 1995.
Mario A.T. Figueiredo: „Unsupervised Learning of Finite Mixture Models“; IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 24, No. 3; March 2002.

Modul

Foundation


KlassenKlassenKlassenKlassen | | | | Operatoren