Echtzeit-Erkennung von Anomalien für die visuelle Qualitätskontrolle

Industrielle Produktionslinien mit Computer Vision

30
.
Sep 2022
von
Anthony Cavin
&

In vielen industriellen und kommerziellen Bereichen ist die Qualitätskontrolle von Produkten eine wichtige Aufgabe, um sicherzustellen, dass die Produkte die Erwartungen der Kunden erfüllen. Die manuelle Prüfung von Produkten auf Anomalien kann jedoch eine zeitaufwändige und fehleranfällige Aufgabe sein.

Um diese Herausforderung zu meistern, benötigen wir ein System zur Erkennung von Anomalien in Echtzeit, das automatisch Anomalien in Produkten erkennen kann, während diese produziert werden.

Kürzlich wurden Deep-Learning-Methoden für die Erkennung von Anomalien vorgeschlagen. Diese Methoden können automatisch Merkmale aus Daten lernen und haben bei verschiedenen Datensätzen vielversprechende Ergebnisse gezeigt.

Anomalib ist zum Beispiel ein großartiges Repository für den Vergleich modernster Algorithmen zur Erkennung von Anomalien, die Methoden des tiefen Lernens nutzen. Diese Bibliothek umfasst 8 Algorithmen(CFlow, DFM, DFKDE, FastFlow, PatchCore, PADIM, STFPM, GANomaly) (Stand: September 2022).

Können wir diese Algorithmen also für die Erkennung von Anomalien in Echtzeit verwenden? Nun, das hängt davon ab, wie "echtzeitfähig" wir bereit sind, Anomalien zu erkennen.

Diese Methoden basieren häufig auf einem vortrainierten Netz wie Wide-ResNet 50 oder ResNet-18. Diese Netze werden häufig mit ImageNet trainiert, das 14.197.122 Bilder enthält, die üblicherweise für das Training tiefer neuronaler Netze verwendet werden.

Die Verwendung eines großen vortrainierten Netzwerks wie Wide-ResNet 50 kann die Erkennung kleiner Anomalien ermöglichen, aber andererseits kann die Inferenzzeit auf einem Edge-Gerät wegen der großen Anzahl von Parametern, die in Echtzeit berechnet werden müssen - 69 Millionen Parameter für Wide-ResNet 50 - recht lang sein.

Ein anderer Ansatz wäre, das Problem aufzuteilen und zu überwinden. Zunächst werden aussagekräftige Merkmale aus den Bildern extrahiert und dann Algorithmen zur Erkennung von Anomalien eingesetzt, um Ausreißer im Merkmalsraum zu erkennen.

Der Kerngedanke besteht darin, eine niedrigdimensionale Darstellung des visuellen Inputs zu erlernen und diese Darstellung zu verwenden, um einen Klassifikator zu trainieren, der zwischen normalen und anomalen Inputs unterscheiden kann.

In diesem Blogbeitrag werden wir einige der beliebtesten Methoden für die visuelle Merkmalsextraktion untersuchen, darunter Histogramme orientierter Gradienten (HOG), Kantenerkennung und die Methode der Momente. Wir werden auch kurz auf Faltungsneuronale Netze (CNNs) eingehen, die ein leistungsstarkes Werkzeug für die visuelle Merkmalsextraktion sein können.

Abschließend werden wir uns zwei Bibliotheken ansehen, die für das Benchmarking und die Implementierung von Methoden zur Erkennung von Anomalien in Echtzeit mit Python äußerst nützlich sind.

Viel Spaß!

Merkmale aus Bildern extrahieren

Es gibt unzählige Methoden zur Berechnung und Extraktion von Merkmalen aus Bildern. In diesem Blogbeitrag werden wir vier gängige Methoden untersuchen: HOG (Histogram of Oriented Gradients), Wavelet-Kantenerkennung und Faltungsneuronale Netze.

Histogramm der orientierten Gradienten

Das Histogramm der orientierten Gradienten ist ein beliebtes Verfahren in der Bildverarbeitung und der Computer Vision. Der HOG-Deskriptor ist in der Lage, die Form und das Aussehen eines Objekts in einem Bild zu erfassen. Er basiert auf der Idee, dass der Rand eines Objekts ein guter Indikator für seine Eigenschaften ist.

HOG-Darstellung einer Tasse (Bild vom Autor)

Der HOG-Deskriptor ist ein Vektor der Länge N, wobei N die Anzahl der Bins im Histogramm ist.

Jedes Bin steht für die Anzahl der Pixel in einem Teil des Bildes, der einen Gradienten in einer bestimmten Ausrichtung aufweist.

Der erste Schritt besteht also darin, den Gradienten des Bildes in x- und y-Richtung für jedes Pixel zu berechnen.

