Diese Kapitel beschreibt die Verwendung von Deep 3D Matching.
Deep 3D Matching wird verwendet, um Objekte in einer Szene genau zu erkennen und ihre 3D-Pose zu berechnen. Dieser Ansatz ist besonders effektiv für komplexe Szenarien, in denen herkömmliche 3D-Matching-Techniken (wie das formbasierte 3D-Matching) aufgrund von Variationen im Erscheinungsbild von Objekten, Verdeckungen oder verrauschten Daten Schwierigkeiten haben können. Im Vergleich zum oberflächenbasierten Matching arbeitet das Deep 3D-Matching mit einem kalibrierten Mehrbild-Setup und benötigt keine Daten von einem 3D-Sensor.
Das Deep 3D Matching-Modell besteht aus zwei Komponenten, die sich zwei unterschiedlichen Aufgaben widmen, nämlich die Lokalisierung von Objekten und Bestimmung von Objektposen. Für eine Deep 3D Matching-Anwendung werden beide Komponenten auf dem 3D-CAD-Modell trainiert, das in den Anwendungsszenen gefunden werden soll.
HALCON bietet Funktionalitäten um beide Komponenten eines Deep 3D Matching-Modells zu trainieren. Falls Sie Unterstützung beim Training der Netze benötigen, können Sie sich an Ihren HALCON-Vertriebspartner für weitere Informationen wenden.
Nach dem Training kann das Deep 3D Matching-Modell verwendet werden, um die Pose des Objekts zu bestimmen. Bei der Inferenz werden dabei Bilder aus verschiedenen Aufnahmewinkeln als Eingabe verwendet.
In diesem Abschnitt wird beschrieben, wie eine 3D-Pose mithilfe der
Deep 3D Matching-Methode bestimmt wird.
Ein Anwendungsszenario ist im HDevelop-Beispiel
deep_3d_matching_workflow.hdev zu sehen.
Lesen Sie das trainierte Deep 3D Matching-Modell mithilfe von
ein.
Optimieren der Deep Learning-Netzwerke für die Verwendung mit AI 2-Interfaces.
Extrahieren des Detektionsnetzwerk aus dem Deep-3D-Matching-Modell mit
Optimieren des Parameters für die Inferenz mit
Setzen des optimierten Detektionsnetzwerk mit
Wiederholen Sie diese Schritte für das Netzwerk zur Schätzung der 3D-Posen.
Speichern des optimierten Modells mit
Zu beachten ist, dass die Optimierung des Modells einen erheblichen Einfluss auf die Laufzeit hat, wenn sie bei jedem Inferenzlauf durchgeführt wird. Das Schreiben des optimierten Modells spart also Zeit bei der Inferenz.
Setzen der Kameraparameter mit
Ausführen des Modells mit dem Operator
Visualisieren der Ergebnisse mit 3D-Posen.
Die Erstellung realistischer, synthetischer Datensätze für das Training von Deep 3D Matching-Modellen in HALCON erfolgt durch einen integrierten Workflow mit der Scene Engine. Diese ermöglicht realistische Objektplatzierung, variable Objekt- und Umgebungseigenschaften, flexible Kameraperspektiven und fotorealistisches Rendering.
Eine Physik-Engine simuliert realistische Objektplatzierungen durch das Fallenlassen in die Szene.
Der Asset-Manager definiert Materialeigenschaften wie Textur, Reflexion und Transparenz, um realistische Oberflächen zu erzeugen. Unterschiedliche Hintergründe und Beleuchtungsszenarien sorgen für Variabilität.
Strategische Kamerapositionierung ermöglicht Aufnahmen aus verschiedenen Winkeln und Entfernungen, um reale Beobachtungsbedingungen zu simulieren.
Ein fotorealistisches Rendering stellt Licht, Schatten und Reflexionen detailliert dar und liefert hochwertige Trainingsdaten für Deep 3D Matching-Modelle.
Die damit generierten Datensätzen liefern die umfangreichen und vielfältigen Daten, die für das effektive Training von Deep 3D Matching Modellen in HALCON notwendig sind.
Ein Anwendungsbeispiel mit der Scene Engine kann in der HDevelop Beispielanwendung
deep_3d_matching_data_generation.hdev eingesehen werden.
Lesen des CAD-Objektmodells mit
Erstellen eines Dictionarys zum Sammeln der erzeugten Daten. Hierzu kann die Prozedur
create_dataset_deep_3d_matching
verwendet werden.
Speichern des Dictionarys mittels des Operators
Starten der Scene Engine mit dem Operator
Erzeugen der Defaultparameter für die Scene Engine-Umgebung. Dies kann mit der Prozedur
create_scene_engine_run_params
erfolgen.
Setzen der Parameter für Material, Oberflächenbeschaffenheit und Farbe. Dies kann mit der Prozedur
set_scene_engine_run_param
erfolgen.
Konfigurieren der Kameraeinstellungen mit der Prozedur
set_scene_engine_run_param.
Starten des Renderprozesses mit
Abfragen der Ground-Truth-Daten, hierzu kann die Prozedur
get_data_generation_gt
verwendet werden.
Speichern des Dictionaries mit den erzeugten Daten, mit dem Operator
Dieser Abschnitt beschreibt das Training eines Deep 3D
Matching-Modells unter Verwendung synthetischer Daten. Für ein
Anwendungsszenario siehe auch das HDevelop Beispiel
deep_3d_matching_training_workflow.hdev.
Lesen des gerenderten Datensatzes mit
Erhalten des CAD-Objektmodells aus dem eingelesenen Datensatz über
den Key 'orig_3d_model'.
Erstellen des Deep 3D Matching-Modells, welches beide Komponenten enthält:
dl_model_detection und
dl_model_pose_estimation
mit dem Operator .
create_deep_matching_3d
Bevor mit der Vorverarbeitung begonnen wird, müssen sowohl der Datensatz als auch das Modell angepasst werden, damit sie später verwendet werden können.
Bevor die Komponenten des Deep 3D Matching-Modells separat trainiert werden, müssen sie aus dem Modell extrahiert werden. Dies kann mit
gemacht werden.
Der Datensatz für die Posenschätzungskomponente muss in ein Format umgewandelt werden, das vom Modell verarbeitet werden kann. Hierzu kann die Prozedur
convert_dl_dataset_detection_to_pose_estimation
verwendet werden.
Dabei wird ein Dictionary DLDataset erstellt, welches als
Datenbank dient und alle notwendigen Informationen über die Daten
speichert. Für mehr Information zu Datensätzen, wird auf das Kapitel
Deep Learning / Modell verwiesen.
Diese Schritte müssen für die Detektions- und Posenschätzungskomponente des Modells jeweils getrennt durchgeführt werden. Für Information darüber, welche Daten für den Deep 3D Matching-Workflows verwendet werden, wird auf den unteren Absatz „Daten“ verwiesen.
Die Daten von DLDataset sollen in drei
getrennte Datensätze aufgeteilt werden. Dazu kann die Prozedur
split_dl_dataset
verwendet werden.
Angeben der Vorverarbeitungsparameter
wie z.B. die Bildgröße.
Die Parameter und ihre Werte werden im Dictionary
DLPreprocessParam gespeichert.
Zur Erzeugung dieses Dictionarys kann die Prozedur
create_dl_preprocess_param_from_model
verwendet werden.
Der Datensatz kann nun vorverarbeitet werden. Dazu kann die Prozedur
preprocess_dl_dataset
verwendet werden.
Dieser Abschnitt erklärt, wie die Posenschätzungs- oder Detektionskomponente eines Deep 3D Matching-Modells trainiert wird.
Setzen der Trainingsparameter und Abspeichern derselben im
Dictionary TrainParam mit
create_dl_train_param.
Trainiere das Modell. Dies kann mit
train_dl_model.
gemacht werden. Die Prozedur erwartet:
das Handel des Modells ,
DLModelHandle
das Dictionary mit den Informationen über den Datensatz,
DLDataset ,
das Dictionary mit den Trainingsparametern, TrainParam.
Nach einem erfolgreichen Training des Detektionsnetzes und des Posenschätzungsnetzes kann das kombinierte Deep 3D Matching-Modell für die Inferenz verwendet werden (siehe Abschnitt „Allgemeiner Workflow für Deep 3D Matching Inferenz“ oben).
Dieser Abschnitt enthält Informationen zum Kamera-Setup und zu den Daten, welche für die Inferenz oder das Training eines Deep 3D Matching-Modells benötigt werden.
Für weitere Informationen zur Datenhandhabung wird auf das Kapitel Deep Learning / Modell verwiesen.
Um Deep 3D Matching mit hoher Genauigkeit nutzen zu können, wird ein kalibriertes Stereo- oder Mehrbild-Setup benötigt. Im Vergleich zur Stereo-Rekonstruktion kann Deep 3D Matching mit stärker variierenden Kamerakonstellationen und -entfernungen umgehen. Außerdem ist es nicht erforderlich, 3D-Sensoren zu verwenden. Informationen zur Kalibrierung des verwendeten Aufbaus finden Sie im Kapitel Kalibrierung / Mehrbild.
Die zu erkennenden Objekte müssen aus zwei oder mehreren verschiedenen Perspektiven erfasst werden um daraus die 3D-Posen zu berechnen.
| ( 1) | ( 2) |
Die Trainingsdaten werden verwendet, um die beiden Komponenten eines Deep 3D Matching-Modells speziell für Ihre Anwendung zu trainieren und zu validieren. Die erforderlichen Trainingsdaten werden anhand von CAD-Daten erzeugt. Es werden synthetische Bilder des Objekts aus verschiedenen Blickwinkeln, bei verschiedenen Lichtverhältnissen und vor verschiedenen Hintergründen erstellt. Es ist zu beachten, dass keine realen Bilder erforderlich sind, die benötigten Daten werden nur auf der Grundlage des CAD-Modells generiert.
Die dafür benötigten Daten sind ein CAD-Modell und entsprechende Informationen über Material, Oberflächenbeschaffenheit und Farbe. Informationen über mögliche axiale und radiale Symmetrien können die generierten Trainingsdaten deutlich verbessern.
Für das Training des Deep 3D Matching- Modells muss der Datensatz Bilder mit Objekten enthalten, die mit rotierten umschließenden Rechtecken markiert sind. Die Informationen werden bei der Erzeugung der synthetischen Daten erstellt. Dies umfasst:
'class_ids': Klassen-IDs
'class_names': Klassennamen
'image_dir': Basispfad zu den Bildern
'orig_3d_model': 3D CAD-Modell
'samples': Tupel von Dictionarys, eines für jedes Sample
'image_id': ID des Bildes
'image_file_name': relativer Pfad und Dateiname
des Bildes
'bbox_row1': Zeilenkoordinate der
oberen linken Ecke des umschließenden Rechtecks
'bbox_col1': Spaltenkoordinate der
oberen linken Ecke des umschließenden Rechtecks
'bbox_row2': Zeilenkoordinate der
unteren rechten Ecke des umschließenden Rechtecks
'bbox_col2': Spaltenkoordinate der
unteren rechten Ecke Ecke des umschließenden Rechtecks
'bbox_label_id': Klassen-IDs der umschließenden
Rechtecke
'camera_parameter': Kameraparameter für das Bild
'mask': Masken der Objektinstanzen
'pose': Pose der Objekte in jedem umschließenden
Rechteck (Tupel von HALCON-Posen)
'visibility': Anteil der Sichtbarkeit der
umschließenden Rechtecke
Das Modell stellt Anforderungen an Bilder, wie
z.B. Bilddimensionen, Grauwertbereich und Typ.
Für spezifische Werte der trainierbaren Komponenten des
Deep 3D Matching-Modells, wird auf verwiesen.
Für ein eingelesenes Netzwerk können die Werte mit
create_deep_matching_3d abgefragt werden.
Um diese Anforderungen zu erfüllen, müssen die Bilder eventuell
vorverarbeitet werden.
Die Standard-Vorverarbeitung für das ganze Sample, und damit auch für das
Bild, kann mit Hilfe der Prozedur get_dl_model_parampreprocess_dl_samples
durchgeführt werden.
Der Operator gibt ein
Dictionary
zurück, das den aktuellen Wert des Trainings-Loss sowie die
Werte für alle anderen Losses enthält, die im Modell enthalten sind.
DLTrainResult
apply_deep_matching_3dcreate_deep_matching_3dget_deep_matching_3d_paramget_scene_engine_paramopen_scene_engineread_deep_matching_3drun_scene_engineset_deep_matching_3d_paramset_scene_engine_paramwrite_deep_matching_3d