3D Gripping Point Detection

Liste der Abschnitte ↓

Dieses Kapitel beschreibt die Nutzung der 3D Gripping Point Detection.

Mit der 3D Gripping Point Detection findet man geeignete Greifpunkte auf der Oberfläche beliebiger Objekte in einer 3D-Szene. Die Ergebnisse können verwendet werden um die Greifpunkte mit einem Roboterarm anzusteuern und die die Objekte mit einem Vakuumsauger anzuheben.

image/svg+xml
Ein mögliches Beispiel für eine Anwendung zur 3D Gripping Point Detection: Eine 3D-Szene (z.B. ein RGB-Bild und XYZ-Bilder) wird analysiert und mögliche Greifpunkte werden vorgeschlagen.

HALCON liefert ein vortrainiertes Modell, das ohne zusätzlichen Trainingsschritt bereit für die Inferenz ist. Um das Modell auf eine spezifische Aufgabe abzustimmen kann es für einen eigenen Anwendungsbereich nachtrainiert werden. Dabei funktioniert die 3D Gripping Point Detection auch für Objekte, die im Training nicht aufgetreten sind. Außerdem ist es nicht notwendig 3D-Objektmodelle für die Objekte, die angesteuert werden sollen, bereitzustellen. 3D Gripping Point Detection kann außerdem mit Szenen umgehen, die mehrere unterschiedliche Objekte gleichzeitig beinhalten, Szenen, in denen teilweise verdeckte Objekte enthalten sind, sowie Szenen, die Störungen in den 3D-Daten enthalten.

In den folgenden Abschnitten werden sowohl der generelle Ablauf der Inferenz als auch das Nachtrainieren beschrieben.

Genereller Ablauf

Dieser Abschnitt beschreibt, wie ein passender Greifpunkt auf beliebigen Objektoberflächen mit Hilfe eines 3D Gripping Point Detection-Modells bestimmt werden kann. Ein Anwendungsszenario findet sich im HDevelop-Beispielprogramm 3d_gripping_point_detection_workflow.hdev.

  1. Einlesen eines vortrainierten 3D Gripping Point Detection-Modells mit

  2. Setzen von Modellparametern, beispielsweise bezüglich der verwendeten Hardware-Einheit oder der Bilddimensionen, mit

  3. Generieren eines Dictionarys DLSample für jede 3D-Szene. Dazu kann die Prozedur

    • gen_dl_samples_3d_gripping_point_detection

    verwendet werden, welche verschiedene Arten von 3D-Daten verarbeiten kann. Für weitere Informationen zu den Anforderungen an die Daten siehe den Abschnitt „Daten“ weiter unten.

  4. Vorverarbeiten der Daten vor der Inferenz. Dazu wird die Prozedur

    • preprocess_dl_samples

    verwendet. Die notwendigen Vorverarbeitungsparameter können aus dem Modell mittels

    • create_dl_preprocess_param_from_model

    generiert werden, oder manuell mittels

    • create_dl_preprocess_param

    gesetzt werden.

    Es ist zu beachten, dass die Vorverarbeitung der Daten einen signifikanten Einfluss auf die Inferenz hat. Für weitere Details, siehe den Abschnitt „3D-Szenen“ weiter unten.

  5. Anwenden des Modells über den Operator

  6. Nachverarbeiten des Ergebnisses in DLResult um Greifpunkte für die Szene zu erhalten mittels

    • gen_dl_3d_gripping_points_and_poses.

  7. Visualisieren der 2D- und 3D-Ergebnisse mit den Prozeduren

    • dev_display_dl_data bzw.

    • dev_display_dl_3d_data.

Training und Evaluierung des Modells

Dieser Abschnitt beschreibt wie das Modell der 3D Gripping Point Detection mit eigenen Daten nachtrainiert und evaluiert werden kann. Siehe auch das HDevelop-Beispiel 3d_gripping_point_detection_training_workflow.hdev für eine Beispielanwendung.

Vorverarbeitung des Datensatzes

