Выполнил Оганов Александр Артурович
Подробный отчет находиться в файле "report.pdf"
Перечислим статьи и кратко опишем статьи, которые использовались в работе
-
Colorful Image Colorization - постановка задачи раскраски изображений и сравнение задачи классификации цвета с задачей регрессии (предсказание цвета). Автор расматривает задачу предсказания каналов a, b по каналу L Lab color space, то есть по черно-белому изображению построить цветное;
-
Split-Brain Autoencoders: Unsupervised Learning by Cross-Channel Prediction - обобщение задачи раскраски изображений на произвольные каналы, в качестве основной модели был взят автокодировщик;
-
Analysis of Different Losses for Deep Learning Image Colorization - исследование влияния функции потерь для задачи раскраски изображений, перечеслены основные подходы к решению (классифкация, регрессия, приближение распределений, использование GAN) задачи;
-
The Unreasonable Effectiveness of Deep Features as a Perceptual Metric - построение метрики (на основе нейросети), которая отражает похожесть изображений для человека, полученную метрику автор статьи называет lpips.
Решать задачу будем на датасете Food101, выбор обоснован красочностью датасета и его размерами.
В качестве основной модели, следуя статье Split-Brain Autoencoders: Unsupervised Learning by Cross-Channel Prediction, будем использовать автокодировщик, а в качестве эмбедингов - его латетное пространство. Код для обучения модели представлен в ноутбуке "my colorization.ipynb", для удобства были использованы блоки из библиотеки diffusers, а именно Encoder и Decoder. Архитектура модели описана в файле "Autoencoder.py".
В качестве функции потерь была взята комбинция двух функций. В след за статьей Colorful Image Colorization мы использовали smooth L1 loss для попиксельного сравнения и lpips для схожести изображений.
Для оценки полученных представлений проведем следующий эксперимент на датасете Food101. Мы разделим обучающую выборку в соотношние 9:1 для обучения автокодировщика и классификатора соотвественно. Также из обучения автокодировщика исключим 20 классов из 101. Тогда наш эксперемент будет выглядить следующим образом:
Обучение автокодировщика на 81 классе. Обучение классификатора на 1/10 обучащей выборки в латентном пространстве автокодировщика и его сравнение с классификатором, который обучался на 1/10 обучающей выборки
Тем самым мы получим ответы на следующие вопросы:
-
Помогают ли выученные представления в достижении лучшего результата классификации при наличии маленькой обучающей выборки (Эксперимент 1)?
-
Насколько хорошо обобщает данные автокодировщик и влияет ли на результаты классы, которые исполльзовались в его обучении?