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.
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.
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.
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.
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.
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:
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:
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.
Machine Learning Engineer | Gründer von Amigocci.io | Für Networking & Rückfragen: linkedin