evaluate_class_gmmT_evaluate_class_gmmEvaluateClassGmmEvaluateClassGmmevaluate_class_gmm (Operator)

Name

evaluate_class_gmmT_evaluate_class_gmmEvaluateClassGmmEvaluateClassGmmevaluate_class_gmm — Berechnen der Bewertung eines Merkmalsvektors durch ein Gaußsches Mischverteilungsmodell.

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)

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

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)

def evaluate_class_gmm(gmmhandle: HHandle, features: Sequence[float]) -> Tuple[Sequence[float], float, float]

Beschreibung

evaluate_class_gmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmmEvaluateClassGmmevaluate_class_gmm berechnet drei verschiedene Wahrscheinlichkeitswerte für einen Merkmalsvektor FeaturesFeaturesFeaturesFeaturesfeaturesfeatures durch das Gaußsche Mischverteilungsmodell (GMM) GMMHandleGMMHandleGMMHandleGMMHandleGMMHandlegmmhandle.

Die a-posteriori-Wahrscheinlichkeit einer Klasse i für ein Merkmal FeaturesFeaturesFeaturesFeaturesfeaturesfeatures(x) wird über berechnet und in ClassProbClassProbClassProbClassProbclassProbclass_prob pro Klasse zurückgegeben. Die Berechnungsformeln für die Aktivitäten/Zentren-Dichtefunktion p(x|j) sind bei create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm 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_gmmTrainClassGmmTrainClassGmmTrainClassGmmtrain_class_gmm 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 KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProbksigma_prob (s.u.) einfacher durchgeführt werden.

Ein k-Sigma-Fehler-Ellipsoid ist der geometrische Ort von Punkten x, für die gilt. Im eindimensionalen Fall ist er das Intervall . Für beliebige 1D-Normalverteilungen gilt, dass für k=1 ca. 68% 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 KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProbksigma_prob zurückgegeben:

KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProbksigma_prob kann zur Novelty-Detection verwendet werden, da dieser Wert angibt, wie gut ein Merkmal in die Werteverteilung der Klasse passt, der es zugeordnet wurde. Normalerweise werden Merkmale, die einen KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProbksigma_prob-Wert kleiner als 0.0001 haben, zurückgewiesen. Der Schwellenwert, der in classify_image_class_gmmclassify_image_class_gmmClassifyImageClassGmmClassifyImageClassGmmClassifyImageClassGmmclassify_image_class_gmm über den Parameter RejectionThresholdRejectionThresholdRejectionThresholdRejectionThresholdrejectionThresholdrejection_threshold definiert wird, bezieht sich auf die entsprechenden KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProbksigma_prob-Werte.

Das GMM muss vor der Verwendung von evaluate_class_gmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmmEvaluateClassGmmevaluate_class_gmm mit train_class_gmmtrain_class_gmmTrainClassGmmTrainClassGmmTrainClassGmmtrain_class_gmm trainiert werden.

Die Position des Maximums von ClassProbClassProbClassProbClassProbclassProbclass_prob 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_gmmEvaluateClassGmmEvaluateClassGmmEvaluateClassGmmevaluate_class_gmm classify_class_gmmclassify_class_gmmClassifyClassGmmClassifyClassGmmClassifyClassGmmclassify_class_gmm verwendet werden, da classify_class_gmmclassify_class_gmmClassifyClassGmmClassifyClassGmmClassifyClassGmmclassify_class_gmm direkt die Klasse und Wahrscheinlichkeit zurückliefert.

Ausführungsinformationen

Parameter

GMMHandleGMMHandleGMMHandleGMMHandleGMMHandlegmmhandle (input_control)  class_gmm HClassGmm, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des GMM.

FeaturesFeaturesFeaturesFeaturesfeaturesfeatures (input_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Merkmalsvektor.

ClassProbClassProbClassProbClassProbclassProbclass_prob (output_control)  real-array HTupleSequence[float]HTupleHtuple (real) (double) (double) (double)

Die a-posteriori-Klassenwahrscheinlichkeit.

DensityDensityDensityDensitydensitydensity (output_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Wahrscheinlichkeitsdichte des Merkmalsvektors.

KSigmaProbKSigmaProbKSigmaProbKSigmaProbKSigmaProbksigma_prob (output_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

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

Ergebnis

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

Vorgänger

train_class_gmmtrain_class_gmmTrainClassGmmTrainClassGmmTrainClassGmmtrain_class_gmm, read_class_gmmread_class_gmmReadClassGmmReadClassGmmReadClassGmmread_class_gmm

Alternativen

classify_class_gmmclassify_class_gmmClassifyClassGmmClassifyClassGmmClassifyClassGmmclassify_class_gmm

Siehe auch

create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmmcreate_class_gmm

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