Skip to content

PolushinM/3D_Segmentation_pipeline

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание для компании AIDiagnostic.

Бейзлайн для обучения сегментационной нейросети для обнаружения плеврального выпота на основе 3D архитектуры Unet. В качестве обучающей выборки представлено всего 10 снимков, что для такой задачи очень мало. Полученна метрика Dice=0.36 на кросс-валидации (обучение на 8 снимках, валидация на двух снимках).

График обучения: alt text

Краткое описание пайплайна:

  1. Чтение данных из каталогов, указанных в config.py.
  2. Приведение изображений к одному размеру (обрезка по краям/добавление паддинга) и нормализация значений в тензоре (preprocessing.py).
  3. Формирование pytorch датасетов (train/val) и даталоадеров (training.py, dataset.py) c применением аугментаций.
  4. Обучение модели (model.py, training.py) с валидацией после каждой эпохи, с применением "разогрева" learning rate. Методы train_epoch и eval_epoch принимают список метрик, которые рассчитываются и сохраняются в истории.
  5. В процессе обучения (main.py): вывод номера эпохи, learning rate, текущих метрик, длительности эпохи, сохранение весов лучшей эпохи, вывод и сохранение на диск графика обучения в конце.

Настройки (main.py):
Выбор "масштаба" модели: глубина сети постоянна, количество фильтров в каждом сверточном слое пропорционально значению «масштаба». Это значение следует увеличивать, если данных много, и уменьшать в случае переобучения или для снижения ресурсоемкости сети.
Выбор аугментаций.
Выбор размера батча.
Выбор параметров обучения: максимальный learning rate, количество эпох для разогрева, скорость ументшения learning rate после разогрева, общее количество эпох обучения.

About

Test task for AIDiagnostic

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages