Repozytorium zawiera kod źródłowy i skrypty związane z pracą magisterską pt.
„Detekcja i klasyfikacja zapalenia płuc w obrazach RTG klatki piersiowej z wykorzystaniem sieci neuronowych”.
Celem projektu było opracowanie trójstopniowego systemu klasyfikacyjnego, umożliwiającego:
- Detekcję płuc zdrowych vs patologicznych,
- Identyfikację jednostek chorobowych: COVID-19, gruźlica, zapalenie płuc,
- Różnicowanie zapalenia płuc: bakteryjne vs wirusowe.
Rozwiązanie zostało zaimplementowane w Pythonie z użyciem bibliotek TensorFlow oraz narzędzi do wizualizacji aktywacji Grad-CAM.
Patryk Klytta
Pneumonia-Detection/
│-- chest_xray/
│ │-- train/
│ │ │-- NORMAL/
│ │ │-- PNEUMONIA/VIRAL
│ │ │-- PNEUMONIA/BACTERIAL
│ │ │-- COVID19/
│ │ │-- TUBERCULOSIS/
│ │-- val/
│ │ │-- NORMAL/
│ │ │-- PNEUMONIA/VIRAL
│ │ │-- PNEUMONIA/BACTERIAL
│ │ │-- COVID19/
│ │ │-- TUBERCULOSIS/
│ │-- test/
│ │ │-- NORMAL/
│ │ │-- PNEUMONIA/VIRAL
│ │ │-- PNEUMONIA/BACTERIAL
│ │ │-- COVID19/
│ │ │-- TUBERCULOSIS/
- `pneumonia_detection.ipynb`: Jupyter notebook containing the code for training and evaluating the model.
-
Klonowanie repozytorium:
git clone https://github.com/yourusername/pneumonia_detection.git cd pneumonia_detection -
Instalowanie potrzebnych bibliotek i pakietów:
-
Upewnij się, że Tensorflow korzysta z GPU.
Zestaw danych oparty na dwóch źródłach:
-
Guangzhou Women and Children’s Medical Center – obrazy dzieci (1–5 lat),
-
Konsorcjum: Qatar University, University of Dhaka, Malaysia – obrazy dorosłych pacjentów (COVID-19, TBC),
-
Łącznie ponad 7 000 obrazów RTG w formacie JPEG/PNG.
Obrazy pogrupowane w foldery zgodnie z klasami, zgodnie z konwencją train/, val/, test/.
Obrazy są wstępnie przetwarzane przy użyciu klasy ImageDataGenerator z Keras, która obejmuje następujące transformacje:
- przeskalowanie
- Ścinanie
- Powiększanie
- Odwracanie w poziomie i w pionie
- Regulacja jasności
- Przesunięcie szerokości
- Obracanie
Projekt oparty został na nowoczesnych modelach konwolucyjnych z rodziny EfficientNet, znanych z wysokiej skuteczności i efektywności obliczeniowej. W zależności od etapu klasyfikacji zastosowano różne warianty architektury:
-
Etap 1 i 2: wykorzystano model EfficientNetB1, charakteryzujący się niewielką liczbą parametrów i dobrą zdolnością generalizacji. Jego warstwy bazowe (wytrenowane wcześniej na zbiorze ImageNet) zostały zamrożone, a na ich szczycie dodano dostosowane warstwy klasyfikujące z funkcjami aktywacji Swish, regularyzacją L2, BatchNormalization oraz mechanizmem Dropout.
-
Etap 3: zastosowano bardziej złożoną architekturę EfficientNetB3, rozszerzoną o moduł uwagi CBAM (Convolutional Block Attention Module). CBAM wzmacnia reprezentację istotnych cech przestrzennych i kanałowych, co ma szczególne znaczenie przy rozróżnianiu subtelnych różnic pomiędzy typami zapalenia płuc.
- Global Average Pooling (GAP) – agreguje aktywacje przestrzenne i umożliwia redukcję wymiarowości.
- Warstwy Dense – jedna lub dwie w zależności od wariantu, z funkcją aktywacji Swish i zastosowaną regularyzacją (Dropout + L2).
- Batch Normalization – stabilizuje i przyspiesza proces uczenia.
- Dropout – zapobiega przeuczeniu modelu.
- Warstwa wyjściowa z aktywacją Softmax – generuje prawdopodobieństwa przynależności do poszczególnych klas.
- Transfer learning – wykorzystanie wag wytrenowanych na dużym zbiorze ImageNet umożliwiło skuteczne przystosowanie modelu do danych medycznych, nawet przy ograniczonej liczbie przykładów.
- Skalowalność – dzięki architekturze EfficientNet możliwe było balansowanie między dokładnością a złożonością modelu (głębokość, szerokość, rozdzielczość wejściowa).
- Zgodność z techniką Grad-CAM – struktura sieci umożliwia wizualną interpretację predykcji modelu poprzez lokalizację obszarów istotnych dla klasyfikacji.
Etap 1 (zdrowe vs chorobowe): dokładność ~99.45%
Etap 2 (COVID-19, TBC, PNEUMONIA): dokładność ~99.7%
Etap 3 (bakteryjne vs wirusowe): dokładność ~72%
Mapy Grad-CAM potwierdziły zgodność obszarów aktywacji z lokalizacjami zmian chorobowych.
Python 3.8+
TensorFlow >= 2.10
NumPy, OpenCV, Matplotlib, Scikit-learn
Zalecane środowisko z akceleracją GPU (np. CUDA 11.8).
Aby wytrenować i ocenić model, uruchom dostarczony plik pneumonia_detection.ipynb lub wykonaj skrypt w swoim środowisku Python.
Wkład jest mile widziany! Jeśli napotkasz jakiekolwiek problemy lub masz sugestie dotyczące ulepszeń, prosimy o otwarcie zgłoszenia lub przesłanie pull requesta.
This project is licensed under the MIT License.
art. 74 ust. 1 Ustawa o prawie autorskim i prawach pokrewnych, [Zakres ochrony programów komputerowych](https://lexlege.pl/ustawa-o-prawie-autorskim-i-prawach-pokrewnych/a
.png)
