Добро пожаловать в этот второй пост (Смотрите первый), где я делюсь основными мотивами и идеями, лежащими в основе некоторых статей, которые я сейчас читаю.

Давайте продолжим наше путешествие, подчеркнув, что подход 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: Анас Хасни