Dieser Abschnitt behandelt die notwendigen Anpassungen des Datensatzes.

  1. Die Informationen des Datensatzes müssen eingelesen werden. Dazu kann die Prozedur

    • read_dl_dataset_3d_gripping_point_detection

    verwendet werden. Dabei wird ein Dictionary DLDataset erstellt, welches als Datenbank dient und alle notwendigen Informationen über die Daten abspeichert. Für mehr Information zu den Daten und wie sie übergeben werden, wird auf den unteren Absatz „Daten“ und das Kapitel Deep Learning / Modell verwiesen.

  2. Die Daten von DLDataset sollen in drei getrennte Datensätze aufgeteilt werden. Dazu kann die Prozedur

    • split_dl_dataset

    verwendet werden.

  3. Das Netzwerk stellt mehrere Anforderungen an die Bilder (wie z.B. die Bilddimensionen und den Grauwertbereich). Diese Werte können mit

    abgefragt werden. Dafür muss das Modell erst eingelesen werden mittels

  4. Der Datensatz kann nun vorverarbeitet werden. Dazu kann die Prozedur

    • preprocess_dl_dataset

    verwendet werden.

    Um diese Prozedur zu verwenden, müssen die Vorverarbeitungsparameter wie z.B. die Bildgröße festgelegt werden. Die Parameter und ihre Werte sind im Dictionary DLPreprocessParam zu speichern. Zur Erzeugung dieses Dictionarys kann die Prozedur

    • create_dl_preprocess_param_from_model

    verwendet werden. Es wird empfohlen, das Dictionary DLPreprocessParam abzuspeichern, um während der späteren Inferenz-Phase Zugang zu den Werten zu haben.

Trainieren des Modells

Dieser Abschnitt behandelt das Nachtrainieren eines 3D Gripping Point Detection-Modells.

  1. Setzen der Trainingsparameter und Abspeichern derselben im Dictionary TrainParam. Für dies kann die Prozedur

    • create_dl_train_param

    verwendet werden.

  2. Trainieren des Modells. Dafür kann die Prozedur

    • train_dl_model

    verwendet werden. Diese Prozedur benötigt:

    • das Handle des Modells DLModelHandleDLModelHandleDLModelHandleDLModelHandledlmodel_handle,

    • das Dictionary mit den Informationen über den Datensatz, DLDataset

    • das Dictionary mit den Trainingsparametern TrainParam.

Evaluierung des nachtrainierten Modells

Dieser Abschnitt behandelt das Evaluieren eines 3D Gripping Point Detection-Modells.

  1. Setzen aller Modellparameter, welche die Evaluierung beeinflussen können.

  2. Die Evaluierung kann bequem mit der Prozedur

    • evaluate_dl_model

    durchgeführt werden. Diese Prozedur erwartet ein Dictionary GenParam mit den Evaluierungsparametern.

  3. Das Dictionary EvaluationResults enthält die angefragten Evaluierungsmaße. Um einen Eindruck von der Leistung des nachtrainierten Modells im Verhältnis zum bereits vortrainierten Modell zu erhalten, können deren Evaluierungsmaße verglichen werden. Die Evaluierungsmaße werden weiter unten im Abschnitt „Evaluierungsmaße für die Daten der 3D Gripping Point Detection“ erläutert.

Daten

Dieser Abschnitt enthält Informationen bezüglich Daten, die für die Inferenz oder das Trainieren und Evaluieren eines 3D Gripping Point Detection-Modells benötigt werden.

Ein Grundgedanke der Datenhandhabung: Das Modell interagiert mit den Daten über Dictionaries. Dies bedeutet, das Modell erhält die Eingabedaten über das Dictionary DLSample und gibt die Ausgabe über das Dictionary DLResult zurück. Für weitere Informationen zur Datenhandhabung wird auf das Kapitel Deep Learning / Modell verwiesen.

3D-Szenen

Die 3D Gripping Point Detection verarbeitet 3D-Szenen, welche aus klassischen 2D-Bildern und Tiefeninformationen bestehen.

Um diese 3D-Daten an die Anforderungen für Eingabedaten des Netzwerks anzupassen ist ein Vorverarbeitungsschritt für die Inferenz notwendig. Für Informationen zu bestimmten Vorverarbeitungsparametern, siehe den Abschnitt „Spezifische Vorverarbeitungsparameter“ weiter unten. Es wird empfohlen einen hochauflösenden 3D-Sensor zu verwenden um die notwendige Datenqualität zu sicherzustellen. Folgende Daten werden benötigt:

2D-Bild

  • RGB-Bild, oder

  • Intensitätsbild (Grauwertbilder)

