Skip to content

Репозиторий проекта "Распознавание заболевания лёгких по их рентгенограмме с помощью CNN"

License

Notifications You must be signed in to change notification settings

MGeorge2904/Detecting-Lungs-Diseases

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Detecting-Lungs-Diseases

Репозиторий проекта "Распознавание заболевания лёгких по их рентгенограмме с помощью свёрточной нейронной сети"

В этом проекте рассматриваются две различные архитектуры свёрточных нейронных сетей для распознавания заболеваний лёгких. Над проектом работал:
Маштаков Георгий Алексеевич
Научный руководитель:
Рубанова Валерия Александровна

В изначальном датасете данные разделены на 4 класса:

  1. COVID (COVID-19)
  2. Lung_Opacity (Переводится как "Непрозрачность лёгких", но в описании датасета написано, что это Нековидная инфекция)
  3. Normal (Здоровые лёгкие)
  4. Viral Pneumonia (Вирусная пневмония)

Описание репозитория:

  1. preprocessing.py - Подготовка датасета (из изначального датасета)
  2. prepared_dataset - Подготовленный датасет (он пока не загружен, но его можно сделать из изначального датасета и preprocessing.py)
  3. Hand-made_CNN.ipynb - Код с моей нейронной сетью
  4. VGG19+GradCam.ipynb - Код с нейронной сетью VGG19
  5. model - Обученная модель

Краткое описание всех файлов

preprocessing.py

В этом файле выполняется случайный выбор 2690 изображений по каждому классу заболеваний. Это сделано для того, чтобы модель равномерно обучилась на всех классах. Именно 2690, потому что в наименьшем классе 1345 изображений, и изначально планировалась аугментация изображений последнего класса Viral Pneumonia(для каждого изображения одно изменение, тем самым количество изображений в этом классе будет 2690), но даже совсем незначительное изменение данных последнего класса понижало точность модели. Поэтому в последней версии аугментации данных нет, но количество изображений для обучения осталось таким же.

Hand-made_CNN.ipynb

В этом файле сначала выполняется импортирование всех нужных библиотек, затем выполняется считывание и предобработка всех изображений, далле строится базовое решение: Случайные леса дали максимальную точность в 75%, после строится модель свёрточной нейронной сети, состоящей из входного слоя, 5 свёрточных слоёв и MaxPooling, 3 полносвязных слоёв с Dropout(чтобы уменьшить переобучение) и выходного слоя. Дальше выполняется оценка качества обученной модели. В итоге получены Точность в 89% и F1-мера в 90%.
Также получилось сделать GradCAM - способ сегментации изображения, заключающийся в построении карты коэффициентов на последнем свёрточном слое. Результаты будут расположены в самом конце.

VGG19+GradCam.ipynb

В этом файле также выполняется предобработка данных, затем инициализируется модель VGG19 без верхних полносвязных слоёв. Затем добавляются 2 полносвязных слоя с Dropout и выходной слой. Другими словами, выполняется Transfer learning, используя Feature extraction. Итоговых результатов пока нет(достигнут уровень предыдущей модели), в связи с ограничением мощностей, но скоро результаты будут улучшены.
В любом случае обучение можно продолжать бесконечно, пока не будет достигнут максимальный или требуемый для нас результат.

Пример работы GradCAM на каждом классе:

COVID Lung Opacity
COVID                            Lung Opacity

Normal Viral Pneumonia
Normal                            Viral Pneumonia

About

Репозиторий проекта "Распознавание заболевания лёгких по их рентгенограмме с помощью CNN"

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published