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_gmmEvaluateClassGmmEvaluateClassGmmevaluate_class_gmm berechnet drei verschiedene Wahrscheinlichkeitswerte für einen Merkmalsvektor FeaturesFeaturesFeaturesfeaturesfeatures durch das Gaußsche Mischverteilungsmodell (GMM) GMMHandleGMMHandleGMMHandleGMMHandlegmmhandle.

Die a-posteriori-Wahrscheinlichkeit einer Klasse i für ein Merkmal FeaturesFeaturesFeaturesfeaturesfeatures(x) wird über berechnet und in ClassProbClassProbClassProbclassProbclass_prob pro Klasse zurückgegeben. Die Berechnungsformeln für die Aktivitäten/Zentren-Dichtefunktion p(x|j) sind bei create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmcreate_class_gmm angegeben.

Die Dichtefunktion von einem FeaturesFeaturesFeaturesfeaturesfeatures Vektor wird als Summe der Klassenwahrscheinlichkeiten berechnet und in DensityDensityDensitydensitydensity zurückgegeben. Hierbei sind Pr(i) die a-priori-Wahrscheinlichkeiten der Klassen, so wie sie von train_class_gmmtrain_class_gmmTrainClassGmmTrainClassGmmtrain_class_gmm berechnet werden. DensityDensityDensitydensitydensity kann zur sog. Novelty-Detection verwendet werden, d.h. zur Rückweisung von Merkmalsvektoren, die keiner der trainierten Klassen entsprechen. Da DensityDensityDensitydensitydensity 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 KSigmaProbKSigmaProbKSigmaProbKSigmaProbksigma_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: wobei . wird schließlich noch mit den a-priori-Wahrscheinlichkeiten gewichtet und dann normalisiert. Der größte Wert aller Klassen wird in KSigmaProbKSigmaProbKSigmaProbKSigmaProbksigma_prob zurückgegeben:

KSigmaProbKSigmaProbKSigmaProbKSigmaProbksigma_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 KSigmaProbKSigmaProbKSigmaProbKSigmaProbksigma_prob-Wert kleiner als 0.0001 haben, zurückgewiesen. Der Schwellenwert, der in classify_image_class_gmmclassify_image_class_gmmClassifyImageClassGmmClassifyImageClassGmmclassify_image_class_gmm über den Parameter RejectionThresholdRejectionThresholdRejectionThresholdrejectionThresholdrejection_threshold definiert wird, bezieht sich auf die entsprechenden KSigmaProbKSigmaProbKSigmaProbKSigmaProbksigma_prob-Werte.

Das GMM muss vor der Verwendung von evaluate_class_gmmevaluate_class_gmmEvaluateClassGmmEvaluateClassGmmevaluate_class_gmm mit train_class_gmmtrain_class_gmmTrainClassGmmTrainClassGmmtrain_class_gmm trainiert werden.

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

Ausführungsinformationen

Parameter

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

Handle des GMM.

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

Merkmalsvektor.

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

Die a-posteriori-Klassenwahrscheinlichkeit.

DensityDensityDensitydensitydensity (output_control)  real HTuplefloatHTupleHtuple (real) (double) (double) (double)

Wahrscheinlichkeitsdichte des Merkmalsvektors.

KSigmaProbKSigmaProbKSigmaProbKSigmaProbksigma_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_gmmEvaluateClassGmmEvaluateClassGmmevaluate_class_gmm den Wert 2 ( H_MSG_TRUE) . Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Vorgänger

train_class_gmmtrain_class_gmmTrainClassGmmTrainClassGmmtrain_class_gmm, read_class_gmmread_class_gmmReadClassGmmReadClassGmmread_class_gmm

Alternativen

classify_class_gmmclassify_class_gmmClassifyClassGmmClassifyClassGmmclassify_class_gmm

Siehe auch

create_class_gmmcreate_class_gmmCreateClassGmmCreateClassGmmcreate_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