set_texture_inspection_model_param
— Setzen von Parametern eines Texturinspektionsmodells.
set_texture_inspection_model_param( : : TextureInspectionModel, GenParamName, GenParamValue : )
Der Operator set_texture_inspection_model_param
wird benutzt, um die
Parameter des Texturinspektionsmodells TextureInspectionModel
anzupassen.
Die aktuell gesetzten Parameterwerte können mit dem Operator
get_texture_inspection_model_param
abgefragt werden.
Das Konzept der Texturinspektion ist bei der Einleitung zum Kapitel Inspektion / Texturinspektion beschrieben.
Allgemeine Parameter:
Bestimmt die Anzahl an Bildpyramidenstufen die zur Inspektion von
Texturen verwendet werden. Die Anzahl der verwendeten
Bildpyramidenstufen kann sowohl das Ergebnis der Texturinspektion als
auch die Laufzeit von train_texture_inspection_model
und
apply_texture_inspection_model
beeinflussen. Standardmäßig wird
die Anzahl der Bildpyramidenstufen über die Größe der
Trainingsbilder bestimmt. Hierbei ist zu beachten dass nicht mehr als 5
Bildpyramidenstufen verwendet werden.
Das Ändern dieses Parameters erfordert ein erneutes Trainieren des Texturinspektionsmodells wenn die angegebenen Skalen vorher nicht schon trainiert wurden. Reduziert man bei einem trainierten Modell zum Beispiel die Anzahl der Skalen von 4 auf 3 muss nicht neu trainiert werden.
Ist die Textur in den Bildern sehr grob, werden die niedrigeren Bildpyramidenstufen unter Umständen nicht für eine erfolgreiche Inspektion benötigt. Dann kann die Laufzeit deutlich optimiert werden indem man diese Skalen explizit durch das Setzen von 'levels' ausschließt.
Werteliste: integer Werte größer oder gleich 1 oder 'auto'
Defaultwert: 'auto'
Bestimmt die Bildpyramidenstufen die zur Inspektion von
Texturen verwendet werden. Die Anzahl der verwendeten
Bildpyramidenstufen kann sowohl das Ergebnis der Texturinspektion als
auch die Laufzeit von train_texture_inspection_model
und
apply_texture_inspection_model
beeinflussen. Standardmäßig
werden die Bildpyramidenstufen durch den Wert von
'num_levels' bestimmt: Wird zum Beispiel 'num_levels'
auf 4 gesetzt wird das Training und die Klassifikation auf vier Skalen
durchgeführt.
Um alle verfügbaren Skalen zu trainieren, sollte der Wert auf
'auto' gesetzt werden.
Das Ändern dieses Parameters erfordert ein erneutes Trainieren des Texturinspektionsmodells wenn die angegebene Skalen vorher nicht schon trainiert wurde.
Ist die Textur in den Bildern sehr grob, werden die niedrigeren Bildpyramidenstufen unter Umständen nicht für eine erfolgreiche Inspektion benötigt. Dann kann die Laufzeit deutlich optimiert werden indem man diese Skalen explizit ausschließt.
Um Verwirrungen über die Länge des Tupels zu vermeiden, kann 'levels' nur einzeln und nicht zusammen mit anderen Parametern gesetzt werden.
Werteliste: ein monoton steigendes Tuple von integer Werten größer oder gleich 1, oder 'auto'
Defaultwert: 'auto'
Dieser Parameter bestimmt, ob beim Aufruf von
apply_texture_inspection_model
ein Handle zur detaillierteren
Inspektion der Ergebnisse erstellt wird. Setzt man
'gen_result_handle' auf 'true' , lassen sich mit
get_texture_inspection_result_object
aus dem Handle Ergebnisse
für die einzelnen Bildpyramidenstufen abfragen. Dies kann beim
Debuggen und bei der Parameterfeinabstimmung helfen.
Für den Wert 'false' wird beim Aufruf von
apply_texture_inspection_model
lediglich die detektierte
Fehlerregion ausgegeben.
Werteliste: 'true' , 'false'
Defaultwert: 'false'
Parameter, die die Berechnung der automatischen Fehlerschwelle beeinflussen:
Dieser Parameter setzt die Werte für die Fehlerschwellen, welche zwischen fehlerfreier und fehlerhafter Textur unterscheiden. Die Fehlerschwellen werden als Tuple übergeben und werden für alle Bildpyramidenstufen gleichzeitig gesetzt. Dementsprechend muss die Anzahl der Elemente mit der Anzahl der Pyramidenstufen ('num_levels' ) übereinstimmen.
Das Setzen dieses Parameters vor dem Training hat keinen Effekt, da
das Training die Fehlerschwellen automatisch bestimmt. Ein Anpassen
von 'novelty_threshold' sollte daher nach dem Training
erfolgen. Eine typische Anwendung ist die Feinabstimmung zum
Optimieren der Ergebnisse von apply_texture_inspection_model
.
Bitte beachten Sie, ein Aufruf von
train_texture_inspection_model
schätzt die Fehlerschwellen
automatisch und überschreibt somit explizit
gesetzte Fehlerschwellen.
Durch das Anhängen eines Indizes lässt sich die Fehlerschwelle für eine bestimme Bildpyramidenstufe setzen. 'novelty_threshold_3' beispielsweise legt die Fehlerschwelle für die dritte Bildpyramidenstufe fest.
Werteliste: integer oder float Werte größer oder gleich 0 und kleiner oder gleich 710
Defaultwert: Wird in train_texture_inspection_model
berechnet
Dieser Parameter beeinflusst die Empfindlichkeit der im Training
mit train_texture_inspection_model
automatisch bestimmten
Fehlerschwellen. Standardmäßig ist der Wert 0.0 gesetzt, was dazu
führt, dass die Fehlerschwellen aus dem Training übernommen werden.
Bei einem Aufruf von apply_texture_inspection_model
wird eine
negative Sensitivität auf die im Training bestimmten
Fehlerschwellen addiert. Dementsprechend führt eine Sensitivität unter
0.0 zu höheren Fehlerschwellen und dadurch zu potentiell weniger
gefundenen Fehlern. Positive Werte hingegen führen zu niedrigeren
Fehlerschwellen und dadurch zu potentiell mehr entdeckten Fehlern.
Die automatisch festgesetzten Fehlerschwellen können nach dem Training mit dem Parameter 'novelty_threshold' geändert werden.
Werteliste: float oder integer Wert
Defaultwert: 0.0
Parameter, die die Texturmerkmale beeinflussen:
Bestimmt die Methode mit der die Texturmerkmale normiert werden. Eine Normierung ist dann sinnvoll, wenn zwischen den verschiedenen Aufnahmen keine konsistenten Beleuchtungsbedingungen gegeben sind. Wird der Parameter auf 'weber' gesetzt, werden die Merkmale gemäß dem Weber-Fechner-Gesetz normiert. Wird der Parameter auf 'none' gesetzt, werden die Merkmale nicht normiert.
Eine Änderung dieses Parameters erfordert ein erneutes vollständiges Training des Texturinspektionsmodells.
Werteliste: 'none' , 'weber'
Defaultwert: 'none'
Wird dieser Parameter auf 'true' gesetzt, werden die Texturmerkmale sortiert und dadurch zu einem gewissen Grad Rotationsinvarianz erreicht. Das Sortieren der Merkmale führt jedoch zu einem Informationsverlust bei den Merkmalen und die Texturinspektion wird generell weniger sensitiv. Außerdem ist die Laufzeit etwas länger. Wird der Parameter auf 'false' gesetzt, werden die Texturmerkmale nicht sortiert.
Eine Änderung dieses Parameters erfordert ein erneutes vollständiges Training des Texturinspektionsmodells.
Alternativ ist es auch möglich, alle möglichen Rotationen in den Trainingsbildern abzudecken. Die Erhöhung der Anzahl der Trainingsbilder führt zu einer längeren Trainingszeit.
Werteliste: 'true' , 'false'
Defaultwert: 'false'
Dieser Parameter bestimmt den Durchmesser der extrahierten Texturmerkmalspatches in Pixeln. Größere Patchgrößen erhöhen die Laufzeit deutlich. Daher sollte dieser Parameter nur mit großer Vorsicht angepasst werden. Zuerst sollte versucht werden, die Auflösung der Bilder oder die Anzahl der benutzten Pyramidenstufen zu reduzieren.
Eine Änderung dieses Parameters erfordert ein erneutes vollständiges Training des Texturinspektionsmodells.
Werteliste: ungerade integer Werte zwischen 1 und 11
Defaultwert: 5
Weitergehende Parameter, die die GMM-Klassifikatoren beeinflussen:
Intern nutzt die Texturinspektion einen auf Gaussian Mixture Models (GMM) basierenden Klassifikator. Generell wird die Änderung der GMM-Parameter nicht empfohlen, ist für erfahrene Nutzer aber trotzdem möglich.
Eine Änderung dieser Parameter erfordert ein erneutes vollständiges Training des Texturinspektionsmodells.
Im Folgenden werden die Parameter, die den GMM-Klassifikator beeinflussen,
beschrieben. Für weitere Informationen zum GMM-Klassifikator siehe auch
create_class_gmm
und train_class_gmm
.
Dieser Parameter bestimmt die
Standardabweichung des gaußschen Rauschens, welches zu den
Trainingsdaten hinzugefügt wird (siehe add_sample_class_gmm
).
Werteliste: integer oder float Werte größer gleich 0
Defaultwert: 0.0
Dieser Parameter bestimmt die minimale Anzahl der gaußschen Verteilungen pro Klasse. 'gmm_pmincenters' kann nicht auf einen Wert gesetzt werden, der größer ist als der aktuelle Wert von 'gmm_pmaxcenters' .
Werteliste: integer Wert größer gleich 1 und kleiner gleich 'gmm_pmaxcenters'
Defaultwert: 12
Dieser Parameter bestimmt die maximale Anzahl der gaußschen Verteilungen pro Klasse. 'gmm_pmaxcenters' kann nicht auf einen Wert gesetzt werden, der kleiner ist als der aktuelle Wert von 'gmm_pmincenters' .
Werteliste: integer Wert größer gleich 'gmm_pmincenters'
Defaultwert: 12
Dieser Parameter bestimmt die Art der Vorverarbeitung, die zur Transformation der Merkmalsvektoren genutzt wird.
Werteliste: 'principal_components' , 'none'
Defaultwert: 'none'
Dieser Parameter steuert die Vorverarbeitung
im Falle dass eine Hauptkomponentenanalyse
('principal_components' ) als Vorverarbeitung ausgewählt
wurde. Speziell legt es die Dimension des transformierten Merkmalsvektors
fest. gmm_ncomp
muss immer kleiner als die Merkmalsdimension
sein, die (PatchSize
PatchSize
)
beträgt. Wird PatchSize
so gesetzt, dass PatchSize
PatchSize
gmm_ncomp
, so wird
der Parameter entsprechend angepasst.
Werteliste: integer Werte größer oder gleich 1
Defaultwert: 15
Dieser Parameter bestimmt den Initialisierungswert des Zufallszahlengenerators, der zur Initialisierung des GMM mit zufälligen Werten verwendet wird.
Werteliste: integer Wert
Defaultwert: 42
Dieser Parameter bestimmt die maximale Anzahl von Iterationen des Expectation-Maximization-Algorithmus.
Werteliste: integer Werte größer gleich 0
Defaultwert: 100
Dieser Parameter bestimmt den Schwellwert für die relative Änderung des Fehlers, die nötig ist, damit der Expectation-Maximization-Algorithmus endet.
Werteliste: integer oder float Werte größer gleich 0 und kleiner als 1.0
Defaultwert: 0.001
Dieser Parameter bestimmt den Regularisationswert zur Vermeidung einer Singularität der Kovarianzmatrizen im Trainingsprozess.
Werteliste: integer oder float Werte größer gleich 0 und kleiner als 1.0
Defaultwert: 0.0001
Werden nach dem erfolgreichen Aufruf von
train_texture_inspection_model
die Werte von Parametern umgesetzt,
so ist in den meisten Fällen ein erneutes Training notwendig. Je nachdem
welche Parameter geändert werden, müssen verschiedene Teile des Trainings
neu ausgeführt werden.
Ein Anpassen der Parameter 'gmm_*' erfordert ein erneutes Training der Klassifikatoren. Da ein neuer Klassifikator zu abweichenden Neuheitswerten (Novelty Scores) führt, müssen auch die Fehlerschwellen (Novelty Threshold) neu berechnet werden. Die Parameter 'patch_*' erfordern ein komplettes erneutes Training des Texturinspektionsmodells. Das Umsetzten von 'num_levels' oder 'levels' erfordert in der Regel ein komplettes Training des Texturinspektionsmodells. Werden die verwendeten Skalen aber nur reduziert, zum Beispiel durch das Reduzieren von 'levels' von [1,2,3] auf [1,3], wird kein neues Training benötigt, da die Skalen 1 und 3 bereits in einem vorherigen Schritt trainiert wurden.
Der Parameter 'gen_result_handle' hat keinerlei Auswirkung auf ein trainiertes Texturinspektionsmodell, so dass er geändert werden kann, ohne dass ein erneutes Training nötig ist.
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.
TextureInspectionModel
(input_control, Zustand wird modifiziert) texture_inspection_model →
(handle)
Handle des Texturinspektionsmodells.
GenParamName
(input_control) attribute.name(-array) →
(string)
Name des zu ändernden Parameters.
Defaultwert: 'gen_result_handle'
Werteliste: 'gen_result_handle' , 'gmm_em_max_iter' , 'gmm_em_regularize' , 'gmm_em_threshold' , 'gmm_ncomp' , 'gmm_pmaxcenters' , 'gmm_pmincenters' , 'gmm_preprocessing' , 'gmm_randseed' , 'gmm_sigma' , 'levels' , 'novelty_threshold' , 'num_levels' , 'patch_normalization' , 'patch_rotational_robustness' , 'patch_size' , 'sensitivity'
GenParamValue
(input_control) attribute.value(-array) →
(integer / real / string)
Neuer Wert des Parameters.
Defaultwert: 'true'
Werteliste: 5, 'auto' , 'false' , 'none' , 'normalization' , 'principal_components' , 'true' , 'weber'
* Create texture inspection model create_texture_inspection_model ('basic', TextureInspectionModel) * Set parameters set_texture_inspection_model_param (TextureInspectionModel, \ 'gen_result_handle', 'true') * Make this short example fast: set_texture_inspection_model_param (TextureInspectionModel, \ 'gmm_em_max_iter', 1) * Read and add training images read_image (TrainImage, 'carpet/carpet_01') add_texture_inspection_model_image (TrainImage, TextureInspectionModel, \ Indices) * Train the model train_texture_inspection_model (TextureInspectionModel) * Read and apply a test image read_image (TestImage, 'carpet/carpet_02') apply_texture_inspection_model (TestImage, DefectCandidates, \ TextureInspectionModel, \ TextureInspectionResultID)
Der Operator set_texture_inspection_model_param
gibt 2 (H_MSG_TRUE) zurück,
sofern alle Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung
ausgelöst.
create_texture_inspection_model
add_texture_inspection_model_image
,
train_texture_inspection_model
get_texture_inspection_model_param
Matching