Заметки о чтении бумаги AnimeGAN

GAN

封面

Эта статья была впервые опубликована в моем личном блоге:Ошибки X. женщины/аниме-сухой-ты…

Добро пожаловать в другие статьи:xerrors.fun


Первый взгляд на аннотацию

In this paper, a novel approach for transforming photos of real-world scenes into anime style images is proposed, which is a meaningful and challenging task in computer vision and artistic style transfer. The approach we proposed combines neural style transfer and generative adversarial networks (GANs) to achieve this task. For this task, some existing methods have not achieved satisfactory animation results. The existing methods usually have some problems, among which significant problems mainly include: 1) the generated images have no obvious animated style textures; 2) the generated images lose the content of the original images; 3) the parameters of the network require the large memory capacity. In this paper, we propose a novel lightweight generative adversarial network, called AnimeGAN, to achieve fast animation style transfer. In addition, we further propose three novel loss functions to make the generated images have better animation visual effects. These loss function are grayscale style loss, grayscale adversarial loss and color reconstruction loss. The proposed AnimeGAN can be easily end-to-end trained with unpaired training data. The parameters of AnimeGAN require the lower memory capacity. Experimental results show that our method can rapidly transform real-world photos into highquality anime images and outperforms state-of-the-art methods.

В этой статье предлагается новый метод преобразования фотографий реальных сцен в анимационный стиль, что является значимой и сложной задачей в области компьютерного зрения и передачи художественного стиля. Предлагаемый нами метод сочетает в себе передачу нейронного стиля и генеративно-состязательные сети (GAN) для решения этой задачи. Для этой задачи некоторые существующие методы не дали удовлетворительных результатов преобразования. Существующие методы, как правило, имеют некоторые проблемы, среди которых в основном важными проблемами являются: 1)Полученное изображение не имеет явных текстур в стиле анимации.;2)Полученное изображение теряет содержимое исходного изображения.;3)Сетевые параметры требуют большего объема памяти. В этой статье мы предлагаем новую легкую генеративно-состязательную сеть под названием AnimeGAN для быстрой передачи стиля анимации. Кроме того, мы также предлагаем три новые функции потерь, чтобы сгенерированные изображения имели лучшие анимационные визуальные эффекты. Этими функциями потерь являются потеря стиля в оттенках серого, состязательная потеря в оттенках серого и потеря восстановления цвета. Предлагаемый AnimeGAN можно легко обучить от начала до конца с непарными обучающими данными. Параметры AnimeGAN имеют более низкие требования к памяти. Экспериментальные результаты показывают, что наш метод может быстро преобразовывать реальные фотографии в высококачественные анимированные изображения и превосходит современные методы.

Короче говоря, некоторые люди в отрасли в настоящее время делают это, но никто из них не работает.Есть несколько небольших проблем, которые необходимо решить.Предложив новую сеть и новую функцию потерь, мы добились наилучших результатов.

1. Introduction

Недостатки каждого алгоритма

В документе считается, что текущий алгоритм имеет следующие проблемы. Это действительно распространенная проблема в этой области в настоящее время, и почти каждая статья рассматривает решение этих проблем:

These important problems mainly include: 1) the generated images have no obvious animated style textures; 2) the generated images lose the content of the original photos; 3) a large number of the parameters of the network require more memory capacity.

  1. Полученное изображение не имеет очевидных текстур в стиле анимации;
  2. Сгенерированное изображение теряет информацию о содержании исходной фотографии;
  3. Параметры сети слишком велики, и требуется больший объем памяти;

Какие решения предлагает автор

Для решения этих проблем авторы предлагают новую облегченную сеть GAN, которая меньше и быстрее.

The proposed AnimeGAN is a lightweight generative adversarial model with fewer network parameters and introduces Gram matrix to get more vivid style images.

Предложенный в статье AnimeGAN представляет собой облегченную генеративно-состязательную модель с меньшим количеством сетевых параметров и вводит матрицу Грама для создания более ярких изображений стиля. Для создания изображений с лучшими визуальными эффектами предлагаются три функции потерь: потеря стиля в градациях серого, потеря реконструкции цвета и состязательная потеря в градациях серого. В генеративной сети «потеря оттенков серого» и «потеря восстановления цвета» делают сгенерированные изображения более выраженными в стиле аниме и сохраняют цвет фотографии. «Проигрыш в оттенках серого» в сети распознавания делает сгенерированные изображения яркими цветами. В сети дискриминатора мы также используем состязательную потерю, продвигающую края, предложенную CartoonGAN, чтобы сохранить острые края.

Кроме того, чтобы сгенерированное изображение содержало содержимое исходной фотографии, предварительно обученный VGG19 вводится в качестве перцептивной сети для получения потери L1 функций с учетом глубины сгенерированного изображения и исходной фотографии.

Мое понимание: аналогично методу, используемому CartoonGAN, многомерная информация изображения может быть лучше извлечена с помощью модели предварительной подготовки, чтобы можно было сравнить разницу между двумя фотографиями в случае разных стилей. , стили двух изображений разные, одинаковые, но многомерная семантическая информация одинаковая. Вот почему этим сетям не нужно одновременно обучать две модели, как Cycle GAN и Dual GAN, чтобы обеспечить нормальную сходимость модели.

