apply_dl_model
— Anwenden des Deep Learning-basierten Netzwerkes zur Inferenz
auf einer Menge an Bildern.
apply_dl_model( : : DLModelHandle, DLSampleBatch, Outputs : DLResultBatch)
apply_dl_model
wendet das durch DLModelHandle
gegebene
Deep Learning-basierte Netzwerk auf ein Batch von Eingabebildern an, die
über das Tupel von Dictionaries DLSampleBatch
übergeben werden.
Der Operator gibt DLResultBatch
zurück, ein Tupel mit einem
Ergebnis-Dictionary DLResult
pro Eingabebild.
Für weitere Informationen zum Konzept und den Dictionaries des Deep Learning-Modells in HALCON siehe das Kapitel Deep Learning / Modell.
Um das Netzwerk auf Bilder anwenden zu können, müssen diese über ein Tupel
von Dictionaries DLSampleBatch
übergeben werden.
Dabei bezieht sich jedes Dictionary auf ein einzelnes Bild.
Mit Hilfe der Prozedur gen_dl_samples_from_images
kann solch ein
Dictionary passend erstellt werden. Das Tupel DLSampleBatch
kann
eine beliebige Anzahl Dictionaries enthalten. Der Operator
apply_dl_model
verarbeitet stets einen Batch mit bis zu
'batch_size' Bildern simultan. Falls das Tupel mehr Bilder
enthält, iteriert apply_dl_model
intern über die notwendige Anzahl
an Batches um alle Bilder zu verarbeiten. Für ein DLSampleBatch
mit weniger als 'batch_size' Bildern wird das Tupel zu einem vollen
Batch aufgefüllt, was also bedeutet, dass die Laufzeit zur Verarbeitung
eines solchen Batches unabhängig davon ist, ob dieser vollständig gefüllt
ist oder nur ein einzelnes Bild enthält. Dies heißt auch, dass das Netzwerk
stets den vollen Speicher benötigt, selbst wenn in einem Operatorenaufruf
weniger als 'batch_size' Bilder verarbeitet werden sollen. Der
aktuelle Wert von 'batch_size' kann mittels
get_dl_model_param
abgefragt werden.
Es ist zu beachten, dass die Bilder eventuell vorverarbeitet werden müssen
um die die Netzwerkanforderungen zu erfüllen, bevor sie dem Operator
apply_dl_model
übergeben werden können. Mit
get_dl_model_param
können die aktuellen Anforderungen des Netzwerks
wie z.B. die Bilddimensionen abgefragt werden.
Die Prozedur preprocess_dl_dataset
gibt eine Anleitung für die
Implementierung dieser Vorverarbeitung.
Die Resultate werden in DLResultBatch
zurückgegeben, einem Tupel
mit einem Dictionary DLResult
für jedes Eingabebild.
Für weitere Informationen zu den Ausgabe-Dictionaries
DLResultBatch
und dessen Schlüssel siehe das Kapitel
Deep Learning / Modell.
In Outputs
kann spezifiziert werden, welche Daten vom Netzwerk in
den Ergebnis-Dictionaries DLResultBatch
ausgegeben werden.
Dabei kann Outputs
ein einzelner String, ein Tupel von Strings,
oder ein leeres Tupel, mit dem alle möglichen Ausgaben abgerufen werden
können, sein.
Die Werte sind abhängig vom Modelltyp des verwendeten Netzwerks:
Outputs
='[]' : DLResult
enthält ein Bild, in dem jedes Pixel den Score des entsprechenden Pixels
des Eingabebildes erhält.
Zusätzlich enthält es einen Score für das Bild als Ganzes.
Outputs
='[]' : DLResult
enthält ein
Tupel mit den Konfidenzwerten in absteigender Reihenfolge sowie
weitere Tupel mit den Klassennamen und Klassen-IDs in entsprechender
Sortierung.
Outputs
='[]' : DLResult
enthält
für alle Modell-Ebenen die
Koordinaten der umschließenden Rechtecke, sowie die geschätzten
Klassen und deren Konfidenzwerte.
Outputs
=
'[bboxhead + level + _predicton, classhead + level + _prediction]' ,
wobei 'level' die ausgewählte Ebene angibt
und einen Wert zwischen 'min_level' und
'max_level' annehmen kann: DLResult
enthält
für die ausgewählten Modell-Ebenen die
Koordinaten der umschließenden Rechtecke, sowie die geschätzten
Klassen und deren Konfidenzwerte.
Outputs
='segmentation_image' :
DLResult
enthält ein Bild, in dem jedes Pixel einen Wert
entsprechend der Klasse erhält, welcher das entsprechende Pixel
zugeordnet wurde.
Outputs
='segmentation_confidence' :
DLResult
enthält ein Bild, in dem jedes Pixel den
Konfidenzwert der Klassifikation des entsprechenden Pixels erhält.
Outputs
='[]' :
DLResult
enthält alle Ausgabewerte.
Um diesen Operator ausführen zu können, werden cuDNN und cuBLAS benötigt,
falls 'runtime' auf 'gpu' gesetzt ist
(siehe get_dl_model_param
).
Für weitere Details wird auf den „Installation Guide“
, Abschnitt
„Requirements for Deep Learning“, verwiesen.
Dieser Operator unterstützt Cancel-Timeouts und Interrupts.
Dieser Operator unterstützt Break-Timeouts und Interrupts.
DLModelHandle
(input_control) dl_model →
(handle)
Handle des Deep Learning-Modells.
DLSampleBatch
(input_control) dict-array →
(handle)
Eingabedaten.
Outputs
(input_control) string-array →
(string)
Angeforderte Ausgabedaten.
Defaultwert: []
Werteliste: [], 'bboxhead2_prediction' , 'classhead2_prediction' , 'segmentation_confidence' , 'segmentation_image'
DLResultBatch
(output_control) dict-array →
(handle)
Handle der Ergebnisdaten.
Sind die Parameterwerte korrekt, dann liefert
apply_dl_model
den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.
read_dl_model
,
train_dl_model_batch
,
train_dl_model_anomaly_dataset
,
set_dl_model_param
Deep Learning Inference