Skip to content

Обучение нейросети для сегментации изображений

Notifications You must be signed in to change notification settings

Danspers/Fishki-CV

Repository files navigation

Нейросеть для сегментации изображений

Описание проекта

Задача проекта сводится к классификации каждого пикселя. Необходимо определить к какому объекту (классу) он принадлежит. После, выделить на изображении части принадлежащие одному объекту, т.е. сегментировать изображение.

Входные данные

• Датасет в папке fishki_labelme:

  • набор из 140 изображений (2448x2448x3 JPG);
  • файлы разметки в формате .json из labelme;
  • файл obj.names с именами объектов/классов:
    • background - фоновые пиксели;
    • fishka - пиксели области фишки;
    • defect - пиксели области дефекта.

• Скрипт 01_generate_dataset.py - генерирует датасет для обучения НС в формате Pascal VOC. Он также разбивает выборку на train (95%) и val и test (5%). Последние 2 выборки одинаковые (val=test).  

Задачи

Задача №1: Подготовка датасета

Скрипт 01_generate_dataset.py нужно модифицировать (или написать свой) чтобы он разбивал исходный набор отдельно на train(80%) val(10%) и test(10%). Выходными данными должны являться: Готовый к обучению датасет в формате Pascal VOC;

Задача №2: Обучение НС

Необходимо обучить НС сегментатора на датасете из задачи №1 Фреймворк машинного обучения и библиотеки можно использовать любые по желанию. Необходимо обосновать выбор. Входное разрешение нейросети при обучении необходимо также выбрать и обосновать.

Выходными данными должны являться

  • обученная нейросеть сегментации с train датасетом из задачи №1;
  • лог обучения (графики функции потерь и mIoU от эпохи);
  • расчет метрик по сегментации на val датасете (IoU по каждому классу отдельно и mIoU);
  • расчет метрик по сегментации на test датасете (IoU по каждому классу отдельно и mIoU);

Задача №3: Инференс НС

Необходимо прогнать изображения из тестового датасета через обученную в задаче №2 нейросеть сегментатора и получить визуализации. При выполнении задания можно использовать средства фреймворка машинного обучения (PyTorch, Tensorflow), либо сконвертировать обученную НС в формат ONNX.

Выходными данными должны являться изображения из полученного в задаче №1 test датасета размеченные обученной в задаче №2 нейросетью.

About

Обучение нейросети для сегментации изображений

Topics

Resources

Stars

Watchers

Forks