Другие улучшения:

  1. выполнитьИнициализировать обучение, используя только потерю контента Lcon(G, D) для предварительной подготовки генеративной сети G, что делает обучение AnimeGAN более простым и стабильным, как это было предложено CartoonGAN. (не понял почему)
  2. Последний сверточный слой с ядром свертки 1 × 1 не использует слой нормализации и позже использует нелинейную функцию активации tanh. (не понял почему)
  3. Функция активации, используемая в каждом модуле, — LReLU.

2. Our Method

Далее мы дадим подробное введение по трем аспектам сетевой архитектуры, функции потерь и обучения.

Сетевая архитектура

Прежде чем смотреть на AnimeGAN, давайте взглянем на модель CartoonGAN,Реализация PyTorch

CartoonGAN 的模型

Можно сказать, что AnimeGAN является улучшением CartoonGAN.Реализация PyTorch

Сеть генератора можно рассматривать как сеть кодер-декодер, стандартную свертку, свертку с разделением по глубине, остаточную сеть, модули повышающей и понижающей дискретизации.

Из следующего утверждения мы можем видеть, что эта статья в значительной степени опирается на идеи CartoonGAN и улучшает ее, чтобы избежать появления текстуры шахматной доски; следующий рисунок представляет собой экспериментальный результат в статье CartoonGAN, который можно ясно увидеть до тех пор, пока не появится клетчатая текстура. появляется текстура.

функция потерь

Первый — обработка обучающих данных, TODO

Функция потерь генератора в основном делится на четыре части (Формула изображения), разные потери имеют разные весовые коэффициенты, автор использует 300, 1,5, 3, 10:

L(G,D)=юadvLadv(G,D)+юconLcon(G,D)+юgraLgra(G,D)+юcolLcol(G,D)L(G, D)=\omega_{a d v} L_{a d v}(G, D)+\omega_{\operatorname{con}} L_{c o n}(G, D)+\omega_{g r a} L_{g r a}(G, D)+\omega_{\operatorname{col}} L_{c o l}(G, D)
  1. Потери состязательности (adv) — это потери состязательности в генераторе G, которые влияют на процесс перехода анимации.
  2. Потеря содержимого (con) — это потеря содержимого, которая помогает сгенерированному изображению сохранить содержимое входной фотографии.
  3. Потеря стиля оттенков серого (gra), так что результирующее изображение имеет четкую аниме-стиль текстуры и линий.
  4. Потеря цвета при реконструкции (кол), так что результирующее изображение имеет цвета исходной фотографии.

Для потери контента и потери стиля в оттенках серого предварительно обученный VGG19 используется в качестве перцептивной сети для извлечения высокоуровневых семантических характеристик изображений. Они представлены как (картинка этой формулы):

Lcon(G,D)=EpiSdata(p)[VGGl(pi)VGGl(G(pi))1]Lgra(G,D)=EpiSdata(p),ExiSdata(x)[Gram(VGGl(G(pi)))Gram(VGGl(xi))1]\begin{array}{c} L_{c o n}(G, D)=E_{p_{i} \sim S_{d a t a}(p)}\left[\left\|V G G_{l}\left(p_{i}\right)-V G G_{l}\left(G\left(p_{i}\right)\right)\right\|_{1}\right] \\ L_{g r a}(G, D)=E_{p_{i} \sim S_{d a t a}(p)}, E_{x_{i} \sim S_{d a t a}(x)}\left[\| \operatorname{Gram}\left(V G G_{l}\left(G\left(p_{i}\right)\right)\right)\right. \\ \left.-\operatorname{Gram}\left(V G G_{l}\left(x_{i}\right)\right) \|_{1}\right] \end{array}

Что касается извлечения и преобразования цвета, автор сначала преобразует каналы RGB в каналы YUV, а затем использует разные методы расчета потерь для разных каналов (звучит как хорошая идея), напримерформула

Lcol(G,D)=EpiSdata (p)[Y(G(pi))Y(pi)1+U(G(pi))U(pi)H+V(G(pi))V(pi)H]\begin{array}{r} L_{c o l}(G, D)=E_{p_{i} \sim S_{\text {data }}(p)}\left[\left\|Y\left(G\left(p_{i}\right)\right)-Y\left(p_{i}\right)\right\|_{1}+\left\|U\left(G\left(p_{i}\right)\right)-U\left(p_{i}\right)\right\|_{H}+\left\|V\left(G\left(p_{i}\right)\right)-V\left(p_{i}\right)\right\|_{H}\right] \end{array}

Здесь используется Huber Loss, я не знаю, что это такое?

Окончательная функция потерь генератора L(G) может быть выражена как (картинка этой формулы):

