Strona główna Sztuczna inteligencja i uczenie maszynowe Klasyfikator skanów medycznych — jak CNN odczytuje obraz

🩺 Klasyfikator skanów medycznych — jak CNN odczytuje obraz

Obserwuj, jak filtr konwolucyjny skanuje syntetyczny obraz medyczny, wyodrębnia cechy i wyprowadza prawdopodobieństwo diagnozy — z krzywą ROC na żywo pokazującą kompromis czułość/swoistość.

Sztuczna inteligencja i uczenie maszynowe3DZaawansowany60 FPS
medical-diagnosis-ai ↗ Otwórz osobno
Interfejs samej symulacji jest w języku angielskim.

O tej symulacji

Obserwuj, jak filtr konwolucyjny skanuje syntetyczny obraz medyczny, wyodrębnia cechy i wyprowadza prawdopodobieństwo diagnozy — z krzywą ROC na żywo pokazującą kompromis czułość/swoistość.

📖 O symulacji

Ta symulacja pokazuje krok po kroku, jak sieć konwolucyjna zamienia siatkę intensywności pikseli w prawdopodobieństwo diagnozy. Syntetyczny 'skan' 24×24 jest generowany z jednego z trzech presetów — Normalny (czysty szum), Wczesna zmiana (słaba plama o podwyższonej intensywności) lub Zaawansowana zmiana (silna plama) — a stałe jądro 3×3 przesuwa się po nim, tworząc mapę cech. Mapa cech jest poddawana max-poolingowi do jednej aktywacji i przepuszczana przez sigmoid, dając P(zmiana) — dokładnie taką mechanikę przejścia w przód, jaką stosują prawdziwe CNN (bez treningu).

🎮 Jak korzystać

Uruchom partię losowo generowanych przypadków, aby zbudować macierz pomyłek i krzywą charakterystyki operacyjnej odbiornika (ROC), a następnie przeciągnij próg diagnozy, by zobaczyć kompromis czułość/swoistość, z którym musi się zmierzyć każde narzędzie przesiewowe.

Najczęściej zadawane pytania

Co dokładnie robi tu jądro konwolucji?

Jądro detektora plam to małe ważone uśrednienie 3×3 (wagi w przybliżeniu [[1,2,1],[2,4,2],[1,2,1]]/16, dyskretny Gauss), które jest centrowane kolejno na każdym pikselu. W każdej pozycji mnoży 9 pikseli pod sobą przez odpowiadające wagi jądra i sumuje wynik, tworząc jedną wartość wyjściową w mapie cech. Ponieważ wagi są dodatnie i największe w środku, jądro to reaguje silnie tam, gdzie fragment skanu jest jednolicie jasny — czyli dokładnie tam, gdzie jest sygnatura plamy zmiany — jednocześnie w dużej mierze znosząc odosobniony szum pojedynczych pikseli.

Dlaczego max-pooling zamiast average-poolingu mapy cech?

Globalne uśrednianie rozmyłoby małą, ale intensywną plamę zmiany na wszystkie 576 komórek mapy cech, ponieważ większość skanu to szum tła. Globalny max-pooling zadaje zamiast tego pytanie: 'jaka jest pojedyncza najsilniejsza aktywacja gdziekolwiek na obrazie?' — co jest właściwym pytaniem przy wykrywaniu zlokalizowanej nieprawidłowości, która może znajdować się w dowolnym miejscu pola widzenia. Odzwierciedla to, dlaczego prawdziwe klasyfikatory CNN dla zlokalizowanej patologii często preferują pooling maksymalny lub oparty na uwadze zamiast zwykłego uśredniania.

Dlaczego przesuwanie suwaka progu zmienia czułość i swoistość w przeciwnych kierunkach?

Czułość (odsetek prawdziwie pozytywnych) to ułamek rzeczywistych przypadków zmiany, które model oznacza jako pozytywne; swoistość (odsetek prawdziwie negatywnych) to ułamek rzeczywistych normalnych przypadków, które model poprawnie pozostawia jako negatywne. Obniżenie progu sprawia, że model uznaje więcej przypadków za pozytywne — wychwytując więcej prawdziwych zmian (wyższa czułość), ale też błędnie klasyfikując więcej normalnych skanów jako pozytywne (niższa swoistość). Podniesienie progu działa odwrotnie. Ten kompromis jest fundamentalny dla każdego binarnego klasyfikatora z nakładającymi się rozkładami wyników; nie można poprawić obu wartości jednocześnie samym przesunięciem progu.

