Добро пожаловать в этот второй пост (Смотрите первый), где я делюсь основными мотивами и идеями, лежащими в основе некоторых статей, которые я сейчас читаю.
Давайте продолжим наше путешествие, подчеркнув, что подход AnimeGAN заключается в добавлении генеративно-состязательных сетей в рецепт передачи нейронного стиля, чтобы преобразовать фотографии реального мира в изображения аниме. В этом посте мы углубимся в детали, проиллюстрировав архитектуры, функции потерь и необходимые преобразования данных, указанные авторами статьи.
1. Архитектура
AnimeGAN состоит из двух сетей Convnet: первая – это генератор, задачей которого является преобразование реальных изображений. в аниме изображения. Второй – это дискриминатор, предназначенный для различения изображений, сгенерированных генератором, и изображений из реального домена.
а. Генератор:
Генератор спроектирован как архитектура кодер-декодер с пятью основными блоками: Conv-Block, Down-Conv, DSConv, IRB и Up-Conv.
Conv-Block: сверточный слой ➨ слой нормализации экземпляра ➨ функция активации Leaky Relu
DSConv: свертка с разделением по глубине ➨ Слой нормализации экземпляра ➨ Функция активации Leaky Relu ➨ Conv-Block
IRB: Conv-Block ➨ Свертка с разделением по глубине ➨ Слой нормализации экземпляра ➨ Функция активации Leaky Relu ➨ Сверточный слой ➨ Слой нормализации экземпляра ➨ Остаточное соединение
Преобразование вниз: DSConv ➨ Изменить размер ➨ DSConv
Преобразование вверх: изменение размера ➨ DSConv
б. Дискриминатор:
Ключевыми компонентами дискриминатора являются сверточный слой, функция активации Leaky Relu и слой нормализации экземпляра.
2. Функция потерь:
Идея состоит в том, чтобы подойти к проблеме как сопоставление изображения с изображением, где изображения реального мира (область фотографии P) сопоставляются с областью анимации A. Вот как организован обучающий набор данных:
Прежде чем перейти к вычислению функции потерь, анимационные изображения претерпевают два преобразования: они преобразуются в оттенки серого, поскольку мы хотим передать текстуру аниме-изображений реальным фотографиям, а не цвет.
S_data(a) ➨ оттенки серого ➨ S_data(x)
Вторая модификация заключается в удалении краев анимационных изображений и преобразовании их в оттенки серого.
S_data(a) ➨remove_edges ➨ S_data(e) ➨ оттенки серого ➨ S_data(y)
С целью создания качественных изображений и повышения стабильности обучения авторы предложили использовать функцию наименьших квадратов потерь в качестве состязательных потерь (LSGAN).
Функция потери AnimeGAN:
L_adv(G, D): потери противника, влияющие на преобразование анимации.
процесс в генераторе G
L_con(G, D): потеря содержимого, помогает сгенерированному изображению сохранить содержимое входной фотографии.
L_gra(G, D): потеря стиля в оттенках серого, помогает сгенерированному изображению иметь стиль аниме на текстуре и линиях.
L_col(G, D): потеря цвета при реконструкции, помогает сгенерированному изображению иметь цвет исходной фотографии.
w_adv, w_con, w_gra и w_col — веса для балансировки функций потерь.
Потери генератора:
Перенос стиля (потеря контента, потеря оттенков серого) влияет на потери генератора в дополнение к потерям методом наименьших квадратов и потерям при восстановлении цвета.
VGG19 используется в качестве экстрактора признаков в содержании и потере стиля, а также грамматической матрицы признаков, которая используется при потере стиля.
При потере цветопередачи авторы предложили преобразовать фотографии из формата RGB в формат YUV, чтобы получить более качественную цветопередачу.
Потери L1 используются для канала Y, а потери Хьюберта используются для каналов U и V.
Окончательные потери генератора можно выразить следующим образом:
Потеря дискриминатора:
Функция потерь дискриминатора включает в себя две функции потерь: состязательные потери с продвижением краев для воспроизведения краев и состязательные потери в градациях серого для предотвращения отображения результирующего изображения как изображения в градациях серого.
Окончательная потеря дискриминатора:
0,1 — это коэффициент масштабирования, позволяющий избежать слишком резких краев в сгенерированных изображениях.
На этом мы завершаем этот пост об AnimeGAN, следующим шагом будет реализация документа в PyTorch.
Спасибо, что дочитали до конца, и, пожалуйста, не стесняйтесь оставлять любые рекомендации или исправления в разделе комментариев.
Github: анашас
LinkedIn: Анас Хасни