задний план
Генерация анимационных персонажей на основе Generative Adversarial Network (GAN) — это новая технология в анимационной индустрии, появившаяся в последние годы. Традиционная модель GAN использует алгоритм обратного распространения для получения целевой модели генерации посредством динамического противостояния между генератором и дискриминатором. Из-за нестабильного процесса обучения сети трудно сходиться, что приводит к отсутствию разнообразия и точности в сгенерированных изображениях и даже к коллапсу режима. Эта статья основана на глубоком обучении и относится к связанным практическим проектам.pytorch-book, метод обучения обучающей сети с использованием нормализованных и классифицированных изображений лиц аниме-персонажей.Материалы, которыми поделился пользователь Zhihu He Zhiyuan, научите DCGAN реализовать автоматическую генерацию изображений персонажей аниме. В процессе обучения контролируйте экспериментальные параметры, проводите количественный анализ и оптимизацию и получите модель генератора, которая может автоматически генерировать изображения анимационных персонажей. Основная работа заключается в следующем:
-
Разработайте сетевую модель DCGAN. Анализируется принцип GAN, оптимизатор и другие технологии, задействованные в предмете, а нейронная сеть для генерации анимационных персонажей спроектирована в соответствии с основными принципами DCGAN.
-
Создайте библиотеку образцов изображений. Соберите 40 000 изображений персонажей аниме, случайным образом разделите их на обучающий набор и тестовый набор в соответствии с пропорцией и используйте набор данных для проведения неконтролируемого обучения и тестирования DCGAN.
-
Внедрить и обучить сеть DCGAN. Используйте Pytorch в качестве основы DCGAN, используйте Vidsom для визуализации процесса генерации изображений, завершите построение и обучение целевой сети. В процессе обучения контролируются экспериментальные параметры, выполняется количественный анализ и оптимизация, получается набор качественных параметров сети.
предыстория и смысл
По мере того, как двумерная культура постепенно выходит в поле зрения общественности, персонажи, созданные различными анимационными произведениями, стали особым культурным символом. Однако из-за сложного характера самой анимации к ней предъявляются высокие требования к себестоимости, качеству и творчеству, что приводит к частым высоким инвестициям и низким доходам в анимационной индустрии. Поскольку генеративно-состязательные сети (GAN) обладают огромным потенциалом развития в области генерации изображений и видео, многие исследователи пытались начать с GAN, чтобы реализовать автоматическую генерацию анимационных изображений, что вдохновило создателей и сэкономило огромные творческие расходы. .
В настоящее время существует два основных способа создания анимационных изображений.Первый – перенос стиля лица на основе существующих изображений реального лица.Проект U-GAT-IT использует обработку изображений для преобразования исходного содержимого изображения в стиль анимации. Слияние для преобразования стиля анимации, как показано на рис. 1.1. Несмотря на то, что было получено множество результатов исследований в области технологии передачи стиля, некоторые дефекты по-прежнему неизбежны, например: сгенерированные мультяшные изображения имеют одно выражение, искажение черт лица и сложную сетевую структуру.
Рисунок 1.1(a)(b) Тепловая карта (c) Аниме-изображение
Исследовательский статус обработки изображений на основе GAN
В последние годы в области глубокого обучения были сделаны крупные прорывы, большинство из которых основано на технологии восприятия: компьютеры воспринимают объекты и распознают контент, имитируя человеческое мышление. Идея генеративно-состязательных сетей была предложена Гудфеллоу в 2014 году. Процесс ее разработки составляет всего шесть лет, но она оказала большое влияние на область искусственного интеллекта.
Игровой процесс GAN заключается в использовании распределения данных, созданного генератором, для соответствия реальному распределению данных. Установка представляет собой сеть, которая генерирует аниме-изображения, получает случайный шум, генерирует аниме-изображения и выводит их. Установите дискриминантную сеть, введите аниме-изображение, дискриминатор может рассчитать вероятность того, что изображение является сгенерированным или реальным изображением. Два обратно обновляют сеть в соответствии с возвращенными результатами, конкурируют друг с другом, и динамические изменения, наконец, достигают равновесия Нэша.
Основываясь на превосходстве производительности GAN, модель постепенно применялась к различным направлениям в области обработки изображений, включая преобразование изображений, рисование изображений, передачу стиля, создание изображений и т. д. Например, модель pix2pixGAN[4], разработанная Филиппом Изола и др. в 2016 году, может преобразовывать семантические изображения в фотографии видов улиц и зданий, а также преобразовывать эскизы в цветные изображения, совершив крупный прорыв в области преобразования изображений.
Хотя первоначальная сеть GAN была впервые предложена в 2014 году, ее быстрое расширение привело к появлению большого количества производных сетей, таких как: DCGAN, SGAN, ACGAN и т. д. В 2015 году Маттиа впервые предложил chainerGAN для реализации генерации анимационных персонажей через DCGAN, но инфраструктура Chainer не получила широкого распространения. Впоследствии Цзе Лей и другие опубликовали Animegan в 2017. Этот проект использует структуру GAN и предлагает три новые функции потерь: потеря стиля в оттенках серого, потеря конфронтации в оттенках серого и потеря реконструкции цвета.Изображения преобразуются в изображения в стиле аниме, например, преобразование природные ландшафты, дорожные и уличные сцены. К сожалению, любителям, не увлекающимся компьютерами, трудно использовать эти проекты, что приводит к ограничениям.
В 2017 году студенты Университета Фудань и CMU совместно выпустили проект под названиемMakeGirlsMoreПроект создания анимационных персонажей получил широкое внимание на Github после его выпуска. Этот проект использует React.js в качестве базовой структуры страницы.Чтобы повысить практичность проекта, разработчик преобразует модель Chainer в модель Java на основе WebAssembly. Пользователь может установить соответствующие параметры мультяшных персонажей в интерфейсе браузера, такие как цвет глаз, выражение лица, прическа и другую информацию, чтобы реализовать автоматическое создание мультяшных персонажей.
учебная программа
Прежде всего, для создания библиотеки образцов изображений требуется большое количество анимационных изображений.Вы можете использовать Python для обхода веб-сайтов, связанных с анимационными материалами, или использовать существующие наборы данных в Интернете, разделить обучающий набор и тестовый набор в соответствии с фиксированным соотношением. и стандартизируйте образцы для создания изображений. Размер сохраняется, и каждое изображение имеет уникальный идентификатор.
Во-вторых, CNN выбирается в качестве базовой сети DCGAN, а уровень пула и полносвязный уровень CNN настраиваются. DCGAN — это глубокая сверточная сеть, которая может обеспечивать извлечение целевых признаков, а также классификацию изображений. При определении сети генерации и дискриминантной сети в DCGAN добавляются функции активации, такие как ReLU и Sigmoid, для обработки параметров, классификации изображений и т. д.
Перед обучением сети используйте Pytorch в качестве фреймворка, Python в качестве языка программирования для завершения кода, используйте оптимизатор Adam для минимизации функции потерь, а оптимизатор настраивает гиперпараметры. При обучении сети Visdom используется для визуализации процесса обучения.Управляя такими параметрами, как скорость обучения, количество итераций и коэффициент обучения, настраиваются несколько наборов контрольных экспериментов для наблюдения за результатами экспериментов и использования теста. набор для нескольких тестов.
Сравнивая и анализируя несколько наборов экспериментальных результатов, можно получить набор оптимальных параметров сети. Используя обученную модель целевой сети, можно вывести несколько различных анимационных изображений. Технический маршрут показан на рисунке 1.3:
Рисунок 1.3 Технологическая дорожная карта
Введение в нейронные сети и технологии, связанные с GAN
Понятия, связанные с нейронными сетями
Нейрон в компьютерной сети является базовой единицей нейронной сети, и его структура относится к биологическому нейрону. В 1943 г. McCulloch и др. предложили нейронную модель M-P. Это оказывает важное влияние на развитие нейронных сетей. Абстрактная модель MP показана на рисунке 2.1:
Рисунок 2.1 Модель структуры нейрона
В сочетании с рис. 2.1 отношения входа и выхода нейронов представлены стрелками направления, входной сигнал может быть представлен Xi, выходной сигнал может быть представлен Y, а Wi представляет вес. Несколько нейронов могут быть объединены в нейронную сеть через заданное отношение соединения.
В настоящее время нейронные сети можно разделить на искусственные нейронные сети и биологические нейронные сети в соответствии с принципами их работы.В области компьютеров принцип искусственных нейронных сетей заключается в использовании компьютеров для имитации работы мозга. На рисунке 2.2 ниже показаны основные категории нейронных сетей.Модель DCGAN в этой статье основана на многослойной нейронной сети CNN.
Рисунок 2.2 Основные категории нейронных сетей
Однослойная модель персептрона является наиболее классической моделью нейронной сети с прямой связью, предложенной Фрэнком Розенблаттом в 1957 году и реализующей двухклассовую линейную классификацию. Добавьте нейронные узлы во входных и выходных позициях сети в качестве входного и выходного модулей сети. Функция блока ввода заключается в передаче данных, а блок вывода реализует функцию вычисления ввода предыдущего слоя. На рис. 2.3 ниже показана модель восприятия нейронной сети первого поколения:
Рисунок 2.3 Модель нейронной сети первого поколения
Поскольку модель нейронной сети первого поколения не может быть применена для решения проблемы XOR, она ограничена линейно разделимыми задачами. Так вплоть до середины 1980-х широкое внимание стала привлекать модель распределенной параллельной обработки (Parallel Distributed Processing, PDP). Алгоритм обратного распространения постепенно стал основным алгоритмом обучения модели PDP, в это время нейронная сеть начала привлекать внимание людей и стала новой точкой исследования [7]. Также появилась структура нейронной сети второго поколения, как показано на рис. 2.4:
Рисунок 2.4 Структурная схема нейронной сети второго поколения
В 2006 году Джеффри Хинтон предложил глубокую сеть, которая обучает веса между нейронами с помощью большого количества данных, чтобы вся сеть могла генерировать данные с максимальной вероятностью, чтобы идентифицировать признаки, классифицировать данные, генерировать данные и т. д.
Сверточная нейронная сеть
Сверточная нейронная сеть (CNN) относится к нейронной сети, которая использует операции свертки по крайней мере в одном слое сети вместо обычных операций умножения матриц [18]. Первой сверточной нейронной сетью была нейронная сеть с временной задержкой (TDNN), предложенная Александром Вайбелем в 1987 году, но только на конкурсе ImageNet 2012 года CNN снова привлекла внимание общественности. В настоящее время обычно используемая структура CNN состоит из комбинации нескольких сверточных слоев, объединенных слоев и полностью связанных слоев. Как показано на рисунке 2.5.
Рисунок 2.5 Структурная схема нейронной сети
Слой свертки в основном использует ядро свертки для извлечения локальных особенностей изображения.Его нейроны расположены в соответствии с шириной, высотой и глубиной, что подходит для трехцветной структуры канала RGB цветного изображения, поэтому его расположение также называется трехмерным расположением. Это позволяет избежать проблемы низкой широты традиционной модели персептрона и может лучше генерировать изображения с высоким разрешением.Настройки параметров сверточного слоя влияют на производительность сверточной нейронной сети, а точность сети положительно коррелирует с количеством сверточных слои. .
Слой активации обычно использует функцию активации ReLU, которая может облегчить проблему исчезновения градиента и повысить надежность и способность модели к нелинейному выражению путем сопоставления карты объектов с новым пространством объектов.
Основная роль слоя пула состоит в том, чтобы выполнять выбор объектов. Слой пула может объединять и уменьшать размер карты объектов посредством процесса понижения дискретизации, что уменьшает объем вычислений по сравнению со сверточным слоем и позволяет избежать избыточности информации. Обычно используется максимальный пул и средний пул.
Полносвязный слой используется для повторного соединения локальных признаков, выдаваемых предыдущим слоем, в полный граф, который может перестроить хвост сверточной нейронной сети и уменьшить потерю информации о признаках.
Операция свертки
Процесс свертки — это процесс выполнения линейного преобразования в каждой позиции изображения и преобразования его в новое значение. В этом разделе в основном обсуждается использование операций свертки в изображениях. Операция свертки в основном извлекает особенности изображения с помощью экстрактора признаков (фильтра), такие как линии и структуры изображения, чтобы уменьшить сложность модели глубокой сети. Следующие формулы 2.1 и 2.2 могут представлять отношения между многослойным нейроном и верхним и нижним слоями:
В приведенных выше формулах 2.1 и 2.2 есть несколько важных параметров, W1: ширина изображения до свертки, W2: ширина карты признаков после свертки, H1: ширина изображения до свертки, H2: высота карты признаков после свертки; S: Шаг, интервал ядра свертки при скольжении; F: ширина фильтра; P: Zero Padding, количество витков нулевого заполнения на обоих концах исходного изображения.
Рисунок 2.6 ниже представляет собой исходное изображение размера.После настройки операции свертки устанавливается часть процесса получения изображения признака размера.Рисунок 2.6 представляет собой исходное входное изображение, зеленая часть – ядро свертки, а синее изображение является целевым изображением.Для длины изображения после свертки значения на рисунке 2.7 могут быть рассчитаны по зеленой части.
Длина карты признаков изображения после свертки составляет:
Значение после операции:
С помощью описанного выше процесса операции можно сделать вывод, что операция свертки предназначена для отображения данных высокой размерности в данные низкой размерности, а операция обратной свертки является операцией, противоположной операции свертки, которая отображает данные низкой размерности в данные высокой размерности. размерные данные.
Дизайн сети для создания аниме-изображений
Принципы проектирования DCGAN
В настоящее время DCGAN является наиболее широко используемой производной сетью GAN в практической инженерной практике.Для улучшения качества генерации изображений и повышения ее стабильности многие исследователи пытались оптимизировать и предложили четыре принципа построения.Генератор и конструкция дискриминатора основан на этом принципе, и взаимосвязь между ними будет подробно описана ниже.
(1) Сверточный слой вместо слоя объединенияОперация объединения заставит ядро свертки покрыть большее поле зрения изображения на уменьшенной карте объектов, но влияние оптимизации на производительность сети будет небольшим.Используйте слой свертки вместо слоя объединения, чтобы позволить сети автоматически выбирать и отфильтровывать ненужной информации. , изучите процесс повышения и понижения дискретизации и улучшите вычислительную мощность компьютера.
(2) Удалить полностью связанный слойПолносвязный слой обычно добавляется на последнем уровне сети для соединения объектов изображения, что может уменьшить потерю информации об объектах. Поскольку диапазон восприимчивого поля для извлечения признаков изображения лица невелик, нет необходимости извлекать полные признаки изображения, поэтому, чтобы избежать вышеуказанных проблем, сетевая модель в этом проекте удаляет полностью связанный слой.
(3) Нормализация партииГенератор и дискриминатор в этой теме — пятислойные нейронные сети, сложность входных данных каждого слоя будет увеличиваться слой за слоем, что изменит распределение выходных данных и повлияет на инициализацию параметров сети и производительность сети. Алгоритм БП. Пакетная нормализация (BN) данных может заставить выходные данные подчиняться распределению фиксированных данных и преобразовать признаки данных в один и тот же масштаб, тем самым увеличивая скорость сходимости нейронной сети.
(4) Функция активацииФункция активации имеет характеристики непрерывного вывода, что позволяет нейронной сети изменяться нелинейно, изучать параметры сети посредством численной оптимизации и улучшать масштабируемость сети. Генератор и дискриминатор этой темы — пятислойные сетевые модели, которые требуют большого объема вычислений.Выбор функции активации для каждого слоя должен соответствовать двум точкам высокой вычислительной эффективности и стабильности обучения, а также диапазону значений ее производная функция распределена разумно.
Основываясь на вышеуказанных принципах, функция ReLu и функция Tanh добавляются к генератору DCGAN, а функция LeakyReLu и функция Sigmoid добавляются к дискриминатору.В следующем содержании кратко представлены эти четыре функции активации.
Сигмовидная функция является насыщенной функцией на обоих концах, и ее значение находится в диапазоне от 0 до 1. Определение сигмовидной функции показано в уравнении 3.1:
На рисунке 3.1 ниже показано изображение функции сигмоиды, которая принимает начало оси координат в качестве границы, входное значение становится больше, выходной результат близок к 1, входное значение уменьшается, а выходной результат близок к 0, поэтому он обычно используется в качестве выходного терминала для решения проблемы классификации двух классов. Эта особенность также имеет определенные недостатки, например, результат обучения нейронной сети на выходе всегда больше нуля, а когда входные данные имеют максимальное или минимальное значение, градиент сигмовидной функции бесконечно приближается к 0, что не способствует к обратному распространению нейронной сети.
Рисунок 3.1 Изображение сигмовидной функции
Изображение функции Tanh также имеет S-образную форму. В целом скорость сходимости функции Tanh лучше, чем у сигмовидной функции, что позволяет избежать ситуации, когда среднее значение не равно нулю. Формула показана в 3.2. :Его можно получить из функции image 3.2, диапазон ее значений равен (0,1), а сеть DCGAN добавляет функцию Tanh к выходному слою генератора, что способствует цветовому охвату изображения.
Рисунок 3.2. Изображение функции Tanh
Функция активации Relu является функцией активации с левым насыщением. Он имеет высокую вычислительную эффективность и обычно используется для вывода нейронов скрытого слоя.В последние годы он широко используется при обучении моделей многослойных нейронных сетей.Его функциональная формула показана на 3.3:
Из рисунка 3.3 функции ReLU видно, что производная равна 1, когда x>0, и 0, когда x
Рисунок 3.3 Изображение функции ReLU
Функция LeakyReLU может решить проблему «мертвого ReLU» и основана на функции ReLU Формула функции показана в 3.4:
Как показано на рисунке 3.4, когда он меньше 0, добавляется наклон, и значение, как правило, невелико, что позволяет избежать проблемы стагнации ReLU во время обучения отрицательной полуоси.
Рисунок 3.4 Изображение функции LeakyReLU
Структура сети DCGAN
Модель DCGAN состоит из сети генерации G и дискриминантной сети D. Структура сети состоит из пяти слоев. Сеть генерации принимает случайный входной шум и генерирует целевое изображение через шум, дискриминантная сеть принимает изображение и создает после суждение, вычисляется значение вероятности.Если источником изображения является сеть генерации, выход равен 0, а если изображение исходит из реального распределения данных, выход равен 1. Согласно результатам обратной связи, эти двое постоянно обновляют свои параметры, пока не достигнут равновесия Нэша.
Детальное проектирование генеративных и дискриминационных сетей
Структура сети генератора
Сетевая структура генеративной модели имеет в общей сложности пять слоев, а размер изображения генерируется методом повышения дискретизации Его основная структура показана на рисунке 3.6:
Рисунок 3.6 Структурная схема генераторной сети DCGAN
Вся сетевая структура генератора не имеет объединяющего слоя, и вводится равномерно распределенный шум размерности nz.Согласно информации о входном векторе, нейронная сеть шаг за шагом получает информацию об особенностях входного изображения, такую как линии, стили и т. д., а затем в соответствии с глубиной сети., и непрерывно оптимизировать детали изображения.
Введите изображение и установите соответствующее ядро свертки в соответствии с требуемым размером карты объектов Размер ядра свертки влияет на размер обучаемого значения пространственного признака сети генерации. Использование функции nn.Sequential() в коде может добавить к модулю свертки, активацию, объединение и т. д. в порядке, соответствующем входящему порядку.После построения сетевого уровня автоматически вызывается прямой метод. На каждом уровне, кроме выходного, добавлена обработка пакетной нормализации (BN), чтобы облегчить проблему коллапса модели. Согласно требованиям сетевой структуры каждого слоя используется соответствующая функция активации, и, наконец, выводится 3-канальное RGB-изображение одного пикселя. Конкретная иерархическая структура показана в таблице 3.1 ниже:
Таблица 3.1 Иерархия генеративной модели DCGAN
Layer1 — это входной слой, входной случайный шум, установите Stride на 1 и Padding на 0. Затем выполните обратную свертку с помощью функции ConvTranspose2d() и нормализуйте данные в пакетном режиме на уровне BN, используйте функцию активации ReLU для ускорения сходимости и выведите соответствующую карту объектов;
Layer2: установите Stride на 2, Padding на 1, добавьте слой BN для нормализации данных в пакетах, используйте функцию активации ReLU для ускорения сходимости и выведите соответствующую карту объектов;
Layer3: установите Stride на 2, Padding на 1, добавьте слой BN для нормализации данных в пакетах, используйте функцию активации ReLU для ускорения сходимости и выведите соответствующую карту объектов;
Layer4: установите Stride на 2, Padding на 1, добавьте слой BN для нормализации данных в пакетах, используйте функцию активации ReLU для ускорения сходимости и выведите соответствующую карту объектов;
Layer5: выходной слой, установите Stride на 3, установите Padding на 1, используйте Tanh в качестве функции активации и выведите соответствующее изображение.
Схема структуры кода генератора показана на рисунке 3.7:
Рисунок 3.7 Структурная схема кода генератора
Структура сети дискриминатора
Сетевая структура дискриминантной модели имеет в общей сложности пять уровней, и используется метод понижающей дискретизации. Вся структура сети не имеет слоя пула, а в качестве функции активации используется LeakyReLU.Наконец, результат дискриминации выводится через полносвязный слой в диапазоне от 0 до 1, что указывает на то, что входное изображение принадлежит реальному образцу или изображение, сгенерированное генератором, имеет следующую структуру Как показано на рисунке 3.8:
Рисунок 3.8 Структура дискриминаторной сети DCGAN
Слой BN также добавляется к дискриминатору, и каждый слой использует функцию активации для нелинейной обработки.Конкретная иерархическая структура показана в таблице 3.2 ниже:
Таблица 3.2 Иерархия дискриминантной модели DCGAN
Слой 1: входной слой, сначала введите изображение, для шага установлено значение 1, для заполнения установлено значение 0. Свертка получается функцией Conv2d(), а затем используется функция активации LeakyReLU() для оптимизации скорости сходимости сети;
Layer2: входное изображение, Stride установлен на 2, Padding установлен на 1, добавьте слой BN для нормализации данных в пакетах и используйте функцию активации LeakyReLU() для ускорения сходимости;
Layer3: Входное изображение, Stride установлен на 2, Padding установлен на 1, добавьте слой BN для нормализации данных в пакетах и используйте функцию активации LeakyReLU() для ускорения сходимости;
Layer4: входное изображение, для Stride установлено значение 2, для Padding установлено значение 1, добавьте слой BN для нормализации данных в пакетах и используйте функцию активации LeakyReLU() для ускорения сходимости;
Слой 5: выходной слой, для шага установлено значение 3, для заполнения установлено значение 1, а функция sigmoid() используется для вывода вероятности, указывающей на подлинность изображения.
Подводя итог, можно увидеть, что настройки Padding и Stride двух сетевых моделей почти одинаковы, а общая структура сети симметрична, но функции активации, используемые каждым уровнем, различаются.
функция потерь
Функция потерь — это неотрицательная действительная функция, которая оценивает, насколько несовместимы прогнозируемые значения модели с истинными значениями. Разрыв между ними уменьшается, чем ближе распределение вероятностей, чем больше разрыв, тем выше разница вероятностей, которую можно использовать в Pytorch, импортировав пакет torch.nn. Pytorch предоставляет множество функций потерь, каждая из которых имеет свои характеристики, например: MSELoss — это функция потерь среднеквадратичной ошибки, которая использует алгоритм градиентного спуска, который обычно используется для решения регрессионных задач, таких как прогнозирование акций и прогнозирование цен на жилье; Стабильная функция потерь также используется для решения задач регрессии, а ее кривая функции является гладкой, чтобы избежать проблемы взрыва градиента; BCELoss является частным случаем CrossEntropyLoss, который часто используется для решения задач классификации. В этом субъекте нам нужно судить, является ли вывод образца реальным изображением или сгенерированным изображением, поэтому этот субъект выбирает BCELoss в качестве функции потерь, и его определение в PyTorch показано в формуле 2.1:
Поскольку функциями активации выходных слоев сети генерации и дискриминантной сети являются функция Тана и сигмоидальная функция, обе из которых являются сигмоидными функциями, их функциональные характеристики будут снижать скорость сходимости алгоритма обратного распространения.Вызванная проблема исчезающего градиента по функции.
Адам оптимизатор
В процессе обучения DCGAN функция потерь может быть минимизирована оптимизатором, который обычно делится на алгоритм оптимизации первого порядка и алгоритм оптимизации второго порядка. В этом проекте для настройки гиперпараметров используется программа оптимизации Adam.Он сочетает в себе оптимальную производительность алгоритмов AdaGrad и RMSProp.Он может не только вычислять адаптивную скорость обучения каждого параметра, но и автоматически обновлять веса сети посредством непрерывного итерация обучающих данных.По сравнению с некоторыми другими алгоритмами, алгоритм Адама прост в реализации, имеет низкую степень занятости компьютерных ресурсов и имеет более высокую скорость сходимости.
Алгоритм Адама имеет несколько важных параметров, среди которых params представляет итерируемые параметры, используемые для оптимизации, или определяет группу параметров, lr представляет скорость обучения, которая может регулировать коэффициент обновления веса и влиять на скорость сходимости сети. определяется следующим образом в исходном коде Pytorch:
torch.optim.Adam(params,lr=a,betas=(b,c),eps=d, weight_decay=e)
В этом документе вносятся улучшения на основе параметров оптимизатора Адама по умолчанию и используется метод динамической настройки скорости обучения для решения проблем размытия изображения, коллапса режима и очевидных колебаний функции потерь во время процесса обучения., Подробные шаги описаны в разделе обучения сети.
Битва за генерацию аниме-изображений
В этой главе сначала сравниваются и анализируются несколько часто используемых фреймворков с открытым исходным кодом, выбирается фреймворк с открытым исходным кодом Pytorch, наиболее подходящий для нужд этого эксперимента, и объясняются функции инструмента визуализации Visdom. Далее подробно описывается процесс обучения сети, анализируются изображения и функции потерь, сгенерированные каждой группой экспериментов, улучшаются традиционные параметры обучения сети DCGAN и предлагаются схемы оптимизации для связанных задач.
Создание экспериментальной среды
Платформа глубокого обучения Pytorch
Благодаря постоянному обновлению и итерации различных сред глубокого обучения с открытым исходным кодом крупномасштабные модели глубокого обучения были значительно упрощены, что способствовало развитию таких технологий, как обработка изображений, НЛП и распознавание речи. Основная функция этой темы — автоматическое создание анимационных изображений.В последние годы для решения проблем с изображениями можно использовать популярные фреймворки, такие как TensorFlow и Pytorch.
Фреймворк TensorFlow представляет собой статический вычислительный граф, который нельзя изменить после генерации изображения, необходимо учитывать все возможности при инициализации, что требует высокой конфигурации компьютера. В коде статические графы не поддерживают базовый синтаксис Python, им не хватает гибкости, и они не подходят для исследовательского обучения.
Поскольку идея дизайна платформы Pytorch основана на динамическом графе вычислений, его дизайн API обладает высокой универсальностью, исходный код интуитивно понятен и лаконичен, прост для понимания, поддерживает условное суждение Python, цикл и другой базовый синтаксис, может выполняться динамически и легко отлаживать. Основываясь на своей эффективности и простоте использования, эта тема выбирает Pytorch в качестве среды глубокого обучения.
Визуализатор Висдом
Инструменты визуализации могут предоставить нам изменения данных в режиме реального времени и обучающие эффекты во время работы программы. Visdom — это легкий инструмент визуализации. Он подходит для отображения изображений в среде Pytorch, поддерживает язык Python и может рисовать различную графику, например тепловые карты, географические карты и пользовательские изображения.
Структура визуализации пользовательского интерфейса Visdom в основном состоит из сред и панелей. Как правило, основная среда используется по умолчанию, а разные среды не зависят друг от друга. Панель эквивалентна контейнеру, поддерживает несколько типов изображений, и в одной среде можно создать несколько панелей. Пользователи могут просматривать данные изображения в режиме реального времени, создавая собственную среду рисования и запуская окно браузера.Эти изображения можно масштабировать, сохранять и динамически обновлять.
Основываясь на характеристиках Visdom, таких как легкий вес, практичность и гибкость, в этой теме он выбран в качестве инструмента визуализации для рисования функции потерь и создания процесса изменения графика, что удобно для анализа данных и настройки оптимизатора и параметров обучения сети. На рисунке 4.1 ниже показан процесс обучения сети и функция Loss в Visdom.
Рисунок 4.1 Визуализация Visdom
Таким образом, в качестве сторонней среды выбран Pytorch, код написан на Python, визуализация процесса генерации изображений реализована с помощью Visdom, а сеть обучена с использованием библиотеки примеров.Подробности среды и необходимого программного обеспечения для эксперимента показаны в таблице 4.1 ниже:
Таблица 4.1 Экспериментальная среда
тренировочный процесс
Создайте библиотеку образцов изображений
Содержимое библиотеки образцов изображений представляет собой изображения черт лица аниме-персонажей.После получения большого количества исходных материалов изображений персонажей аниме с помощью сканера используйте инструмент opencv для обрезки изображений, оставив только изображения лиц аниме-персонажей. В этом проекте используются изображения, предоставленные пользователем Zhihu He Zhiyuan.Библиотека образцов обработанных анимационных изображений случайным образом делится на обучающий набор и тестовый набор в соответствии с 1: 1.
-
Обучающий набор содержит 20 000 изображений персонажей аниме, формат изображения — JPEG, разрешение — 3✖️96✖️96, имя файла каждого изображения — уникальный идентификатор;
-
Тестовый набор содержит 20 000 изображений аниме-персонажей, формат изображения — JPEG, разрешение — 3✖️96✖️96, имя файла каждого изображения — уникальный идентификатор, а параметры примера показаны на рис. 4.1:
Рисунок 4.1 Параметры образца изображения
Рисунок 4.2 Библиотека образцов изображений (часть)
Настройки гиперпараметров
Чтобы доказать влияние настройки каждого параметра на эффект обучения сети, параметры были установлены пропорционально в разных контрольных группах. Среди них G представляет время обучения генератора за единичный период, D представляет время обучения дискриминатора за единичный период, LrG представляет скорость обучения генератора, LrD представляет скорость обучения дискриминатора, Epcho представляет общий период обучения и BatchSize является входом во время одной итерации.Количество образцов, после многих экспериментов и тестов, были выбраны следующие 4 группы репрезентативных экспериментальных параметров для анализа экспериментальных результатов, как показано в таблице 4.2 ниже:
Таблица 4.2 Экспериментальные параметры
**Обучение сети**
При обучении DCGAN нам нужно фиксировать генератор и дискриминатор отдельно. Анимационные изображения, выдаваемые генератором, и анимационные изображения, предоставленные библиотекой примеров, вводятся в дискриминатор, и сигмовидная функция используется для классификации двух типов изображений. Генератор может постоянно корректировать и оптимизировать параметры в обратном порядке в соответствии с возвращаемыми результатами, чтобы сгенерированные анимационные изображения были более реалистичными и близкими к реальным изображениям.
На вход дискриминатора подается изображение персонажа аниме.После вычисления вероятности того, что это изображение является реальным изображением, результат обрабатывается сигмовидной функцией, так что выходное значение находится в диапазоне от 0 до 1. Мы можем количественно оценить его различительную способность в соответствии с результатами вычислений дискриминатора и постоянно оптимизировать ее в соответствии с результатами обратной связи, чтобы сделать результаты различения реальных анимационных изображений и сгенерированных анимационных изображений более точными.
Эти два процесса повторяются попеременно.Когда достигается указанное количество раз обучения, окончательная модель сети может быть сохранена, а эффект обучения может быть протестирован для непрерывного улучшения.Базовый процесс обучения показан на следующем рисунке:
Рисунок 4.3 Динамический игровой процесс DCGAN
Отображение и анализ результатов тренировки
Поскольку основной функцией сетевой модели DCGAN является генерация изображений персонажей аниме, эффект изображения субъективно оценивается человеческим глазом в соответствии с цветом, четкостью и целостностью лица сгенерированной графики, а функция Loss используется для оценки сетевая модель Мера степени сходимости.
(1) Когда соотношение времени обучения G:D=5:1, скорость обучения G&D=0,0002, размер пакета=128 и 200 циклов обучения, отображаются эффекты изображения 1-го, 49-го, 99-го и 199-го циклов DCGAN. на следующем рисунке:
Рис. 4.4 Эксперимент 1. Сравнение сгенерированных изображений
Рис. 4.5 Генератор эксперимента 1 и изображение функции потерь дискриминатора
Анализ приведенных выше экспериментальных результатов показывает, что с улучшением периода обучения качество изображений, генерируемых DCGAN, продолжает улучшаться, но лица персонажей аниме искажаются, а общий цвет изображения становится серым. Значение функции потерь генератора значительно колеблется, и эффект сходимости сети плохой, в то время как значение функции потерь дискриминатора обычно ниже, чем у генератора, а сеть поверхностного дискриминатора имеет более быструю сходимость и более сильная способность.
(2) Когда соотношение времени обучения G:D=1:5, скорость обучения G&D=0,0002, размер пакета=128 и обучение составляет 200 циклов, эффект генерации изображения 1-го, 49-го, 99-го и 199-го циклов DCGAN показан на следующем рисунке:
Рисунок 4.6 Сравнение изображений, созданных в эксперименте 2
Рис. 4.7. Изображения функции потерь генератора и дискриминатора эксперимента 2.
Анализ приведенных выше экспериментальных результатов показывает, что с улучшением периода обучения изображения анимационных персонажей, сгенерированные DCGAN, имеют тенденцию к ассимиляции, что приводит к коллапсу режима.Генератор выводит некоторые изображения, которые нелегко распознать, и большинство результаты несовместимы с нашими ожидаемыми изображениями. Хотя значение функции потерь генератора относительно низкое, оно начинает расти с середины обучения. Изображения, сгенерированные в этом эксперименте, можно сравнить с изображениями в эксперименте 1. Когда время обучения генератора меньше времени обучения дискриминатора, обучение сети неустойчиво.
(3) Когда соотношение времени обучения G:D=1:1, скорость обучения G&D=0,0002, размер пакета=128 и 1-й, 49-й, 79-й и 99-й циклы обучения, эффект генерации изображений персонажей аниме равен показано на следующем рисунке:
Рисунок 4.8. Сравнение изображений, созданных в эксперименте 3.
Рис. 4.9. Изображения функции потерь генератора и дискриминатора эксперимента 3.
Из приведенных выше экспериментальных изображений видно, что при соотношении времени обучения G:D=1:1 в 49-м тренировочном цикле было создано относительно полное изображение, а детали изображения лучше, чем в предыдущих двух наборах экспериментов. , но изображение по-прежнему имеет серый оттенок. Проблема в том, что сгенерированное изображение не может удовлетворить спрос. Функция потерь генератора всегда находится в растущем состоянии, и сеть постоянно обновляет параметры в обратном порядке, а эффект сходимости невелик.
(4) Когда соотношение времени обучения G:D=1:1, G скорость обучения=0,0002, D скорость обучения=0,00005, размер пакета=128 и 1-й, 49-й, 79-й и 99-й циклы обучения, поколение Эффект изображений анимационных персонажей Как показано ниже:
Рисунок 4.10 Сравнение сгенерированных изображений в эксперименте 4
Рис. 4.9. Изображения функции потерь генератора и дискриминатора эксперимента 3.
由以上实验图像可知,当训练次数比例G:D=1:1时,在第49个训练周期时已经产生较为完整的图像,且图像细节优于前面两组实验,但是图像依然存在色调偏灰的问题,生成图像无法满足需求。生成器的损失函数一直处于增长状态,网络不断反向更新参数,收敛效果较差。
(4) Когда соотношение времени обучения G:D=1:1, G скорость обучения=0,0002, D скорость обучения=0,00005, размер пакета=128 и 1-й, 49-й, 79-й и 99-й циклы обучения, поколение Эффект изображений анимационных персонажей Как показано ниже:
Рисунок 4.10 Сравнение сгенерированных изображений в эксперименте 4
Рис. 4.11. Изображения функции потерь генератора и дискриминатора эксперимента 4.
Из приведенных выше экспериментальных изображений видно, что при соотношении времени обучения G: D = 1: 1 регулировка соотношения скорости обучения сети генерации и сети дискриминанта может улучшить детали изображения и цвета, генерируемые DCGAN. . Хотя изображения показывают коллапс режима в 99-м цикле обучения, качество изображений в первых 98 циклах лучше, а их функции потерь «торгуются вверх и вниз» в середине обучения, скорость обучения генератора ниже 5 , и дискриминант. Скорость обучения машины в основном упала с 40 циклов обучения до менее 0,5. На более позднем этапе скорость обучения дискриминатора может динамически регулироваться, чтобы замедлить возникновение коллапса моды.
Из сравнения приведенных выше экспериментальных результатов можно сделать вывод, что параметры обучения, установленные в четвертом эксперименте, позволяют получить лучшую графику анимационного персонажа.В качестве целевой сети используется выход сети в 97-м цикле обучения эксперимента.
Тест модели DCGAN
Тот же набор гиперпараметров используется для обучения тестового набора, и эффект генерации изображения в основном такой же, как и у обучающего набора.Для тестирования используется модель DCGAN 97-го тренировочного цикла четвертого эксперимента, и 4 набора изображения выбираются, как показано на следующем рисунке:
Рисунок 4-12 Результат выходного изображения генератора
Наблюдая за приведенными выше экспериментальными результатами, можно сделать вывод, что стиль изображения, выдаваемый генератором, соответствует требованиям стиля анимационного персонажа, но в деталях все еще есть дефекты. С точки зрения целостности лицевых образов аниме-персонажей все особенности причесок и контуров лица охвачены, около 11 % изображений имеют нечеткие и неполные глаза, около 38 % изображений имеют неполные рты.
С точки зрения цвета изображений аниме-персонажей проблема «серости» изображений была решена, а цвета сгенерированных изображений очень близки к реальным изображениям. Из-за специфики изображений персонажей аниме детали лица образцов сильно отличаются от черт лица реальных людей.Нос, рот и другие черты персонажей аниме состоят из простых линий, а специфические информация о форме и цвете недостаточно богата, что приводит к обучению. Эффект ниже, чем у других черт лица, который можно улучшить, собрав образцы изображений с более мелкими деталями лица и более заметными чертами лица.
Исследовательская работа по автоматической генерации анимационных изображений с помощью модели GAN дала определенные результаты перед этой статьей. Один из них заключается в преобразовании реальных изображений персонажей в аниме-стиль посредством переноса стиля, а другой — во вводе существующих изображений персонажей аниме в модель DCGAN, извлечении признаков из лиц аниме-изображений и, наконец, обучении набора сетевых моделей. выводит изображение персонажа аниме. Эта тема основана на второй схеме, разница в том, что настройки параметров по умолчанию и традиционный метод обучения оптимизированы, и изображения с более совершенными деталями и более насыщенными цветами можно получить за более короткий период обучения.
Проблемы и решения
Из вышеприведенного тренировочного процесса можно сделать вывод, что с настройкой экспериментальных параметров и оптимизацией образцов эффект DCGAN продолжает улучшаться.На основании вышеизложенного экспериментального содержания суммируются две основные проблемы, и в соответствии с ними предлагаются соответствующие решения. практиковаться.
(1) Скорость сходимости дискриминантной сети слишком высока, что приводит к постоянному увеличению значения потерь генератора.
Решение 1: Отрегулируйте количество раз обучения на единицу эпохи для генератора и дискриминатора. Что касается текущих экспериментальных данных, когда скорость обучения генератора и дискриминатора одинакова, время обучения генератора увеличивается, а эффект обучения DCGAN лучше.
Решение 2: Отрегулируйте скорость обучения генератора и дискриминатора. Как правило, при обучении DCGAN скорость обучения оптимизатора Adam для обоих использует эталонное значение 0,0002. Когда скорость сходимости одного из них слишком высока, скорость обучения можно отрегулировать в соответствии с определенной пропорцией, наблюдая за изменениемФункция потерь, В этой теме сеть дискриминатора сходится быстрее, что приводит к быстрой идентификации ложные образы. После того, как генератор обновляет параметры в обратном порядке, распределение данных входа каждого последующего слоя также меняется, а значение функции Loss продолжает увеличиваться. Это может косвенно повлиять на сходимость сети генератора за счет снижения скорости обучения дискриминатора.
(2) Качество сгенерированного изображения низкое, и наблюдаются такие явления, как искажение, размытие и схлопывание режима.
Решение 1: Проверьте библиотеку образцов изображений. Если количество образцов достаточно, проверьте, есть ли в образцах неанимационные изображения, похожи ли стили анимации и достаточно ли богаты атрибуты лица, такие как выражение и цвет волос образцов. .
Решение 2: Доля времени обучения и скорость обучения объединяются для динамической настройки. Обучающий эффект дискриминатора слишком хорош, что заставит генератор настроить параметры в обратном направлении и сгенерировать некоторые выборки, которые были распознаны как «истинные». В соответствии с функцией Loss вы можете просматривать период обучения мутации значения потерь и динамически регулировать скорость обучения или время обучения генератора или дискриминатора в соответствии с периодом 1/2 от оригинала.
Суммировать
На основе предыдущих исследований процесс обучения сети в основном завершил обучение глубокой нейронной сети и получил набор качественных параметров сети. Тем не менее, в зависимости от таких факторов, как возможности и аппаратное обеспечение, по-прежнему существует много недостатков. Требуется более глубокое изучение и изучение следующих аспектов:
(1) Уточните библиотеку образцов. Поскольку материал библиотеки образцов изображений вырезается из сетевых картинок, стиль, цвет и фон героев мультфильмов сильно различаются, что будет мешать обучению сети и сказываться на качестве сгенерированных изображений. Сбор изображений лиц аниме-персонажей с белым или однородным фоном может улучшить качество сгенерированных изображений.
(2) Увеличьте глубину сетевой модели. Это может сделать детали сгенерированных изображений более совершенными, а качество изображения четким.Хотя текущая экспериментальная среда ограничена, создание более четких анимационных изображений может расширить сферу его использования и лучше удовлетворить потребности создателей анимации.
(3) Улучшить качество сгенерированного изображения. С увеличением количества тренировок будет происходить некоторое искажение цвета изображения, и изображение будет выглядеть серым по тону.Вы можете оценить качество сгенерированного изображения перед выводом изображения.Согласно цветовой насыщенности и другой информации используйте изображение Функция улучшения в Torch для улучшения качества изображения Цвет настраивается.
(4) Оптимизация инженерного интерфейса. Популярность программного обеспечения неотделима от его простых в использовании и красивых функций. В настоящее время в этом проекте по-прежнему необходимо использовать командную строку для завершения операции, автоматического создания анимационных изображений одним щелчком мыши и отображения их на краткой странице интерфейса — это следующая цель работы.
Amoy Technology - Команда тестирования аукциона
Новый путь для инновационного бизнеса в сочетании с возможностями тестирования поиска, данных, алгоритмов, руководств по покупкам, маркетинга, торговли, прямых трансляций и других областей обеспечивает более стабильный и плавный опыт работы с продуктом и создает высококачественный аукционный бизнес. сопровождение офисных систем. Переоцените все ценности и с нетерпением ждем встречи с вами! База: Ханчжоу
Электронная почта ?:sanxiao@taobao.com