fit_dl_out_of_distributionT_fit_dl_out_of_distributionFitDlOutOfDistributionFitDlOutOfDistributionfit_dl_out_of_distribution (Operator)

Name

fit_dl_out_of_distributionT_fit_dl_out_of_distributionFitDlOutOfDistributionFitDlOutOfDistributionfit_dl_out_of_distribution — Erweitern eines Deep Learning-Modells für Out-of-Distribution Detection.

Signatur

fit_dl_out_of_distribution( : : DLModelHandle, DLDataset, GenParam : )

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

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

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

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

Beschreibung

fit_dl_out_of_distributionfit_dl_out_of_distributionFitDlOutOfDistributionFitDlOutOfDistributionfit_dl_out_of_distribution erweitert ein trainiertes Deep Learning-Modell DLModelHandleDLModelHandleDLModelHandleDLModelHandledlmodel_handle mit 'type'"type""type""type""type" = 'classification'"classification""classification""classification""classification" für die Out-of-Distribution Detection. Diese Funktion ermöglicht es dem Modell Samples zu erkennen, die sich signifikant von den Klassen unterscheiden, für welche es trainiert wurde und diese als Out-of-Distribution (OOD) zu kennzeichnen.

Wird anschließend apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelapply_dl_model aufgerufen, enthält das Ergebnis die folgenden zusätzlichen Einträge, die sich auf die Out-of-Distribution Detection beziehen:

'ood_result'"ood_result""ood_result""ood_result""ood_result":

Zeigt an, ob das Sample als Out-of-Distribution eingestuft wird.

'ood_score'"ood_score""ood_score""ood_score""ood_score":

Gibt an, wie stark das Sample von den trainierten Klassen abweicht. Je höher dieser Wert ist, desto eher ist das Sample Out-of-Distribution.

'ood_threshold'"ood_threshold""ood_threshold""ood_threshold""ood_threshold":

Übersteigt 'ood_score'"ood_score""ood_score""ood_score""ood_score" diesen Schwellenwert, wird das Sample als Out-of-Distribution eingestuft. Der Schwellenwert für die Out-of-Distribution wird während der Ausführung von fit_dl_out_of_distributionfit_dl_out_of_distributionFitDlOutOfDistributionFitDlOutOfDistributionfit_dl_out_of_distribution berechnet und in DLModelHandleDLModelHandleDLModelHandleDLModelHandledlmodel_handle als 'ood_threshold' gespeichert. Dieser Schwellenwert kann bei Bedarf mit dem Operator set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamset_dl_model_param manuell angepasst werden.

Damit fit_dl_out_of_distributionfit_dl_out_of_distributionFitDlOutOfDistributionFitDlOutOfDistributionfit_dl_out_of_distribution korrekt funktioniert, ist es wichtig, dass DLDatasetDLDatasetDLDatasetDLDatasetdldataset derselbe Datensatz mit derselben Aufteilung und Vorverarbeitung ist wie der, der für das Training von DLModelHandleDLModelHandleDLModelHandleDLModelHandledlmodel_handle verwendet wurde. Es ist entscheidend, dass der bereitgestellte Datensatz DLDatasetDLDatasetDLDatasetDLDatasetdldataset verschiedene und ausreichende Samples für jede Klasse enthält, um eine zuverlässige Out-of-Distribution Detection zu gewährleisten. Wenn das bereitgestellte DLDatasetDLDatasetDLDatasetDLDatasetdldataset weniger als oder genau 15 Trainingsdaten pro Klasse und keine Validierungsdaten enthält, gibt fit_dl_out_of_distributionfit_dl_out_of_distributionFitDlOutOfDistributionFitDlOutOfDistributionfit_dl_out_of_distribution einen Fehler zurück. In solchen Fällen sollten zusätzliche Trainingsdaten zum Datensatz hinzugefügt werden.

fit_dl_out_of_distributionfit_dl_out_of_distributionFitDlOutOfDistributionFitDlOutOfDistributionfit_dl_out_of_distribution kann auf jedes von HALCON unterstütztes Klassifikationsmodell angewendet werden. Für Modelle, die mit Deep Learning / Framework-Operatoren erstellt oder aus einer ONNX-Modelldatei gelesen werden, kann die Kompatibilität der Out-of-Distribution Detection je nach Architektur variieren.

Die Leistung des Modells für die Out-of-Distribution Detection kann mit Hilfe der Prozedur evaluate_dl_model evaluiert werden. Out-of-Distribution-Samples können mit der Prozedur add_dl_out_of_distribution_data zum DLDatensatz hinzugefügt werden, so dass getestet werden kann, ob das Modell In-Distribution- von Out-of-Distribution-Daten trennen kann. Anpassungen von 'ood_threshold'"ood_threshold""ood_threshold""ood_threshold""ood_threshold" wirken sich auf die Evaluierungsergebnisse aus. Es wird daher empfohlen, das Modell nach solchen Änderungen erneut zu evaluieren.

GenParamGenParamGenParamgenParamgen_param ist ein Dictionary zum Setzen generischer Parameter. Zur Zeit werden keine generischen Parameter unterstützt.

Achtung

Wenn fit_dl_out_of_distributionfit_dl_out_of_distributionFitDlOutOfDistributionFitDlOutOfDistributionfit_dl_out_of_distribution für ein Modell aufgerufen wird, das diesen Prozess bereits durchlaufen hat, werden die vorherigen Ergebnisse verworfen und das Modell wird erneut für die Out-of-Distribution Detection angepasst.

Bestimmte Änderungen am Modell, wie z.B. die Änderung der Anzahl der Klassen oder ein weiteres Trainieren des Modells, können nicht mehr vorgenommen werden, wenn das Modell für Out-of-Distribution Detection angepasst wurde. Um solche Änderungen vorzunehmen, muss die Anpassung des Modells für die Out-of-Distribution Detection rückgängig gemacht werden, indem der Parameter 'clear_ood'"clear_ood""clear_ood""clear_ood""clear_ood" in set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamset_dl_model_param verwendet wird. Anschließend kann fit_dl_out_of_distributionfit_dl_out_of_distributionFitDlOutOfDistributionFitDlOutOfDistributionfit_dl_out_of_distribution erneut aufgerufen werden, um die Out-of-Distribution Detection wieder zu aktivieren.

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-Modells für Classification.

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

Datensatz, der für das Training des Modells benutzt wurde.

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

Dictionary für generische Parameter.

Vorgänger

read_dl_modelread_dl_modelReadDlModelReadDlModelread_dl_model

Modul

Deep Learning Professional