Ein praktischer Leitfaden zur Anomalieerkennung mit Anomalib (2023)

Eine kurze Einführung in die unbeaufsichtigte Anomalieerkennung und deren Anwendung.

Ein praktischer Leitfaden zur Anomalieerkennung mit Anomalib (1)

Veröffentlicht in

ML6team

·

10 Min. Lektüre

·

31. März 2022

--

Ein praktischer Leitfaden zur Anomalieerkennung mit Anomalib (3)

In industriellen Fertigungsprozessen ist Qualitätssicherung ein wichtiges Thema. Deshalb müssen kleine Fehler während der Produktion zuverlässig erkannt werden. Genau darauf zielt die Anomalieerkennung ab, indem sie anomale und fehlerhafte Muster erkennt, die sich von den normalen Proben unterscheiden. Dieses Problem steht vor einer Reihe einzigartiger Herausforderungen:

  1. Es ist oft schwierig, eine große Menge an anormalen Daten zu erhalten
  2. Der Unterschied zwischen einer normalen Stichprobe und einer anomalen Stichprobe kann sehr gering sein
  3. Die Art der Anomalien ist nicht immer im Voraus bekannt

Diese Herausforderungen erschweren das Training eines herkömmlichen Klassifikators und erfordern spezielle Methoden, um sie zu lösen.

Unbeaufsichtigte Methoden zur Erkennung und Lokalisierung von Anomalien können kategorisiert werden alsdiskriminierende und generative Methoden.

Diskriminierende MethodenVersuchen Sie, die Entscheidungsgrenze zwischen anomalen Stichproben und nominalen Stichproben zu modellieren. Diese Methoden extrahieren im Allgemeinen die Einbettungen aus einem Bild und vergleichen sie mit den Referenzeinbettungen aus den „guten“ Bildern. Die Entfernung wird als Anomaliebewertung verwendet. Diese Methoden liefern gute Ergebnisse bei der Erkennung von Anomalien, sind jedoch häufig nicht interpretierbar, da Sie nicht wissen, welcher Teil des Bildes die Anomalie verursacht hat. Ein Beispiel für eine solche Methode istSPATENDadurch wird zum Testzeitpunkt ein K-Nearest-Neighbor-Clustering (K-NN) für den gesamten Satz von Einbettungsvektoren ausgeführt. Dies bedeutet, dass die Inferenzkomplexität linear mit der Größe des Trainingssatzes skaliert. In der Fertigung ist oft eine hohe Inferenzgeschwindigkeit wichtig, was den Nutzen dieser Methode stark einschränkt.

Generative MethodenVersuchen Sie, die tatsächliche Verteilung jeder Klasse zu modellieren, aus der dann Stichproben entnommen werden können, z. B. um neue Bilder zu generieren. Anomalieerkennungsansätze, die diese Modelle verwenden, basieren auf der Idee, dass die Anomalien nicht generiert werden können, da sie nicht im Trainingssatz vorhanden sind.Autoencoder-basiertAnsätze versuchen, Anomalien zu erkennen, indem sie die Ausgabe eines Autoencoders mit seiner Eingabe vergleichen. Ein hoher Rekonstruktionsfehler sollte auf eine anomale Region hinweisen.GAN-basiertAnsätze gehen davon aus, dass nur positive Proben generiert werden können. Obwohl diese generativen Methoden sehr intuitiv und interpretierbar sind, ist ihre Leistung dadurch begrenzt, dass sie manchmal auch bei anomalen Bildern gute Rekonstruktionsergebnisse liefern.

In diesem Abschnitt werden drei hochmoderne Methoden ausführlicher besprochen. Es werden zwei diskriminierende Ansätze und ein generativer Ansatz beschrieben. Diese Methoden wurden so gewählt, wie sie sindrepräsentieren den neuesten Stand der Technikbei der Erkennung von Anomalien und verfügt gleichzeitig über eine praktische Implementierung.

Erzähl es mir nicht

