Репозиторий содержит прорешанные домашние задания по первой части курса по Deep Learning от Школы глубокого обучения МФТИ. Работы выполнены мной в рамках прохождения потока Advanced этого курса (запуск осени 2020). Работы сдавались через Stepik и проверялись преподавателями курса.
Каждая папка представляет собой отдельное домашнее задание. Папки пронумерованы в порядке выдачи заданий. В папках содержится:
- task — файл с описанием работы со Stepik
- template — папка/файл домашней работы в том виде, как она была задана
- solution — папка/файл прорешанной работы в том виде, как она была залиты на Stepik
-
Основы машинного обучения
Проделанная работа: обучен простейший классификатор (метод K Nearest Neighbors) на табличных данных c применением Grid Search с помощью средств библиотек pandas и sklearn.
Оценка преподавателя: 10/10
-
Линейные модели и методы оптимизации
Реализованы функция градиентного спуска для конкретной заданной функции f, генератор батчей, класс для логистической регрессии с регуляризацией (l1 и l2). Класс протестирован обучением на сгенерированных данных и обучением на MNIST с применением кросс-валидации.
12/12
-
Решение ML-задачи и Kaggle
Исследованы табличные данные (использованы pandas, matplotlib). Применена линейная модель: реализован Pipeline для предобработки данных (нормализация числовых и кодирование категориальных признаков) для предотвращения утечки данных в процессе кросс-валидации; используя данный Pipeline и поиск по сетке (GridSearhCV) обучена логистическая регрессия из sklearn. Применён градиентный бустинг: обучен классификатор из catboost также с использованием Grid Search. Сделана посылка на Kaggle.
15/15
-
Свёрточные и полносвязные нейросети
Реализованы класс для логистической регрессии и цикл обучения на PyTorch. Сравнены несколько функций активации обучением простейшей трёхслойной нейронной сети на MNIST. Сравнены вручную заданные ядра свёрток. Обучена LeNet на MNIST.
12/12
-
Классификация Симпсонов
Реализованы класс датасета для загрузки изображений, цикл обучения, чекпоинтинг, визуализация, простейшая аугментация данных, несколько простых свёрточных нейросетей (использованы Max pooling, Batch normalization, Dropout). Перебраны различные варианты сетей и гиперпараметров для достижения максимальной точности классификации. Сделан сабмит на Кагл. Попробовано несколько способов Fine tuning'а предобученной ResNet18. Попробовано применение Karpathy Constant.
15/15
-
Сегментация изображений
Реализованы архитектура 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
-
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)