Skip to content

p4trykk/PneumoniaDetection

Repository files navigation

Detekcja i klasyfikacja chorób płuc na obrazach RTG przy użyciu sieci neuronowych

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:

  1. Detekcję płuc zdrowych vs patologicznych,
  2. Identyfikację jednostek chorobowych: COVID-19, gruźlica, zapalenie płuc,
  3. 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.

Autor

Patryk Klytta

Struktura projektu

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.

Instalacja

  1. Klonowanie repozytorium:

    git clone https://github.com/yourusername/pneumonia_detection.git
    cd pneumonia_detection
  2. Instalowanie potrzebnych bibliotek i pakietów:

  3. Upewnij się, że Tensorflow korzysta z GPU.

Zbiór danych

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/.

Data Preprocessing

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

Architektura

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.

Struktura głównych komponentów klasyfikujących:

  • 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.

Cechy architektury:

  • 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.

Wyniki

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.

Wymagania systemowe

Python 3.8+

TensorFlow >= 2.10

NumPy, OpenCV, Matplotlib, Scikit-learn

Zalecane środowisko z akceleracją GPU (np. CUDA 11.8).

How to Run

Aby wytrenować i ocenić model, uruchom dostarczony plik pneumonia_detection.ipynb lub wykonaj skrypt w swoim środowisku Python.

Wkład

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.

Licencja

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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors