Git Product home page Git Product logo

dls-homework-16's Introduction

Домашняя работа по теме «сегментация изображений»

Суркис Антон; Stepik id: 83694640

Графики в директории diag, история обучения моделей (csv) — в histories. Копия блокнота в корневой директории и в Google Colab

Метрики на тестовой выборке:

BCE Dice Focal Correlation
SegNet 0.6260000348091126 0.71000001430511470 0.6860000133514405 0.41400000751018523
UNet 0.7480000376701355 0.39400000181049110 0.7200000286102295 0.49800001978874210
UNet2 0.4680000126361847 0.12400000747293234 0.6040000259876251 0.43800000548362733

Наибольшее значение метрики — 0.748 — достигается у UNet BCE.

Графики каждой функции потерь и соответствующего score для каждой сети

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

SegNet

BCE


Dice


Focal



Посмотрим внимательнее на функцию потерь после первых эпох, чтобы убедиться, что она уменьшается, т.к. это не видно из-за масштаба:

Correlation


UNet

BCE


Dice


Focal



Здесь можно заметить скачок метрики и функции потерь. Предположительная причина: накопленный «импульс» оптимизатора и высокое значение градиента функции потерь в локальной точке приводят к подобному «выхлопу».

Correlation


UNet2

BCE



Здесь заметен аналогичный скачок оптимизатора, в этот раз он пришелся ровно на 200-ю эпоху обучения. Однако, сравнивая графики (позже) можно увидеть, что UNet2 все равно проигрывает UNet при обучении с функцией потерь BCE.

Построим график функции потерь без двух последних эпох, т.к. на предыдущем не видно, что она уменьшается из-за масштаба:

Dice


Focal


Correlation



Снова построим график функции потерь только по части эпох, на этот раз «откусывая» начало:

Можно заметить, что снижение функции потерь в целом происходит, но слишком медленно для практического применения.

У всех моделей наблюдается значительное переобучение

Графики метрик

Метрики уже имеет смысл сравнивать, т.к. используем одну и ту же метрику как эталон оценки качества модели. При этом по предполагаемым условиям график мы можем построить только по валидационному, но не тестовому датасету, поскольку возможности взять метрики по последнему во время обучения обычно нет.

По сетям

SegNet

UNet

UNet2

По функциям потерь

BCE


Можно заметить, что UNet показывает лучший счет с BCE, около 0.8, немного отстает UNet2, но на последней эпохе «глупеет». Эта аномалия не влияет на то, что UNet2 проигрывает UNet, но полезно учитывать возможность подобных аномалий и важность построения именно графика, а не только сравнивания последних значений при, например, выборе, какую нейросеть обучать, на большем количестве эпох или большем датасете, что невозможно сделать для всех сетей в силу ограниченности ресурсов. SegNet показывает стабильный score, но сильно ниже UNet.

Dice


С Dice наилучший счет показывает SegNet, около 0.7, UNet и UNet2 почти не обучаются.

Focal


Лучший score при фокусной функции потерь — у UNet, но при этом между 150 и 175 эпохой происходит значительный провал. UNet2 сильно отстает, SegNet стабилен, но тоже отстает.

Correlation


Correlation score нестабилен у всех трех сетей, и показывает слабый результат. Возможно, это связано с тем, что он предназначен для менее четкой сегментации, но т.к. здесь мы сегментируем поражения кожи, то нужна именно высокая четкость.

Итоговое сравнение

По предыдущим двум группам наиболее явно ситуацию с метриками отражала группировка по функциям потерь, поэтому возьмем лучшие сети из этих групп: UNet BCE, SegNet Diccei и UNet Focal (Correlation можно не брать, т.к. явно видно слишком низкий счет). Стоит отметить, что эти же модели выдают наиболее четкие карты сегментации, что можно видеть в визуализации их обучения.

UNet с Focal loss в целом сравним по качеству с UNet BCE, но из графика видно, что все же немного отстает даже до проседания. SegNet Dice значительно отстает от обоих, хотя и был лучшим в своей группе.

Вывод

Наилучшей нейросетью для задачи сегментации поврежденных участков кожи оказалась UNet (с пулингами), обученная с функцией потерь BCE, как по метрикам на тестовом датасете (отображены снизу от графиков функций потерь) — 0.748, что является лучшим результатом, так и по графикам метрик потерь на валидационном датасете — модель явно опережает остальные на валидационном датасете.

Приблизительное время обучения до сходимости у всех сетей на всех функциях потерь в данном задании — 125-150 эпох. Я брал 200, т.е. со значительным запасом, поскольку проводил исследование и этой информации у меня еще не было.

Во время анализа графиков я обнаружил аномалию «выброса» модели из локального минимума функции потерь при оптимизации, это нужно учитывать при выборе модели для дальнейшего обучения в других проектах.

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.