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.
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.
Dieser Abschnitt beschreibt den generellen Ablauf einer Anomalieerkennungsaufgabe mittels Deep Learning.
Dieser Abschnitt behandelt die notwendigen Anpassungen des Datensatzes.
Die Informationen des Datensatzes müssen eingelesen werden. Dazu kann die Prozedur
read_dl_dataset_anomaly
verwendet werden.
Dabei wird ein Dictionary
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.
DLDataset
Die Daten von
sollen in drei
getrennte Datensätze aufgeteilt werden. Dazu kann die Prozedur
DLDataset
split_dl_dataset
verwendet werden.
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
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
zu speichern.
Zur Erzeugung dieses Dictionarys kann die Prozedur
DLPreprocessParam
create_dl_preprocess_param
verwendet werden.
Es wird empfohlen, dieses Dictionary
abzuspeichern, um während der späteren Inferenz-Phase Zugang zu
den Werten zu haben.
DLPreprocessParam
Dieser Abschnitt behandelt das Trainieren eines Anomalieerkennungsmodells.
Setzen der Trainingsparameter und Abspeichern derselben im
Dictionary
.
Für dies kann die Prozedur
TrainParam
create_dl_train_param
verwendet werden.
Trainieren des Modells. Dafür kann die Prozedur
train_dl_model
verwendet werden. Diese Prozedur benötigt:
das Handle des Modells, DLModelHandle
das Dictionary mit den Informationen über den Datensatz,
DLDataset
das Dictionary mit den Trainingsparametern, TrainingParam
Dieser Abschnitt behandelt das Evaluieren eines Anomalieerkennungsmodells.
Setzen aller Modellparameter, welche die Evaluieren beeinflussen können.
Die Evaluierung kann bequem mit der Prozedur
evaluate_dl_model
durchgeführt werden.
Diese Prozedur erwartet ein Dictionary
mit den
Evaluierungsparametern.
GenParamEval
Das Dictionary
enthält die
angefragten Evaluierungsmaße.
EvaluationResults
Dieser Abschnitt behandelt die Inferenz auf neuen Bildern durch ein Anomalieerkennungsmodell. Für ein trainiertes Modell sind die folgenden Schritte durchzuführen:
Abfragen der Anforderungen des Modells an die Bilder über den Operator
oder die Prozedur
create_dl_preprocess_param_from_model
.
Setzen der Modellparameter, wie im Abschnitt „Modellparameter“ beschrieben, über den Operator
Generieren des Dictionaries
für jedes
zu inferierende Bild.
Dafür kann die Prozedur
DLSample
gen_dl_samples_from_images
verwendet werden.
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
gespeichert, kann es direkt als Eingabe
verwendet werden, um die Parameterwerte festzulegen.
DLPreprocessParam
Anwenden des Modells über den Operator
Die Resultate können aus dem Dictionary 'DLResult'
abgerufen werden.
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
und gibt die Ausgabe über das Dictionary
DLSample
, bzw. DLResult
zurück.
Für weitere Informationen zur Datenhandhabung wird auf das Kapitel
Deep Learning / Modell verwiesen.
DLTrainResult
Bei der Anomalieerkennung werden genau zwei Klassen unterschieden:
'ok'
, ohne Anomalie, Klassen-ID 0.
'nok'
, mit Anomalie, Klassen-ID 1.
(auf Pixelwerten eine ID >0, siehe den unteren Abschnitt
„Daten für die Evaluierung“).
Diese Klassen treffen sowohl für das Bild als ganzes sowie auch für die einzelnen Pixel zu.
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.
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'
) oder nicht ('ok'
).
Die Evaluierung kann visuell auch auf Pixelebene stattfinden, wenn ein
entsprechendes Bild anomaly_file_name
im Dictionary
vorhanden ist.
Auf dem Bild DLSample
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).
(1) | (2) |
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
.
Für ein eingelesenes Modell können die Werte mit
read_dl_model
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 get_dl_model_param
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.
Als Trainingsausgabe gibt der Operator
ein Dictionary
train_dl_model_anomaly_dataset
.
Für die Anomalieerkennung hat es die folgenden Einträge:
DLTrainResult
anomaly_score
:
Ein Score, der angibt, wie wahrscheinlich das Bild als Ganzes eine
Anomalie enthält. Die Berechnung dieses Scores basiert auf den Werten
von
.
anomaly_image
:
Ein Bild, mit Scores als Pixelwerte, die angeben wie wahrscheinlich der
entsprechende Pixel des Eingabebildes zu einer Anomalie gehört
(siehe die untere Darstellung).
Die Werte sind .
anomaly_image
(1) | (2) |
Bei einem Anomalieerkennungsmodell werden sowohl die Modellparameter als
auch die Hyperparameter mit
gesetzt.
Für Informationen zu den Modellparametern wird auf die Dokumentation von
set_dl_model_param
verwiesen.
get_dl_model_param
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'
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
geschätzt werden.
Die Schwellwerte können mit der Prozedur
compute_dl_anomaly_anomaly_thresholds
angewandt werden.
Als Resultat fügt die Prozedur folgende (vom Schwellwert abhängige) Einträge
zum Dictionary threshold_dl_anomaly_results
des Samples hinzu:
DLResultat
anomaly_class
Vorhergesagte Klasse für das Bild als Ganzes (für den gegebenen Schwellwert).
anomaly_class_id
ID der vorhergesagten Klasse für das Bild als Ganzes (für den gegebenen Schwellwert).
anomaly_region
(1) | (2) |
train_dl_model_anomaly_dataset