Skip to content

navolotsky/MIPT-DLS-Deep-Learning-Part-I-Homeworks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Репозиторий содержит прорешанные домашние задания по первой части курса по Deep Learning от Школы глубокого обучения МФТИ. Работы выполнены мной в рамках прохождения потока Advanced этого курса (запуск осени 2020). Работы сдавались через Stepik и проверялись преподавателями курса.

Каждая папка представляет собой отдельное домашнее задание. Папки пронумерованы в порядке выдачи заданий. В папках содержится:

  • task — файл с описанием работы со Stepik
  • template — папка/файл домашней работы в том виде, как она была задана
  • solution — папка/файл прорешанной работы в том виде, как она была залиты на Stepik

Список работ:

Простенькие

  1. Основы машинного обучения

    Проделанная работа: обучен простейший классификатор (метод K Nearest Neighbors) на табличных данных c применением Grid Search с помощью средств библиотек pandas и sklearn.

    Оценка преподавателя: 10/10

  2. Линейные модели и методы оптимизации

    Реализованы функция градиентного спуска для конкретной заданной функции f, генератор батчей, класс для логистической регрессии с регуляризацией (l1 и l2). Класс протестирован обучением на сгенерированных данных и обучением на MNIST с применением кросс-валидации.

    12/12

  3. Решение ML-задачи и Kaggle

    Исследованы табличные данные (использованы pandas, matplotlib). Применена линейная модель: реализован Pipeline для предобработки данных (нормализация числовых и кодирование категориальных признаков) для предотвращения утечки данных в процессе кросс-валидации; используя данный Pipeline и поиск по сетке (GridSearhCV) обучена логистическая регрессия из sklearn. Применён градиентный бустинг: обучен классификатор из catboost также с использованием Grid Search. Сделана посылка на Kaggle.

    15/15

  4. Свёрточные и полносвязные нейросети

    Реализованы класс для логистической регрессии и цикл обучения на PyTorch. Сравнены несколько функций активации обучением простейшей трёхслойной нейронной сети на MNIST. Сравнены вручную заданные ядра свёрток. Обучена LeNet на MNIST.

    12/12

Сложнее и объёмнее

  1. Классификация Симпсонов

    Реализованы класс датасета для загрузки изображений, цикл обучения, чекпоинтинг, визуализация, простейшая аугментация данных, несколько простых свёрточных нейросетей (использованы Max pooling, Batch normalization, Dropout). Перебраны различные варианты сетей и гиперпараметров для достижения максимальной точности классификации. Сделан сабмит на Кагл. Попробовано несколько способов Fine tuning'а предобученной ResNet18. Попробовано применение Karpathy Constant.

    15/15

  2. Сегментация изображений

    Реализованы архитектура SegNet и функции потерь Binary cross entropy loss, Dice loss, Focal loss (по описанию из текста домашнего задания и частично по соответствующим papers). Прочитана paper и реализована Correlation Maximized Structural Similarity Loss for Semantic Segmentation. Обучена SegNet с использованием перечисленных лоссов. Реализована Unet и обучена с bce loss. Проведено сравнение качества сегментации (по метрике IoU), производимой обученными моделями.

    17/20

  3. GAN и Style Transfer

    Выбран CycleGAN. Собран непарный датасет изображений бананов и огурцов. Прочитана paper Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks и имплементирован from scratch (не без недостатков) описанный там метод. Модель обучена на собранном датасете. Выполнен инференс: попытка превратить бананы в огурцы и наоборот.

    10/10

    Решение представлено в двух вариантах:

    • папка solution, содержащая только код имплементации метода
    • файл solution.ipynb, содержащий весь код из папки solution, но с дополнительным описанием проведённой работы и трудностей, возникших в её процессе

    Также датасет, ноутбук, код и результаты инференса на тесте доступны на Google Диске.

    NB: В папке solution представлена наиболее актуальная версия кода с найденными и/или исправленными ошибками. В ноутбуке, на гугл-диске содержится устаревший код, результаты инференса на гугл-диске также приведены с запуска на устаревшей версии кода.

Итоговый проект

Из списка предложенных вариантов выбран и реализован telegram-бот (см. репозиторий), осуществляющий нейронный перенос стиля изображений.

10/10

Сертификат

Условия выдачи: см. сообщение в официальном телеграм-канале Школы.

Результат: 101/104 баллов набрано, финальный проект оценён на 10/10 — получен диплом I степени №202111000024031891 (см. файл certificate.pdf)

About

Домашние работы по курсу Deep Learning Part I Advanced от Школы глубокого обучения МФТИ

Resources

Stars

Watchers

Forks

Contributors