Anomalieerkennung

Liste der Operatoren ↓

Dieses Kapitel beschreibt, wie Deep Learning-basierte Anomalieerkennung genutzt wird.

Mit der Anomalieerkennung will man ermitteln, ob ein Bild Abweichung zum Normalen, d.h. etwas Unbekanntes enthält.

image/svg+xml
Ein mögliches Beispiel der Anomalieerkennung: Jedem Pixel des Eingabebildes wird ein Wert zugewiesen. Dieser gibt an, wie wahrscheinlich der Pixel ein unbekanntes Merkmal, eine Anomalie, zeigt. Der Wurm ist nicht Teil der während des Trainings gesehenen Äpfel und so erhalten seine Pixel einen höheren Score.

Während des Trainings lernt ein Anomalieerkennungsmodell die Gemeinsamkeiten von Trainingsbildern. Das trainierte Modell inferiert, wie wahrscheinlich ein Eingabebild nur erlernte Merkmale oder auch etwas davon Abweichendes, also Anomalien, zeigt. Dieses Inferenzergebnis gibt das Modell als Grauwertbild zurück. Die Pixelwerte dieses Grauwertbildes sind Scores, die angeben, wie wahrscheinlich die entsprechenden Pixel im Eingabebild eine Anomalie zeigen.

Genereller Ablauf

Dieser Abschnitt beschreibt den generellen Ablauf einer Anomalieerkennungsaufgabe mittels Deep Learning.

Vorverarbeitung des Datensatzes

Dieser Abschnitt behandelt die notwendigen Anpassungen des Datensatzes.

  1. Die Informationen des Datensatzes müssen eingelesen werden. Dazu kann die Prozedur

    • read_dl_dataset_anomaly

    verwendet werden. Dabei wird ein Dictionary DLDatasetDLDatasetDLDatasetDLDatasetDLDataset erstellt, welches als Datenbank dient und alle notwendigen Informationen über die Daten abspeichert. Für mehr Information zu den Daten und wie sie übergeben werden, wird auf den unteren Absatz „Daten“ und das Kapitel Deep Learning / Modell verwiesen.

  2. Die Daten von DLDatasetDLDatasetDLDatasetDLDatasetDLDataset sollen in drei getrennte Datensätze aufgeteilt werden. Dazu kann die Prozedur

    • split_dl_dataset

    verwendet werden.

  3. Das Netzwerk stellt mehrere Anforderungen an die Bilder (wie z.B. die Bilddimensionen und den Grauwertbereich). Diese Werte können mit

    abgefragt werden. Dafür muss das Modell erst eingelesen werden mittels

  4. Der Datensatz kann nun vorverarbeitet werden. Dazu kann die Prozedur

    • preprocess_dl_dataset

    verwendet werden. Für die Implementierung einer selbst erstellten Vorverarbeitung kann man sich an dieser Prozedur orientieren.

    Um diese Prozedur zu verwenden, müssen die Vorverarbeitungsparameter wie z.B. die Bildgröße festgelegt werden. Die Parameter und ihre Werte sind im Dictionary DLPreprocessParamDLPreprocessParamDLPreprocessParamDLPreprocessParamDLPreprocessParam zu speichern. Zur Erzeugung dieses Dictionarys kann die Prozedur

    • create_dl_preprocess_param

    verwendet werden. Es wird empfohlen, dieses Dictionary DLPreprocessParamDLPreprocessParamDLPreprocessParamDLPreprocessParamDLPreprocessParam abzuspeichern, um während der späteren Inferenz-Phase Zugang zu den Werten zu haben.

Trainieren des Modells

Dieser Abschnitt behandelt das Trainieren eines Anomalieerkennungsmodells.

  1. Setzen der Trainingsparameter und Abspeichern derselben im Dictionary TrainParamTrainParamTrainParamTrainParamtrainParam. Für dies kann die Prozedur

    • create_dl_train_param

    verwendet werden.

  2. Trainieren des Modells. Dafür kann die Prozedur

    • train_dl_model

    verwendet werden. Diese Prozedur benötigt:

    • das Handle des Modells, DLModelHandleDLModelHandleDLModelHandleDLModelHandleDLModelHandle

    • das Dictionary mit den Informationen über den Datensatz, DLDatasetDLDatasetDLDatasetDLDatasetDLDataset

    • das Dictionary mit den Trainingsparametern, TrainingParamTrainingParamTrainingParamTrainingParamtrainingParam

Evaluierung des trainierten Modells

Dieser Abschnitt behandelt das Evaluieren eines Anomalieerkennungsmodells.

  1. Setzen aller Modellparameter, welche die Evaluieren beeinflussen können.

  2. Die Evaluierung kann bequem mit der Prozedur

    • evaluate_dl_model

    durchgeführt werden. Diese Prozedur erwartet ein Dictionary GenParamEvalGenParamEvalGenParamEvalGenParamEvalgenParamEval mit den Evaluierungsparametern.

  3. Das Dictionary EvaluationResultsEvaluationResultsEvaluationResultsEvaluationResultsevaluationResults enthält die angefragten Evaluierungsmaße.

