Изменения

Перейти к: навигация, поиск

Генерация изображения по тексту

888 байт добавлено, 12:48, 12 января 2021
м
bug fix (image + translate)
=== Составные генеративные состязательные сети ===
'''Составные генеративные состязательные сети''' (англ. ''Stacked Generative Adversarial Networks, StackGAN'') {{---}} служат для генерации фотореалистичный изображений размера 256x256, заданных текстовыми описаниями. В данной модели трудная задача генерации изображения разлагается на более решаемые подзадачи с помощью процесса эскиз-уточнения (англ. ''sketch-refinement process''). Таким образом, Stage-I GAN рисует примитивную форму и цвета объекта на основе данного текстового описания, получая изображения Stage-I с низким разрешением. Stage-II GAN принимает результаты Stage-I и текстовые описания в качестве входных данных и генерирует изображения высокого разрешения с фотореалистичными деталями. Он способен исправлять дефекты в результатах этапа I и добавлять привлекательные детали в процессе уточнения (англ. ''refinement process''). Чтобы улучшить разнообразие синтезированных изображений и стабилизировать обучение CGAN <ref name="CGAN">[https://arxiv.org/abs/1411.1784 Mirza M. and Osindero S. {{---}} Conditional Generative Adversarial Nets (CGAN) 2014]</ref> вводится техника условно-когнитивной регуляции (англ. ''Conditioning Augmentation''), которая способствует плавности в обусловливающем многообразии.
Вклад предлагаемого метода состоит из трех частей:
* Предлагается новая составная генеративная состязательная сеть для синтеза фотореалистичных изображений из текстовых описаний. Он разбивает сложную задачу генерации изображений с высоким разрешением на более решаемые подзадачи и значительно улучшает состояние дел. StackGAN впервые генерирует изображения с разрешением 256х256 пикселей с фотореалистичными деталями из текстовых описаний.
* Предлагается техника Condition Augmentation для стабилизации обучения CGAN<ref name="CGAN"/>, а также для улучшения разнообразия генерируемых выборок.
* Обширные качественные и количественные эксперименты демонстрируют эффективность дизайна модели в целом, а также влияние отдельных компонентов, которые предоставляют полезную информацию для разработки будущих условных моделей GAN.
*Генератор описаний изображений на основе Long-term [[Рекуррентные нейронные сети|Recurrent]] Convolutional Networks (LRCNs)<ref>[https://arxiv.org/abs/1411.4389 Jeff D., Lisa A. H. {{---}} Long-term Recurrent Convolutional Networks for Visual Recognition and Description, 2015]</ref>.
Прямое распространение (англ. ''forward pass'') инициируется путем передачи случайного скрытого вектора (англ. ''latent vector'') <tex>h_{t}</tex> в генератор изображений (<tex>G</tex>), который генерирует изображение <tex>\hat{x}</tex>. Затем по сгенерированной картинке генератор описаний создаёт подпись. Для определения ошибки между сгенерированным описанием <tex>\hat{y}</tex> и исходным описанием <tex>y</tex> используется перекрестная энтропия на уровне слов. Она используется для итеративного обновления <tex>h_{t}</tex> (заодно и <tex>\hat{x}</tex>), оставляя при этом все остальные компоненты фиксированными. С каждой итерацией <tex>\hat{y}</tex> приближается к < tex>y</tex>, и сгенерированное изображение на каждом шаге <tex>\hat{x}</tex> является временным представлением конечного изображения. Для улучшения реалистичности изображения используется энкодер шумоподавленя (англ. ''Denoising Autoencoder, DAE'')<ref name="PPGN">[https://arxiv.org/abs/1612.00005 Anh N., Jeff C. {{---}} Plug & Play Generative Networks: Conditional Iterative Generation of Images in Latent Space,2017]</ref> {{---}} в правило обновления добавляется ошибка восстановления изображения (англ. ''reconstruction error''), вычисляемая как разница между <tex>h_{t}</tex> и <tex>\hat{h_{t}}</tex>.
[[файл:MMVR_example.png|thumb|left|x190px|Сравнение PPGN<ref name="PPGN" /> и MMVR]]
Обучение начинается с генерации случайного 4096-мерного вектора <tex>h_{t}</tex>, который передаётся в модель для последующего итеративного обновления. Процесс завершается после 200 итераций, и полученное изображение считается репрезентативным для данного описания.
=== MirrorGAN ===
Генерация изображения из заданного текстового описания преследует две главные цели: визуальный реализм и семантическое постоянство. Несмотря на то, что существует колоссальный прогресс в создании визуально реалистичных изображений высокого качества посредством [[Generative Adversarial Nets (GAN) | генеративных состязательных сетей]], обеспечение вышепоставленных велей целей все еще является категорически сложной задачей. Для осуществления попытки их реализации рассмотрим глобально-локальный сохраняющий семантику text-to-image-to-text фреймворк с вниманием под названием MirrorGAN. Данный фреймворк эксплуатирует идею обучения text-to-image генерации с помощью переописания и состоит из трёх модулей:
* модуль встраивания семантического текста (англ. ''semantic text embedding module, <b>STEM</b>'');
* глобально-локальный совместный модуль с вниманием для создания каскадных изображений (англ. ''global-local collaborative attentive module for cascaded image generation, <b>GLAM</b>'');
* модуль регенерации семантического текста и выравнивания (англ. ''semantic text regener-ation and alignment module, <b>STREAM</b>'').
STEM создает встраивания на уровне слов и предложений, GLAM имеет каскаднух каскадных архитектуру создания результирующих изображений от грубой шкалы до детализированной, обращая внимания и эксплуатируя как внимание к локальным словам, так и к глобальным предложениям, чтобы прогрессивно совершенствовать семантическое постоянство и разообразие разнообразие у сгенерированных изораженийизображений, а STREAM стремится к регенерации текстового описания исходя из созданного изображения, которое семантически выравнивается с данным описанием.
Если изображение, сгенерированное с помощью T2I (text-to-image) семантически консистентно с заданным описанием, его описание посредством I2T (image-to-text) должно предоставлять аналогичную семантику с заданным.
[[Файл:MirrorGAN.png|thumb|left|x400px|Архитектура MirrorGAN]]
MirrorGan представляет собой зеркальную структуру, объдиняя T2I и I2T. Она состоит из трех генераторов. Чтобы сконструировать мультиэтапный многоэтапный каскадный генератор, нужно совместить все три сети генерации изображений последовательно. В качестве архитектуры STREAM будем использовать широко используемый фреймворк захвата изображения, базированный базирующийся на кодировке кодировании и декодировкедекодировании. Кодировщик изображений есть [[Сверточные нейронные сети | свёрточная нейронная сеть]], предварительно обученная на ImageNet, а декодировщик есть [[Рекуррентные нейронные сети | рекуррентная нейронная сеть]]. Предварительное обучение STREAM помогло MirrorGAN достичь более стабильного процесса обучения и более быстрой сходимости, в то время, как их совместая совместная оптимизация довольно нестабильна и с точки зрения занимаемого места и времени очень дорога. Структура кодировщик-декодировщик и соответствующие ей параметры фиксированы во время обучения других модулей MirrorGAN.
Обучая <tex>G_i</tex>, градиенты из <tex>L_{stream}</tex> обратно распространяются через STREAM в <tex>G_i</tex>, чьи сети остаются фиксированными.
Показатель Inception был использован для измерения как объективности, так и разнообразия сгенерированных изображений. R-precision был использован для вычисления визуально-семантической схожести между сгенерированными изображениями и их соответствующими текстовыми описаниями.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:MirrorGAN&Co.jpg|thumb|center|x600px|Сравнение MirrorGAN и других генеративных состязательных сетей.]]</div>
=== Obj-GAN ===
[[Файл:Obj-GAN.png|thumb|alt=Архитектура Obj-GAN|x300px|thumb|right|Архитектура Obj-GAN]]Управляемая объектами [[Generative Adversarial Nets (GAN)| генеративно-состязательная сеть]] с вниманием (англ. ''Object-Driven Attentive Generative Adversarial Network, Obj-GAN'') позволяет производить объектно-центрированный text-to-image-синтез сложных структур. Объектно-управляемый генератор изображений, оперирующий двухэтапным layout-image процессом генерации, синтезирует выступающие объекты, обращая внимание на наиболее значимые слова в текстовом описании и в заранее сгенерированном семантическом макете. Стоит добавить, что предлагается новый объектный дискриминатор, базирующийся на Fast R-CNN, позволяющий производить пообъектные сигналы распознавания касательно того, может ли синтезированный объект быть сопоставлен с тектовым текстовым описанием и предварительно сгенерированным макетом. Obj-GAN значительно превосходит по производительности предыдущие технологии в различных показателях относительно бенчмарка COCO (Common Objects in Context), увеличивая показатель Inception на 11% и ученьшая уменьшая показатель FID (Fréchet inception distance) на 27%.
Основная цель Obj-GAN {{---}} генерация высококачественных сложных изображений с семантически значимым макетом и реалистическими объектами. Obj-GAN состоит из пары генератора изображений, управляемый объектами, с вниманием и пообъектовый дискриминатор, а также новый механизм внимания. Как было сказано ранее, генератор изображений в качестве входных данных принимает текстовое описание и предварительно сгенерированный семантический макет и синтезирует изображения с помощью многоэтапного процесса coarse-to-fine. На каждом этапе генератор синтезирует фрагмент изображений внутри ограничивающей рамки (англ. ''bounding box''), фокусируясь на наиболее релевантных объекту словах.
Говоря более конкретно, он, с использованием управляемого объектами слоя внимания, оперирует метками класса, запрашивая слова в предложениях, чтобы сформировать вектор контекстов, и впоследствии синтезирует фрагмент изображения при условиях метки и вектора контекстов. Пообъектный дискриминатор проверяет каждую ограничивающую рамку, чтобы удостовериться в том, что сгенерированный объект действительно может быть сопоставлен с заранее сгенерированным макетом. Чтобы вычислить все потери при распознавании для всех заданных ограничивающих рамок одновременно и эффективно, дискриминатор базирован быстрой региональной сверточной [[Сверточные нейронные сети|свёрточной нейронной сетью ]] (англ. ''Fast Region-based Convolutional Neural Network, Fast R-CNN'') с двоичной [[Функция потерь и эмпирический риск | функцией потерь]] перекрёстной энтропии для каждой рамки.
[[Файл:Obj-GAN.png|thumb|alt=Архитектура Obj-GAN|x300px|thumb|right|Архитектура Obj-GAN]]
Рассмотрим архитектуру Obj-GAN. Первым этапом, генеративная состязательная сеть принимает текстовое предложение и генерирует <b>семантический макет</b> {{---}} последовательность объектов специфицированных соответствующими ограничивающими рамками (наряду с метками классов) и фигурами. <b>Генератор рамок</b> и <b>генератор фигур</b> работают соответствующим образом, сначала создавая последовательность ограничивающих рамок, а затем {{---}} фигуру для каждой. Поскольку большинству рамок сопоставлены слова из данного текстового предложения, модель seq2seq с вниманием охватывает это соответствие. Далее конструируется <tex>G_{shape}</tex>, базированный на двунаправленной сверточной [[Сверточные нейронные сети | свёрточной]] [[Долгая краткосрочная память|долгой краткосрочной памяти ]] (англ. ''bidirectional convolutional long short-term memory, [[Долгая краткосрочная память|LSTM]]''). Обучение <tex>G_{shape}</tex> основывается на фреймворке генеративной состязательной сети, в которой потеря восприятия исплоьзуется используется для ограничения генерируемых фигур и стабилизирования обучения.
<gallery ckassclass="center" mode="slideshow" caption="Сравнение результатов Obj-GAN с другими генеративными состязательными сетями.">
Файл:Obj-GAN_ex1.png
Файл:Obj-GAN_ex2.png
* экстремальная валидация моделей с использованием MNIST-макетов и наборов данных COCO<ref name="COCO" />, в которой содержатся сложные макеты сцен реального мира.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:LayoutVAE.png|thumb|center|x350px|Архитектура LayoutVAE]]<div>В статье<ref>[https://openaccess.thecvf.com/content_ICCV_2019/papers/Jyothi_LayoutVAE_Stochastic_Scene_Layout_Generation_From_a_Label_Set_ICCV_2019_paper.pdf LayoutVAE: Stochastic Scene Layout Generation From a Label Set]</ref> были предложены фреймворки и структуры, модели и фреймворки, взаимодействующие с LayoutVE, такие как: <b>PNP-Net</b> {{---}} фреймворк вариационного автокодировщика для генерации изображения абстрактной сцены из текстовой программы, полностью описывающей её (помимо того, что это {{---}} стохастическая модель для генерации, она была протестирована на синтетических наборах данных с малым числом классов); <b>LayoutGAN</b> {{---}} модель, основанная на [[Generative Adversarial Nets (GAN) | генеративных состязательных сетях]], генерирующая макеты графических элементов (прамоугольникипрямоугольники, трегуольникитреугольники, и так далее); VAE-базированный фреймворк, кодирующий объект и информацию о макете о 3D-сцен в помещении в скрытом коде; и так далее...
Обучение генеративных моделей нужно, чтобы предсказать разнообразные, но правдоподобные наборы ограничивающих рамок, учитывая набор меток в качестве входных данных. Рамки в наборе представлены верхними левыми координатами, шириной и высотой <tex>i</tex>-й ограничивающей рамки категории <tex>k</tex>. LayoutVAE естественным образом декомпозируется на модель для предсказания количества для каждой заданной метки {{---}} <b>CountVAE</b> {{---}} и другая для предсказания местоположения и размера каждого объекта {{---}} <b>BBoxVAE</b>.
Имея набор меток <tex>L</tex> и количество объектов в категории <tex>\left\{ n_m : m \in L \right\}</tex>, BBoxVAE предсказывает распределение координат для ограничивающих рамок авторегрессионно. Мы следуем тому же предопределенному порядку меток, что и в CountVAE, в пространстве меток, и упорядочиваем ограничивающие рамки слева направо для каждой метки; <b>все ограничивающие рамки предсказываются перед переходом к следующей метке.</b>
[[Файл<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width:LayoutVAE.png|thumb|center|x500px|Архитектура LayoutVAE]]auto;">[[Файл:LayoutVAEGeneration.png|thumb|center|x500pxx350px|Генерация по множеству меток <tex>\{person, sea, surfboard\}</tex>]]</div>
=== TextKD-GAN ===
В общепринятом текстовом подходе к дискриминации реальные и сгенерированные входные данные дискриминатора будут иметь разные типы ([https://en.wikipedia.org/wiki/One-hot one-hot] & [https://en.wikipedia.org/wiki/Softmax_function softmax]), и он может обыкновенно отличить их друг от друга. Один из способов избежать этой проблемы состоит в том, чтобы получить непрерывное гладкое представление слов, а не их one-hot представление, и обучить дискриминатор различать непрерывные представления. Здесь используется общепринятый автоэнкодер (учитель), чтобы заменить one-hot представление softmax-реконструированным выходом, который является гладким представлением, дающим меньшую дисперсию градиентов. Предложенная модель изображена на рисунке справа. Как видно, вместо one-hot представления реальных слов смягченный реконструированный выход автоэнкодера подается на вход дискриминатору. Эта техника значительно усложняет различение для самого дискриминатора. Генератор GAN (студент) с softmax выходом пытается имитировать распределение выходного сигнала автоэнкодера вместо общепринятого one-hot представления.
Обучение модели происходит следующим образом: мы обучаем AE и TextKD-GAN обучаются одновременно. Чтобы добиться этого, необходимо раздробить целевую функцию на три члена:
# реконструирующий член для автоэнкодера: <tex>\min\limits_{(\varphi, \psi)} L_{AE}(\varphi, \psi) = \min\limits_{(\varphi, \psi)} \| x - \mathrm{softmax}(\mathrm{dec}_\psi(\mathrm{enc}_\varphi(x))) \| ^ 2</tex>
# функция потерь для дискриминатора с градиентным штрафом: <tex>\min\limits_{w \in W} L_{discriminator}(w) = \min\limits_{w \in W} -E_{x \sim P_x} [f_w(\mathrm{dec}_\psi(\mathrm{enc}_\varphi(x)))] + E_{z \sim P_z} [f_w(G(z))] + \lambda_2 E_{\hat{x} \sim P_{\hat{x}}} [(\| \nabla_{\hat{x}} f_w(\hat{x}) \| _2 - 1)^2]</tex>
Эти функции потерь обучаются поочередно, чтобы оптимизировать различные части модели. В члене штрафа градиента необходимо посчитать норму градиента случайных выборок <tex>\hat{x} \sim P_{\hat{x}}</tex>.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:TextKD-GAN&Co.png|thumb|center|x600pxx500px|Дивергенция Дженсена-Шеннона (англ. ''Jensen-Shannon divergence, JSD'') между сгенерированным и обучающимся предложениями (n-граммами) полученных из эксперимента SNLI (Stanford Natural Language Inference, Стэнфордский Вывод Естественного Языка).]]</div>
=== MCA-GAN ===
89
правок

Навигация