głębokie uczenie do wykrywania zapalenia płuc ze zdjęć rentgenowskich
rurociąg od końca do końca do wykrywania zapalenia płuc ze zdjęć rentgenowskich
![](https://miro.medium.com/proxy/1*sE2lzbGqffqXZmHeooB0-g.jpeg)
utknął za paywall? Kliknij tutaj, aby przeczytać całą historię z moim przyjacielem Link!
ryzyko zapalenia płuc jest ogromne dla wielu, szczególnie w krajach rozwijających się, gdzie miliardy borykają się z ubóstwem energetycznym i polegają na zanieczyszczających formach energii. WHO szacuje, że ponad 4 milionów przedwczesnych zgonów występuje rocznie z powodu chorób związanych z zanieczyszczeniem powietrza w gospodarstwach domowych, w tym zapalenia płuc. Ponad 150 milionów ludzi zaraża się zapaleniem płuc rocznie, zwłaszcza dzieci poniżej 5 roku życia. W takich regionach problem może być jeszcze bardziej pogłębiony ze względu na brak zasobów medycznych i personelu. Na przykład w 57 krajach Afryki istnieje luka 2,3 miliona lekarzy i pielęgniarek. Dla tych populacji dokładna i szybka diagnoza oznacza wszystko. Może zagwarantować szybki dostęp do leczenia i zaoszczędzić bardzo potrzebny czas i pieniądze osobom, które już doświadczają ubóstwa.
Ten projekt jest częścią zdjęć rentgenowskich klatki piersiowej (zapalenie płuc) wykonanych na Kaggle.
Zbuduj algorytm, aby automatycznie zidentyfikować, czy pacjent cierpi na zapalenie płuc, czy nie, oglądając zdjęcia rentgenowskie klatki piersiowej. Algorytm musiał być niezwykle dokładny, ponieważ stawką jest życie ludzi.
![](https://miro.medium.com/max/60/1*J5wUMztRXZ_eHimMxULAnA.png?q=20)
środowisko i narzędzia
- scikit-learn
- keras
- numpy
- pandy
- matplotlib
dane
zbiór danych można pobrać ze strony Kaggle, którą można znaleźć tutaj.
gdzie jest kod?
bez zbędnych ceregieli, zacznijmy od kodu. Kompletny projekt na GitHubie można znaleźć tutaj.
zacznijmy od załadowania wszystkich bibliotek i zależności.
następnie wyświetliłem kilka normalnych zdjęć, aby zobaczyć, jak bardzo różnią się one gołym okiem. Cóż, niewiele!
następnie dzielę zestaw danych na trzy zestawy-Train, validation i test sets. następnie napisałem funkcję, w której zrobiłem augmentację danych, wysłałem obrazy zestawów treningowych i testowych do sieci. Stworzyłem również etykiety dla obrazów. praktyka augmentacji danych jest skutecznym sposobem na zwiększenie rozmiaru zestawu treningowego. Poszerzenie przykładów szkoleniowych pozwala Sieci na „zobaczenie” bardziej zróżnicowanych, ale wciąż reprezentatywnych punktów danych podczas szkolenia. następnie zdefiniowałem kilka generatorów danych: jeden dla danych treningowych, a drugi dla danych walidacyjnych. Generator danych jest w stanie załadować wymaganą ilość danych (mini partia obrazów) bezpośrednio z folderu źródłowego, przekonwertować je na dane treningowe (przekazywane do modelu) i cele treningowe (wektor atrybutów — sygnał nadzoru). dla moich eksperymentów Zwykle ustawiam następnie zdefiniowałem pewne stałe do późniejszego użycia. kolejnym krokiem było zbudowanie modelu. Można to opisać w następujących 5 krokach. przed treningiem model jest przydatny do zdefiniowania jednego lub więcej wywołań zwrotnych. Bardzo przydatne, są:
batch_size = 64
. Na ogół wartość między 32 A 128 powinna działać dobrze. Zazwyczaj należy zwiększyć / zmniejszyć rozmiar partii w zależności od zasobów obliczeniowych i wydajności modelu.
ModelCheckpoint
I EarlyStopping
.
następnie wyszkoliłem model na 10 epok z wielkością partii 32. Należy pamiętać, że zwykle większy rozmiar partii daje lepsze wyniki, ale kosztem większego obciążenia obliczeniowego. Niektóre badania twierdzą również, że istnieje optymalny rozmiar partii dla najlepszych wyników, które można znaleźć, inwestując trochę czasu na strojenie hiper-parametrów.
wizualizujmy wykresy strat i dokładności.
jak na razie dobrze. Model jest zbieżny, co można zaobserwować ze spadku strat i strat walidacyjnych z epokami. Jest również w stanie osiągnąć 90% dokładność walidacji w zaledwie 10 epokach.
narysujmy macierz zamieszania i uzyskajmy Inne wyniki, takie jak precyzja, przypomnienie, wynik F1 i dokładność.
CONFUSION MATRIX ------------------
]
TEST METRICS ----------------------
Accuracy: 91.02564102564102%
Precision: 89.76190476190476%
Recall: 96.66666666666667%
F1-score: 93.08641975308642
TRAIN METRIC ----------------------
Train acc: 94.23
model jest w stanie osiągnąć dokładność 91.02%, co jest dość dobre, biorąc pod uwagę rozmiar używanych danych.
wnioski
chociaż ten projekt jest daleki od zakończenia, ale to niezwykłe, aby zobaczyć sukces głębokiego uczenia się w tak różnorodnych rzeczywistych problemach. Zademonstrowałem, jak klasyfikować pozytywne i negatywne dane dotyczące zapalenia płuc z kolekcji zdjęć rentgenowskich. Model został wykonany od podstaw, co odróżnia go od innych metod, które w dużym stopniu opierają się na podejściu do uczenia transferowego. W przyszłości praca ta może zostać rozszerzona o wykrywanie i klasyfikację obrazów rentgenowskich obejmujących raka płuc i zapalenie płuc. Rozróżnianie obrazów rentgenowskich zawierających raka płuc i zapalenie płuc było w ostatnim czasie dużym problemem, a naszym następnym podejściem powinno być rozwiązanie tego problemu.