Bild klassifizieren
Mit diesem Tool können Sie Bilder basierend auf einem vorab trainierten Klassifikator kategorisieren.
Bei einem Klassifikator handelt es sich um ein Deep Learning-Modell, das trainiert wurde, um einem Bild eine bestimmte Klasse von mehreren möglichen Klassen zuzuweisen. Für jede Klasse wird ein Konfidenzwert ermittelt, der die Wahrscheinlichkeit angibt, dass das Bild zu jeweiligen Klasse gehört. Die Klasse mit dem höchsten Konfidenzwert wird dem Bild zugewiesen.
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. Der Workflow sieht folgendermaßen aus:
- Definieren Sie die Klassen.
- Kennzeichnen Sie die Bilder entsprechend.
- Trainieren Sie das Modell.
Durch das Training entsteht eine Klassifikatordatei, die zum Klassifizieren neuer Bilder in diesem MERLIC-Tool verwendet werden kann. Die Bilder werden dann in die zuvor definierten Klassen kategorisiert.
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 oder im Videotutorial zur Deep Learning-Klassifikation mit dem MVTec Deep Learning Tool.
Klassifikator mit „Out-of-Distribution-Erkennung“ verwenden
Wenn Sie dieses MERLIC-Tool mit einem Klassifikator verwenden, der für die „Out-of-Distribution-Erkennung“ erweitert wurde, kann der Klassifikator eine falsche Klassifizierung von Objekten oder Samples erkennen, die erheblich von den Trainingsdaten abweichen (z. B. ein Gegenstand aus Metall, wenn das System lediglich für Glasflaschen trainiert wurde). Dazu wird zusätzlich das Toolergebnis Out-of-Distribution-Bewertung ausgegeben, das das Ausmaß der Abweichung von den trainierten Klassen ausgibt. Das Tool verfügt außerdem über den zusätzlichen Toolparameter Out-of-Distribution-Schwellenwert, mit dem der Schwellenwert für die Identifizierung von Out-of-Distribution-Samples angepasst werden kann.
In der nachstehenden Beispielgrafik wurde der Klassifikator für die Unterscheidung von drei Klassen trainiert Im ersten Bild ist weist die Klasse „apple“ den höchsten Konfidenzwert auf. Das Bild wird daher als „apple“ erkannt.
Im zweiten Bild weicht das Objekt erheblich von den Trainingsdaten ab. Zusätzlich zu den Konfidenzwerten der drei Klassen wird außerdem darauf hingewiesen, dass das Bild zu keiner der drei trainierten Klassen gehört.
Um einen trainierten Klassifikator für die „Out-of-Distribution-Erkennung“ (OOD) zu erweitern, müssen Sie MVTec HALCON verwenden. (Die Durchführung der Erweiterung wird ab HALCON-Version 24.11 Progress-Steady unterstützt.) Weitere Informationen zur „Out-of-Distribution-Erkennung“ finden Sie in der MVTec HALCON-Dokumentation.
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, das klassifiziert werden soll.
Klassifikatordatei:
Dieser Parameter definiert den sogenannten Klassifikator, d. h. das Deep Learning-Modell (.hdl-Dateiformat), das zum Klassifizieren der Bilder verwendet werden soll.
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"
Heatmap anzeigen:
Dieser Parameter bestimmt, ob eine Heatmap angezeigt wird oder nicht. Die Heatmap kennzeichnet Bildteile, die für die Entscheidung des Klassifikators von Bedeutung sind. Die Standardeinstellung ist 1. Das bedeutet, dass die Heatmap standardmäßig angezeigt wird. Wenn der Parameter auf 0 festgelegt ist, wird keine Heatmap angezeigt. Der Wert dieses Parameters bestimmt auch, ob die Heatmap Bestandteil des Bilds ist, das im Ergebnis „Dargestelltes Bild“ ausgegeben wird.
Die Heatmap ist nicht verfügbar, wenn eine KI-Beschleuniger-Hardware als Recheneinheit verwendet wird, auch wenn der Parameter „Heatmap anzeigen“ auf 1 festgelegt ist. Sobald eine CPU, GPU oder VPU, die mit dem OpenVINO™ toolkit kompatibel ist, am Parameter „Recheneinheit“ ausgewählt wird, wird die Heatmap deaktiviert. Gleiches gilt bei Auswahl einer NVIDIA®-GPU.
Zusätzliche Parameter
Out-of-Distribution-Schwellenwert:
Dieser Parameter definiert einen Schwellenwert für die Identifizierung von Samples, die von den Trainingsdaten abweichen, die für den Klassifikator verwendet wurden. Wenn die „Out-of-Distribution-Bewertung“ den definierten Schwellenwert überschreitet, wird das Sample als „Out-of-Distribution“ prognostiziert. Bei Auswahl eines Klassifikators, der die „Out-of-Distribution-Erkennung“ (OOD) unterstützt, wird der Schwellenwert mit dem Wert initialisiert, der für den Klassifikator bei der Erweiterung für OOD ermittelt wurde. Sie können den Schwellenwert mit diesem Parameter bei Bedarf auf einen Wert zwischen 0,0 und 1,0 festlegen.
Dieser Parameter kann nur festgelegt werden, wenn ein Klassifikator verwendet wird, der für die „Out-of-Distribution-Erkennung“ (OOD) erweitert wurde. Wird ein Klassifikator ohne OOD verwendet, ist der Parameter ausgegraut, sodass er nicht festgelegt werden kann.
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.
Anzahl der erkannten Klassen:
Dieser Parameter definiert die maximale Anzahl von Klassen, die für das Ergebnis „Erkannte Klassen“ ausgegeben werden. Der Parameter ist standardmäßig auf 1 festgelegt. Das bedeutet, dass nur eine Klasse, d. h. die Klasse mit der höchsten Konfidenz, in „Erkannte Klassen“ ausgegeben wird. Sie können bis zu 5 Klassen abfragen. Die resultierenden Klassen in „Erkannte Klassen“ werden nach Konfidenzwert sortiert.
Dieser Parameter definiert auch die maximale Anzahl der Werte, die in den Ergebnissen „Konfidenzen“ und „IDs der erkannten Klassen“ ausgegeben werden, weil diese Anzahl mit dem Wert für die Anzahl der Klassen in „Erkannte Klassen“ übereinstimmt. Weitere Informationen zu diesen Ergebnissen finden Sie in den entsprechenden Abschnitten weiter oben.
Der ausgewählte Parameterwert hat keinen Einfluss auf die Leistung oder die Verarbeitungszeit, da er lediglich die Ergebnisausgabe steuert.
Ergebnisse
Standardergebnisse
Erkannte Klassen:
Dieses Ergebnis gibt die Namen der zu unterscheidenden Klassen aus. Die Anzahl der ausgegebenen Klassen hängt vom Parameter „Anzahl der erkannten Klassen“ ab. Die Klassennamen werden als Zeichenfolgen ausgegeben. Wenn mehrere Klassen vorhanden sind, werden sie in einem Tupel ausgegeben, das beginnend mit der Klasse mit der höchsten Konfidenz nach den jeweiligen Konfidenzwerten sortiert ist. Die jeweiligen Konfidenzen und IDs der Klassen werden in den Ergebnissen „Konfidenzen“ und „IDs der erkannten Klassen“ ausgegeben.
- "Erkannte Klassen": [ginseng-crack, mint-crack, magnesium-crack]
- "Konfidenzen": [1, 3.465148878945001e-08, 4.076762483151697e-09]
- "IDs der erkannten Klassen": [1, 7, 4]
Die Beispielergebnisse geben an, dass die Klasse „ginseng-crack“ mit der Klassen-ID 1 und dem Konfidenzwert 1 die wahrscheinlichste Klasse für das aktuelle Bild (genauer: das Objekt im Bild) ist. Die nächstwahrscheinliche Klasse ist „mint-crack“ mit der Klassen-ID 7 und dem Konfidenzwert 3,465148878945001e-08. Die unwahrscheinlichste Klasse ist „magnesium-crack“ mit der Klassen-ID 4 und dem Konfidenzwert 4,076762483151697e-09.
Konfidenzen:
Dieses Ergebnis gibt die Wahrscheinlichkeit an, dass das Bild zu den jeweils unterschiedenen Klassen gehört. Die maximale Konfidenz ist 1. Die höchste Konfidenz bestimmt die Klasse. Wenn es beispielsweise drei mögliche Klassen gibt, [Apfel, Banane, Apfelsine], und die resultierenden Konfidenzwerte [0,7, 0,2, 0,1] sind, wird das aktuell verarbeitete Bild als „Apfel“ klassifiziert
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
Heatmap:
Dieses Ergebnis stellt die Heatmap als Bild dar, das die entscheidenden Unterscheidungsmerkmale für die Klassifizierung anzeigt.
Dargestelltes Bild:
Dieses Ergebnis stellt das Verarbeitungsbild überlagert mit der Anomalieheatmap dar. Da das Verarbeitungsbild hinter der Heatmap sichtbar ist, können Sie deutlicher sehen, welche Anomalie wo im Bild vorhanden ist. Die Heatmap wird jedoch nur angezeigt, wenn der Parameter „Heatmap anzeigen“ auf 1 festgelegt ist. Wenn „Heatmap anzeigen“ auf 0 festgelegt ist, enthält das ausgegebene Bild nur das Verarbeitungsbild ohne Heatmap.
IDs der erkannten Klassen:
Dieses Ergebnis gibt die IDs aller zu unterscheidenden Klassen aus. Die Anzahl der Elemente im ganzzahligen Tupel hängt vom Parameter „Anzahl der erkannten Klassen“ ab.
Alle Klassen:
Dieses Ergebnis gibt die Namen aller verfügbaren Klassen aus, die im ausgewählten Klassifikator definiert sind.
IDs aller Klassen:
Dieses Ergebnis gibt die IDs aller verfügbaren Klassen aus, die im ausgewählten Klassifikator definiert sind.
Breite des Trainingsbilds:
Dieses Ergebnis gibt die Bildbreite aus, die für das Training des Klassifikators verwendet wurde.
Höhe des Trainingsbilds:
Dieses Ergebnis gibt die Bildhöhe aus, die für das Training des Klassifikators verwendet wurde.
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.
Out-of-Distribution-Bewertung:
Dieses Ergebnis gibt einen Wert aus, der angibt, wie stark das Sample von den trainierten Klassen abweicht. Je höher die Bewertung ist, desto größer ist die „Out-of-Distribution“-Wahrscheinlichkeit für das Sample. Wenn die Bewertung den in „Out-of-Distribution-Schwellenwert“ definierten Schwellenwert überschreitet, wird das Sample als „Out-of-Distribution“ eingestuft und am Tool wird eine entsprechende Warnung angezeigt.
Dieses Ergebnis ist nur verfügbar, wenn ein Klassifikator verwendet wird, der für die „Out-of-Distribution-Erkennung“ (OOD) erweitert wurde. Wird ein Klassifikator ohne OOD verwendet, ist das Ergebnis leer.
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:
- classify_pills.mvapp
- classify_and_inspect_wood.mvapp