Изменения

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

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

96 байт добавлено, 07:09, 12 января 2021
Нет описания правки
=== AttnGAN ===
Последние разработки исследователей в области автоматического создания изображений по текстовому описанию, основаны на [[Generative Adversarial Nets (GAN)|генеративных состязательных сетях (GANs)]].Общепринятый подход заключается в кодировании всего текстового описания в глобальное векторное пространство предложений (англ. ''global sentence vector''). Такой подход демонстрирует ряд впечатляющих результатов, но у него есть главные недостатки: отсутствие чёткой детализации на уровне слов и невозможность генерации изображений высокого разрешения. Эта проблема становится еще более серьезной при генерации сложных кадров, таких как в наборе данных COCO<ref name="COCO">[https://cocodataset.org COCO dataset (Common Objects in Context)]</ref>.
В качестве решения данной проблемы была предложена<ref>[https://openaccess.thecvf.com/content_cvpr_2018/papers/Xu_AttnGAN_Fine-Grained_Text_CVPR_2018_paper.pdf Tao X., Pengchuan Z. {{---}} AttnGAN: Fine-Grained Text to Image Generationwith Attentional Generative Adversarial Networks, 2018] </ref> новая [[Generative Adversarial Nets (GAN)|генеративно-состязательная нейросеть]] с вниманием (англ. ''Attentional Generative Adversarial Network, AttnGAN''), которая относится к вниманию как к фактору обучения, что позволяет выделять слова для генерации фрагментов изображения.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:AttnGanNetwork.png|thumb|alt=Архитектура AttnGAN|x350px|center|Архитектура AttnGAN]]</div>
Модель состоит из нескольких взаимодействующих нейросетей:
*Энкодер текста (англ. ''Text Encoder'') и изображения (англ. ''Image Encoder'') векторизуют исходное текстовое описания и реальные изображения. В данном случае текст рассматривается в виде последовательности отдельных слов, представление которых обрабатывается совместно с представлением изображения, что позволяет сопоставить отдельные слова отдельным частям изображения. Таким образом реализуется механизм внимания (англ. ''Deep Attentional Multimodal Similarity Model, DAMSM'').
*<math>F^{ca}</math> {{---}} создает сжатое представление об общей сцене на изображении, исходя из всего текстового описания. Значение <tex>C</tex> на выходе конкатенируется с вектором из нормального распределения <tex>Z</tex>, который задает вариативность сцены. Эта информация является основой для работы генератора.
*Attentional Generative Network {{---}} самая большая сеть, состоящая из трех уровней. Каждый уровень порождает изображения все большего разрешения, от 64x64 до 256x256 пикселей, и результат работы на каждом уровне корректируется с помощью сетей внимания <math>F^{attn}</math>, которые несут в себе информацию о правильном расположении отдельных объектов сцены. Кроме того, результаты на каждом уровне проверяются тремя отдельно работающими дискриминаторами, которые оценивают реалистичность изображения и соответствие его общему представлению о сцене.
=== Stacking VAE and GAN ===
Большинство существующих методов генерации изображения по тексту нацелены на создание целостных изображений, которые не разделяют передний и задний план изображений, в результате чего объекты искажаются фоном. Более того, они обычно игнорируют взаимодополняемость различных видов генеративных моделей. Данное решение<ref>[https://ieeexplore.ieee.org/document/8499439 Chenrui Z., Yuxin P. {{---}} Stacking VAE and GAN for Context-awareText-to-Image Generation, 2018]</ref> предлагает контекстно-зависимый подход к генерации изображения, который разделяет фон и передний план. Для этого используется взаимодополняющая связка [[Вариационный автокодировщик| вариационного автокодировщика (англ. ''Variational Autoencoder, VAE'')]] и [[Generative Adversarial Nets (GAN)|генеративно-состязательной нейросети]].
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:Stacking_VAE&GAN.png|thumb|alt=Архитектура Stacking VAE and GAN|x350px|center|Архитектура Stacking VAE and GAN]]</div>
[[Вариационный автокодировщик| VAE]] считается более устойчивым чем GAN, это можно использовать для достоверной подборки распределения и выявления разнообразия исходного изображения. Однако он не подходит для генерации изображений высокого качества, т. к. генерируемые VAE изображения легко размываются. Чтобы исправить данный недостаток архитектура включает два компонента:
*Контекстно-зависимый вариационный кодировщик (англ. ''conditional [[Вариационный автокодировщик| VAE]], CVAE'') используется для захвата основной компоновки и цвета, разделяя фон и передний план изображения.
*[[Generative Adversarial Nets (GAN)|GAN]] уточняет вывод CVAE с помощью состязательного обучения, которое восстанавливает потерянные детали и исправляет дефекты для создания реалистичного изображения.
Полученные результаты проверки на 2 наборах данных (Caltech-UCSD<ref name="caltech"/> и Oxford-102<ref name="oxford"/>) эмпирически подтверждают эффективность предложенного метода.
*Не рекурсивный энкодер {{---}} сжимает весь диалог в одну строку и кодирует его с помощью предварительно обученного энкодера Skip-Thought<ref>[https://github.com/ryankiros/skip-thoughts Skip-Thought encoder]</ref>.
*Рекурсивный энкодер {{---}} генерирует Skip-Thought векторы (англ. ''Skip-Thought Vectors'')<ref>[https://arxiv.org/abs/1506.06726 Skip-Thought Vectors]</ref> для каждого сообщения в диалоге, а затем кодирует их двунаправленной [[Рекуррентные нейронные сети| рекуррентной нейронной сетью]] c [[Долгая краткосрочная память|LSTM]]
Затем выходы описаний и диалогов объединяются и передаются в качестве входных данных в модуль аугментации данных (англ. ''Conditioning Augmentation, CA''). Модуль CA нужен для получения скрытых скрытые условных переменных, которые передаются на вход генератору.
Архитектура блоков upsample, downsample и residual blocks сохраняется такой же, как и у исходного StackGAN
=== MMVR ===
[[Файл:MMVR.png|thumb|right|x360px|alt=Архитектура MMVR|Архитектура MMVR]]
Модель мультимодальной векторной сети (англ. ''Multi-Modal Vector Representation, MMVR''), впервые предложенная в статье<ref>[https://arxiv.org/abs/1809.10274 Shagan S., Dheeraj P. {{---}} SEMANTICALLY INVARIANT TEXT-TO-IMAGE GENERATION, 2018]</ref>, способна создавать изображения по описанию и генерировать описание исходя из предоставленного изображения. Она включает несколько модификаций для улучшения генерации изображений и описаний, а именно: вводится [[Функция потерь и эмпирический риск|функция потерь]] на основе метрики N-грамм, которая обобщает описание относительно изображения; так же для генерации вместо одного используется несколько семантически сходных предложений, что так же улучшает создаваемые изображения.
Модель может быть разделена на два взаимозависимых модуля (см. рис):
*Генератор описаний изображений на основе 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]</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 стремится к регенерации текстового описания исходя из созданного изображения, которое семантически выравнивается с данным описанием.
=== 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 ckass="center" mode="slideshow" caption="Сравнение результатов Obj-GAN с другими генеративными состязательными сетями.">
=== TextKD-GAN ===
Генерация текста представляет особый интерес во многих приложениях [https://en.wikipedia.org/wiki/Neuro-linguistic_programming нейролингвистического программирования] (англ. ''neuro-linguistic programming, NLP''), таких как [https://en.wikipedia.org/wiki/Machine_translation машинный перевод], моделирование языка и обобщение текста. [[Generative Adversarial Nets (GAN) | Генеративные состязательные сети]] достигли замечательного успеха в создании высококачественных изображений в [[Компьютерное зрение | компьютерном зрении]], и в последнее время GANs также вызвали большой интерес со стороны сообщества NLP. Однако достижение подобного успеха в NLP было бы более сложным из-за дискретности текста. В данной статье<ref>[https://arxiv.org/pdf/1905.01976.pdf {{---}} TextKD-GAN: Text Generation using KnowledgeDistillation and Generative Adversarial Networks]</ref> вводится метод, использующий дистилляцию знаний для эффективного использования настройку GAN для генерации текста. Также показываются, как [[Автокодировщик | автоэнкодеры]] (англ. ''autoencoders, AEs'') могут быть использованы для обеспечения непрерывного представления предложений, которое в свою очередь представляет собой гладкое представление, присваивающее ненулевые вероятности более чем одному слову.
TextKD-GAN представляет из себя решение для основного узкого места использования генеративных состязательных сетей для генерации текста с дистилляцией знаний: метод, переносящий знания смягченного вывода модели преподавателя в модель студента. Решение основано на AE (учителе), чтобы получить гладкое представление реального текста. Это гладкое представление подается в дискриминатор TextKD-GAN вместо обычного однократного представления. Генератор (студент) пытается изучить многообразие смягченного гладкого представления AE. TextKD-GAN, в конечном итоге, будет превосходить обычный генератор текста на основе GAN, который не нуждается в предварительной подготовке.
Эти функции потерь обучаются поочередно, чтобы оптимизировать различные части модели. В члене штрафа градиента необходимо посчитать норму градиента случайных выборок <tex>\hat{x} \sim P_{\hat{x}}</tex>.
[[Файл:TextKD-GAN&Co.png|thumb|center|x600px|Дивергенция Дженсена-Шеннона (англ. ''Jensen-Shannon divergence, JSD'') между сгенерированным и обучающимся предложениями (n-граммами) полученных из эксперимента SNLI (Stanford Natural Language Inference, Стэнфордский Вывод Естественного Языка).]]
=== MCA-GAN ===
135
правок

Навигация