Dieses Repository enthält den Code und das Modell für einen Convolutional Autoencoder (CAE), der für die Rekonstruktion von Bildern verwendet wird. Der Autoencoder wurde mit PyTorch implementiert, trainiert und anschließend für die Anomalieerkennung verwendet. Der Datensatz, der für dieses Projekt verwendet wurde findet sich unter dem folgendem Link Screw (186 MB). Ziel des Projektes ist es den Einfluss von Attribute Noise auf die Anomalieerkennung mithilfe eines CAE zu untersuchen. Hierzu wurden die Trainingsdaten mithilfe des Programms "Transformation.py" verunreinigt.
Ein Autoencoder ist ein neuronales Netzwerk, das verwendet wird, um Daten zu komprimieren und zu rekonstruieren. Im Falle eines CAE wird der Autoencoder speziell für die Verarbeitung von Bildern entwickelt. Der Encoder nimmt ein Eingangsbild entgegen und komprimiert es auf eine niedrigdimensionale Darstellung, die als Latent Space bezeichnet wird. Der Decoder nimmt die Latent Space-Repräsentation entgegen und rekonstruiert das Bild aus dieser Darstellung.
Dieses Projekt verwendet einen CAE, um Bilder zu rekonstruieren. Der Autoencoder wird mit einem Trainingsdatensatz trainiert und anschließend verwendet, um Testbilder zu rekonstruieren. Das Modell wird mit dem SSIM-Verlust (Structural Similarity Index) trainiert, der die strukturelle Ähnlichkeit zwischen den rekonstruierten Bildern und den Originalbildern erfasst.
Um den Code in diesem Repository auszuführen, sind die folgenden Voraussetzungen erforderlich:
- Python 3.7 oder höher
- PyTorch
- Torchvision
- NumPy
- Pandas
- Matplotlib
- scikit-image
- pytorch-msssim
Für die Datenvorverarbeitung und statistische Verunreinigung der Trainingsdaten wird die Datei Transformation.py benötigt. In diesem Code werden eine Reihe von Bildtransformationen auf eine Teilmenge von Trainingsbildern im angegebenen Eingabeordner angewendet. Die transformierten Bilder werden anschließend im angegebenen Ausgabeordner gespeichert und können für das Training des Autoencoders verwendet werden. Separat von dem Trainingsdatensatz, der nur intakte Schrauben enthält, stellt der Datensatz Screw (186 MB) auch gelabelte Testdaten zur Verfügung. Diese Testdaten können mithilfe der Datei Test.py verwendet werden, um die Leistungsfähigkeit des Autoencoders zu überprüfen.
-
Stellen Sie sicher, dass Ihr Trainingsdatensatz und Testdatensatz ordnungsgemäß vorbereitet sind. Sie müssen die Pfade zu den Ordnern angeben, in denen die Bilder gespeichert sind.
-
Öffnen Sie die Datei Train.py und geben Sie den Pfad zu Ihrem Trainingsdatensatz und Testdatensatz im Abschnitt "Definieren des Trainingsdatensatzes und Testdatensatzes über die Pfade" an.
-
Sie können die Parameter für die Bildvorverarbeitung und das Training des Autoencoders im Code anpassen, wenn gewünscht. Dazu gehören IMG_RESIZE, BATCH_SIZE, NUM_EPOCHS, usw.
-
Führen Sie das Training aus, indem Sie die Train.py Datei ausführen. Der Autoencoder wird auf dem Trainingsdatensatz trainiert, und der Fortschritt wird auf der Konsole ausgegeben. Das Modell wird auch regelmäßig auf dem Testdatensatz evaluiert und das beste Modell wird gespeichert. Wichtig ist zu beachten, dass alle Pfade korrekt angegeben sind.
-
Testen Sie das trainierte Modell mithilfe der Datei Test.py Beachten Sie hierbei das Sie die richtigen Pfade zu dem Modell und den Ordner der Testdaten angeben.
Dieser Code definiert einen Autoencoder in PyTorch, der aus einem Encoder und einem Decoder besteht. Der Encoder komprimiert die Eingabedaten in eine kleinere Darstellung durch eine Reihe von Convolutional Neural Networks (CNNs). Der Decoder erhält diese komprimierte Darstellung als Input und gibt einen Output in der Form einer Approximation an die ursprünglichen Daten aus.
Die Strukturähnlichkeitsmetrik (SSIM) wird zur Bewertung der Qualität der rekonstruierten Bilder verwendet. Im Gegensatz zum Mean Squared Error (MSE) berücksichtigt SSIM sowohl die Pixelunterschiede als auch die strukturellen Informationen in den Bildern, welches zu einer besseren Übereinstimmung mit der menschlichen Wahrnehmung von Bildqualität führt. Daher kann die Verwendung von SSIM als Verlustfunktion dazu führen, dass der Autoencoder Bilder erzeugt, die natürlicher und realistischer aussehen. Die genaue Struktur ist in der Codedatei Train.py wiederzufinden.
Die Ergebnisse des Trainings und der Rekonstruktion werden im save_dir_Ordner gespeichert. Sie können die trainierten Modelle und die rekonstruierten Bilder in diesem Ordner finden. Es werden die orginalen, rekonstruierten und SSIM Bilder nebeneinander angezeigt bzw. gespeichert.
- Johannes Vos
- Khai-Phong Nguyen
- Felix Kirmaier
- Muhamed Saleh