Bild klassifizieren

Mit diesem Tool können Sie Bilder kategorisieren.

Dieses Tool setzt einen trainierten Klassifikator voraus. Bei einem Klassifikator handelt es sich um ein Deep Learning-Modell, das zum Unterscheiden von Bildern und zum Kategorisieren der Bilder in Klassen trainiert wurde. Um einen Klassifikator zu trainieren, können Sie das Deep Learning Tool von MVTec verwenden. Der Workflow sieht folgendermaßen aus: Definieren Sie die Klassen, kennzeichnen Sie Ihre Bilder entsprechend und trainieren Sie schließlich das Deep Learning-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.

Weitere Informationen zum Erstellen des Klassifikators finden Sie in der Dokumentation des MVTec Deep Learning Tools oder im Videotutorial zur Deep Learning-Klassifikation mit dem MVTec Deep Learning Tool. Wenn eine Klassifikatordatei verfügbar ist, können Sie die Datei in MERLIC sofort für die Klassifizierung mit dem Tool „Bild klassifizieren“ verwenden.

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 HALCON Deep Learning-Modell (.hdl-Dateiformat), das zum Klassifizieren der Bilder verwendet werden soll.

Obwohl es auch möglich ist, die Klassifikatordatei mit MVTec HALCON zu trainieren, wird empfohlen, das MVTec Deep Learning Tool zu verwenden.

Technisch ist es auch möglich, mit MVTec HALCON einen Klassifikator zu erstellen. Dieses Tool unterstützt jedoch nur Klassifikatoren, 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

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. Anderenfalls 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.

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

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.

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.

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.

Anwendungsbeispiele

Dieses Tool wird in den folgenden MERLIC-Vision-App-Beispielen verwendet:

  • classify_pills.mvapp
  • classify_and_inspect_wood.mvapp