add_sample_class_gmm
— Hinzufügen eines Trainingsmusters zu den Trainingsdaten eines
Gaussian Mixture Models.
add_sample_class_gmm
fügt ein Trainingsmuster zu dem durch
GMMHandle
gegebenen Gaussian Mixture Model (GMM) hinzu.
Das Trainingsmuster wird durch Features
und
ClassID
beschrieben. Features
ist der
Merkmalsvektor des Musters und muss folglich die Länge
NumDim
besitzen, die in create_class_gmm
angegeben
worden ist. ClassID
ist die Klasse des Musters, eine Zahl
zwischen 0 und NumClasses
-1 (ebenfalls festgelegt in
create_class_gmm
).
Im Spezialfall, in dem die Features
-Vektoren vom Typ
Integer sind, treten sie im Merkmalsraum in einem
Gitter mit Schrittweite 1.0 auf. Wenn zum Beispiel RGB-Merkmale für
Farbklassifikation verwendet werden, haben die Daten einen
Integerwert von 0 bis 255 je Komponente. Normalerweise kann auch
mehr als ein Merkmal denselben Punkt im Raum darstellen. Während
des GMM-Trainings mit solchen Daten neigt der Algorithmus dazu, die
modellierten Gaußschen Verteilungen zu linear abhängigen Linien oder
Ebenen von Punkten, die parallel zu den Gitterrichtungen liegen,
anzupassen. Falls die Anzahl von Zentren, die im Centers
von train_class_gmm
zurückgegeben wird, ungewöhnlich hoch
ist, deutet das auf ein solches Verhalten des Algorithmus hin. Um
dieses Problem umzugehen, kann der Parameter Randomize
verwendet werden. Für Randomize
> 0.0 wird Gaußsches
Rauschen mit Mittelwert 0 und Standardabweichung Randomize
zu jeder Komponente des Trainingsvektors addiert und die
Trainingsdaten werden im GMM gespeichert. Randomize
-Werte
kleiner als 1.0 verbessern die Situation nicht.
Randomize
-Werte deutlich größer als 2.0 beeinflussen die
Form der Datenwolke zu viel. Für Integer-Merkmalsvektoren ist es
empfehlenswert, Werte zwischen 1.5 und 2.0 zu verwenden. Falls die
Daten durch Skalierung aus Integerdaten erzeugt wurden, kann
dasselbe Problem auftreten. Hier muss Randomize
entsprechend der Skalierung der Daten skaliert werden.
Bevor das GMM mit train_class_gmm
trainiert werden kann,
müssen alle Trainingsmuster mit
add_sample_class_gmm
zum GMM hinzugefügt werden.
Die Anzahl der abgespeicherten Trainingsmuster kann mit
get_sample_num_class_gmm
abgefragt werden. Einzelne
Trainingsmuster können mit get_sample_class_gmm
wieder
ausgelesen werden.
Im Normalfall ist es günstig, die Trainingsmuster mit
write_samples_class_gmm
in eine Datei zu speichern, damit
sie wiederverwendet werden können. Damit können bei Bedarf neue
Trainingsmuster zum Datensatz hinzugefügt werden und ein neu
erzeugtes GMM kann mit dem erweiterten Datensatz neu
trainiert werden kann.
Dieser Operator modifiziert den Zustand des folgenden Eingabeparameters:
Während der Ausführung dieses Operators muss der Zugriff auf den Wert dieses Parameters synchronisiert werden, wenn er über mehrere Threads hinweg verwendet wird.
GMMHandle
(input_control, Zustand wird modifiziert) class_gmm →
(handle)
Handle des GMM.
Features
(input_control) real-array →
(real)
Merkmalsvektor des zu speichernden Trainingsmusters.
ClassID
(input_control) number →
(integer)
Klasse des zu speichernden Trainingsmusters.
Randomize
(input_control) real →
(real)
Standardabweichung des Gaußschen Rauschens, das zu den Trainingsdaten hinzugefügt wird.
Defaultwert: 0.0
Wertevorschläge: 0.0, 1.5, 2.0
Restriktion: Randomize >= 0.0
Sind die Parameterwerte korrekt, dann liefert
add_sample_class_gmm
den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird
eine Fehlerbehandlung durchgeführt.
train_class_gmm
,
write_samples_class_gmm
read_samples_class_gmm
,
add_samples_image_class_gmm
clear_samples_class_gmm
,
get_sample_num_class_gmm
,
get_sample_class_gmm
Foundation