Klassifikation der Lungenentzündung im Röntgenthorax | von Kaan Topçu | Juni 2023

0
34


In diesem Projekt wird mithilfe von Röntgenbildern eine Klassifizierung angewendet, um festzustellen, ob ein Affected person an einer Lungenentzündung leidet oder nicht. Für das Projekt wird ein Datensatz von Kaggle verwendet, der 5856 Röntgenbilder des Brustkorbs enthält.

Es gibt im Wesentlichen drei Forschungsfragen, die im Folgenden beantwortet und im Element erläutert werden sollen:

· Erzielen unterschiedliche Netzwerke eine ähnliche/gleiche Leistung?

· Beeinflusst die Anwendung von Transferlernen die Leistung?

· Hat die Verwendung tiefer Netzwerke ohne Vortraining auf ImageNet eine ähnliche Leistung wie die vorab trainierte Model?

Um diese Fragen beantworten zu können, werden zunächst Methoden der Datenvorverarbeitung durchgeführt, um in weiteren Modellierungsstudien bessere Ergebnisse zu erzielen. Anschließend werden verschiedene Modelle ausgeführt und schließlich werden die Modelle mit geeigneten Metriken bewertet und die Ergebnisse entsprechend interpretiert.

Nach dem Importieren der erforderlichen Pakete werden einige Vorverarbeitungs- und Datenexplorationsschritte durchgeführt. Der Datensatz für die Analyse besteht wie oben erwähnt aus 5856 Röntgenbildern. Zunächst wird der Datensatz in Trainings- und Testsatz aufgeteilt. Der Trainingssatz besteht aus 3883 Röntgenbildern, die eine Lungenentzündung aufweisen, und 1349 Röntgenbildern, die keine Lungenentzündung aufweisen und für die Analyse als regular gelten. Wie in Abbildung 1 zu sehen ist, hat das Bild mit der Lungenentzündung einen Anteil von 74,2 % im Trainingsdatensatz mit einer Größe von 5232.

Abbildung 1: Das Verhältnis von Lungenentzündung und normalen Bildern im Trainingsdatensatz

Ebenso enthält der Testsatz 390 Lungenentzündungen und 234 normale Röntgenbilder, wie in Abbildung 2 dargestellt, additionally insgesamt 624.

Abbildung 2: Die Anzahl der Bilder von Lungenentzündungen und normalen Bildern im Testdatensatz

Der Trainingsdatensatz wird außerdem in Trainings- und Validierungssätze mit einem Verhältnis von 0,2 aufgeteilt. Nach der Aufteilung des Datensatzes beträgt die Anzahl der Bilder im Trainings- und Validierungssatz 4186 bzw. 1046.

In Abbildung 3 ist ein Beispielbild aus dem Trainingsdatensatz zu sehen, das keine Lungenentzündung aufweist (die für die Analyse als regular angesehen wird).

Abbildung 3: Ein Beispiel-Röntgenbild einer Particular person ohne Lungenentzündung

Bevor mit der Datenmodellierung fortgefahren wird, werden die Bilder für beide Klassen in allen drei Datensätzen (Coaching, Check und Validierung) auf 100 x 100 verkleinert, da sie dieselbe Kind haben müssen. Nach der Größenänderung der Bilder werden diese in Tensoren umgewandelt, deren Tensorwerte im Bereich von 0 und 1 liegen.

Die Verteilung der Pixelintensitäten im Normalbild ist auch in Abbildung 4 zu sehen. Wie in der Abbildung zu sehen ist, betragen die Pixelmittelwerte und Pixelstandardabweichungen 128,2 bzw. 55,8.

Abbildung 4: Die Verteilung der Pixelintensitäten im Beispielbild

Nach all diesen Vorverarbeitungsschritten ist es möglich, mit der Definition der Optimierer, Verlustfunktionen, Netzwerkaufbau und Modellierung fortzufahren.

Nach dem Import der Röntgenbilder ist es an der Zeit, die Architektur zu erstellen. Im Projekt wird Convolutional Neural Community (CNN oder ConvNet) verwendet. CNNs sind komplexe Feed-Ahead-Neuronale Netze, die aufgrund ihrer hohen Genauigkeit zur Bildklassifizierung und -erkennung eingesetzt werden. Das im CNN aufgebaute Modell funktioniert wie ein Trichter, der am Ende eine vollständig verbundene Schicht ergibt, in der alle Neuronen miteinander verbunden sind und die Ausgabe verarbeitet wird. Das im Projekt aufgebaute Netzwerk ähnelt in etwa dem in Abbildung 5.

Abbildung 5: Grundlegende CNN-Architektur

Nach Berücksichtigung verschiedener Verlustfunktionen wird für das Projekt die Kreuzentropieverlustfunktion ausgewählt. Die Formel für die Verlustfunktion lautet wie folgt:

