Skip to content
/ MedNN Public

Использование сверточных нейронных сетей в задаче диагностики меланомы

Notifications You must be signed in to change notification settings

gurmaaan/MedNN

Repository files navigation

MedNN

Использование сверточных нейронных сетей в задаче диагностики меланомы.

Введение

Разработанный программный модуль позволяет настраивать параметры нейросети и сравнивать результаты.

1. Скачивание данных для обучения

Все изображения были взяты с сайта ISIC. На сайте содержатся изображения из различных датасетов, но для реализации был взят только датасет HAM10000 т.к. он обладает следующими преимуществами:

  • Достаточный объем выборки (>10к изображений)
  • Все изображения одного размера и размечены по диагнозам
  • Почти отсутсвуют дефекты и посторонние объекты

Скаичвание данных делится на 2 этапа:

  1. Скачивание мета-данных всей БД полность. Чтобы в будущем при необходимости можно было докачивать изображения из других датасетов без особых затруднений.
  2. Скачивание самих изображений и только из необходимого датасета HAM10000. Все изображения сохраняются в папку img.

Скачивание мета-данных происходит очень долго. Готовая выгрузка метаданных по всей базе лежит в csv-файле в репозитории.

2. Деление выборки на train и test

Берутся метаданные. Имя выступает X, класс выступает как y. Далее делается стандартный sklearn train_test_split Далее создаются папки train и test (validation), а внутри них папки соответсвующие классам изображений. В этом блокноте происходит сортировка изображений по нужным папкам соответсвующим классам изображений. Это нужно для превращения их в дальнейшем в тензоры для обучения нейросетей.

3. Обучение нейросети

В работе исследовалось несколько различных подходов для обучения нейросети. Все из них реализованы с помощью фреймворка PyTorch

3.1 Обучение собственной сверточной нейросети на исходных данных без изменения

Был взят базовый туториал с сайта PyTorch по созданию CNN. Вместо датасета CIFAR10 использовался HAM10000. Архитектура нейросети без изменений. Проводились эксперименты с размером картинок для обучения и было достигнуто глобальное понимание как работает обучение в PyTorch. Результат в блокноте Training_own_CNN_no_changes_in_data.ipynb

3.2 Обучение собственной сверточной нейросети с манипуляциями над исходными данными

Главная проблема предыдущего подхода - значительный дисбаланс в размерах классов. В результате этого сеть переобучается на класс, представителей которого больше всего в обучающей выборке.

Было принято решение взять от каждого класса не всех представителей для обучения, а столько сколько представителей в классе минимального размера. В датасете HAM10000 меньше всего представителей класса pigmented benign keratosis (115 шт), поэтому из каждого класса было взято 115 случайно выбранных изображений, которые использовались для тренировки и тестирования.

Далее чтобы увеличить объем выборки над изображениями производились различные манипуляции (вращения / отображения / обрезки и т.д.). В результате производилось обучение на фиктивной, зато равномерно распределенной обучающей выборке. Результат в блокноте Training_own_CNN_fixed_images_count.ipynb

3.3 Использование предобученных нейронных сетей (transfer learning)

Вместо использования своей слабой архитектуры были взяты все готовые предобученные сети, такие как:

Далее по принципу transfer learning в каждой из сетей был изменен последний полносвязный слой на собственный с 8-ю выходными нейронами. Результат в блокноте Trained_CNN_no_changes_in_data.ipynb

4. GUI

Необходим для удобства настройки всех параметров и отображения результатов. Реализован на PyQt5

Окно открытия папок Окно открытия папок Окно настройки баланса классов Окно настройки баланса классов Окно просмотра представителей классов Окно просмотра представителей классов Окно конвертации изображений в тензоры Окно конвертации изображений в тензоры Окно настройки параметров обучения нейросети Окно настройки параметров обучения нейросети Окно просмотра результатов валидации модели Окно просмотра результатов валидации модели Окно предсказания Окно предсказания

About

Использование сверточных нейронных сетей в задаче диагностики меланомы

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published