init_dl_continual_learningT_init_dl_continual_learningInitDlContinualLearningInitDlContinualLearninginit_dl_continual_learning (Operator)

Name

init_dl_continual_learningT_init_dl_continual_learningInitDlContinualLearningInitDlContinualLearninginit_dl_continual_learning — Wandelt ein Klassifikationsmodell in ein Modell um, welches für Continual Learning geeignet ist.

Signatur

init_dl_continual_learning( : : DLModelHandle, DLDataset, GenParam : )

Herror T_init_dl_continual_learning(const Htuple DLModelHandle, const Htuple DLDataset, const Htuple GenParam)

void InitDlContinualLearning(const HTuple& DLModelHandle, const HTuple& DLDataset, const HTuple& GenParam)

static void HOperatorSet.InitDlContinualLearning(HTuple DLModelHandle, HTuple DLDataset, HTuple genParam)

def init_dl_continual_learning(dlmodel_handle: HHandle, dldataset: HHandle, gen_param: HHandle) -> None

Beschreibung

init_dl_continual_learninginit_dl_continual_learningInitDlContinualLearningInitDlContinualLearninginit_dl_continual_learning initialisiert ein Deep Learning-Modell DLModelHandleDLModelHandleDLModelHandleDLModelHandledlmodel_handle mit 'type'"type""type""type""type" = 'classification'"classification""classification""classification""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 DLDatasetDLDatasetDLDatasetDLDatasetdldataset übergeben wird, muss dieser vorverarbeitet und aufgeteilt sein. init_dl_continual_learninginit_dl_continual_learningInitDlContinualLearningInitDlContinualLearninginit_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 DLDatasetDLDatasetDLDatasetDLDatasetdldataset ü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 DLDatasetDLDatasetDLDatasetDLDatasetdldataset 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'"reset_class_information""reset_class_information""reset_class_information""reset_class_information" auf 'true'"true""true""true""true" gesetzt wird. Wenn ein DLDatasetDLDatasetDLDatasetDLDatasetdldataset 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 DLDatasetDLDatasetDLDatasetDLDatasetdldataset innerhalb von init_dl_continual_learninginit_dl_continual_learningInitDlContinualLearningInitDlContinualLearninginit_dl_continual_learning zu einem ähnlichen Modell führt wie die Angabe keines DLDatasetDLDatasetDLDatasetDLDatasetdldataset innerhalb von init_dl_continual_learninginit_dl_continual_learningInitDlContinualLearningInitDlContinualLearninginit_dl_continual_learning, jedoch innerhalb von extend_dl_continual_learningextend_dl_continual_learningExtendDlContinualLearningExtendDlContinualLearningextend_dl_continual_learning. Wenn ein nachtrainiertes Modell bereitgestellt wird, muss DLDatasetDLDatasetDLDatasetDLDatasetdldataset 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_learninginit_dl_continual_learningInitDlContinualLearningInitDlContinualLearninginit_dl_continual_learning erweitert das Modell auch für Out-of-Distribution Detection. Wird apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelapply_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_distributionfit_dl_out_of_distributionFitDlOutOfDistributionFitDlOutOfDistributionfit_dl_out_of_distribution für genauere Informationen. Der bereitgestellte Datensatz DLDatasetDLDatasetDLDatasetDLDatasetdldataset 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_learninginit_dl_continual_learningInitDlContinualLearningInitDlContinualLearninginit_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'"ood_threshold""ood_threshold""ood_threshold""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'"ood_threshold""ood_threshold""ood_threshold""ood_threshold" erforderlich ist, kann der Datensatz auch ausschließlich in Trainings- und Testbilder aufgeteilt werden. Wenn der bereitgestellte DLDatasetDLDatasetDLDatasetDLDatasetdldataset weniger als oder genau 15 Trainingsbeispiele pro Klasse und keine Validierungsbeispiele enthält, schlägt die Berechnung des 'ood_threshold'"ood_threshold""ood_threshold""ood_threshold""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_learninginit_dl_continual_learningInitDlContinualLearningInitDlContinualLearninginit_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.

GenParamGenParamGenParamgenParamgen_param ist ein Dictionary zum Setzen generischer Parameter. Zur Zeit werden folgende GenParamGenParamGenParamgenParamgen_param unterstützt:

'reset_class_information'"reset_class_information""reset_class_information""reset_class_information""reset_class_information":

Bestimmt, ob der Parameter DLDatasetDLDatasetDLDatasetDLDatasetdldataset 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_learninginit_dl_continual_learningInitDlContinualLearningInitDlContinualLearninginit_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'"true""true""true""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'"false""false""false""false", 'true'"true""true""true""true"

Default: 'false'"false""false""false""false"

Achtung

Wenn fit_dl_out_of_distributionfit_dl_out_of_distributionFitDlOutOfDistributionFitDlOutOfDistributionfit_dl_out_of_distribution für ein Modell aufgerufen wird, bevor init_dl_continual_learninginit_dl_continual_learningInitDlContinualLearningInitDlContinualLearninginit_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.

Ausführungsinformationen

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.

Parameter

DLModelHandleDLModelHandleDLModelHandleDLModelHandledlmodel_handle (input_control, Zustand wird modifiziert)  dl_model HDlModel, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des Deep Learning-Klassifikationsmodells.

DLDatasetDLDatasetDLDatasetDLDatasetdldataset (input_control)  dict HDict, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Datensatz für den ersten Continual Learning Schritt.

GenParamGenParamGenParamgenParamgen_param (input_control)  dict HDict, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Dictionary für generische Parameter.

Default: []

Vorgänger

read_dl_modelread_dl_modelReadDlModelReadDlModelread_dl_model

Nachfolger

extend_dl_continual_learningextend_dl_continual_learningExtendDlContinualLearningExtendDlContinualLearningextend_dl_continual_learning, apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelapply_dl_model

Modul

Deep Learning Professional