StartseiteKI & Maschinelles LernenMedizinischer Scan-Klassifikator — Wie ein CNN ein Bild liest

🩺 Medizinischer Scan-Klassifikator — Wie ein CNN ein Bild liest

Beobachten Sie, wie ein Faltungsfilter einen synthetischen medizinischen Scan abtastet, Merkmale extrahiert und eine Diagnosewahrscheinlichkeit ausgibt — mit einer Live-ROC-Kurve, die den Kompromiss zwischen Sensitivität und Spezifität zeigt.

KI & Maschinelles Lernen3DFortgeschritten60 FPS
medical-diagnosis-ai ↗ Eigenständig öffnen

Über den Medizinischen Scan-Klassifikator

Diese Simulation zeigt Schritt für Schritt, wie ein Faltungsneuronales Netz ein Raster von Pixelintensitäten in eine Diagnosewahrscheinlichkeit umwandelt. Ein synthetischer 24×24-„Scan“ wird aus einer von drei Voreinstellungen erzeugt — Normal (reines Rauschen), Frühe Läsion (ein schwacher Blob mit erhöhter Intensität) oder Fortgeschrittene Läsion (ein starker Blob) —, und ein fester 3×3-Kern gleitet darüber und erzeugt eine Merkmalskarte. Die Merkmalskarte wird zu einer einzigen Aktivierung max-gepoolt und durch eine Sigmoid-Funktion geleitet, um P(Läsion) zu erzeugen — genau die Forward-Pass-Mechanik, die von echten CNNs verwendet wird (abzüglich des Trainings).

Führen Sie einen Stapel zufällig erzeugter Fälle aus, um eine Konfusionsmatrix und eine Receiver-Operating-Characteristic-Kurve (ROC) zu erstellen, und ziehen Sie den Diagnoseschwellenwert, um den Kompromiss zwischen Sensitivität und Spezifität zu sehen, den jedes reale Screening-Instrument bewältigen muss.

Häufig gestellte Fragen

Was genau macht der Faltungskern hier?

Der Blob-Detektor-Kern ist ein kleiner 3×3-gewichteter Durchschnitt (Gewichte etwa [[1,2,1],[2,4,2],[1,2,1]]/16, ein diskreter Gauß), der der Reihe nach über jedem Pixel zentriert wird. An jeder Position multipliziert er die 9 darunterliegenden Pixel mit den passenden Kerngewichten und summiert das Ergebnis, wodurch ein Ausgabewert in der Merkmalskarte entsteht. Da die Gewichte alle positiv und in der Mitte am größten sind, reagiert dieser Kern stark, wo immer ein Bereich des Scans gleichmäßig hell ist — genau die Signatur eines Läsionsblobs — während er isoliertes Einzelpixel-Rauschen weitgehend aufhebt.

Warum Max-Pooling statt Average-Pooling der Merkmalskarte?

Globales Average-Pooling würde einen kleinen, aber intensiven Läsionsblob über alle 576 Zellen der Merkmalskarte verdünnen, da der Großteil des Scans Hintergrundrauschen ist. Globales Max-Pooling fragt stattdessen „was ist die stärkste Aktivierung irgendwo im Bild?“ — was die richtige Frage ist, um eine lokalisierte Anomalie zu erkennen, die sich irgendwo im Sichtfeld befinden könnte. Dies spiegelt wider, warum reale CNN-Klassifikatoren für lokalisierte Pathologien oft Max- oder aufmerksamkeitsbasiertes Pooling gegenüber einfacher Mittelwertbildung bevorzugen.

Warum ändert das Verschieben des Schwellenwertreglers Sensitivität und Spezifität in entgegengesetzte Richtungen?

Sensitivität (True-Positive-Rate) ist der Anteil der tatsächlichen Läsionsfälle, die das Modell als positiv kennzeichnet; Spezifität (True-Negative-Rate) ist der Anteil der tatsächlich normalen Fälle, die es korrekt als negativ belässt. Ein niedrigerer Schwellenwert bewirkt, dass das Modell insgesamt mehr Fälle als positiv einstuft — wodurch mehr echte Läsionen erfasst werden (höhere Sensitivität), aber auch mehr normale Scans fälschlich als positiv eingestuft werden (niedrigere Spezifität). Ein höherer Schwellenwert bewirkt das Gegenteil. Dieser Kompromiss ist grundlegend für jeden binären Klassifikator mit überlappenden Score-Verteilungen; man kann nicht beides allein durch Verschieben des Schwellenwerts verbessern.

Was zeigt die ROC-Kurve genau, und was ist AUC?

