train_texture_inspection_model
— Trainieren eines Texturinspektionsmodells.
train_texture_inspection_model( : : TextureInspectionModel : )
train_texture_inspection_model
trainiert ein Texturinspektionsmodell
mit allen Trainingsbildern, die dem Modell mit
add_texture_inspection_model_image
zugefügt wurden.
Der komplette Texturinspektionsprozess arbeitet mit Bildpyramiden. Die Tiefe der Pyramide wird durch den Parameter 'num_levels' (oder falls explizite Skalen gesetzt sind, von 'levels' ) bestimmt. Im ersten Trainingsschritt werden für jede Pyramidenstufe Texturmerkmale extrahiert und zum Set der Trainingsdaten zugefügt. Für jede Pyramidenstufe wird mit allen Trainingsdaten der jeweiligen Pyramidenstufe ein auf Gaussian Mixture Models (GMM) basierender Klassifikator bestimmt. In einem dritten Schritt werden die Trainingsdaten dann genutzt, um die Fehlerschwelle für jede Bildpyramidenstufe zu ermitteln. Im Folgenden werden die drei Schritte des Trainings im Detail beschrieben:
Die Merkmalsextraktion extrahiert für jedes Pixel in den
Trainingsbildern ein Texturmerkmal. Die Texturmerkmale werden entsprechend
der Einstellungen der 'patch_*' Parameter berechnet, welche mit
set_texture_inspection_model_param
geändert werden können. Jedes
Texturmerkmal wird dann zu den Trainingsdaten des GMMs zugefügt.
Während des Trainings des GMMs werden aus den Trainingsdaten
die optimalen 'gmm_*' Parameter abgeleitet. Die Dimensionen der
einzelnen Texturmerkmale werden durch die gewählte Größe der Patches bestimmt
(siehe set_texture_inspection_model_param
). Für große Patchgrößen
kann es extrem schwierig sein, eine gute Approximation an die optimalen GMM
Parameter zu bekommen. Außerdem erhöhen sich die Laufzeit und der benötigte
Speicher signifikant. Daher wird empfohlen, die Patchgröße nur mit großer
Vorsicht zu ändern. Weitere Informationen zu GMM Klassifikatoren sind bei der
Beschreibung des Operators create_class_gmm
zu finden.
Die Berechnung der Fehlerschwelle (Novelty Threshold) ist
nötig, um zwischen fehlerhafter und fehlerfreier Textur unterscheiden zu
können. Zunächst wird mit den in Schritt 2 bestimmten GMMs der Neuheitswert
(Novelty Score) für jedes im Training genutzte Texturmerkmal berechnet. Dann
werden basierend auf den sich ergebenden Neuheitswerten die Fehlerschwellen
für jede Bildpyramidenstufe bestimmt. Die automatische Bestimmung der
Fehlerschwellen kann durch den Parameter 'sensitivity' beeinflusst
werden, der mit set_texture_inspection_model_param
gesetzt werden
kann.
Nachdem das Training des Modells erfolgreich durchgeführt wurde, können
Bilder mit apply_texture_inspection_model
klassifiziert werden. Hier
wird für jedes Pixel ein Neuheitswert festgesetzt und mit der Fehlerschwelle
abgeglichen, die im dritten Schritt des Trainings bestimmt wurde. Für
optimale Ergebnisse können die Fehlerschwellen der einzelnen
Bildpyramidenstufen mit set_texture_inspection_model_param
angepasst
werden.
Im Allgemeinen hat das Verändern aller Parameter, bis auf
'gen_result_handle' und 'sensitivity' , zur Folge, dass das
Texturinspektionsmodell neu trainiert werden muss. Je nachdem an welcher
Stelle im Algorithmus ein neu eingestellter Parameter eingreift, wird intern
entweder das gesamte Training oder nur der benötigte Teil davon ausgeführt.
Aus diesem Grund kann es zu deutlichen Geschwindigkeitsunterschieden bei
den Aufrufen von train_texture_inspection_model
kommen.
Welche Teile des Trainings beim Umsetzen eines bestimmten Parameters
betroffen sind, wird in set_texture_inspection_model_param
beschrieben.
Das Konzept der Texturinspektion ist bei der Einleitung zum Kapitel Inspektion / Texturinspektion beschrieben.
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.
* Create texture inspection model create_texture_inspection_model ('basic', TextureInspectionModel) * 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 train_texture_inspection_model
gibt 2 (H_MSG_TRUE) zurück, sofern
alle Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung
ausgelöst.
add_texture_inspection_model_image
,
set_texture_inspection_model_param
apply_texture_inspection_model
,
clear_texture_inspection_model
,
remove_texture_inspection_model_image
,
write_texture_inspection_model
,
serialize_texture_inspection_model
X. Xianghua, M. Mirmehdi: „TEXEMS: Texture Exemplars for Defect Detection
on Random Textured Surfaces“; IEEE Transactions on Pattern Analysis and
Machine Intelligence, Vol. 29, No. 8; August 2007.
T. Boettger, M. Ulrich: „Real-time Texture Detection on Textured
Surfaces with Compressed Sensing“; Pattern Recognition and Image
Analysis, Vol. 26, No. 1, pp. 88-94; January 2016.
Matching