Objekte finden
Mit diesem Tool können Sie Objekte in einem Bild basierend auf einem vorab trainierten Deep Learning-Modell lokalisieren und klassifizieren. Sie können Deep Learning-Modelle für die Objekterkennung oder Instanzsegmentierung verwenden.
Sowohl das Objekterkennungsmodell als auch das Instanzsegmentierungsmodell erkennt Objekte bestimmter Klassen und findet diese im Bild. Die Objekte können in beliebiger Richtung orientiert sein und sich auch teilweise überlappen. Die Position der einzelnen erkannten Objekte wird mit einem sogenannten Begrenzungsrahmen markiert (ein Rechteck, das das jeweilige Objekt umgibt). Für jeden Begrenzungsrahmen wird ein Konfidenzwert ausgegeben, der die Wahrscheinlichkeit ausdrückt, dass das Objekt im Begrenzungsrahmen zur zugewiesenen Klasse gehört. Bei der Instanzsegmentierung handelt es sich um einen Sonderfall der Objekterkennung, bei dem das Modell auch verschiedene Objektinstanzen prognostiziert und die gefundenen Instanzen der entsprechenden Region im Bild zuweist. So können Sie zusätzlich zu den Begrenzungsrahmen und Konfidenzwerten auch pixelgenaue Regionen der erkannten Objekte ermitteln.
Wenn eine Deep Learning-Modelldatei verfügbar ist, können Sie die Datei sofort in diesem MERLIC-Tool verwenden. Andernfalls müssen Sie zuerst ein Modell trainieren.
Deep Learning-Modell trainieren
Mit dem Deep Learning Tool von MVTec können Sie das Deep Learning-Modell für dieses Tool trainieren. Beim Erstellen eines neuen Projekts für das Training müssen Sie die gewünschte Deep Learning-Methode auswählen. Wenn Sie ein Deep Learning-Modell für dieses Tool trainieren möchten, können Sie eine der folgenden Methoden auswählen:
|
Deep Learning-Methode |
Beschreibung |
|---|---|
|
Achsenausgerichtete Objekterkennung
|
Bei dieser Methode wird die Position der einzelnen erkannten Objekte mit einem Begrenzungsrahmen markiert, der parallel zu den Koordinatenachsen ausgerichtet ist. Diese Methode ist daher besonders für Objekte geeignet, deren Form leicht in ein achsenausgerichtetes Rechteck eingeschlossen werden kann, z. B. Flaschenverschlusskappen. Sie können diese Methode verwenden, wenn Sie nur an der Position der Objekte, aber nicht an deren Orientierung interessiert sind. Darüber hinaus ist der Zeitbedarf für die Kennzeichnung geringer, da die Verarbeitung von achsenausgerichteten Begrenzungsrahmen weniger komplex ist.
|
|
Ausgerichtete Objekterkennung |
Bei dieser Methode wird die Position der einzelnen erkannten Objekte mit einem ausgerichteten Begrenzungsrahmen markiert. Diese Methode ist daher besonders für Objekte geeignet, deren Form nicht optimal in ein achsenausgerichtetes Rechteck eingeschlossen werden kann, z. B. diagonal liegende Bleistifte. Sie können diese Methode verwenden, wenn Sie nicht nur an der Position der Objekte, sondern auch an deren Orientierung interessiert sind. Die jeweiligen Begrenzungsrahmen werden entsprechend ausgerichtet. Bei dieser Methode sind die Ergebnisse genauer. Der Zeitbedarf für die Kennzeichnung ist jedoch größer, da die Verarbeitung von ausgerichteten Begrenzungsrahmen komplexer ist.
|
|
Instanzsegmentierung
|
Bei dieser Methode wird die Position der einzelnen erkannten Objekte mit einem Begrenzungsrahmen markiert, der parallel zu den Koordinatenachsen ausgerichtet ist. Darüber hinaus wird die Region der einzelnen erkannten Objektinstanzen prognostiziert und ausgegeben. Sie können diese Methode verwenden, wenn Sie mehrere Instanzen derselben Klasse unterscheiden und die pixelgenauen Regionen der Objektinstanzen im Bild visualisieren möchten.
|
Nachdem die Deep Learning-Methode ausgewählt wurde, sieht der Workflow normalerweise wie folgt aus:
- Erstellen Sie die Kennzeichnungsklassen.
- Weisen Sie die Kennzeichnungen den Bildern, Objekten oder Regionen zu. Bei einem Instanzsegmentierungsmodell müssen Sie außerdem Instanzen basierend auf Polygonen oder Masken erstellen.
- Trainieren Sie das Modell.
Das trainierte Deep Learning-Modell kann dann in diesem MERLIC-Tool am Parameter „Modelldatei“ als Eingabe verwendet werden.
Obwohl es auch möglich ist, das Deep Learning-Modell mit MVTec HALCON zu trainieren, wird empfohlen, das MVTec Deep Learning Tool zu verwenden. Weitere Informationen zum Erstellen eines Deep Learning-Modells finden Sie in der Dokumentation des MVTec Deep Learning Tools.
Unterstützung von Artificial Intelligence Acceleration-Schnittstellen (AI²)
MERLIC umfasst Artificial Intelligence Acceleration-Schnittstellen (AI²) für das NVIDIA® TensorRT™ SDK und die Intel® Distribution of OpenVINO™ toolkit. Das heißt, Sie können KI-Beschleuniger-Hardware als Recheneinheit verwenden, die kompatibel mit NVIDIA® TensorRT™ oder dem OpenVINO™ toolkit ist, um optimierte Inferenzberechnungen auf der jeweiligen Hardware durchzuführen, z. B. auf NVIDIA®-GPUs oder Hardware, die das OpenVINO™ toolkit unterstützt, wie CPUs, Intel®-GPUs und Movidius™-VPUs. Dadurch können Sie Deep Learning-Inferenzberechnungen erheblich beschleunigen. Die jeweilige Hardware kann beim Toolparameter „Recheneinheit“ ausgewählt werden.
Voraussetzungen
NVIDIA®-GPUs und CPUs, die das OpenVINO™ toolkit unterstützen, können sofort nach der Installation von MERLIC verwendet werden. Eine zusätzliche Installation oder Einrichtung ist nicht erforderlich.
Für die Verwendung von Intel®-GPUs und VPUs mit dem OpenVINO™ toolkit als Recheneinheit gelten die folgenden Voraussetzungen:
- Zuerst müssen Sie die Intel® Distribution of OpenVINO™ toolkit installieren.
- Sie müssen MERLIC in einer OpenVINO™ toolkit-Umgebung starten.
Weitere Informationen zu Installation und Voraussetzungen finden Sie unter AI²-Schnittstellen für Tools mit Deep Learning.
Parameter
Standardparameter
Bild:
Dieser Parameter stellt das Bild dar, in dem Objekte erkannt werden sollen.
Modelldatei:
Dieser Parameter definiert das Deep Learning-Modell (.hdl-Dateiformat), das zum Erkennen von Objekten verwendet werden soll. Standardmäßig ist kein Modell definiert. Um dieses Tool verwenden zu können, muss jedoch ein Deep Learning-Modell definiert werden.
Wenn Sie eine bestimmte KI-Beschleuniger-Hardware verwenden möchten, die von den AI²-Schnittstellen von MERLIC unterstützt wird, können Sie ein Deep Learning-Modell verwenden, das für das betreffende Gerät optimiert wurde. Dadurch wird die Ladezeit der MVApp verbessert und die für das Modell benötigte Speicherkapazität reduziert.
Es wird empfohlen, das MVTec Deep Learning Tool zu verwenden, um das Modell zu trainieren. Wenn Sie das Modell exportieren, haben Sie die Möglichkeit, das Modell für eine AI²-Schnittstelle zu optimieren. Wenn Sie jedoch weiterhin MVTec HALCON für das Training verwenden möchten, müssen Sie die folgenden Einschränkungen für die Vorverarbeitungsparameter berücksichtigen.
Dieses Tool unterstützt nur Deep Learning-Modelle, die mit den Standardwerten für die folgenden Vorverarbeitungsparameter trainiert wurden:
- NormalizationType = "none"
- DomainHandling = "full_domain"
Orientierung:
Dieser Parameter bietet die Möglichkeit, die Orientierung für die entstehenden Begrenzungsrahmen anzugeben. Wenn Sie ein Objekterkennungsmodell verwenden, das mit ausgerichteten Begrenzungsrahmen trainiert wurde, bietet dieser Parameter die Möglichkeit, die resultierenden Regionen der Begrenzungsrahmen stattdessen achsenausgerichtet auszurichten. Wenn das Modell jedoch mit achsenausgerichteten Begrenzungsrahmen trainiert wurde, kann die Orientierung der Begrenzungsrahmen nicht geändert werden. Der Parameter wird daher deaktiviert, und der Wert ist ausgegraut.
Der Parameter ist standardmäßig auf „achsenausgerichtet“ festgelegt.
|
Wert |
Beschreibung |
|---|---|
|
achsenausgerichtet |
Die Begrenzungsrahmen werden als achsenausgerichtete Rechtecke angegeben. Bei Verwendung dieser Einstellung weisen alle im Ergebnis „Winkel“ ausgegebenen Werte den Wert 0,0 auf. |
|
ausgerichtet |
Die Begrenzungsrahmen werden als ausgerichtete Rechtecke angegeben. Dieser Parameterwert kann nur festgelegt werden, wenn eine Modelldatei verwendet wird, die für die ausgerichtete Objekterkennung trainiert wurde. |
Zusätzliche Parameter
Klassenselektor:
Dieser Parameter filtert die Ergebnisse. Sie können eine von drei verschiedenen Filteroptionen auswählen: Der Parameter ist standardmäßig auf „alle Klassen“ festgelegt.
|
Wert |
Beschreibung |
|---|---|
|
alle Klassen |
Das Tool erkennt alle verfügbaren Klassen. |
|
nur Klasse <Klassenname> |
Das Tool erkennt nur die ausgewählte Klasse. Die Klasse kann aus allen verfügbaren Klassen ausgewählt werden. |
|
alle außer <Klassenname> |
Das Tool erkennt alle verfügbaren Klassen außer der ausgewählten Klasse. Die Klasse kann aus allen verfügbaren Klassen ausgewählt werden. |
Maximale Anzahl an Objekten:
Dieser Parameter definiert die maximale Anzahl an Objekten, die vom Deep Learning-Modell erkannt werden können. Sie können diesen Parameter verwenden, um den Wert zu überschreiben, der beim Training des Deep Learning-Modells verwendet wurde.
Der Parameter wird beim Laden des Modells automatisch auf den Maximalwert festgelegt, der in der Modelldatei gespeichert ist. Geben Sie die gewünschte maximale Anzahl an Objekten in das Eingabefeld des Parameters ein oder verwenden Sie den Schieberegler, um den Wert festzulegen, wenn Sie einen anderen Wert verwenden möchten. Mit dem Schieberegler können lediglich Werte bis 20 festgelegt werden. Wenn mehr als 20 Objekte gefunden werden sollen, müssen Sie den Wert manuell in das Eingabefeld eingeben.
Die Objekte werden in der Reihenfolge ihrer Konfidenzwerte sortiert. Wenn die Anzahl der Objekte in einem Bild größer ist als der im diesem Parameter definierte Wert, werden Objekte mit der geringsten Konfidenz ausgeschlossen, bis die Anzahl der erkannten Objekte mit dem in „Maximale Anzahl an Objekten“ definierten Wert übereinstimmt.
Im Ergebnis „Objektanzahl“ können Sie feststellen, wie viele Objekte in einem Bild erkannt wurden.
Minimalkonfidenz:
Dieser Parameter bestimmt die minimale Konfidenz, die ein Objekt erreichen muss, um erkannt zu werden. Alle Objekte mit einem Konfidenzwert, der kleiner ist als der Wert von „Minimalkonfidenz“, werden nicht erkannt. Der Parameter ist standardmäßig auf 0,5 festgelegt.
Überlappung gleicher Klassen:
Dieser Parameter legt die maximal zulässige Überlappung von erkannten Objekten der gleichen Klasse fest. Das heißt: Wenn sich zwei Objekte derselben Klasse überlappen und diese Überlappung den Wert des Parameters „Überlappung gleicher Klassen“ übersteigt, wird das Objekt mit der geringeren Konfidenz nicht erkannt. Dies ist nützlich, wenn das Objekterkennungsmodell mehrere aussichtsreiche Instanzen für das gleiche Objekt findet oder zwei Instanzen des gleichen Objekts sehr nah beieinander liegen. Der Parameter ist standardmäßig auf 0,5 festgelegt.
Überlappung unterschiedlicher Klassen:
Dieser Parameter legt die maximal zulässige Überlappung von erkannten Objekten verschiedener Klassen fest. Das heißt: Wenn sich zwei Objekte verschiedener Klassen überlappen und diese Überlappung den Wert des Parameters „Überlappung unterschiedlicher Klassen“ übersteigt, wird das Objekt mit der geringeren Konfidenz nicht erkannt. Der Parameter ist standardmäßig auf 1 festgelegt.
Recheneinheit:
Dieser Parameter definiert die Einheit, die für die Verarbeitung der Bilder verwendet wird. Der Parameter ist standardmäßig auf „auto“ festgelegt. In diesem Modus versucht MERLIC, eine geeignete GPU als Recheneinheit auszuwählen, da deren Leistung in der Regel besser ist als die der CPU. Der verfügbare Speicher in der betreffenden GPU muss jedoch mindestens 4 GB groß sein. Wird keine geeignete GPU gefunden, wird ersatzweise die CPU verwendet.
Sie können die Recheneinheit auch manuell auswählen. Klicken Sie auf den Parameter, um die Einheit in der Liste aller verfügbaren Recheneinheiten auszuwählen. Wenn Sie eine GPU als Recheneinheit auswählen, sollten Sie überprüfen, ob genügend Speicher für das verwendete Deep Learning-Modell verfügbar ist. Andernfalls kann es zu unerwünschten Effekten kommen, z. B. langsamere Inferenzberechnungen.
MERLIC unterstützt auch die Verwendung von KI-Beschleuniger-Hardware, die mit dem NVIDIA® TensorRT™ SDK oder dem OpenVINO™ toolkit kompatibel ist:
- NVIDIA®-GPUs
- CPUs, Intel®-GPUs, Intel®-VPUs (MYRIAD und HDDL), die das OpenVINO™ toolkit unterstützen
Die jeweiligen Einheiten werden mit dem Präfix „TensorRT(TM)“ oder „OpenVINO(TM)“ gekennzeichnet. Wenn Sie eine Einheit auswählen, die NVIDIA® TensorRT™ oder das OpenVINO™ toolkit unterstützt, wird der Speicher in der Einheit über das jeweilige Plugin für die AI²-Schnittstelle initialisiert.
Sobald eine KI-Beschleuniger-Hardware als Recheneinheit ausgewählt wurde, wird die Optimierung des Deep Learning-Modells gestartet. Nach der Optimierung werden alle Parameter, die Modellparameter darstellen, intern als schreibgeschützt festgelegt. Die betreffenden Werte können daher nicht mehr geändert werden, solange der ausgewählte KI-Beschleuniger als Recheneinheit verwendet wird. Um die Parameter zu ändern, müssen Sie zuerst eine andere Recheneinheit ohne KI-Beschleunigung auswählen. Nachdem die Parameter festgelegt wurden, können Sie die entsprechende KI-Beschleuniger-Hardware wieder als Recheneinheit verwenden.
CPUs, die das OpenVINO™ toolkit unterstützen, können ohne zusätzliche Installationsschritte verwendet werden. Sie werden automatisch in die Liste der verfügbaren Recheneinheiten aufgenommen. Wenn mehrere Recheneinheiten mit demselben Namen verfügbar sind, wird den Namen eine Indexnummer zugewiesen. Gleiches gilt für GPUs, die NVIDIA® TensorRT™ unterstützen.
Um GPUs und VPUs, die das OpenVINO™ toolkit unterstützen, als Recheneinheit verwenden zu können, muss die Intel® Distribution of OpenVINO™ toolkit auf dem jeweiligen Computer installiert sein. Außerdem muss MERLIC in einer OpenVINO™ toolkit-Umgebung gestartet werden. Ausführlichere Informationen zu den Voraussetzungen finden Sie unter AI²-Schnittstellen für Tools mit Deep Learning.
Neben der Optimierung über KI-Beschleuniger-Hardware unterstützt MERLIC weitere dynamische Optimierungen über das NVIDIA® CUDA® Deep Neural Network (cuDNN). Diese Optimierung kann über die MERLIC-Einstellungen im MERLIC Creator aktiviert werden. Weitere Informationen finden Sie unter MERLIC-Einstellungen.
Präzision:
Dieser Parameter legt den Datentyp fest, der intern für die Optimierung des Deep Learning-Modells für Inferenz verwendet wird, d. h., er legt die Präzision fest, mit der das Modell konvertiert wird. Die Standardeinstellung ist „hoch“.
Die folgende Tabelle zeigt die Einstellungen für die Modellpräzision, die in diesem Tool unterstützt werden.
|
Wert |
Beschreibung |
|---|---|
|
hoch |
Das Deep Learning-Modell wird mit „float32“-Präzision konvertiert. |
|
mittel |
Das Deep Learning-Modell wird mit „float16“-Präzision konvertiert. |
Die meisten Recheneinheiten unterstützen beide Präzisionseinstellungen. Es gibt jedoch u. U. auch einige Recheneinheiten, die nur eine dieser Einstellungen unterstützen. In diesem Fall ist für den Parameter nur die unterstützte Präzision verfügbar, nachdem das jeweilige Gerät mit dem Parameter „Recheneinheit“ ausgewählt wurde. Bei einer automatischen Auswahl der Recheneinheit, d. h. bei Einstellung von „Recheneinheit“ auf „auto“, ist nur die Präzision „hoch“ verfügbar.
Ergebnisse
Standardergebnisse
Regionen der Begrenzungsrahmen:
Dieses Ergebnis gibt die Begrenzungsrahmen der erkannten Objekte als Regionen aus.
Objektanzahl:
Dieses Ergebnis gibt die erkannten Objekte unabhängig von ihrer Klasse aus.
Klassen:
Dieses Ergebnis gibt die Klassennamen aller erkannten Objekte aus. Sie werden als Tupel in der Reihenfolge ihrer Konfidenz ausgegeben. Das Tupel enthält dieselbe Anzahl von Zeichenfolgen (Klassen) wie der Wert des Ergebnisses „Objektanzahl“.
Konfidenzen:
Dieses Ergebnis gibt einen numerischen Wert aus, der die Wahrscheinlichkeit angibt, dass die erkannten Objekte zu der jeweils zugewiesen Klasse gehören. Wenn der Parameter den Wert 1 aufweist, stimmt das gefundene Objekt mit einer Genauigkeit von 100 % mit der trainierten Klasse überein. Wird mehr als ein Objekt gefunden, werden die zugehörigen Konfidenzen als Tupel in der Reihenfolge ihrer Konfidenz ausgegeben.
Toolstatus:
„Toolstatus“ gibt Informationen zum Status des Tools aus und kann daher für die Fehlerbehandlung verwendet werden. Weitere Informationen zu den verschiedenen Toolstatus-Ergebnissen finden Sie unter Toolstatus-Ergebnis.
Zusätzliche Ergebnisse
Konturen der Begrenzungsrahmen:
Dieses Ergebnis gibt die Begrenzungsrahmen der erkannten Objekte als Konturen aus.
Objekt Instanzen:
Dieses Ergebnis gibt die Regionen der erkannten Objektinstanzen aus. Sie werden in der Reihenfolge ihrer Konfidenz ausgegeben.
Die Regionen werden nur ermittelt, wenn ein Deep Learning-Modell für die Instanzsegmentierung verwendet wird. Bei Verwendung eines Objekterkennungsmodells ist dieses Ergebnis leer.
X:
Dieses Ergebnis enthält die X-Koordinaten der Zentrumspunkte der Begrenzungsrahmen aller erkannten Objekte sortiert nach Konfidenz. Sie werden in Pixel angegeben und als Tupel in der Reihenfolge ihrer Konfidenz ausgegeben. Das Tupel enthält dieselbe Anzahl von X-Koordinaten wie der Wert des Ergebnisses „Objektanzahl“.
Y:
Dieses Ergebnis enthält die Y-Koordinaten der Zentrumspunkte der Begrenzungsrahmen aller erkannten Objekte sortiert nach Konfidenz. Sie werden in Pixel angegeben und als Tupel in der Reihenfolge ihrer Konfidenz ausgegeben. Das Tupel enthält dieselbe Anzahl von Y-Koordinaten wie der Wert des Ergebnisses „Objektanzahl“.
Winkel:
Dieses Ergebnis gibt die Winkel von Begrenzungsrahmen der erkannten Objekte aus. Diese bestimmen Umfang und Richtung der Drehung der Begrenzungsrahmen. Die Winkel werden in Grad als reelle Zahlen und als Tupel in der Reihenfolge ihrer Konfidenz ausgegeben. Das Tupel enthält dieselbe Anzahl von Winkeln wie der Wert des Ergebnisses „Objektanzahl“.
|
Wert |
Beschreibung |
|---|---|
|
0 |
Das Rechteck wird nicht gedreht. |
|
1 bis 180 |
Das Rechteck wird gegen den Uhrzeigersinn gedreht. |
|
-1 bis -180 |
Das Rechteck wird im Uhrzeigersinn gedreht. |
Dieses Ergebnis gibt nur dann Winkel zwischen -180° und 180° aus, wenn eine Modelldatei verwendet wird, die für die ausgerichtete Objekterkennung trainiert wurde. Wenn die Modelldatei mit einer Deep Learning-Methode trainiert wurde, die nur achsenausgerichtete Begrenzungsrahmen unterstützt, sind alle Werte im resultierenden Tupel 0,0.
Verwendete Recheneinheit:
Dieses Ergebnis gibt die Recheneinheit aus, die in der letzten Iteration verwendet wurde. Anhand dieses Ergebnisses können Sie feststellen, welche Recheneinheit tatsächlich verwendet wurde, wenn der Parameter „Recheneinheit“ auf „auto“ festgelegt ist, bzw. überprüfen, ob die richtige Recheneinheit verwendet wurde.
Datentyp der Präzision:
Dieses Ergebnis gibt den Datentyp aus, der intern für die Optimierung des Deep Learning-Modells für Inferenz verwendet wurde. Anhand dieses Ergebnisses können Sie überprüfen, ob die richtige Präzision verwendet wurde, falls Probleme auftreten.
Wenn der Parameter „Präzision“ auf „hoch“ festgelegt ist, soll das Deep Learning-Modell mit „float32“-Präzision konvertiert werden. Daher wird erwartet, dass dieses Ergebnis den Datentyp „float32“ ausgibt. Wenn der Parameter „Präzision“ auf „mittel“ festgelegt ist, soll das Deep Learning-Modell mit „float16“-Präzision konvertiert werden. In diesem Fall werden für das Ergebnis Werte des Datentyps „float16“ erwartet. Falls bei einer Iteration Ihrer MVApp ein Problem aufgetreten ist, können Sie überprüfen, ob dieses Ergebnis einen anderen Datentyp als erwartet ausgibt. Weitere Informationen finden Sie möglicherweise auch in der Log-Datei. Weitere Informationen zu den Log-Dateien finden Sie auf der Seite Protokollieren.
Verarbeitungszeit:
Dieses Ergebnis gibt die Dauer der letzten Ausführung des Tools in Millisekunden aus. Das Ergebnis wird als zusätzliches Ergebnis bereitgestellt. Es ist daher standardmäßig ausgeblendet, kann aber über die Schaltfläche neben den Toolergebnissen angezeigt werden. Weitere Informationen finden Sie im Abschnitt Verarbeitungszeit in der Tool-Referenz-Übersicht.
Anwendungsbeispiele
Dieses Tool wird in den folgenden MERLIC-Vision-App-Beispielen verwendet:
- find_and_count_screw_types.mvapp
- segment_pills_by_shape.mvapp