Die ROC-Kurve (Receiver Operating Characteristic) trägt die True-Positive-Rate (Sensitivität) gegen die False-Positive-Rate (1 − Spezifität) auf, während der Entscheidungsschwellenwert von 1 auf 0 absinkt. Jeder Punkt auf der Kurve entspricht einem möglichen Schwellenwert. Ein zufälliger Rater zeichnet die Diagonale nach; ein perfekter Klassifikator schmiegt sich an die obere linke Ecke. Die Fläche unter der Kurve (AUC) fasst die Leistung über alle Schwellenwerte hinweg zusammen — eine AUC von 0,5 bedeutet nicht besser als Zufall, 1,0 bedeutet perfekte Trennung. Da diese Simulation zufälliges fallweises Rauschen hinzufügt und Amplitude und Position des Blobs randomisiert, ist die angezeigte Kurve realistisch unvollkommen statt einer trivialen Stufenfunktion.

Ist dies tatsächlich ein trainiertes neuronales Netz?

Nein — und das ist beabsichtigt. Die hier verwendeten Kerne sind feste, von Hand gewählte Gewichte, nicht das Ergebnis von Gradientenabstieg auf gelabelten Trainingsdaten. Ein echtes diagnostisches CNN würde seine Faltungsgewichte (oft über Dutzende Schichten und Hunderte Kanäle) durch Backpropagation eines Verlusts erlernen, der gegen Tausende von Experten gelabelte Scans berechnet wird. Was diese Simulation getreu wiedergibt, ist der Forward-Pass: Faltung → Merkmalskarte → Pooling → Sigmoid → Wahrscheinlichkeit, dieselbe Rechenpipeline, die ein trainiertes Netz zur Inferenzzeit ausführt, nur mit von Hand gewählten statt gelernten Gewichten.

Warum ist die Voreinstellung „Normal“ nicht einfach flach/null?

Echte Bildsensoren haben immer Hintergrundrauschen, und echte Anatomie hat natürliche Textur, selbst wenn sie gesund ist. Die Modellierung von „Normal“ als reines Rauschen um eine niedrige Basisintensität (statt als leeres Raster) zwingt den Klassifikator, eine echte Struktur erhöhter Intensität von gewöhnlicher Pixel-zu-Pixel-Variation zu unterscheiden — was die tatsächliche Herausforderung ist, der medizinische Bildklassifikatoren gegenüberstehen, und der Grund, warum ein naiver Helligkeitsschwellenwert auf Rohpixeln weit schlechter abschneidet als ein faltungsbasierter Merkmalsdetektor.

Warum ändert sich die Konfusionsmatrix, obwohl ich keinen neuen Durchlauf gestartet habe?

Die Konfusionsmatrix sowie die Werte für Sensitivität/Spezifität/Genauigkeit werden sofort neu berechnet, sobald Sie den Schwellenwertregler bewegen, unter Verwendung der bereits für jeden bisher durchgeführten Fall gespeicherten Diagnosewahrscheinlichkeit. Nur die zugrunde liegenden Wahrscheinlichkeiten erfordern einen Stapellauf (oder einen Einzelfall) zur Erzeugung; sie gegen einen gegebenen Schwellenwert als positiv oder negativ zu klassifizieren, ist nur ein Vergleich und kann daher live neu berechnet werden, ohne dass neue Scans erzeugt werden müssen.

Warum erhalten „Early“- und „Advanced“-Läsionsfälle manchmal unterschiedliche Werte, obwohl die Voreinstellung dieselbe ist?

Jeder Fall zieht Amplitude, Position und Breite seines Blobs neu aus einer Zufallsverteilung um die typischen Werte der Voreinstellung und fügt frisches Pixelrauschen hinzu. Dies spiegelt reale biologische und bildgebende Variabilität wider — keine zwei echten Scans derselben Pathologie sehen identisch aus. Es ist auch das, was die ROC-Kurve aussagekräftig macht: Wenn jeder „Early“-Fall identisch bewertet würde, würden Sensitivität und Spezifität in diskreten Schritten springen, statt eine glatte Kurve nachzuzeichnen.

⚙ Unter der Haube

Beobachten Sie, wie ein Faltungsfilter einen synthetischen medizinischen Scan abtastet, Merkmale extrahiert und eine Diagnosewahrscheinlichkeit ausgibt — mit einer Live-ROC-Kurve.

Three.jsWebGLKIMaschinelles Lernen

3D · Three.js / WebGL-Renderer · Ziel 60 FPS · läuft vollständig clientseitig, keine Installation

Was haben Sie gefunden?

Reproduktionsschritte hinzufügen (optional)