Wavelet-Kantenerkennung

Eine Wavelet-Transformation ist ein mathematisches Werkzeug, mit dem ein Signal in seine Frequenzkomponenten zerlegt werden kann. Die Wavelet-Bildzerlegungstechnik kann in vielen verschiedenen Anwendungen eingesetzt werden. So kann sie beispielsweise zur Verbesserung der Bildqualität, zur Entrauschung von Bildern oder sogar zur Erkennung von Kanten eingesetzt werden.

Wavelet-Zerlegung einer Tasse (Bild vom Autor)

Sobald das Bild mit der Wavelet-Transformation zerlegt wurde, können die zerlegten Bilder analysiert werden, um Informationen zu extrahieren. Zum Beispiel können die horizontalen und vertikalen Details verwendet werden, um die Grenzen von Objekten im Bild zu erkennen.

Für weitere Informationen über die Extraktion von Kanten zeigt der Ansatz in "A Low Redundancy Wavelet Entropy Edge Detection Algorithm" [1] eine systematische Methode zur Extraktion von Kanten durch Kombination der horizontalen und vertikalen Komponenten aus den Wavelet-Zerlegungen.

Auto-Encoder

Ein besonders leistungsfähiger Ansatz für das unüberwachte Lernen von Merkmalen ist die Autokodierung. Autokodierer sind neuronale Netze, die so trainiert werden, dass sie eine effiziente und komprimierte Darstellung der Daten erlernen. Das heißt, das neuronale Netz wird so trainiert, dass es die Eingabedaten auf eine niedriger dimensionale Darstellung abbildet und dann wieder auf die ursprünglichen Daten zurückgreift.

auto-encoderexample (Bild vom Autor)

Man hofft, dass die niedriger dimensionierte Darstellung die wesentliche Struktur der Daten erfasst und dass die Rekonstruktion den Originaldaten nahe kommt.

Laplacianauto-Encoder

Der Laplacian-Autocodierer ist eine Variante des Standard-Autocodierers und kann verwendet werden, um einen niedrigeren dimensionalen Raum zu extrahieren, wobei die gleichen Nachbarn im niedrigeren dimensionalen Raum erhalten bleiben.

Zu diesem Zweck müssen wir den K-Nearest-Neighbor Graph (K-NNG) konstruieren. Der K-NNG ist eine Datenstruktur, die zur Speicherung der Beziehung zwischen Datenpunkten in einem Datensatz verwendet werden kann. Jeder Datenpunkt wird als Knoten im Diagramm dargestellt, und die Kanten zwischen den Knoten stellen die Ähnlichkeit zwischen den Datenpunkten dar. Genauer gesagt, ist jeder Punkt mit seinen K nächsten Nachbarn verbunden.

Die Ähnlichkeit zwischen Datenpunkten kann mit einer Vielzahl von Abstandsmetriken gemessen werden, z. B. mit dem Euklidischen Abstand, dem Manhattan-Abstand oder der Kosinusähnlichkeit, aber auch mit Wasserstein, wenn wir Histogramme - wie das HOG - vergleichen.

K-Nearest-NeighborGraph (Bild vom Autor)

Warum ist die K-NNG also nützlich für den Laplacian-Auto-Encoder?

Der Laplacian-Autocodierer hat das gleiche primäre Ziel wie jeder Autocodierer (Reduzierung des Rekonstruktionsfehlers), aber es wird ein Term zur Verlustfunktion hinzugefügt, um die gleichen Nachbarn zwischen den Originalbildern und ihren Einbettungen, d.h. dem niedrigdimensionalen Raum, zu erhalten.

Beispiel für ähnliche Bilder im kodierten latenten Raum (Bild vom Autor)

Der Vorteil eines solchen Autocodierers ist, dass die K-NNG in der Eingabe der K-NNG in der niederdimensionalen Darstellung ähnelt.

Wir können daher davon ausgehen, dass ähnliche Bilder in einem ähnlichen Bereich des latenten Raums landen, und wir können die niedriger dimensionale Darstellung der Bilder nutzen, um Anomalien zu erkennen.

Erkennung von Anomalien in Echtzeit mit Python

Bei der Erkennung von Anomalien geht es um die Identifizierung ungewöhnlicher Muster in Daten, die nicht dem erwarteten Verhalten entsprechen. Sie ist ein wichtiges Instrument zur Überwachung und Aufrechterhaltung des Zustands von Systemen und Prozessen, da sie dazu beitragen kann, Probleme frühzeitig zu erkennen und zu diagnostizieren.