Intensitätsbild.
Tiefeninformationen

  • X-Bild (Werte müssen von links nach rechts aufsteigend)

  • Y-Bild (Werte müssen von oben nach unten aufsteigend)

  • Z-Bild (Werte müssen von dem Sensor nahen zu fernen Punkten aufsteigen; das ist z.B. der Fall wenn die Daten bezüglich des Kamerakoordinatensystems angegeben werden)

( 1) ( 2) ( 3)
(1) X-Bild, (2) Y-Bild, (3) Z-Bild.
Normalen (optional)

  • 2D-Mappings (3-kanaliges Bild)

Normalenbild.
Werden Normalenbilder übergeben, dann verringert sich die Laufzeit, da die Normalen nicht erst berechnet werden müssen.

Um den Suchbereich einzuschränken kann die Domäne des RGB-/Intensitätsbildes reduziert werden. Es ist zu beachten, dass die Domäne der XYZ-Bilder und der (optionalen) Normalenbilder identisch sein muss. Außerdem dürfen für alle Eingabedaten nur gültige Pixel Teil der genutzten Domäne sein.

Daten für das Training und die Evaluierung

Die Trainingsdaten werden dazu genutzt, ein Netzwerk für ein spezifisches Szenario zu trainieren.

Der Datensatz besteht dabei aus 3D-Szenen und dazugehörigen Segmentierungsbildern, in welchen Informationen zu greifbaren Oberflächen enthalten sind. Sie müssen so zur Verfügung gestellt werden, dass das Modell sie verarbeiten kann. Die Anforderungen an die 3D-Szenen werden im Abschnitt „3D scenes“ weiter oben erklärt.

Wie die Daten in HALCON für ein DL Modell vorliegen müssen, wird im Kapitel Deep Learning / Modell erklärt. Kurz gefasst fungiert ein Dictionary DLDatasetDLDatasetDLDatasetDLDatasetdldataset als Datenbank der Informationen, die von den Trainings- und Evaluierungs-Prozeduren benötigt werden.

Die Daten für DLDatasetDLDatasetDLDatasetDLDatasetdldataset können mit read_dl_dataset_3d_gripping_point_detection eingelesen werde. Die Prozedurenreferenz von read_dl_dataset_3d_gripping_point_detection enthält detaillierte Anforderungen an ein 3D Gripping Point Detection DLDatasetDLDatasetDLDatasetDLDatasetdldataset.

Gemeinsam mit den 3D-Szenen müssen Segmentierungsbilder übergeben werden, welche als Ground Truth fungieren. Die Segmentierungsbilder enthalten zwei verschiedene Grauwerte, mit welchen jedes Pixel entweder als zulässiger oder unzulässiger Greifpunkt gekennzeichnet wird. Die Bilder können direkt mit Hilfe des MVTec Deep Learning Tools gelabelt werden (erhältlich auf der MVTec Webseite).

( 1) ( 2)
(1) Labeln eines Intensitätsbildes. (2) Segmentierungsbild, welches die zulässigen Greifpunkte darstellt ( grau).

Es sollte sichergestellt werden, dass die gelabelten Bereiche nur zuverlässige Greifpunkte für den Roboter kennzeichnen. Folgende Punkte sollten beim Labeln beachtet werden:

  • Greifpunkte müssen auf einer Oberfläche sein, die für den Roboterarm ohne Blockierung erreichbar ist.

  • Greifpunkte müssen auf einer Oberfläche sein, die der Roboter mit seinem Vakuumsauger greifen kann. Daher sollten für das zu greifende Objekt auch Material, Form und die Oberflächenneigung bezüglich der Grundebene mitberücksichtigt werden.

  • Die Größe des Vakuumsaugers sollte mitberücksichtigt werden.

  • Die Saugkraft des Vakuumsaugers sollte mitberücksichtigt werden.

  • Greifpunkte sollten tendenziell in der Nähe des Objektschwerpunkts liegen (besonders bei möglicherweise schwereren Objekten).

  • Greifpunkte sollten nicht am Rand eines Objektes liegen.

  • Greifpunkte sollten nicht am Rand der sichtbaren Fläche eines Objektes liegen.

Modell-Ausgabe

