Advanced Object Detection

Liste der Abschnitte ↓

Dieses Kapitel beschreibt die Verwendung von Advanced Object Detection auf Basis von Deep Learning.

Bei der Advanced Object Detection besteht das Ziel darin, verschiedene Objekte innerhalb eines Bildes zu finden und ihnen eine Klasse zuzuweisen. Mehrere Objekte können im selben Bild auftreten und sich teilweise überlappen, während sie dennoch als unterschiedliche Objekte erkannt werden. Dies wird im folgenden Schema veranschaulicht.

image/svg+xml 'apple' 0.9 'apple' 0.7 'lemon' 0.9
Ein mögliches Beispiel für Advanced Object Detection: Im Eingabebild werden drei Objekte gefunden und jeweils einer Klasse zugeordnet.

Im Gegensatz zur Bildklassifikation, bei der einem gesamten Bild eine einzelne Klasse zugewiesen wird, führt Advanced Object Detection sowohl die Lokalisierung von Objekten als auch deren Klassifikation innerhalb eines einzelnen Netzwerks durch.

Es basiert auf einer effizienten Detektionsarchitektur, die die Robustheit und Performance im Vergleich zu bisherigen Ansätzen verbessert. Insbesondere wird die Erkennung von Objekten unterschiedlicher Größen verbessert und die Robustheit gegenüber variierenden Bildbedingungen erhöht.

Das Modell sagt umschließende Rechtecke voraus, die die Position potenzieller Objekte im Bild angeben.

Als Ausgabe liefert das Modell für jedes erkannte Objekt folgende Informationen:

Der Konfidenzwert bezeichnet einen modellabhängigen Score, der die relative Sicherheit des Netzwerks widerspiegelt, dass das vorhergesagte umschließendes Rechteck einem Objekt der zugewiesenen Klasse entspricht.

Advanced Object Detection unterstützt ausschließlich den Instanztyp 'rectangle1'"rectangle1""rectangle1""rectangle1""rectangle1". Daher sind alle umschließenden Rechtecke achsenparallel.

Für die Objekterkennung mit orientierten umschließenden Rechtecke siehe das Kapitel Deep Learning / Instanz-Segmentierung und Objektdetektion.

In HALCON ist die Advanced Object Detection im allgemeinen Deep-Learning-Framework implementiert. Weitere Informationen zum Deep-Learning-Modell im Allgemeinen finden sich im Kapitel Deep Learning / Modell.

Die folgenden Abschnitte beschreiben den allgemeinen Ablauf für die Advanced Object Detection, Informationen zu den verwendeten Daten sowie Erläuterungen zur Netzwerkausgabe.

Genereller Ablauf

In diesem Abschnitt wird der allgemeine Ablauf für eine Anwendung der Advanced Object Detection basierend auf Deep Learning beschrieben.

Die Vorverarbeitung und die Datenaugmentation werden über eine Transform-Pipeline definiert. Die Pipeline spezifiziert eine Sequenz von Transformationen, die auf die Eingabebilder angewendet werden, bevor sie vom Modell verarbeitet werden.

Der allgemeine Ablauf für Advanced Object Detection gliedert sich in die folgenden vier Teile:

Es wird vorausgesetzt, dass der Datensatz bereits gelabelt ist, siehe auch den Abschnitt „Daten“.

Ein vollständiger Ablauf ist im HDevelop-Beispiel dl_advanced_detection_workflow.hdev dargestellt. Die Beispielreihe detect_pills_deep_learning_*.hdev veranschaulicht die einzelnen Ablauf-Schritte unter Verwendung von Advanced Object Detection.

Details zur Definition und Konfiguration von Transform-Pipelines, einschließlich Datenaugmentation, sind im HDevelop-Beispiel dl_transform_pipeline.hdev beschrieben.

Laden des Modells und Konfiguration der Transform-Pipeline