Es gibt mehrere Ansätze, Algorithmen und Bibliotheken zur Erkennung von Anomalien in Echtzeit, die jeweils ihre Vor- und Nachteile haben. Eine gute Möglichkeit für den Einstieg ist die Verwendung der folgenden Bibliotheken:

  • PyOD ist ein Python-Toolkit zur Erkennung von Ausreißern in multivariaten Daten.
  • PySAD ist ein Python-Toolkit zur Erkennung von Anomalien in Streaming-Daten.
Beispiel für die Erkennung von Anomalien in Echtzeit (Bild vom Autor)

Sowohl PyOD als auch PySAD sind Open-Source-Projekte, die unter der BSD-Lizenz 2.0 veröffentlicht wurden und auf PyPI verfügbar sind - sie können einfach mit pip installiert werden:

pip install pyod pysad

PyOD bietet 30 Erkennungsalgorithmen (Stand: September 2022). Das ist eine gute Sache, um viele Methoden zu vergleichen, aber es kann schwierig sein, sich für die beste Methode für einen bestimmten Anwendungsfall zu entscheiden.

Für den Anfang können wir einen einfachen abstandsbasierten Algorithmus wie KNN oder einen beliebten Algorithmus wie iForest (Isolation Forest) trainieren, um eine Basislinie zu erstellen, die für den Vergleich mit anderen Algorithmen verwendet werden kann.

iForest ist ein besonders vielseitiger und nützlicher Algorithmus zur Erkennung von Anomalien in einem Datensatz. Er ist eine schnelle und effektive Methode, um Ausreißer in hochdimensionalen Daten zu finden. iForest arbeitet mit der Konstruktion mehrerer Entscheidungsbäume, von denen jeder auf einer zufälligen Teilmenge der Daten trainiert wird.

Die Länge des Weges zu einer Vorhersage zeigt an, ob ein Datenpunkt häufig vorkommt. Mit anderen Worten: Ein Punkt ist ein Ausreißer, wenn er mit einer geringen Anzahl von Schritten im Entscheidungsprozess klassifiziert werden kann.

Bei iForest werden die Pfadlängen mehrerer Entscheidungsbäume kombiniert, um eine endgültige Punktzahl zu erhalten, mit der bestimmt wird, ob ein Punkt ein Ausreißer ist. IForest ist wirksam bei der Erkennung von Ausreißern in einer Vielzahl von Datensätzen und ist zudem effizient, skalierbar und einfach zu verwenden.

Schlussfolgerung

Egal wie gut unser System zur Erkennung von Anomalien ist, es wird nie perfekt sein. Es wird immer falsch-positive und falsch-negative Ergebnisse geben. Ziel ist es, diese Fehler so weit wie möglich zu minimieren, damit wir geeignete Maßnahmen ergreifen können, wenn eine Anomalie entdeckt wird.

Es gibt viele verschiedene Möglichkeiten, die Erkennung von Anomalien anzugehen, und der beste Ansatz hängt von der jeweiligen Anwendung ab. Im Allgemeinen können die folgenden Tipps jedoch dabei helfen, ein effektiveres System zur Erkennung von Anomalien aufzubauen:

  1. Sammeln Sie so viele Daten wie möglich. Je mehr Daten Sie haben, desto einfacher wird es, Muster zu erkennen und Modelle für maschinelles Lernen zu trainieren.
  2. Verarbeiten Sie die Daten vor, um Rauschen und Ausreißer zu entfernen. Dies erleichtert es den Modellen für maschinelles Lernen, die zugrunde liegenden Muster zu erkennen.
  3. Verwenden Sie mehrere Modelle für maschinelles Lernen. Jedes Modell macht unterschiedliche Fehler, so dass die Verwendung mehrerer Modelle dazu beitragen kann, die Gesamtfehlerquote zu senken.
  4. Verwenden Sie eine Kombination aus überwachten und nicht überwachten Methoden des maschinellen Lernens. Mit überwachten Methoden können Modelle für bekannte Anomalien trainiert werden, während mit nicht überwachten Methoden neue Anomalien identifiziert werden können.
  5. Überwachen Sie das System ständig und passen Sie die Modelle an, sobald mehr Daten zur Verfügung stehen.

Vielen Dank für die Lektüre.

[1] Tao, Yiting, et al. "A Low Redundancy Wavelet Entropy Edge DetectionAlgorithm". Journalof Imaging 7.9 (2021): 188.

Mehr von Anthony Cavin

Machine Learning Engineer | Gründer von Amigocci.io | Für Networking & Rückfragen: linkedin

Folgen Sie mir auf
Wir optimieren nicht nur die Produktionsprozesse, sondern auch unsere Website! Hierfür verwenden wir Tools wie Cookies für Analyse- und Marketingzwecke. Sie können Ihre Cookie-Einstellungen jederzeit ändern. Informationen und Einstellungen