Inferenz auf neuen Bildern

Dieser Abschnitt behandelt die Inferenz auf neuen Bildern durch ein Anomalieerkennungsmodell. Für ein trainiertes Modell sind die folgenden Schritte durchzuführen:

  1. Abfragen der Anforderungen des Modells an die Bilder über den Operator

    oder die Prozedur

    • create_dl_preprocess_param_from_model.

  2. Setzen der Modellparameter, wie im Abschnitt „Modellparameter“ beschrieben, über den Operator

  3. Generieren des Dictionaries DLSampleDLSampleDLSampleDLSampleDLSample für jedes zu inferierende Bild. Dafür kann die Prozedur

    • gen_dl_samples_from_images

    verwendet werden.

  4. Jedes Bild muss auf dieselbe Art und Weise wie die Trainingsbilder vorverarbeitet werden. Es wird empfohlen, dafür die Prozedur

    • preprocess_dl_samples

    zu verwenden. Wurde während der Vorverarbeitung das Dictionary DLPreprocessParamDLPreprocessParamDLPreprocessParamDLPreprocessParamDLPreprocessParam gespeichert, kann es direkt als Eingabe verwendet werden, um die Parameterwerte festzulegen.

  5. Anwenden des Modells über den Operator

  6. Die Resultate können aus dem Dictionary 'DLResult'"DLResult""DLResult""DLResult""DLResult" abgerufen werden.

Daten

Es wird zwischen den Daten für Training, Evaluierung und Inferenz auf neuen Bildern unterschieden.

Ein Grundgedanke der Datenhandhabung: Das Modell interagiert mit den Daten über Dictionaries. Dies bedeutet, das Modell erhält die Eingabedaten über das Dictionary DLSampleDLSampleDLSampleDLSampleDLSample und gibt die Ausgabe über das Dictionary DLResultDLResultDLResultDLResultDLResult, bzw. DLTrainResultDLTrainResultDLTrainResultDLTrainResultDLTrainResult zurück. Für weitere Informationen zur Datenhandhabung wird auf das Kapitel Deep Learning / Modell verwiesen.

Klassen

Bei der Anomalieerkennung werden genau zwei Klassen unterschieden:

Diese Klassen treffen sowohl für das Bild als ganzes sowie auch für die einzelnen Pixel zu.

Daten für das Training

Der Datensatz besteht nur aus Bildern ohne Anomalie und den dazugehörigen Informationen. Damit das Modell die Daten verarbeiten kann, müssen sie bestimmte Anforderungen erfüllen. Informationen zu den Bildanforderungen finden sich im unteren Abschnitt „Bilder“.

Die Trainingsdaten werden dazu benötigt, um das Modell für eine spezifische Aufgabe zu trainieren. Mit Hilfe dieser Daten kann das Modell lernen, welche Merkmale die Anomalie-freien Bilder gemeinsam haben.

Daten für die Evaluierung

Dieser Datensatz muss Bilder ohne Anomalie enthalten, es können zusätzlich aber auch solche mit Anomalie darin sein. Jedes enthaltene Bild braucht ein Ground Truth Label image_label, welches die Klasse des Bildes bestimmt (siehe den obigen Abschnitt). Dadurch wird angegeben, ob auf dem Bild eine Anomalie ersichtlich ist ('nok'"nok""nok""nok""nok") oder nicht ('ok'"ok""ok""ok""ok").

Die Evaluierung kann visuell auch auf Pixelebene stattfinden, wenn ein entsprechendes Bild anomaly_file_name im Dictionary DLSampleDLSampleDLSampleDLSampleDLSample vorhanden ist. Auf dem Bild anomaly_file_name gibt jeder Pixel die Klassen-ID an und damit ob der entsprechende Pixel des Eingabebildes eine Anomalie zeigt (Pixelwert > 0) oder nicht (Pixelwert 0).

image/svg+xml image/svg+xml
(1) (2)
Schema des Bildes anomaly_file_name. Zur besseren Darstellung werden Grauwerte für die verschiedenen Zahlen verwendet. (1) Eingabebild. (2) Das entsprechende Bild anomaly_file_name, welches die Klassenannotationen zur Verfügung stellt, 0: 'ok'"ok""ok""ok""ok" (weiß und hellgrau), 2: 'nok'"nok""nok""nok""nok" (dunkelgrau).
Bilder

