Code Monkey home page Code Monkey logo

mil-results's Introduction

Немного о моих изменениях написал в самом низу!

Задача

Требуется: предложить модель, сегментирующую человека на фотографии.

Вход: фотография 320x240x3. Выход: маска человека 320x240. Метрика: Dice coefficient.

Данные

Ссылка на скачивание данных: link.

Данные представляют из себя набор фотографий человека и маски, определяющей положение человека на фотографии.

Доступные данные разделены на несколько папок:

  • train содержит фотографии 320x240x3;
  • train_mask содержит маски для фотографий из train 320x240;
  • valid содержит фотографии 320x240x3;
  • valid_mask содержит маски для фотографий из valid 320x240;
  • test содержит фотографии 320x240x3.

Результаты

Для лучшей модели требуется создать 2 файла, которые необходимы для валидации Вашего решения:

  • сохраненные маски для картинок из valid в формате pred_valid_template.csv (в архиве с data);
  • html страницу с предсказанием модели для всех картинок из test и папку с используемыми картинками в этой html странице для её просмотра.

Также необходимо:

  • подготовить код для проверки (докстринги, PEP8);
  • создать отчет (в jupyter ноутбуке) с описанием Вашего исследования, предобработки, постобработки, проверямых гипотез, используемых моделей, описание лучшего подхода и т.п.

Рекомендуемый pipeline решения:

Предполагается следующий pipeline решения поставленной задачи:

  • скачать данные;
  • ознакомиться с notebooks/GettingStarted.ipynb;
  • провести анализ данных;
  • реализовать нейросеть/нейросети (предполагается реализация "с нуля");
  • Обучить реализованные модели с использованием best practices;
  • провалидировать модели;
  • выбрать лучшую модель на valid и посчитать для нее метрики и создать необходимые файлы (см. notebooks/GettingStarted.ipynb);
  • отправить результаты на проверку.

Критерии оценивания

  1. Качество и полнота исследования в jupyter notebook.
  2. Анализ данных, подходы к аугментации и пред- и постобработки. Оригинальность, эффективность и количество идей. Использование неочевидных шагов в решении, которые улучшают качество, будет хорошим плюсом.
  3. Чистота кода.
  4. Структура кода.
  5. Значение метрик на контрольной выборке и общая адекватность модели.
  6. Обоснование выбора моделей (процесс выбора моделей).

Что я сделал

Привет! Спасибо за интересную задачку, было весело заниматься.

Я решил реализовать PSPNet, потому что модель очень хорошо работает, быстро обучается и прилично пишется по сравнению с другими моделями сегментации. Ну по крайней мере так показалось :)

Раз нам нужно было максимизировать Dice, то в качестве лосса выбрал аппроксимацию к нему. Работало неплохо, по скорости так же как и BCELoss, но зато оптимизировало сразу правильную задачу.

Для аугментации изображений использовал Albumentations — удобная библиотека, в которой можно аугментировать изображения для задачи сегментации!

Модель обучалась на Kaggle: еле влез в 15 гигабайт, но смог.

В своей работе я не трогал изначальный код в lib/, но добавлял туда свои функции в существующие файлы или создавал новые. Ко всем старался добавить документацию.

mil-results's People

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.