Задание - d-01/graduate-2021-dec GitHub Wiki

Техническое задание на дипломную работу

  • Дипломная работа — это соревнование на платформе Kaggle. Ссылка.
  • Необходимо написать воспроизводимый код, генерирующий csv-файл с ответами. В нём для каждого изображения с лицом человека должна указываться наиболее вероятная эмоция из представленных. Пример такого файла — на платформе Kaggle (файл sample_submission.csv).
  • Вы можете отправить на валидацию не более пяти решений в день.
  • Обратите внимание, что на платформе Kaggle существует разбиение отправленного вами файла на public и private части. В задании 50% изображений теста соответствуют публичной части, остальные 50% — приватной. До окончания соревнования результат вашей модели известен только на public-части. Такое разбиение нужно, чтобы модели не переобучались на тесте.
  • Описание данных, формат файла для ответа и метрику качества вы найдёте в самом соревновании на Kaggle.

Технические требования

Работа требует реализации алгоритма, с помощью которого будет происходить заданная классификация. Приветствуется использование архитектур свёрточных нейронных сетей, разобранных во время теоретических занятий. Время инференса сети на Google Colab не должно превышать 0,33 секунды (3 кадра в секунду).

Улучшения и дополнения к заданию

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

Для этого сделайте следующее:

  1. Разберитесь с работой камеры на вашем ноутбуке через библиотеку opencv. Примеры работы камеры с opencv смотрите в дополнительных материалах к этому заданию.
  2. Возьмите предобученный детектор лица. Используйте примеры из дополнительных материалов или обучите свой детектор.
  3. Оберните вашу модель в Python-класс с методами:
    1. __init__, в котором будет происходить загрузка весов вашей модели.
    2. predict, который будет принимать на вход предобработанный кадр из веб-камеры и возвращать эмоцию.
  4. Сделайте вывод камеры таким, как показано на рисунке ниже. Расположение и цвета элементов остаются на ваше усмотрение.

1

Формат сдачи материалов и оценивание

  • Первым шагом добейтесь, чтобы посылка на Kaggle получила результат выше отметки «Зачёт» на лидерборде (0.29880). Решения будут оцениваться по метрике categorical_accuracy. Помимо этой посылки пришлите код разработанной рекомендательной системе в GitHub/GitLab. Код должен быть полностью запускаемый и покрытый комментариями. Обязательно укажите в README инструкции по запуску.
  • В коде оставьте все решения, которые тестировались при выполнении дипломной работы. Так мы сможем оценить объём и количество проведённых экспериментов. Каждый такой эксперимент сопроводите комментариями с результатами теста и сделанными выводами.
  • Оценка «Зачёт» ставится, если метрика отправленного решения на public leaderboard > метрики «Зачёт» и решение воспроизводимо, то есть проверяющий может его запустить и добиться аналогичного качества метрики
  • Для оценки «4» необходимо пройти планку «Зачёт» на private leaderboard, а также выполнить два пункта из раздела «Предложения по повышению оценки».
  • Для оценки «5» необходимо, чтобы результат на private leaderboard был > 0,4, а также нужно выполнить все пункты из раздела «Для повышения оценки».

Для повышения оценки

  1. Используйте подходы по искусственному увеличению датасета для обучения, а именно — аргументации, рассмотренные в курсе.
  2. Используйте продвинутые техники обучения, такие как finetuning и другие, рассмотренные в курсе.
  3. Пишите структурный код (основная логика кода должна быть вынесена в классы/методы/функции + осмысленный нейминг сущностей и комментарии).
  4. Проведите эксперименты с valence-arousal разложением эмоций, когда модель обучается не на самих эмоциях, а на их разложении по этим двум компонентам. Информация о подобном разложении есть в дополнительных материалах.
  5. Работающий прототип из пункта «Улучшение и дополнения к заданию» прибавляет один балл к итоговой оценке и добавляет в портфолио ценный ML-проект.