Co dokładnie przedstawia krzywa ROC i czym jest AUC?

Krzywa ROC (charakterystyka operacyjna odbiornika) przedstawia odsetek prawdziwie pozytywnych (czułość) w funkcji odsetka fałszywie pozytywnych (1 − swoistość), gdy próg decyzyjny przesuwa się od 1 do 0. Każdy punkt krzywej odpowiada jednemu możliwemu progowi. Losowe zgadywanie wyznacza przekątną; idealny klasyfikator przylega do lewego górnego rogu. Pole pod krzywą (AUC) podsumowuje skuteczność we wszystkich progach jednocześnie — AUC równe 0,5 oznacza nie lepiej niż przypadek, 1,0 oznacza idealne rozdzielenie. Ponieważ symulacja dodaje losowy szum dla każdego przypadku oraz losuje amplitudę i pozycję plamy, obserwowana krzywa jest realistycznie niedoskonała, a nie trywialną funkcją skokową.

Czy to naprawdę wytrenowana sieć neuronowa?

Nie — i jest to celowe. Jądra użyte tutaj to stałe, ręcznie dobrane wagi, a nie wynik gradientu prostego na oznakowanych danych treningowych. Prawdziwa diagnostyczna CNN uczyłaby się wag konwolucji (często w dziesiątkach warstw i setkach kanałów) poprzez propagację wsteczną straty obliczonej względem tysięcy skanów oznaczonych przez ekspertów. To, co ta symulacja wiernie odtwarza, to przejście w przód: konwolucja → mapa cech → pooling → sigmoid → prawdopodobieństwo — czyli ten sam potok obliczeniowy, jaki wytrenowana sieć wykonuje w czasie wnioskowania, tyle że z wagami dobranymi ręcznie zamiast wyuczonymi.

Dlaczego preset 'Normalny' nie jest po prostu płaski/zerowy?

Prawdziwe czujniki obrazowania zawsze mają szum tła, a prawdziwa anatomia ma naturalną teksturę nawet gdy jest zdrowa. Modelowanie 'Normalnego' jako czystego szumu wokół niskiej bazowej intensywności (zamiast pustej siatki) zmusza klasyfikator do odróżnienia prawdziwej struktury o podwyższonej intensywności od zwykłej zmienności piksel-do-piksela — co jest rzeczywistym wyzwaniem stojącym przed klasyfikatorami obrazów medycznych i powodem, dla którego naiwny próg jasności na surowych pikselach działa dużo gorzej niż detektor cech oparty na konwolucji.

Dlaczego macierz pomyłek zmienia się, mimo że nie uruchomiłem nowej partii?

Macierz pomyłek oraz wartości czułości/swoistości/dokładności są przeliczane natychmiast po przesunięciu suwaka progu, wykorzystując prawdopodobieństwo diagnozy już zapisane dla każdego dotychczas uruchomionego przypadku. Tylko bazowe prawdopodobieństwa wymagają uruchomienia partii (lub pojedynczego przypadku) do wygenerowania; klasyfikowanie ich jako pozytywne lub negatywne względem danego progu to tylko porównanie, więc może być przeliczane na żywo bez ponownego generowania skanów.

Dlaczego przypadki wczesnej i zaawansowanej zmiany czasem otrzymują różne wyniki, mimo że preset jest ten sam?

Każdy przypadek losuje amplitudę, pozycję i szerokość swojej plamy z rozkładu losowego wokół typowych wartości presetu oraz dodaje świeży szum pikseli. Odzwierciedla to prawdziwą zmienność biologiczną i obrazową — żadne dwa rzeczywiste skany tej samej patologii nie wyglądają identycznie. To także sprawia, że krzywa ROC ma sens: gdyby każdy przypadek 'Wczesny' miał identyczny wynik, czułość i swoistość skakałyby skokowo zamiast tworzyć gładką krzywą.

Podobne symulacje