Vor PaDiM wurden mehrere diskriminierende Ansätze vorgeschlagen, die entweder ein tiefes neuronales Netzwerktraining erfordern, was umständlich sein kann, oder K-NN für einen großen Datensatz verwenden, was die Inferenzgeschwindigkeit erheblich verringert. Diese beiden Herausforderungen könnten den Einsatz der Algorithmen in einer industriellen Umgebung behindern.Patch-Verteilungsmodellierung (PaDiM)zielt darauf ab, diese Herausforderungen zu lösen. Sie verwenden ein vorab trainiertes CNN (ResNet, Wide-ResNet oder ein EfficientNet) zur Einbettung der Extraktion basierend auf der ImageNet-Klassifizierung. Das Bild wird in Patches unterteilt und für jeden Patch werden Einbettungen extrahiert. PaDiM nutzt alle Schichten des vorab trainierten CNN. Dies geschieht, um sowohl globale Zusammenhänge als auch feinkörnige Details zu erfassen. Da dort möglicherweise viele redundante Informationen enthalten sind, werden die Einbettungen durch zufällige Auswahl unterabgetastet. Interessanterweise funktionierte dies genauso gut wie Dimensionsreduktionstechniken wie PCA, war aber schneller. Es wird davon ausgegangen, dass alle Einbettungsvektoren aus einer multivariaten Gaußschen Verteilung abgetastet werden. Sie schätzen dieStichprobenmittelwert und StichprobenkovarianzParameter dieser Verteilung für jeden Patch. Das Ergebnis ist, dass jeder Patch im Satz von Trainingsbildern durch eine multivariate Gaußsche Verteilung beschrieben wird.

Ein praktischer Leitfaden zur Anomalieerkennung mit Anomalib (4)

Der Anomaliewert während der Inferenz wird jetzt basierend auf zugewiesenMahalanobis-Entfernungzwischen der Einbettung eines Test-Patches und der erlernten Verteilung für diesen Patch-Speicherort. Der endgültige Anomaliewert ist das Maximum der Anomaliekarte. Das Ergebnis ist ein Algorithmus, bei dem die Skalierbarkeitsprobleme der KNN-basierten Methoden nicht auftreten, da keine große Menge an Distanzwerten sortiert werden muss, um die Anomaliebewertung eines Patches zu erhalten.

PatchCore

Ähnlich wie PaDiM,PatchCoreunterteilt die Bilder in Patches. Die Idee von PatchCore besteht darin, dass, wenn ein einzelner Patch anomal ist, das gesamte Bild als anomal klassifiziert werden kann. PatchCore versucht, die gleichen Herausforderungen zu lösen, mit denen PaDiM konfrontiert ist. Das Ziel von PatchCore ist dreifach:

  1. Maximieren Sie die zum Testzeitpunkt verfügbaren nominalen Informationen.PaDiM beschränkt die Erkennung von Anomalien auf Patch-Ebene auf Mahalanobis-Abstandsmaße, die für jedes Patch spezifisch sind. In PatchCore werden die während der Trainingsphase extrahierten Funktionen in einer Speicherbank gespeichert, die zum Testzeitpunkt allen Patches gleichermaßen zur Verfügung steht.
  2. Reduzierung der Vorurteile gegenüber ImageNet-Klassen.Ähnlich wie bei PaDiM wird für die Einbettungsextraktion ein vorab trainiertes CNN verwendet. Ein Nachteil davon ist die Voreingenommenheit gegenüber ImageNet-Klassen. Um diese Verzerrung zu reduzieren, werden nur Features mittlerer Ebene verwendet, da Features niedrigerer Ebene im Allgemeinen zu umfassend und Features höherer Ebene zu spezifisch für ImageNet sind.
  3. Behalten Sie hohe Inferenzgeschwindigkeiten bei.PatchCore führt Coreset-Unterabtastung ein, die sich der Struktur des Originaldatensatzes annähert und gleichzeitig die Größe erheblich reduziert. Dies verringert die Kosten einer Suche nach dem nächsten Nachbarn, was zu höheren Inferenzgeschwindigkeiten führt.

