Dieses Kapitel beschreibt, wie Continual Learning in der Deep Learning-basierten Klassifikation genutzt wird.
Continual Learning für Klassifikation ist ein Verfahren des maschinellen Lernens, bei dem ein Modell kontinuierlich mit neuen Daten erweitert werden kann, ohne bereits erworbenes Wissen zu verlieren. Neue Klassen können hinzugefügt oder bestehende Klassen iterativ mit zusätzlichen Daten erweitert werden, ohne dass die Trainingsdaten vorheriger Schritte erneut benötigt werden. Im Gegensatz dazu muss bei der Standard-Klassifikation (siehe Deep Learning / Klassifikation) immer auf alten und neuen Trainingsdaten gemeinsam nachtrainiert werden. Continual Learning erlaubt daher eine deutlich schnellere Anpassung an neue Anforderungen. Ein Continual-Learning-Modell kann sogar mit neuen Daten erweitert werden, wenn es für ein AI 2-Interface optimiert ist. Dadurch ist es möglich, Modelle direkt auf einem Edge-Gerät zu trainieren und einzusetzen.
Out-of-Distribution Detection ist in den Continual Learning Workflow
integriert. Im Gegensatz zur Standard-Klassifikation ist kein separates Anpassen
des Modells mit einem zusätzlichen Operator notwendig. Die dafür erforderlichen
Berechnungen sind bereits in den Continual Learning Operatoren
und
init_dl_continual_learning enthalten.
Dies wird im folgenden Schema dargestellt.
Für weitere Informationen zu Out-of-Distribution Detection siehe das
Kapitel Deep Learning / Klassifikation.
extend_dl_continual_learning
Um die vorliegende Aufgabe zu erledigen, d.h. die Daten in die gewünschten Klassen einzuteilen, ist der Ausgangspunkt entweder ein Modell, das bereits mit dem eigenen Datensatz trainiert wurde, oder ein von HALCON bereitgestellter vortrainierter Klassifikator. Das Modell wird anschließend für Continual Learning initialisiert und kann mehrfach mit neuen Daten erweitert werden. Solche Daten können zusätzliche Klassen oder weitere Beispiele bestehender Klassen enthalten. Weitere Informationen zu den Anforderungen an die Daten finden sich im Abschnitt „Daten“.
In HALCON ist Continual Learning für Klassifikation innerhalb des allgemeinen
Deep Learning Modells umgesetzt. Weitere Informationen hierzu finden sich im
Kapitel Deep Learning / Modell.
Die spezifischen Systemvoraussetzungen zur Nutzung von Continual Learning können
im HALCON „Installation Guide“ eingesehen werden.
Der folgende Abschnitt beschreibt den generellen Workflow für Continual Learning für Klassifikation.
Dieser Abschnitt beschreibt den generellen Ablauf einer Klassifikation mittels
Continual Learning. Im Gegensatz zur Standard-Klassifikation ist der Ablauf
nicht in mehrere Teile aufgeteilt.
Eine beispielhafte Anwendung ist in der HDevelop Datei
continual_learning_for_classification.hdev gezeigt.
Dieser Abschnitt beschreibt die Vorbereitung des Modells für Continual Learning.
Ausgangspunkt ist ein vortrainiertes Netzwerk oder ein Modell, das bereits im Standard-Workflow trainiert wurde. Dieses wird eingelesen mit
Initialisieren des Modells für Continual Learning mit
In diesem Schritt kann optional ein übergeben werden,
das mit DLDatasetread_dl_dataset_classification erstellt,
mit split_dl_dataset geteilt und mit
preprocess_dl_dataset vorverarbeitet wurde.
Wurde ein Datensatz an übergeben,
kann das Modell mit
init_dl_continual_learning
evaluate_dl_model
evaluiert werden. Die Ergebnisse können visualisiert werden mit
dev_display_classification_evaluation.
Dieser Abschnitt beschreibt das Hinzufügen neuer Klassen oder das Erweitern bestehender Klassen.
Bereitstellen eines vorverarbeiteten DLDataset mit
den neuen Bildern (neue Klassen oder Erweiterungen bestehender Klassen).
Der Datensatz darf keine Trainingsdaten enthalten, die bereits bei der
Initialisierung oder früheren Erweiterungen verwendet wurden.
Dafür können folgende Prozeduren genutzt werden:
read_dl_dataset_classification,
split_dl_dataset und
preprocess_dl_dataset.
Erweiterung des Modells mit
Dieser Operator kann mehrfach mit jeweils neuen Daten auf dasselbe Modell
angewandt werden. Während der Erweiterung überprüft der Operator
automatisch Konsistenz von Klassennamen und IDs. Bestehende Klassennamen
bleiben erhalten, neue Klassennamen werden ergänzt, und IDs werden
entsprechend angepasst. Zusätzlich wird der Datensatz intern so geändert,
dass seine Klassen-IDs zu denen des Modells passen. Damit muss der Anwender
die Klassen-IDs nicht selbst anpassen. Zum Beispiel vergibt
read_dl_dataset_classification die IDs immer beginnend mit 0.
Falls das Modell bereits zwei Klassen enthält und der neue Datensatz
eine weitere Klasse mit ID 0 einführt, wird diese intern auf ID 2
umgemappt. So bleiben Modell und Datensatz ohne manuelle Anpassung
konsistent.
In diesem Abschnitt wird der erweiterte Klassifikator evaluiert.
Die Evaluierung erfolgt mit der Prozedur
evaluate_dl_model.
In Continual Learning für Klassifikation können mehrere Datensätze übergeben werden, z.B. einer mit den ursprünglichen Klassen und ein weiterer mit den neu hinzugefügten Klassen.
Das Dictionary EvaluationResult enthält die
Evaluierungsmaße. Visualisierung ist möglich mit
dev_display_classification_evaluation.
Dieser Abschnitt beschreibt die Anwendung eines Klassifikationsmodells mit Continual Learning.
Erzeugen eines Daten-Dictionarys DLSample für jedes Bild mit
gen_dl_samples_from_images.
Vorverarbeitung der Bilder wie zuvor, mit
preprocess_dl_samples.
Anwenden des Modells mit dem Operator
Abrufen der Ergebnisse aus dem Dictionary 'DLResultBatch'.
Die Anforderungen an die Daten für Continual Learning in der Klassifikation sind ähnlich zur Standard-Klassifikation, mit dem wesentlichen Unterschied, dass bei jeder Erweiterung nur die neuen Daten bereitgestellt werden müssen. Alte Trainingsdaten dürfen nicht erneut enthalten sein.
Als Grundprinzip erfolgt die Inferenz über Dictionarys. Die Eingabedaten werden
im Dictionary DLSample bereitgestellt, die Ergebnisse werden im
Dictionary DLResult zurückgegeben. Weitere Informationen zur
Datenhandhabung finden sich im Kapitel Deep Learning / Modell.
Für weitere Informationen zu Bildern, Netzwerk-Ausgaben und Interpretation der Ergebnisse wird auf das Kapitel Deep Learning / Klassifikation verwiesen.
extend_dl_continual_learninginit_dl_continual_learning