Bewertung und Vergleich verschiedener Arten faltender künstlicher neuronaler Netze zur Regression der Picklänge kardiovaskulärer Implantate basierend auf Kamerabildern und Deep Learning
Zusammenfassung: Die Sicherung der Qualität bei Stents ist von großer Bedeutung sowohl für den Hersteller, als auch für den Patienten. Hierbei ist der Vorgang der visuellen Inspektion aufwendig und fehleranfällig, weshalb der Vorgang automatisiert werden soll, um die Reproduzierbarkeit der Prüfung zu verbessern und ein genaueres Prüfergebnis zu erzielen. Als grundlegende Qualitätsmerkmale gelten in der Geometrie von Stents der Flechtwinkel und die Picklänge. In der vorliegenden Arbeit wurden unterschiedliche faltende neuronale Netze implementiert und trainiert, um eine Regression der betrachteten Picklänge im Stent durchzuführen. Diese wurden darauffolgend getestet, sodass die Ergebnisse bewertet und verglichen werden konnten. Hierfür war die Erstellung eines Datensatzes, dessen Erweiterung durch Augmentation und die Vorverarbeitung der Bilddaten notwendig. Durch die Evaluation konnte ein neuronales Netz gewonnen werden, das in der Lage ist, die Länge des mittleren Picks eines Bildes mit einer Genauigkeit von 1,764 Pixel oder 0,077 Millimeter innerhalb von 18,9 Millisekunden zu bestimmen. Im Anschluss der Arbeit ist es möglich, eine vereinfachte Form der Fehlerlokalisierung durchzuführen.
Benötigte Bibliotheken
- Tensorflow-gpu 2.3.0 pip install opencv-python pip install glob2 pip install matplotlib pip install numpy pip install pandas pip install pathlib pip install DateTime pip install scikit-learn pip install scikit-optimize pip install Pillow pip install scikit-image pip install keras pip install seaborn pip install joblib
Anleitung zum Trainieren der Netze:
-
Bilder_Labeln\preprocess_images.py: path_cropped, path_augmented, labels_path und aug_labels_path müssen neu definiert werden. Nach dem Ausführen dieses Skriptes sollten sich ein solcher Aufbau ergeben:
- Augmented180
- Cropped
- Mein_Code (der Ordner bei dem "alles andere" enthalten ist)
- AlexNet
- EfficientNet ...
- data_pipeline.py ...
-
Die json-Datei mit den Labels zu den augmentierten Bildern muss im Augmented180- Ordner eingefügt werden. Die Datei mit den Labels der vorgeschnittenen Bilder muss im Cropped-Ordner eingefügt werden.
-
In data_pipeline.py muss die Variable path umgeschrieben werden. Sie muss auf den Ordner zeigen auf dem sich die Augmented180, Cropped und Mein_Code Ordner befinden. Nach der Ausführung dieses Skriptes sollten drei TFRecord Datein im Mein_Code-Ordner erstellt worden sein: train, val, test. Bei mir sind diese Dateien 2.442.074, 522.727 und 523.625 KB groß.
-
data_pipeline_names.py erzeugt eine "img_names.csv", welche allerdings bereits in der CD enthalten sein sollte.
-
Um die Netze zu trainieren ist kein weiterer Schritt notwendig. Die Skripte können einzeln ausgeführt werden. Innerhalb des logs Ordners wird ein Ordner mit dem Namen des Netzes und der Uhrzeit erstellt. Dort werden die Trainingsergebnisse und das trainierte Netz gespeichert. Im logs Ordner sind aktuell auch noch die Dateien zu meinenen Trainings- und Testrgebnisse.
-
Mithilfe der predict_diff.ipynb Datei können die Netze einzeln getestet und ausgewertet werden. Dort müssen zwei Pfade eingestellt werden. Der erste entspricht dem Ordner in dem das Modell geispeichert ist, wie z.B.: C:\Users\my_user\bwSyncAndShare\Bachelorarbeit-master\Bachelorarbeit-master\logs\VGG16 2021_03_16 T 19-24-05\VGG16
Der zweite Pfad entspricht dem Ordner in dem die restlichen Dateien zu diesem Netz liegen. Es ist der gleiche Pfad, aber um eine Ebene weniger. Beim oberen Beispiel würde der zweite Pfad wie folgt lauten: C:\Users\my_user\bwSyncAndShare\Bachelorarbeit-master\Bachelorarbeit-master\logs\VGG16 2021_03_16 T 19-24-05
Alle durch predict_diff.ipynb erzeugte Dateien werden hier gespeichert. Es werden allerdings nicht alle Graphen gespeichert. Die meisten werden nur in Jupyter Notebook angezeigt. Sie können jedoch mit plt.savefig gespeichert werden.
-
faulty_imgs.py verwendet den Testdatensatz, um Fehler bei einer festgelegten Toleranz zu erkennen. Der Pfad zur Datei an der ein Fehler erkannt wird und die Abweichung zum Soll-Wert werden in eine Textdatei ausgegeben. Die Pfade werden analog zu 6. gesetzt.