Während des Trainings werden Einbettungen mithilfe eines vorab trainierten CNN extrahiert, mithilfe von Coreset-Unterabtastung unterabgetastet und in einer Speicherbank gespeichert. Während der Inferenz wird eine Suche nach dem nächsten Nachbarn in der Speicherbank durchgeführt. Diese Architektur ist im Bild unten dargestellt.

Ein praktischer Leitfaden zur Anomalieerkennung mit Anomalib (5)

CFlow-AD

Bisher haben wir über diskriminierende Modelle gesprochen. Das letzte Modell in diesem Vergleich ist ein anderer Typ, es ist ein generatives Modell. Ein generatives Modell sagt Ihnen, wie wahrscheinlich das Auftreten eines bestimmten Beispiels ist. Beispielsweise sind Modelle, die das nächste Wort in einer Folge vorhersagen, typischerweise generative Modelle, da sie einer Wortfolge eine Wahrscheinlichkeit zuweisen können. Zu den Arten generativer Netzwerke, die zur Anomalieerkennung verwendet werden, gehören Variational AutoEncoder (VAE), Generative Adversarial Networks (GANs) und normalisierte Flüsse.CFlow-ADbasiert auf der letzten Art von Netzwerken, den normalisierten Flüssen.

CFlow-AD basiert auf einem bedingt normalisierenden Flussnetzwerk. Normalisierte Strömungsnetzwerke können aufgrund einiger günstiger mathematischer Eigenschaften mit VAE verglichen werden. Eine hervorragende Erklärung normalisierter Flüsse finden Sie unterdieser Blog. Ähnlich wie bei den vorherigen Ansätzen wird ein Encoder verwendet, der auf ImageNet vorab trainiert wurde. Die Einbettungsvektoren werden dann mithilfe einer herkömmlichen Positionskodierung (PE) in bedingte Vektoren kodiertBedingtFluss. Der Decoder ist ein normalisierter Flussdecoder, der die Wahrscheinlichkeit der codierten Merkmale schätzt. Die geschätzten Mehrskalenwahrscheinlichkeiten werden auf die Eingabegröße hochgerechnet und summiert, um die Anomaliekarte zu erstellen. Dieser Vorgang ist unten dargestellt.

Ein praktischer Leitfaden zur Anomalieerkennung mit Anomalib (6)

Offizielle Implementierungen für alle diese Methoden sind auf GitHub verfügbar. Es gibt jedoch eine neuartige Open-Source-Python-Bibliothek namensAnomalibdas alle oben genannten Algorithmen auf leicht zugängliche Weise implementiert. Anomalib enthält eine Reihe von Anomalieerkennungsalgorithmen, von denen oben eine Teilmenge vorgestellt wurde. Ziel der Bibliothek ist es, Komponenten zum Entwerfen benutzerdefinierter Algorithmen für spezifische Anforderungen, Experiment-Tracker, Visualisierer und Hyperparameter-Optimierer bereitzustellen, die alle auf die Erkennung von Anomalien abzielen.

Datensatz

Ein beliebter Datensatz zur Anomalieerkennung in Fertigungsprozessen ist derMVTec-Datensatzmit Fabrikfehlern. Es enthält über 5000 hochauflösende Bilder, unterteilt in zehn verschiedene Objekt- und fünf Texturkategorien. Jede Kategorie umfasst einen Satz fehlerfreier Trainingsbilder und einen Testsatz von Bildern mit verschiedenen Arten von Fehlern sowie Bildern ohne Fehler. Die folgenden Experimente werden mit den Texturkategorien „Schraube“ und „Teppich“ durchgeführt.

Metrisch

Die zum Vergleich verwendete Metrik ist die Area unter der Betriebskennlinie des Empfängers(AUROC), wobei die wahre positive Rate der Prozentsatz der Pixel ist, die korrekt als anomal klassifiziert wurden.

Erste Schritte mit Anomalib