Dieser Teil umfasst die Vorbereitung des Datensatzes sowie die Erstellung einer Transform-Pipeline zur Vorverarbeitung und Augmentation der Daten.

  1. Laden eines vortrainierten Detektions-Modells mit dem Operator

  2. Einlesen des Datensatzes mit Bildern und Annotationen in ein Dictionary DLDataset.

  3. Aufteilen des durch das Dictionary DLDataset repräsentierten Datensatzes. Dies erfolgt mit der Prozedur

    • split_dl_dataset.

  4. Erstellen einzelner Transform-Methoden zur Definition der gewünschten Vorverarbeitungs- und Augmentierungsschritte. Typische Transformationen umfassen zufällige Perspektivtransformationen, Spiegeln, Normalisierung und Skalierung.

    Typische Transform-Methoden werden mit Operatoren erstellt wie:

  5. Kombinieren der einzelnen Transformationen zu einer Transform-Pipeline unter Verwendung des Operators

  6. Speichern der resultierenden Pipeline im Dictionary DLDataset. Separate Pipelines können für Training, Validierung und Testdaten definiert werden. Typischerweise wird Datenaugmentation nur während des Trainings angewendet, während für Validierungs- und Testdaten ausschließlich deterministische Vorverarbeitungsschritte verwendet werden.

Training des Modells

In diesem Teil erfolgt das Training des Modells mit dem vorbereiteten Datensatz.

  1. Setzen der Trainingsparameter und Speichern im Dictionary TrainParam.

  2. Training des Modells mit der Prozedur

    • train_dl_model.

    Während des Trainings wird die Transform-Pipeline auf die Eingabedaten angewendet. Dies ermöglicht die Durchführung von Datenaugmentation und weiteren Vorverarbeitungsschritten vor der Verarbeitung durch das Netzwerk.

Evaluierung des trainierten Modells

In diesem Teil erfolgt die Evaluierung des trainierten Modells.

  1. Evaluierung des Modells mit der Prozedur

    • evaluate_dl_model.

  2. Visualisierung der Evaluierungsergebnisse mit der Prozedur

    • dev_display_detection_detailed_evaluation.

Inferenz auf neuen Bildern

Dieser Teil umfasst die Anwendung des trainierten Detektions-Modells.

  1. Erzeugen eines Daten-Dictionary DLSample für jedes Eingabebild mit der Prozedur

    • gen_dl_samples_from_images.

  2. Anwenden der für Testdaten definierten Transform-Pipeline auf die erzeugten Samples unter Verwendung des Operators

  3. Anwenden des Modells mit dem Operator

  4. Auslesen der Detektionsergebnisse aus dem Dictionary 'DLResultBatch'"DLResultBatch""DLResultBatch""DLResultBatch""DLResultBatch".

Daten

Es wird zwischen Daten für Training und Evaluierung sowie Daten für Inferenz unterschieden. Trainings- und Evaluierungsdaten bestehen aus Bildern mit zugehörigen Annotationen, während Inferenzdaten ausschließlich aus Bildern bestehen.

Als grundlegendes Konzept erfolgt die Datenverarbeitung über Dictionaries. Die Eingabedaten werden über ein Dictionary DLSample übergeben, und die Ergebnisse werden in Dictionaries wie DLResult zurückgegeben. Weitere Informationen zur Datenverarbeitung finden sich im Kapitel Deep Learning / Modell.

Daten für das Training und die Evaluierung

Der Datensatz besteht aus Bildern und entsprechenden Annotationen. Für jedes Objekt müssen das Klassenlabel sowie dessen Position im Bild angegeben werden.

Für jedes Objekt werden folgende Informationen benötigt:

  • Die Koordinaten der linken oberen Ecke ('bbox_row1'"bbox_row1""bbox_row1""bbox_row1""bbox_row1", 'bbox_col1'"bbox_col1""bbox_col1""bbox_col1""bbox_col1")

  • Die Koordinaten der rechten unteren Ecke ('bbox_row2'"bbox_row2""bbox_row2""bbox_row2""bbox_row2", 'bbox_col2'"bbox_col2""bbox_col2""bbox_col2""bbox_col2")

  • Ein zugehöriges Klassenlabel

Diese Parameter definieren ein achsenparalleles umschließendes Rechteck und sind konsistent mit dem Operator gen_rectangle1gen_rectangle1GenRectangle1GenRectangle1gen_rectangle1.

Der Datensatz ist in einem Dictionary DLDataset organisiert, welches die Bilder zusammen mit ihren Annotationen sowie zusätzliche für Training und Evaluierung erforderliche Informationen speichert.

