Continual Learning

Liste der Operatoren ↓

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.

image/svg+xml
Ein mögliches Beispiel für Continual Learning für Klassifikation, bei dem das Netzwerk ursprünglich darauf trainiert wurde, drei Klassen zu unterscheiden. Später wurde das Modell um eine zusätzliche Klasse 'banana' erweitert, wobei ausschließlich neu bereitgestellte Bananenbilder verwendet wurden, während das Wissen über die zuvor gelernten Klassen erhalten blieb. Die beste Vorhersage zeigt, dass das Bild nun als 'banana' erkannt wird.

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 init_dl_continual_learninginit_dl_continual_learningInitDlContinualLearningInitDlContinualLearninginit_dl_continual_learning und extend_dl_continual_learningextend_dl_continual_learningExtendDlContinualLearningExtendDlContinualLearningextend_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.

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.

Genereller Ablauf

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.

Initialisierung des Modells für Continual Learning

Dieser Abschnitt beschreibt die Vorbereitung des Modells für Continual Learning.

  1. Ausgangspunkt ist ein vortrainiertes Netzwerk oder ein Modell, das bereits im Standard-Workflow trainiert wurde. Dieses wird eingelesen mit

  2. Initialisieren des Modells für Continual Learning mit

    In diesem Schritt kann optional ein DLDatasetDLDatasetDLDatasetDLDatasetdldataset übergeben werden, das mit read_dl_dataset_classification erstellt, mit split_dl_dataset geteilt und mit preprocess_dl_dataset vorverarbeitet wurde.

  3. Wurde ein Datensatz an init_dl_continual_learninginit_dl_continual_learningInitDlContinualLearningInitDlContinualLearninginit_dl_continual_learning übergeben, kann das Modell mit

    • evaluate_dl_model

    evaluiert werden. Die Ergebnisse können visualisiert werden mit

    • dev_display_classification_evaluation.

Erweiterung des Modells mit neuen Daten

Dieser Abschnitt beschreibt das Hinzufügen neuer Klassen oder das Erweitern bestehender Klassen.

  1. 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.

  2. 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.

Evaluierung des Modells

In diesem Abschnitt wird der erweiterte Klassifikator evaluiert.

  1. Die Evaluierung erfolgt mit der Prozedur

    • evaluate_dl_model.

  2. 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.

  3. Das Dictionary EvaluationResult enthält die Evaluierungsmaße. Visualisierung ist möglich mit

    • dev_display_classification_evaluation.

Inferenz auf neuen Bildern

Dieser Abschnitt beschreibt die Anwendung eines Klassifikationsmodells mit Continual Learning.

  1. Erzeugen eines Daten-Dictionarys DLSample für jedes Bild mit

    • gen_dl_samples_from_images.

  2. Vorverarbeitung der Bilder wie zuvor, mit

    • preprocess_dl_samples.

  3. Anwenden des Modells mit dem Operator

  4. Abrufen der Ergebnisse aus dem Dictionary 'DLResultBatch'"DLResultBatch""DLResultBatch""DLResultBatch""DLResultBatch".

Daten

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.


Liste der Operatoren

extend_dl_continual_learningExtendDlContinualLearningextend_dl_continual_learningExtendDlContinualLearningextend_dl_continual_learning
Erweitern ein Modell für Continual Learning mit neuen Daten.
init_dl_continual_learningInitDlContinualLearninginit_dl_continual_learningInitDlContinualLearninginit_dl_continual_learning
Wandelt ein Klassifikationsmodell in ein Modell um, welches für Continual Learning geeignet ist.