Um Anomalib nutzen zu können, benötigen Sie mindestensPython 3.8+und ein Klon vondas Repository. Installieren Sie die Anforderungen imAnforderungenOrdner. Es ist auch möglich, die Bibliothek mit zu installierenpip anomalib installierenAufgrund der aktiven Weiterentwicklung der Bibliothek wird dies jedoch erst ab Version 0.2.5 empfohlen. Die Modelle befinden sich inanomalib\models\ModelNamewo jedes der Modelle implementiert ist und es eine begleitende Version gibtconfig.yamlDiese Konfigurationsdatei enthält Informationen über den Datensatz (standardmäßig MVTec), Modellparameter und die Trainings-/Testparameter. Für die folgenden Experimente wurden die Standardmodell-, Trainings- und Testparameter verwendet. Standardmäßig erwarten alle Modelle den MVTec-Datensatz inDatensätze\MVTec. Sie können den Datensatz herunterladenHier.

Nachdem Sie die Anforderungen installiert, den Datensatz eingerichtet und die Konfigurationsdatei nach Bedarf geändert haben, können Sie ein bestimmtes Modell trainieren, indem Sie Folgendes verwenden:

python tools/train.py --model 

Die resultierenden Gewichte und Testbilder werden in gespeichertErgebnisse\. Wenn Sie bereits über ein trainiertes Modell verfügen, können Sie eine Inferenz auf ein neues Bild ausführen, indem Sie Folgendes verwenden:

python tools/inference.py \
--model_config_path \
--weight_path \
--image_path

Ergebnisse

In diesem Abschnitt wird die Implementierung der drei zuvor besprochenen Modelle verglichen und mit den Ergebnissen in ihren jeweiligen Artikeln verglichen. Der MVTec-Datensatz enthält 10 Objekt- und 5 Texturklassen. Der Vergleich vergleicht die AUROC der drei Modelle und wird für die Objektklasse „Screw“ (320 Zugbilder) und die Teppichtexturklasse (245 Zugbilder) durchgeführt. Alle Tests werden auf einem Google Colab mit einem Nvidia K80, 2 Threads und 13 GB RAM ausgeführt. Die resultierenden Tabellen sind unten aufgeführt.

Ein praktischer Leitfaden zur Anomalieerkennung mit Anomalib (7)
Ein praktischer Leitfaden zur Anomalieerkennung mit Anomalib (8)

*Im Originalpapier von PaDiM wurden nur Durchschnittsergebnisse für alle Klassen auf Bildebene veröffentlicht

Wie erwartet sind die Ergebnisse der Anomalib-Implementierung den Implementierungen in den Originalarbeiten sehr ähnlich. Zwei Beispielausgaben von PaDiM sind unten dargestellt.

Ein praktischer Leitfaden zur Anomalieerkennung mit Anomalib (9)
Ein praktischer Leitfaden zur Anomalieerkennung mit Anomalib (10)

Neben den Leistungsergebnissen ist auch die Geschwindigkeit ein wichtiger Faktor beim Einsatz der Modelle in realen Szenarien. Die folgende Tabelle enthält sowohl die Trainingszeit als auch die Inferenzgeschwindigkeit für den Testsatz (Schrauben). Beachten Sie, dass diese Ergebnisse mit der standardmäßigen Anomalib-Konfigurationsdatei erzielt wurden und verbessert werden könnten, z. B. durch Ändern des CNN-Backbones, der Batch-Größe oder der Teilstichprobengröße.

Ein praktischer Leitfaden zur Anomalieerkennung mit Anomalib (11)

Ein signifikanter Unterschied ist in der Trainingszeit zu erkennen, der anhand der obigen Modellbeschreibungen erklärt werden kann. Alle Modelle verwenden ein vorab trainiertes CNN als Encoder, woraufhin PaDiM zufällig eine Reihe von Merkmalen auswählt und die multivariaten Gaußschen Verteilungen erstellt. PatchCore verfügt über eine ähnliche Funktionalität, verwendet jedoch Coreset-Unterabtastung, was mehr Trainingszeit erfordert. CFlow-AD war ein generatives Modell, das auf der Normalisierung von Flüssen basierte. Dies bedeutet, dass die Decoder an den Trainingssatz angepasst werden müssen, was die Trainingszeit erheblich verlängert.

