init_dl_continual_learning — Wandelt ein Klassifikationsmodell in ein Modell um, welches für Continual
Learning geeignet ist.
init_dl_continual_learning( : : DLModelHandle, DLDataset, GenParam : )
init_dl_continual_learning initialisiert ein Deep Learning-Modell
DLModelHandle mit 'type' = 'classification'
für Continual Learning. Mit Continual Learning ist es möglich,
ein Modell um neue Klassen oder Änderungen innerhalb bekannter Klassen
zu erweitern, ohne es von Grund auf neu trainieren zu müssen, selbst wenn
das Modell für eine AI
2-Schnittstelle optimiert wurde. Siehe
Deep Learning / Continual Learning für weitere Informationen.
Wenn ein DLDataset übergeben wird, muss dieser vorverarbeitet
und aufgeteilt sein. init_dl_continual_learning kann entweder
mit einem der von HALCON bereitgestellten vortrainierten Klassifizierungsmodelle
oder mit einem Modell aufgerufen werden, das zuvor mit train_dl_model nachtrainiert
wurde. Die interne Architektur des Modells wird leicht verändert,
sodass Continual Learning möglich wird. Dieser Prozess entfernt die interne
Fähigkeit des Modells, zwischen zuvor gelernten Klassen zu unterscheiden,
es sei denn, der zuvor für das Nachtraining des Modells verwendete Datensatz wird
bereitgestellt. Das interne Wissen für die Merkmalsextraktion bleibt in allen Fällen
erhalten. Wenn kein DLDataset übergeben wird, kann das resultierende Modell
für Continual Learning keinerlei Klassifizierung durchführen, unabhängig davon,
ob es sich um ein vortrainiertes oder ein nachtrainiertes Modell handelt. Um potenziell
unerwünschte Änderungen zu vermeiden, wenn kein DLDataset oder ein
Datensatz mit anderen Klassen als den zuvor dem Modell bekannten übergeben wird,
ist dies nur durch eine weitere Bestätigung möglich, indem der generische Parameter
GenParam 'reset_class_information' auf 'true' gesetzt wird.
Wenn ein DLDataset bereitgestellt wird, lernt das Modell für
Continual Learning auf besondere Weise aus den bereitgestellten Daten.
Es ist zu beachten, dass die Angabe eines anfänglichen DLDataset
innerhalb von init_dl_continual_learning zu einem ähnlichen Modell führt
wie die Angabe keines DLDataset innerhalb von init_dl_continual_learning,
jedoch innerhalb von extend_dl_continual_learning. Wenn ein nachtrainiertes
Modell bereitgestellt wird, muss DLDataset derselbe Datensatz sein
(einschließlich Aufteilung und Vorverarbeitungsparametern), der während des
Nachtrainings verwendet wurde.
Im Allgemeinen wird empfohlen, mit einem vortrainierten Modell zu beginnen und
es für Continual Learning mit dem zu lernenden Datensatz zu initialisieren.
Das Modell kann mit evaluate_dl_model evaluiert werden. Wenn die
Modellgenauigkeit nicht ausreicht, kann ein vorheriges Nachtraining des
ursprünglichen Datensatzes hilfreich sein. Allerdings kann ein umfangreiches
Training die Fähigkeit des Modells, neue Klassen zu lernen, im Vergleich zu
einem vortrainierten Modell reduzieren.
Aufgrund von Änderungen in der Modellarchitektur können die Vorhersagen des initialisierten Modells von denen des ursprünglich nachtrainierten Modells abweichen. Während die Gesamtgenauigkeit bei Bereitstellung des ursprünglichen Trainingsdatensatzes ähnlich bleibt, können die Konfidenzwerte niedriger ausfallen. Dies liegt daran, dass die Konfidenzwerte unterschiedlich berechnet werden und bedeutet nicht, dass die Schätzungen des Modells weniger vertrauenswürdig sind. Konfidenzwerte sollten immer relativ zum Datensatz interpretiert werden, um daraus Schlussfolgerungen ziehen zu können.
init_dl_continual_learning erweitert das Modell auch für
Out-of-Distribution Detection. Wird apply_dl_model aufgerufen,
enthält das Ergebnis die zusätzlichen Einträge im Zusammenhang mit der
Out-of-Distribution Detection. Siehe fit_dl_out_of_distribution
für genauere Informationen. Der bereitgestellte Datensatz DLDataset sollte
vielfältige und ausreichende Beispiele für jede Klasse enthalten, um eine
zuverlässige Out-of-Distribution Detection zu gewährleisten.
Die Verwendung von Validierungsbildern unterscheidet sich innerhalb von
init_dl_continual_learning im Vergleich zu einem Training des Modells
mittels train_dl_model. Validierungsbilder werden nur für eine Kalibrierung
der Konfidenzwerte des Modells und für die Berechnung des 'ood_threshold'
innerhalb der Out-of-Distribution-Erkennung verwendet. Wenn für den jeweiligen
Anwendungsfall weder eine Kalibrierung der Konfidenzwerte noch die Berechnung des
'ood_threshold' erforderlich ist, kann der Datensatz auch ausschließlich
in Trainings- und Testbilder aufgeteilt werden. Wenn der bereitgestellte
DLDataset weniger als oder genau 15 Trainingsbeispiele pro Klasse und keine
Validierungsbeispiele enthält, schlägt die Berechnung des 'ood_threshold'
für die Out-of-Distribution Detection fehl und der Schwellenwert wird auf einen sehr
hohen Wert gesetzt. Im Ergebnis wird das Modell niemals ein Bild als
Out-of-Distribution vorhersagen, es sei denn, der Schwellenwert wird vom Benutzer
geändert.
init_dl_continual_learning kann auf jedes von HALCON ausgelieferte
Klassifizierungsmodell angewendet werden. Bei Modellen, die mit
Deep Learning / Framework-Operatoren erstellt oder aus einer
ONNX-Modelldatei gelesen wurden, kann die Kompatibilität für Continual Learning
je nach Architektur variieren.
GenParam ist ein Dictionary zum Setzen generischer Parameter.
Zur Zeit werden folgende GenParam unterstützt:
Bestimmt, ob der Parameter
DLDataset auch ein leeres Tupel oder ein Datensatz mit unterschiedlichen
Klassen als dem Model bekannt sein darf. Dies dient der
Absicherung, da ohne einen übergebenen Datensatz das vorhandene
Klassenwissen beim Aufruf von init_dl_continual_learning
zurückgesetzt wird. Um eine Modellinitialisierung ohne Datensatz oder mit einem
Datensatz zu ermöglichen, dessen Klassen sich von den dem Modell bekannten
unterscheiden, muss der GenParam auf 'true' gesetzt sein.
Dies kann beispielsweise nützlich sein, wenn ein vortrainiertes
Modell zu einem Zeitpunkt für Continual Learning initialisiert
werden soll, an dem noch keine Samples der initialen Klassen vorhanden
sind.
Werteliste: 'false', 'true'
Default: 'false'
Wenn fit_dl_out_of_distribution für ein Modell aufgerufen wird, bevor
init_dl_continual_learning aufgerufen wird, werden die vorherigen internen
Berechnungen für Out-of-Distribution Detection verworfen und das Modell wird
neu angepasst.
Bestimmte Änderungen am Modell, wie ein fortlaufendes Training
mit train_dl_model, können nicht mehr vorgenommen werden, sobald das Modell
für Continual Learning initialisiert wurde. Die Berechnung einer Klassifizierungs-
Heatmap wird derzeit nicht unterstützt.
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.
DLModelHandle (input_control, Zustand wird modifiziert) dl_model → (handle)
Handle des Deep Learning-Klassifikationsmodells.
DLDataset (input_control) dict → (handle)
Datensatz für den ersten Continual Learning Schritt.
GenParam (input_control) dict → (handle)
Dictionary für generische Parameter.
Default: []
extend_dl_continual_learning,
apply_dl_model
Deep Learning Professional