train_texture_inspection_modelT_train_texture_inspection_modelTrainTextureInspectionModelTrainTextureInspectionModel (Operator)

Name

train_texture_inspection_modelT_train_texture_inspection_modelTrainTextureInspectionModelTrainTextureInspectionModel — Trainieren eines Texturinspektionsmodells.

Signatur

train_texture_inspection_model( : : TextureInspectionModel : )

Herror T_train_texture_inspection_model(const Htuple TextureInspectionModel)

void TrainTextureInspectionModel(const HTuple& TextureInspectionModel)

static void HImage::TrainTextureInspectionModel(const HTextureInspectionModel& TextureInspectionModel)

void HTextureInspectionModel::TrainTextureInspectionModel() const

static void HTextureInspectionResult::TrainTextureInspectionModel(const HTextureInspectionModel& TextureInspectionModel)

static void HOperatorSet.TrainTextureInspectionModel(HTuple textureInspectionModel)

static void HImage.TrainTextureInspectionModel(HTextureInspectionModel textureInspectionModel)

void HTextureInspectionModel.TrainTextureInspectionModel()

static void HTextureInspectionResult.TrainTextureInspectionModel(HTextureInspectionModel textureInspectionModel)

Beschreibung

train_texture_inspection_modeltrain_texture_inspection_modelTrainTextureInspectionModelTrainTextureInspectionModelTrainTextureInspectionModel trainiert ein Texturinspektionsmodell mit allen Trainingsbildern, die dem Modell mit add_texture_inspection_model_imageadd_texture_inspection_model_imageAddTextureInspectionModelImageAddTextureInspectionModelImageAddTextureInspectionModelImage zugefügt wurden.

Der komplette Texturinspektionsprozess arbeitet mit Bildpyramiden. Die Tiefe der Pyramide wird durch den Parameter 'num_levels'"num_levels""num_levels""num_levels""num_levels" (oder falls explizite Skalen gesetzt sind, von 'levels'"levels""levels""levels""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:

  1. Die Merkmalsextraktion extrahiert für jedes Pixel in den Trainingsbildern ein Texturmerkmal. Die Texturmerkmale werden entsprechend der Einstellungen der 'patch_*'"patch_*""patch_*""patch_*""patch_*" Parameter berechnet, welche mit set_texture_inspection_model_paramset_texture_inspection_model_paramSetTextureInspectionModelParamSetTextureInspectionModelParamSetTextureInspectionModelParam geändert werden können. Jedes Texturmerkmal wird dann zu den Trainingsdaten des GMMs zugefügt.

  2. Während des Trainings des GMMs werden aus den Trainingsdaten die optimalen 'gmm_*'"gmm_*""gmm_*""gmm_*""gmm_*" Parameter abgeleitet. Die Dimensionen der einzelnen Texturmerkmale werden durch die gewählte Größe der Patches bestimmt (siehe set_texture_inspection_model_paramset_texture_inspection_model_paramSetTextureInspectionModelParamSetTextureInspectionModelParamSetTextureInspectionModelParam). 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_gmmcreate_class_gmmCreateClassGmmCreateClassGmmCreateClassGmm zu finden.

  3. 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'"sensitivity""sensitivity""sensitivity""sensitivity" beeinflusst werden, der mit set_texture_inspection_model_paramset_texture_inspection_model_paramSetTextureInspectionModelParamSetTextureInspectionModelParamSetTextureInspectionModelParam gesetzt werden kann.

Nachdem das Training des Modells erfolgreich durchgeführt wurde, können Bilder mit apply_texture_inspection_modelapply_texture_inspection_modelApplyTextureInspectionModelApplyTextureInspectionModelApplyTextureInspectionModel 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_paramset_texture_inspection_model_paramSetTextureInspectionModelParamSetTextureInspectionModelParamSetTextureInspectionModelParam angepasst werden.

Im Allgemeinen hat das Verändern aller Parameter, bis auf 'gen_result_handle'"gen_result_handle""gen_result_handle""gen_result_handle""gen_result_handle" und 'sensitivity'"sensitivity""sensitivity""sensitivity""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_modeltrain_texture_inspection_modelTrainTextureInspectionModelTrainTextureInspectionModelTrainTextureInspectionModel kommen. Welche Teile des Trainings beim Umsetzen eines bestimmten Parameters betroffen sind, wird in set_texture_inspection_model_paramset_texture_inspection_model_paramSetTextureInspectionModelParamSetTextureInspectionModelParamSetTextureInspectionModelParam beschrieben.

Das Konzept der Texturinspektion ist bei der Einleitung zum Kapitel Inspektion / Texturinspektion beschrieben.

Ausführungsinformationen

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.

Parameter

TextureInspectionModelTextureInspectionModelTextureInspectionModelTextureInspectionModeltextureInspectionModel (input_control, Zustand wird modifiziert)  texture_inspection_model HTextureInspectionModel, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des Texturinspektionsmodells.

Beispiel (HDevelop)

* 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)

Ergebnis

Der Operator train_texture_inspection_modeltrain_texture_inspection_modelTrainTextureInspectionModelTrainTextureInspectionModelTrainTextureInspectionModel gibt 2 (H_MSG_TRUE) zurück, sofern alle Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung ausgelöst.

Vorgänger

add_texture_inspection_model_imageadd_texture_inspection_model_imageAddTextureInspectionModelImageAddTextureInspectionModelImageAddTextureInspectionModelImage, set_texture_inspection_model_paramset_texture_inspection_model_paramSetTextureInspectionModelParamSetTextureInspectionModelParamSetTextureInspectionModelParam

Nachfolger

apply_texture_inspection_modelapply_texture_inspection_modelApplyTextureInspectionModelApplyTextureInspectionModelApplyTextureInspectionModel, clear_texture_inspection_modelclear_texture_inspection_modelClearTextureInspectionModelClearTextureInspectionModelClearTextureInspectionModel, remove_texture_inspection_model_imageremove_texture_inspection_model_imageRemoveTextureInspectionModelImageRemoveTextureInspectionModelImageRemoveTextureInspectionModelImage, write_texture_inspection_modelwrite_texture_inspection_modelWriteTextureInspectionModelWriteTextureInspectionModelWriteTextureInspectionModel, serialize_texture_inspection_modelserialize_texture_inspection_modelSerializeTextureInspectionModelSerializeTextureInspectionModelSerializeTextureInspectionModel

Literatur

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.

Modul

Matching