| Operatoren |
evaluate_class_gmm — Berechnen der Bewertung eines Merkmalsvektors durch ein Gaussian Mixture Model.
evaluate_class_gmm( : : GMMHandle, Features : ClassProb, Density, KSigmaProb)
evaluate_class_gmm berechnet drei verschiedenen Wahrscheinlichkeitwerten für einen Merkmalsvektor Features durch das Gaussian Mixture Model (GMM) GMMHandle.
Die a-posteriori-Wahrscheinlichkeit einer Klasse i für ein Merkmal Features(x) wird über
n_comp
----
\
p(i|x) = / P(j) p(x|j)
----
j=1
berechnet und in ClassProb pro Klasse zurückgegeben. Die Berechnungsformeln für die Aktivitäten/Zentren-Dichtefunction p(x|j) sind bei create_class_gmm angegeben.
Die Dichtefunktion von einem Features Vektor wird als Summe der Klassenwahrscheinlichkeiten berechnet
n_classes
----
\
p(x) = / Pr(i) p(i|x)
----
i=1
und in Density zurückgegeben. Hierbei sind Pr(i) die a-priori-Wahrscheinlichkeiten der Klassen, so wie sie von train_class_gmm berechnet werden. Density kann zur sog. Novelty-Detection verwendet werden, d.h. zur Rückweisung von Merkmalsvektoren, die keiner der trainierten Klassen entsprechen. Da Density 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 KSigmaProb (s.u.) einfacher durchgeführt werden.
Ein k-Sigma-Fehler-Ellipsoid ist der geometrische Ort von Punkten x, für die
( x - m )^T C^(-1) ( x - m ) = k^2
gilt. Im eindimensionallen Fall ist er das Intervall [mu-k*sigma, mu+k*sigma]. 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, P^(N)[k] > P^(N+1)[k] (hier sind N und (N+1) die Dimensionen des Merkmalsvektors). Für die GMM wird die k-Sigma-Wahrscheinlichkeit wie folgt berechnet:
n_comp
----
\
P_gmm[x] = / P(j)P_j[k_j],
----
j=1
wobei k_j^2 = ( x - m_j )^T C_j^(-1) ( x - m_j )
P_gmm[k] wird schließlich noch mit den a-priori-Wahrscheinlichkeiten gewichtet und dann normalisiert. Der größte Wert aller Klassen wird in KSigmaProb zurückgegeben:
1
KSigmaProb = ------ * max( Pr(i) * P_gmm[x])
Pr_max
KSigmaProb kann zur Novelty-Detection verwendet werden. Normalerweise werden Merkmale, die einen KSigmaProb-Wert kleiner als 0.0001 haben, zurückgewiesen. Der Schwellwert, der in classify_image_class_gmm über den Parameter RejectionThreshold definiert wird, bezieht sich auf die entsprechenden KSigmaProb-Werte.
Das GMM muss vor der Verwendung von evaluate_class_gmm mit train_class_gmm trainiert werden.
Die Position des Maximums von ClassProb 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_gmm classify_class_gmm verwendet werden, da classify_class_gmm direkt die Klasse und Wahrscheinlichkeit zurückliefert.
Handle des GMM.
Merkmalsvektor.
Die a-posteriori-Klassenwahrscheinlichkeit.
Wahrscheinlichkeitsdichte des Merkmalsvektors.
Normalisierte k-Sigma-Wahrscheinlichkeit für den Merkmalsvektor.
Sind die Parameterwerte korrekt, dann liefert evaluate_class_gmm den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
train_class_gmm, read_class_gmm
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.
Foundation
| Operatoren |