L(G)=юadvEpiSdata(p)[(G(pi)1)2]+юconLcon(G,D)+юgraLgra(G,D)+юcolLcol(G,D)\begin{array}{r} L(G)=\omega_{a d v} E_{p_{i} \sim S_{d a t a}(p)}\left[\left(G\left(p_{i}\right)-1\right)^{2}\right]+\omega_{c o n} L_{c o n}(G, D) \\ +\omega_{g r a} L_{g r a}(G, D)+\omega_{c o l} L_{c o l}(G, D) \end{array}

Функция потерь, используемая дискриминатором, в дополнение к введению состязательной потери, продвигающей края, предложенной CartoonGAN, так что изображения, сгенерированные AnimeGAN, имеют четкие воспроизводимые края, новый тип состязательной потери в оттенках серого также используется для предотвращения сгенерированного изображение из оттенков серого отображается в виде изображения. Наконец, функция потерь дискриминатора выражается каккартинка этой формулы:

L(D)=юadv[EaiSdata(a)[(D(ai)1)2]+EpiSdata(p)[(D(G(pi)))2]+ExiSdata(x)[(D(xi))2]+0.1EyiSdata(y)[(D(yi))2]]\begin{array}{r} L(D)=\omega_{a d v}\left[E_{a_{i} \sim S_{d a t a}(a)}\left[\left(D\left(a_{i}\right)-1\right)^{2}\right]+E_{p_{i} \sim S_{d a t a}(p)}\left[\left(D\left(G\left(p_{i}\right)\right)\right)^{2}\right]\right. \\ \left.+E_{x_{i} \sim S_{d a t a}(x)}\left[\left(D\left(x_{i}\right)\right)^{2}\right]+0.1 E_{y_{i} \sim S_{d a t a}(y)}\left[\left(D\left(y_{i}\right)\right)^{2}\right]\right] \end{array}

О состязательных потерях, которые способствуют преимуществам

Это описано в статье CartoonGAN: В предыдущей структуре GAN задача дискриминатора D заключалась в том, чтобы выяснить, генерируется ли входное изображение из генератора или из реального изображения. Однако мы видим, что простого обучения дискриминатора D отличию сгенерированных изображений от реальных мультяшных изображений недостаточно для преобразования фотографий в мультяшные изображения. Это связано с тем, что важной особенностью мультяшных изображений является наличие четких краев, но информация об этих краях обычно занимает небольшую часть всего изображения. Следовательно, выходные изображения без четко воспроизведенных краев, но с правильными тенями, могут обмануть дискриминатор.

Поэтому заставьте дискриминатор уделять больше внимания краю. Следовательно, мультяшное изображение со сглаживанием краев также отправляется в дискриминатор D, как показано в формуле:Формула изображения:

Ladv(G,D)=EciSdata (c)[logD(ci)]+EejSdata (e)[log(1D(ej))]+EpkSdata (p)[log(1D(G(pk)))]\mathcal{L}_{a d v}(G, D)=\mathbb{E}_{c_{i} \sim S_{\text {data }}(c)}\left[\log D\left(c_{i}\right)\right]+\mathbb{E}_{e_{j} \sim S_{\text {data }}(e)}\left[\log \left(1-D\left(e_{j}\right)\right)\right]+\mathbb{E}_{p_{k} \sim S_{\text {data }}(p)}\left[\log \left(1-D\left(G\left(p_{k}\right)\right)\right)\right]

подробности обучения

Предлагаемый AnimeGAN можно легко обучить от начала до конца с непарными обучающими данными. Поскольку модели GAN сильно нелинейны, при случайной инициализации оптимизация может легко попасть в локальные оптимумы. CartoonGAN предполагает, что предварительное обучение генератора помогает ускорить сходимость GAN. Поэтому генеративную сеть G предварительно обучают, используя только функцию потери контента Lcon(G, D). Инициализируйте обучение для одной эпохи со скоростью обучения, установленной на 0,0001. На этапе обучения AnimeGAN скорость обучения генератора и дискриминатора составляет 0,00008 и 0,00016 соответственно. Эпох AnimeGAN составляет 100, а размер пакета установлен на 4. Оптимизатор Адама используется для минимизации общих потерь. AnimeGAN обучается на графическом процессоре Nvidia 1080ti с использованием Tensorflow.

Не понял:

  1. В статье упоминается, что многие алгоритмы NST основаны на сопоставлении статистики матрицы Грама для извлечения глубоких признаков из предварительно обученных сверточных сетей. Я не понял, что это значит.
  2. Что такое Хубер Лосс?

Комбинация среднеквадратичной ошибки и ошибки абсолютного значения.

  1. Что такое абляционный эксперимент?

Как говорится, это метод управления переменными.

использованная литература

1. AnimeGAN: a novel lightweight GAN for photo animation | pdf | Tensorflow | PyTorch

2. AnimeGAN v2 | Xin Chen and Gang Liu | TensorFlow | PyTorch

4. CartoonGAN | pdf | Pytorch | Pytorch2 | Tensorflow

5. Разобраться с выборкой и форматом YUV в одной статье

6. Глубокое понимание глубоко отделимой свертки — GiantPandaCV