Beim Vergleich der Inferenzgeschwindigkeit ist PaDiM wiederum am schnellsten, da Sie für jeden Patch nur die Mahalanobis-Distanz zur gelernten Verteilung berechnen müssen. PatchCore verfügt über mehr Informationen in der Speicherbank und führt die nächsten Nachbarn aus, was langsamer ist. Bei CFlow erfordert die Verwendung des generativen Netzwerks ähnlich wie beim Training mehr von der GPU und hat eine geringere Inferenzgeschwindigkeit. Beachten Sie, dass dieser Geschwindigkeitsvergleich mit der Standardkonfigurationsdatei durchgeführt wurde, die möglicherweise nicht für alle Situationen die perfekte Konfiguration ist. Das CFlow-AD-Papier stellt beispielsweise fest, dass sie mit einem leichteren Encoder (MobileNetV3L oder ResNet-18) 12 fps auf einer GTX 1080 erreichten.

In diesem Blogbeitrag haben wir drei hochmoderne Methoden zur Anomalieerkennung verglichen: PaDiM, PatchCore und CFlow-AD. Während PaDiM und PatchCore den diskriminierenden Ansatz verfolgen, verwendet CFlow-AD ein generatives normalisierendes Flussnetzwerk, um die Anomalien zu erkennen. Beim Vergleich der Ergebnisse ist die Leistung aller drei sehr ähnlich. In der neueren Literatur wird PaDiM als Basis betrachtet und sowohl PatchCore als auch CFlow-AD versuchen, dies zu verbessern und sind in den meisten Bereichen erfolgreich, mit Ausnahme der Geschwindigkeit. Aufgrund seiner Einfachheit lässt sich PaDiM schnell trainieren und bietet bei Verwendung der Standardkonfigurationen die höchste Inferenzgeschwindigkeit. Aufgrund der Implementierung könnte es empfindlicher auf Ausrichtung/Rotation reagieren, was beispielsweise PatchCore zu lösen versucht. Wie immer hängt die Entscheidung für das perfekte Modell von der Situation ab. Anomalib bietet jedoch einen einfachen Zugriff auf diese Modelle, sodass Sie diese Entscheidung treffen können.

Die jetzigeHöchster Performer im MVTec-DatensatzIstFastFlow. Zum Zeitpunkt des Verfassens dieses Blogbeitrags war Fastflow in Anomalib noch nicht verfügbar, allerdings gab es bereits einen Zweig mit einer vorläufigen Implementierung, was darauf hindeutet, dass es bald verfügbar sein wird. Fastflow verwendet normalisierende Flows ähnlich wie CFlow-AD und versucht, diese zu verbessern.

GoogleAusschneiden Einfügenführt einen zweistufigen Rahmen ein. Der Algorithmus heißt CutPaste aufgrund einer einfachen Datenerweiterungsstrategie, die einen Bildausschnitt ausschneidet und den Fleck an einer zufälligen Stelle eines großen Bildes einfügt, was als Anomalie dient. Ein CNN wird mit dieser Erweiterung selbstüberwacht trainiert. In der zweiten Stufe übernehmen sie Ein-Klassen-Klassifizierungsalgorithmen wie OneClass SVM unter Verwendung der Einbettungen der ersten Stufe.

Top Articles
Latest Posts
Article information

Author: Fredrick Kertzmann

Last Updated: 21/05/2023

Views: 5994

Rating: 4.6 / 5 (46 voted)

Reviews: 85% of readers found this page helpful

Author information

Name: Fredrick Kertzmann

Birthday: 2000-04-29

Address: Apt. 203 613 Huels Gateway, Ralphtown, LA 40204

Phone: +2135150832870

Job: Regional Design Producer

Hobby: Nordic skating, Lacemaking, Mountain biking, Rowing, Gardening, Water sports, role-playing games

Introduction: My name is Fredrick Kertzmann, I am a gleaming, encouraging, inexpensive, thankful, tender, quaint, precious person who loves writing and wants to share my knowledge and understanding with you.