Здесь можно найти два варианта решения задачи:
- main.ipynb:
- В качестве декодера Unet использовалась связка Conv+Upscale
- Ресайз изображений делался просто как cv2.resize(img, target_size)
- Валидационная выборка - 30% от датасета + аугментация валидационной выборки
- Ранняя остановка
- main_transpose.ipynb
- Декодер Unet состоит из Conv2DTranspose
- "Умный ресайз" - картинки вертикальной / горизонтальной ориентации дополняются черными полосами по сторонам, что препятствует черезмерному сжиманию / растягиванию изображений
- Валидационная выборка отсутствует
- Использовался косинусный шедулер для скорости обучения
- Высокий порог для ранней остановки - крайне переобученная модель
| train_acc | test_acc | train_precision | test_precision | train_recall | test_recall | train_dice_coef | test_dice_coeff | |
|---|---|---|---|---|---|---|---|---|
| Con2D+Upsampling | 0.89 | 0.73 | 1.0 | 0.71 | 0.74 | 0.83 | 0.71 | 0.58 |
| Conv2DTranspose | 0.91 | 0.84 | 0.97 | 0.88 | 0.85 | 0.83 | 0.78 | 0.66 |
Для запуска ноутбука необходимо:
- Скачать датасет и распаковать его в корень репозитория:
- собрать докер:
docker build -t seg .
- запустить контейнер:
docker run --gpus=all -u $(id -u):$(id -g) -it -p 8888:8888 -p 6006:6006 -v "$PWD":/tf seg
- перейти по url, который напечатается в терминале