𝑳=−(𝐲(𝐥𝐨𝐠(𝒑)+(𝟏−𝒚)𝐥𝐨𝐠⁡(𝟏−𝒑))

In der Funktion ist y ein binärer Wert, der angibt, ob die Beobachtung korrekt klassifiziert ist. p ist die vorhergesagte Wahrscheinlichkeitsbeobachtung jeder Klasse. Der Grund für die Wahl der Kreuzentropieverlustfunktion ist, dass sie eine gute Verlustfunktion für Klassifizierungsprobleme ist, da sie den Abstand zwischen zwei Wahrscheinlichkeitsverteilungen, der vorhergesagten und der tatsächlichen, minimiert. Es misst die Leistung eines Klassifizierungsmodells, dessen Ausgabe ein Wahrscheinlichkeitswert zwischen 0 und 1 ist.

Während des gesamten Projekts wird der Adam-Optimierer mit den Standardwerten angewendet:

· Lernrate: 0,001,

· Beta1: 0,9, Beta2: 0,999,

· Epsilon: 1e-8

Wie im Einführungsteil erwähnt, konzentriert sich die erste Forschungsfrage auf die Leistung verschiedener CNNs. Um diese Frage zu beantworten, wird zunächst ein einfaches CNN mit drei Faltungsschichten erstellt, das 25 Epochen lang läuft. Die Architektur des Netzwerks ist in Abbildung 6 zu sehen.

Abbildung 6: Die Architektur von Easy CNN

Das Modell wird über 25 Epochen ausgeführt und ist in Abbildung 7 dargestellt. Die Genauigkeit steigt von 48 % auf 86 %. Nachdem eine gute Verbesserung erzielt wurde, werden zur Beantwortung der zweiten Forschungsfrage die vorab trainierten Netzwerke verwendet und ausgeführt, um ihre Leistung zu überprüfen.

Die zweite Forschungsfrage besteht darin, die Leistung der vortrainierten Netzwerke zu analysieren, die den Effekt des Transferlernens untersuchen. Switch Studying wird verwendet, um die Gewichte zuvor trainierter Netzwerke auf großen Datenmengen auf ein anderes Modell zu übertragen. Bei der Anwendung des Transferlernens sollten zwei Hauptaspekte berücksichtigt werden. Erstens hängt die Übertragbarkeit zwischen Aufgaben von der neuronalen Architektur ab, die für die Darstellung verwendet wird. Bestimmte Netzwerke führen Transferlernen besser durch als andere Netzwerke. Um die Leistung eines vorab trainierten Netzwerks für dieses Projekt zu ermitteln, wurden drei Netzwerke ausgewählt: VGG-16, ResNet-50 und EfficientNet-b1. Das zweite Drawback ist die Domänendiskrepanz zwischen Bilddaten in den Quellaufgaben, ImageNet für diese drei Netzwerke und Röntgenbildern. Während sich die Röntgenbilder im medizinischen Bereich befinden, gehören die 1000 Klassen in der ImageNet-Datenbank größtenteils zum allgemeinen Bereich wie Katze, Hund, Stuhl usw. Dieser Unterschied könnte sich negativ auf die Übertragbarkeit auswirken. Bei diesem Projekt liegt der Fokus auf dem ersten Anliegen. Um jedoch mit der Domänendiskrepanz umzugehen, kann nach der Verwendung eines vorab trainierten Netzwerks auf ImageNet wie VGG-16 ein erneutes Coaching auf einem medizinischen Datensatz wie Lung Nodule Malignancy durchgeführt werden.

Nach dem Ausführen der drei Netzwerke mit vorab trainiertem ImageNet über 25 Epochen werden die Leistungsmetriken in Abbildung 6 erhalten. Wie in Abbildung 7 zu sehen ist, ist das VGG-16-Netzwerk das leistungsstärkste Netzwerk, auch wenn es hinsichtlich der Leistung keinen solchen Unterschied zwischen den vorab trainierten Netzwerken gibt. Ähnlich wie VGG-16 schneiden die beiden anderen tiefen Netzwerke besser ab als Easy CNN.

Abbildung 7: Leistung vorab trainierter Netzwerke

Das auf dem ImageNet-Datensatz vorab trainierte VGG-16-Netzwerk weist eine Genauigkeit von etwa 91 % auf. Die Verwirrungsmatrix der vorhergesagten und tatsächlichen Bezeichnungen ist in Abbildung 8 zu sehen. Wie in Abbildung 8 zu sehen ist, beträgt „richtig positiv“ und „wahr negativ“ 389 bzw. 178.

Abbildung 8: Verwirrungsmatrix von VGG-16

Die dritte Forschungsfrage für das Projekt besteht darin, zu analysieren, ob die tiefen Netzwerke ohne Vortraining auf ImageNet genauso intestine funktionieren würden wie die vorab trainierten Versionen. Diejenigen, die nicht auf ImageNet vorab trainiert wurden, haben zufällig initialisierte Gewichte und wurden über 25 Epochen mit dem Datensatz „Röntgenpneumonie“ trainiert. Nach dem Coaching der Netzwerke über 25 Epochen erhält man die Leistungsmaße in Abbildung 8. Wie in Abbildung 9 zu sehen ist, würden die Netzwerke mit den zufällig initialisierten Gewichten im Vergleich zu den auf ImageNet vorab trainierten Netzwerken eine schlechtere Leistung erbringen. Der Rückgang der Leistungskennzahlen beträgt etwa 8 % bis 10 %.

Abbildung 9: Leistung vorab trainierter Netzwerke

Es gibt vor allem drei Punkte, die gerne angesprochen werden würden, aber in diesem Projekt nicht berücksichtigt werden.

Die erste Möglichkeit besteht darin, beim Transferlernen wie oben erwähnt einen Quelldatensatz zu verwenden, der sich in einer ähnlichen Domäne wie der Zieldatensatz befindet. Der Datensatz „Lungenknotenmalignität“ kann ein guter Ausgangspunkt für die Beurteilung des Issues sein.

Der zweite Punkt, der nicht im Projekt enthalten ist, aber weiter analysiert werden sollte, betrifft die Anzahl der Bilder. Der beste Weg, die Anzahl der Bilder zu erhöhen, ist die Datenerweiterung. Es gibt viele Möglichkeiten zur Datenanreicherung zur Bildklassifizierung. Sie können in zwei Typen eingeteilt werden: räumliche Transformationen und Transformationen auf Pixelebene. Rotation, Translation, Skalierung, Spiegeln, Zuschneiden, Scheren und perspektivische Transformation sind die Hauptmethoden der räumlichen Transformation. Diese räumlichen Transformationen können sowohl bei allgemeinen Bildklassifizierungsaufgaben als auch bei medizinischen Bildklassifizierungsaufgaben angewendet werden, da sie den semantischen Inhalt der Bilder nicht verändern. Bei der Anwendung von Transformationen wie Spiegeln oder Drehen im medizinischen Bereich ist jedoch Vorsicht geboten, da anatomische Strukturen möglicherweise bestimmte Ausrichtungen haben, die nicht verändert werden sollten. Farbzittern, Helligkeits-/Kontrastanpassung, Gaußsches Rauschen, Unschärfe, Schärfung und elastische Transformationen sind die Hauptmethoden für Transformationen auf Pixelebene. Transformationen auf Pixelebene können auch bei allgemeinen und medizinischen Bildklassifizierungsaufgaben angewendet werden. Bestimmte Transformationen auf Pixelebene wie Farbzittern oder Helligkeits-/Kontrastanpassungen müssen jedoch möglicherweise sorgfältig ausgewählt und im medizinischen Bereich angewendet werden, um sicherzustellen, dass die veränderten Bilder diagnostisch related bleiben.

Der letzte Punkt, der als zukünftige Arbeit erwähnt werden möchte, ist das teilweise Coaching der tiefen Netzwerke. Wie in Abbildung 7 zu sehen ist, ist die Anzahl der Parameter der tiefen Netzwerke im Vergleich zu Easy CNN sehr hoch. Es könnte additionally in Betracht gezogen werden, die ersten Schichten einzufrieren und nur die letzten Schichten der tiefen Netzwerke zu trainieren. Das Einfrieren der ersten Schichten und das Coaching nur der letzten Schichten wäre kostengünstiger. In einem solchen Fall wird erwartet, dass die Leistung des Modells abnimmt, es sollte jedoch unter Berücksichtigung der Topologie des Netzwerks für verschiedene Netzwerke mit unterschiedlichen Schichtaufteilungspunkten getestet werden.

In diesem Projekt wird unter Verwendung der Röntgenbilder von Kaggle ein Klassifizierungsmodell mithilfe von Faltungs-Neuronalen Netzen erstellt, um zu erkennen, ob ein Affected person an einer Lungenentzündung leidet oder nicht. Drei Forschungsfragen werden eingehend analysiert und es zeigt sich, dass die Verwendung eines tiefen Netzwerks zu einer besseren Leistung führt als ein einfaches CNN-Netzwerk. Es versteht sich auch, dass ein tiefes Netzwerk, das auf ImageNet vorab trainiert wurde und über entsprechende Gewichtungen verfügt, eine bessere Leistung aufweist als dasselbe Netzwerk, das über zufällig initialisierte Gewichte verfügt. Das beste Modell hat eine Genauigkeit von etwa 91 %, nämlich VGG-16.

· Chollet, F. (2017). Deep Studying mit Python. Manning-Veröffentlichungen.

· Deep Studying (Ian J. Goodfellow, Yoshua Bengio und Aaron Courville), MIT Press, 2016.

· Giełczyk A, Marciniak A, Tarczewska M, Lutowski Z (2022) Vorverarbeitungsmethoden bei der Klassifizierung von Röntgenbildern des Brustkorbs. PLoS ONE 17(4): e0265949. https://doi.org/10.1371/journal.pone.0265949

· https://www.kaggle.com/datasets/paultimothymooney/chest-xray-pneumonia

· https://pytorch.org/vision/main/models/generated/torchvision.models.vgg16.html

· https://pytorch.org/vision/main/models/generated/torchvision.models.efficientnet_b1.html

· https://pytorch.org/vision/main/models/generated/torchvision.models.resnet50.html



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here