Als Ausgabe gibt das Modell ein Dictionary DLResult für jedes Sample zurück. Dieses Dictionary beinhaltet die folgenden Einträge:

  • 'gripping_map': Binärbild, das für jedes Pixel der Szene angibt, ob das Modell einen Greifpunkt vorhergesagt hat (Pixelwert = 1.0) oder nicht (0.0).

  • 'gripping_confidence': Bild, das für jeden Punkt der Szene unverarbeitete, unkalibrierte Konfidenzwerte enthält.

Nachverarbeitung

Die Modell-Ergebnisse in DLResult können mit gen_dl_3d_gripping_points_and_poses nachverarbeitet werden um Greifpunkte zu generieren. Diese Prozedur kann außerdem parametrisiert werden um kleine Greifflächen zu unterdrücken (mit min_area_size), oder als Vorlage dienen um eigene Auswahlkriterien zu definieren.

Folgender Eintrag wird von dieser Prozedur zum Dictionary DLResult hinzugefügt:

Evaluierungsmaße für die Ergebnisse der 3D Gripping Point Detection

In HALCON werden für die 3D Gripping Point Detection folgenden Evaluierungsmaße unterstützt:

mean_pro

Mittelwert der Überlappung aller Ground Truth-Flächen, die als Greifpunkte gelabelt wurden, mit den Vorhersagen (Per-Region Overlap). Siehe das unten zitierte Paper für eine detaillierte Beschreibung dieses Evaluierungsmaßes.

mean_precision

Mittelwert der Pixel-basierten Precision der Vorhersagen für die Klasse der Greifpunkte. Die Precision ist das Verhältnis von 'True Positives' zu allen 'Positives' ('True Positives' (TP) und 'False Positives' (FP)).

mean_iou

Intersection over Union (IoU) der Pixel der Ground Truth und der als Greifpunkte vorhergesagten Pixel. Siehe Deep Learning / Semantische Segmentierung und Kantenextraktion für eine detailliertere Beschreibung dieses Evaluierungsmaßes.

gripping_point_precision

Verhältnis von 'True Positives' zu allen 'Positives'.

Für dieses Evaluierungsmaß gilt ein korrekt vorhergesagter Greifpunkt als 'True Positive'. Dazu muss der vorhergesagte Punkt in einer Ground Truth-Region liegt. Allerdings wird pro Region nur ein Greifpunkt als 'True Positive' zugelassen, alle weiteren Vorhersagen in derselben Region gelten als 'False Positives'.

gripping_point_recall

Der Recall ist das Verhältnis der Anzahl korrekt vorhergesagter Greifpunkte und der Anzahl aller Ground Truth-Flächen der Klasse der Greifpunkte.

gripping_point_f_score

Um Precision und Recall mit einer Zahl darzustellen wird der F-Score als harmonisches Mittel der beiden Werte zur Verfügung gestellt.

Spezifische Vorverarbeitungsparameter

Zusammen mit den Daten müssen Vorverarbeitungsparameter an preprocess_dl_samples übergeben werden. Zwei Parameterpaare haben einen besonders hohen Einfluss:

Eine Einschränkung des Suchbereichs kann durch Reduzierung der Domäne der Suchbilder (mittels reduce_domainreduce_domainReduceDomainReduceDomainreduce_domain) durchgeführt werden. Für preprocess_dl_samples muss mit dem Vorverarbeitungsparameter 'domain_handling' festgelegt werden, wie die Domäne gehandhabt werden soll. Der Parameter 'domain_handling' sollte dabei so verwendet werden, dass nur essentielle Informationen zur Inferenz an das Netzwerk weitergegeben werden. Die folgenden Bilder zeigen, in Abhängigkeit von 'domain_handling', wie ein Eingabebild mit reduzierter Domäne nach der Vorverarbeitung weitergegeben wird.

( 1) ( 2) ( 3) ( 4)
(1) Eingabebild mit reduzierter Domäne (rot), (2) Bild mit 'full_domain', (3) Bild mit 'keep_domain', (4) Bild mit 'crop_domain'.

Referenzen

Bergmann, P., Batzner, K., Fauser, M., Sattlegger, D. and Steger, C., 2021. The MVTec anomaly detection dataset: a comprehensive real-world dataset for unsupervised anomaly detection. International Journal of Computer Vision, 129(4), pp.1038-1059.


Liste der Abschnitte