Coder Social home page Coder Social logo

gurmaaan / mednn Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 449.25 MB

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

Jupyter Notebook 82.09% Python 17.87% Batchfile 0.01% QML 0.04%

mednn's Introduction

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

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

mednn's People

Contributors

gurovd-pg avatar gurmaaan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.