Unabhängig von der Anwendung stellt das Modell Anforderungen an die Bilder, wie z.B. die Bilddimensionen. Die spezifischen Werte hängen vom Modell selbst ab, für die spezifischen Werte der verschiedenen Modelle siehe die Dokumentation von read_dl_modelread_dl_modelReadDlModelReadDlModelReadDlModel. Für ein eingelesenes Modell können die Werte mit get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam abgefragt werden. Um diese Anforderungen zu erfüllen, müssen die Bilder eventuell vorverarbeitet werden. Die Standard-Vorverarbeitung für den ganzen Datensatz und damit auch der Bilder kann mit Hilfe der Prozedur preprocess_dl_dataset durchgeführt werden, bzw. preprocess_dl_samples für ein einzelnes Sample. Für eine selbst erstellte Vorverarbeitung liefern diese Prozeduren eine Anleitung für die Implementierung.

Modell-Ausgabe

Als Trainingsausgabe gibt der Operator train_dl_model_anomaly_datasettrain_dl_model_anomaly_datasetTrainDlModelAnomalyDatasetTrainDlModelAnomalyDatasetTrainDlModelAnomalyDataset ein Dictionary DLTrainResultDLTrainResultDLTrainResultDLTrainResultDLTrainResult. Für die Anomalieerkennung hat es die folgenden Einträge:

image/svg+xml image/svg+xml
(1) (2)
Schema des Bildes anomaly_imageanomaly_imageanomaly_imageanomaly_imageanomalyImage. Zur besseren Darstellung werden Grauwerte für die verschiedenen Zahlen verwendet. (1) Das Bild anomaly_file_name liefert die Klassenannotationen 0: 'ok'"ok""ok""ok""ok" (weiß und hellgrau), 2: 'nok'"nok""nok""nok""nok" (dunkelgrau) (2) Das entsprechende Bild anomaly_imageanomaly_imageanomaly_imageanomaly_imageanomalyImage.

Spezifische Parameter

Bei einem Anomalieerkennungsmodell werden sowohl die Modellparameter als auch die Hyperparameter mit set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamSetDlModelParam gesetzt. Für Informationen zu den Modellparametern wird auf die Dokumentation von get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam verwiesen.

Während des Trainings wird der gesamte Datensatz auf einmal verwendet und nicht nur jeweils ein Batch. Infolgedessen haben bestimmte Parameter wie z.B. 'batch_size_multiplier'"batch_size_multiplier""batch_size_multiplier""batch_size_multiplier""batch_size_multiplier" keinen Einfluss.

Das Modell gibt Scores zurück, aber klassifiziert weder das Bild als ganzes noch die Pixel, d.h., es bestimmt nicht, ob diese eine Anomalie zeigen oder nicht. Für diese Klassifizierung müssen Schwellenwerte angegeben werden, welche den minimalen Score festlegen, damit ein Pixel oder Bild als anomal zählt. Mögliche Schwellwerte können mit der Prozedur compute_dl_anomaly_anomaly_thresholdscompute_dl_anomaly_anomaly_thresholdscompute_dl_anomaly_anomaly_thresholdscompute_dl_anomaly_anomaly_thresholdscomputeDlAnomalyAnomalyThresholds geschätzt werden. Die Schwellwerte können mit der Prozedur threshold_dl_anomaly_resultsthreshold_dl_anomaly_resultsthreshold_dl_anomaly_resultsthreshold_dl_anomaly_resultsthresholdDlAnomalyResults angewandt werden. Als Resultat fügt die Prozedur folgende (vom Schwellwert abhängige) Einträge zum Dictionary DLResultatDLResultatDLResultatDLResultatDLResultat des Samples hinzu:

anomaly_classanomaly_classanomaly_classanomaly_classanomalyClass

Vorhergesagte Klasse für das Bild als Ganzes (für den gegebenen Schwellwert).

anomaly_class_idanomaly_class_idanomaly_class_idanomaly_class_idanomalyClassId

ID der vorhergesagten Klasse für das Bild als Ganzes (für den gegebenen Schwellwert).

anomaly_regionanomaly_regionanomaly_regionanomaly_regionanomalyRegion
Regionen der Pixel welche als anomal bewertet wurden (für den gegebenen Schwellwert, siehe die untere Darstellung).
image/svg+xml image/svg+xml
(1) (2)
Schema von anomaly_regionanomaly_regionanomaly_regionanomaly_regionanomalyRegion. Zur besseren Darstellung werden Grauwerte für die verschiedenen Zahlen verwendet. (1) Das Bild anomaly_imageanomaly_imageanomaly_imageanomaly_imageanomalyImage mit den erhaltenen pixelweisen Scores. (2) Die entsprechende Region anomaly_regionanomaly_regionanomaly_regionanomaly_regionanomalyRegion.

Liste der Operatoren

train_dl_model_anomaly_datasetTrainDlModelAnomalyDatasetTrainDlModelAnomalyDatasettrain_dl_model_anomaly_dataset
Trainieren eines Deep Learning-Modells zur Anomalieerkennung.