Das Beispiel detect_pills_deep_learning_1.hdev veranschaulicht die Vorbereitung und Strukturierung eines solchen Datensatzes.

Bilder

Das Netzwerk stellt Anforderungen an die Eingabebilder, wie beispielsweise Bilddimensionen und Wertebereiche. Diese Anforderungen sind modellabhängig und können mit dem Operator

abgefragt werden.

Die erforderlichen Vorverarbeitungs- und Augmentierungsschritte werden über eine Transform-Pipeline definiert. Die Transformationen werden zur Laufzeit auf die Bilder angewendet, bevor sie vom Modell verarbeitet werden, und nicht im Datensatz gespeichert.

Daten für die Inferenz

Für die Inferenz werden ausschließlich die Bilder benötigt. Zur Sicherstellung einer konsistenten Vorverarbeitung wird dieselbe Transform-Pipeline wie für das Modell angewendet.

Modellparameter und Hyperparameter

Neben den allgemeinen Deep-Learning-Hyperparametern, die in Deep Learning beschrieben sind, existieren weitere Hyperparameter, die für die Objekterkennung relevant sind:

Diese Hyperparameter beeinflussen die Gewichtung der jeweiligen Komponenten der Zielfunktion während des Trainings.

Für ein Advanced Object Detection-Modell beeinflussen mehrere Modellparameter die Vorhersagen und somit auch die Evaluierungsergebnisse:

Bei der Advanced Object Detection kann das Modell mehrere überlappende umschließende Rechtecke für dasselbe Objekt vorhersagen. Zur Reduzierung solcher Duplikate wird Non-Maximum-Suppression (NMS) angewendet.

Das Suppressionsverhalten kann über die Parameter 'max_overlap'"max_overlap""max_overlap""max_overlap""max_overlap" und 'max_overlap_class_agnostic'"max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic" gesteuert werden.

Der Parameter 'max_overlap'"max_overlap""max_overlap""max_overlap""max_overlap" definiert die maximal zulässige Überlappung zwischen umschließenden Rechtecken derselben Klasse. Wird dieser Wert überschritten, bleibt nur das umschließende Rechteck mit der höchsten Confidence erhalten.

Der Parameter 'max_overlap_class_agnostic'"max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic" erweitert dieses Verhalten auf umschließende Rechtecke unterschiedlicher Klassen.

Diese Parameter beeinflussen die finalen Detektionsergebnisse und somit die Evaluierung.

Die Parameter können bei der Erstellung des Modells oder nachträglich mit dem Operator set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamset_dl_model_param gesetzt werden. Weitere Informationen finden sich beim Operator get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamget_dl_model_param.

Evaluierungsmaße

Für Advanced Object Detection werden in HALCON folgende Evaluierungsmaße unterstützt. Es gilt zu beachten, dass zur Berechnung eines solchen Maßes die zugehörige Ground Truth Annotation notwendig ist.

Vorher erklärte Maße verwenden die Intersection over Union (IoU). Die IoU ist ein Maß zur Genauigkeit der Lokalisierung. Für ein vorgeschlagenes umschließendes Rechteck wird das Verhältnis folgenden beiden Flächen betrachtet: Die Fläche der Schnittmenge und die Fläche der Vereinigungsmenge des vorgeschlagenen umschließenden Rechtecks und des Ground Truth umschließenden Rechtecks. Die folgende Abbildung zeigt ein visuelles Beispiel.

image/svg+xml image/svg+xml IoU=
( 1) ( 2)
Visuelles Beispiel der IoU, illustriert für den Instanztyp 'rectangle1'"rectangle1""rectangle1""rectangle1""rectangle1". (1) Im Eingabebild sieht man das Ground Truth umschließende Rechteck (in Orange) und das vorhergesagte umschließende Rechteck (in Hellblau). (2) Die IoU ist das Verhältnis zwischen den beiden Flächen Schnittmenge und Vereinigungsmenge.

Einschränkungen

Aktuell unterstützt die Advanced Object Detection ausschließlich achsenparallele umschließende Rechtecke ('rectangle1'"rectangle1""rectangle1""rectangle1""rectangle1").


Liste der Abschnitte