Изменения

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

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

11 722 байта добавлено, 19:22, 4 сентября 2022
м
rollbackEdits.php mass rollback
{{В разработке}}Автоматический синтез Автоматическое создание реалистичных высококачественных изображений из текстовых описаний был было бы интересен интересно и довольно полезенполезно, так как имеет множество практических применений., но современные системы искусственного интеллекта все еще далеки от этой цели, так как это является довольно сложной задачей в области компьютерного зрения. Однако в последние годы были разработаны универсальные и мощные рекуррентные архитектуры нейронных сетей для изучения различных представлений текстовых признаков. Между тем, глубокие сверточные '''генеративные состязательные сети''' (англ. [[Generative Adversarial Nets (GAN)|генеративные состязательные сети]] (англ. ''Generative Adversarial Nets, GANs]]'') начали генерировать весьма убедительные изображения определенных категорий, таких как лица, обложки альбомов и интерьеры комнат. Образцы, генерируемые существующими подходами "текст-изображение", могут приблизительно отражать смысл данных описаний, но они не содержат необходимых деталей и ярких частей объекта. Мы рассмотрим глубокую архитектуру В данной статье рассмотрены формулировка и формулировку глубокая архитектура GAN, объединим а также объединены достижения в моделировании текста и генерации изображений, переводя визуальные концепции из символов в пикселипо тексту.
== Обзор генеративных моделей ==
Сообщество глубокого обучения быстро совершенствует генеративные модели. Среди них можно выделить три перспективных типа: [[PixelRNN и PixelCNN|авторегрессионные модели ]] (англ. ''Autoregressive model, AR-model''), [[Вариационный автокодировщик|вариационные автокодировщики ]] (англ. ''Variational Autoencoder, VAE'')]] и [[Generative Adversarial Nets (GAN)|генеративные состязательные сети]].
На данный момент самые качественные изображения генерируют сети GAN (фотореалистичные и разнообразные, с убедительными деталями в высоком разрешении). Поэтому в данной статье мы сосредоточимся на моделях GAN.
{| class="wikitable"|+ '''Сравнение моделей'''|-! rowspan=2 | Модель !! colspan= DCGAN 2|Inception Score <ref name="inception"/>!! rowspan=2 | FID <ref name="FID"/> !! rowspan=2 | Разрешение генерируемой картинки !! rowspan=2 | Реализация !!rowspan=2 | Модификация (отличие от GAN)!!rowspan=2 | Пример сгенерированной картинки|-| style = "text-align: center" | [[Известные наборы данных#COCO|COCO]] | style = "text-align: center" | [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]]|-| style = "text-align: center" | [[#Attribute2Image|Attribute2Image, 2015]] | style = "text-align: center" | <tex>14.30 \pm 0.10</tex>| style = "text-align: center" | {{---}}| style = "text-align: center" | {{---}}| style = "text-align: center" | <tex>64 \times 64</tex>| style = "text-align: center" | [https://github.com/xcyan/eccv16_attr2img да]| Генерация изображения как смесь переднего и заднего планов на основе многоуровневой генеративной модели.| [[Файл:Attribute2Image-example.png|128px|thumb|center|Male, no eyewear, frowning, receding hairline, bushy eyebrow, eyes open, pointy nose, teeth not visible, rosy cheeks, flushed face.]]|-| style = "text-align: center" | [[#GAN-INT-CLS|GAN-INT-CLS, 2016]] | style = "text-align: center" | <tex>7.88 \pm 0.07</tex>| style = "text-align: center" | <tex>2.88 \pm 0.04</tex>| style = "text-align: center" | <tex>60.62</tex>| style = "text-align: center" | <tex>64 \times 64</tex>| style = "text-align: center" | [https://github.com/soumith/dcgan.torch да]| Обучение на текстовых признаках, кодируемых гибридной сверточно-рекуррентной нейронной сетью.| [[Файл:GAN-INT-CLS-example.png|128px|thumb|center|This flower is white and pink in color, with petals that have veins.]]|-| style = "text-align: center" | [[#StackGAN|StackGAN, 2017]] | style = "text-align: center" | <tex>8.45 \pm 0.03</tex>| style = "text-align: center" | <tex>3.70 \pm 0.04</tex>| style = "text-align: center" | <tex>74.05</tex>| style = "text-align: center" | <tex>256 \times 256</tex>| style = "text-align: center" | [https://github.com/hanzhanggit/StackGAN да]| Генерация изображения происходит в два этапа, на первом этапе создается примитивная форма изображения и задаются цвета объектов, на втором исправляются дефекты предыдущего этапа и добавляются более мелкие детали.| [[Файл:StackGAN-example.png|128px|thumb|center|This flower has a lot of small purple petals in a dome-like configuration.]]|-| style = "text-align: center" | [[#FusedGAN|FusedGAN, 2018]] | style = "text-align: center" | {{---}}| style = "text-align: center" | <tex>3.00 \pm 0.03</tex>| style = "text-align: center" | {{---}}| style = "text-align: center" | <tex>64 \times 64</tex>| style = "text-align: center" | нет| Генерация изображения в два этапа, на первом задаются признаки стиля, на втором генерируется изображение.| [[Файл:FusedGan_256x256_cub.png|128px|thumb|center|This bird has a bright yellow body, with brown on it's crown and wings.]]|-| style = "text-align: center" | [[#ChatPainter|ChatPainter, 2018]] | style = "text-align: center" | <tex>9.74 \pm 0.02</tex>| style = "text-align: center"| {{---}}| style = "text-align: center" | {{---}}| style = "text-align: center" | <tex>256 \times 256</tex>| style = "text-align: center" | нет| В качестве дополнительных данных для обучения используется диалог описания изображения.| [[Файл:ChatPainter_256x256_coco.png|128px|thumb|center|A person in yellow pants in on a snowboard.]]|-| style = "text-align: center" | [[#StackGAN++|StackGAN++, 2018]] | style = "text-align: center" | <tex>8.30 \pm 0.10</tex>| style = "text-align: center" | <tex>3.84 \pm 0.06</tex>| style = "text-align: center" | <tex>81.59</tex>| style = "text-align: center" | <tex>256 \times 256</tex>| style = "text-align: center" | [https://github.com/hanzhanggit/StackGAN-v2 да]| Генерация изображений разного масштаба из разных ветвей древовидной структуры, в которой несколько генераторов разделяют между собой большинство своих параметров.| [[Файл:StackGAN++-example.png|128px|thumb|center|A picture of a very clean living room.]]|-| style = "text-align: center" | [[#HTIS|HTIS, 2018]] | style = "text-align: center" | <tex>11.46 \pm 0.09</tex>| style = "text-align: center" | {{---}}| style = "text-align: center" | {{---}}| style = "text-align: center" | <tex>256 \times 256</tex>| style = "text-align: center" | нет| Генерация изображения разбивается на несколько шагов, сначала создается семантический макет из текста, затем этот макет преобразовывается в изображение.| [[Файл:HTIS-example.png|128px|thumb|center|A man is surfing in the ocean with a surfboard.]]|-| style = "text-align: center" | [[#AttnGAN | AttnGAN, 2018]] | style = "text-align: center" | <tex>25.89 \pm 0.47</tex>| style = "text-align: center" | <tex>4.36 \pm 0.03</tex>| style = "text-align: center" | <tex>28.76</tex>| style = "text-align: center" | <tex>256 \times 256</tex>| style = "text-align: center" | [https://github.com/taoxugit/AttnGAN да]| Выделение слов для генерации областей картинки с помощью механизма внимания.| [[Файл:AttnGan_256x256_coco.png|128px|thumb|center|A photo a homemade swirly pasta with broccoli carrots and onions.]]|-| style = "text-align: center" | [[#CVAE&GAN|CVAE&GAN, 2018]] | style = "text-align: center" | {{---}}| style = "text-align: center" | {{---}}| style = "text-align: center" | {{---}}| style = "text-align: center" | <tex>256 \times 256</tex>| style = "text-align: center" | нет| Разделение переднего и заднего плана, сначала CVAE генерирует картинку в плохом качестве, после качество повышается с помощью GAN.| [[Файл:CVAE&GAN_256x256_cub.png|128px|thumb|center|This is a yellow and gray bird with a small beak.]]|-| style = "text-align: center" | [[#MMVR|MMVR, 2018]] | style = "text-align: center" | <tex>8.30 \pm 0.78</tex>| style = "text-align: center" | {{---}}| style = "text-align: center" | {{---}}| style = "text-align: center" | <tex>256 \times 256</tex>| style = "text-align: center" | нет| Обучение на изменённом описании картинки.| [[Файл:MMVR_256x256_coco.png|128px|thumb|center|A boat on a beach near some water.]]|-| style = "text-align: center" | [[#MirrorGAN|MirrorGAN, 2019]] | style = "text-align: center" | <tex>26.47 \pm 0.41</tex>| style = "text-align: center" | <tex>4.56 \pm 0.05</tex>| style = "text-align: center" | {{---}}| style = "text-align: center" | <tex>256 \times 256</tex>| style = "text-align: center" | [https://github.com/qiaott/MirrorGAN да]| Генерация изображения с использованием идеи обучения посредством переописания.| [[Файл:MirrorGANExample.png|128px|thumb|center|Boats at the dock with a city backdrop.]]|-| style = "text-align: center" | [[#Obj-GAN|Obj-GAN, 2019]] | style = "text-align: center" | <tex>31.01 \pm 0.27</tex>| style = "text-align: center" | {{---}}| style = "text-align: center" | <tex>17.03</tex>| style = "text-align: center" | <tex>256 \times 256</tex>| style = "text-align: center" | [https://github.com/jamesli1618/Obj-GAN да]| Основной принцип генерации изображений заключается в распознавании и создании отдельных объектов из заданного текстового описания.| [[Файл:Obj-GANExample.png|128px|thumb|center|A hotel room with one bed and a blue chair.]]|-| style = "text-align: center" | [[#LayoutVAE|LayoutVAE, 2019]] | style = "text-align: center" | {{---}}| style = "text-align: center" | {{---}}| style = "text-align: center" | {{---}}| style = "text-align: center" | <tex>256 \times 256</tex>| style = "text-align: center" | нет| Генерация стохастических макетов сцен (англ. ''stochastic scene layouts'') из заданного набора слов.| [[Файл:LayoutVAEExample.png|128px|thumb|center|Person, sea, surfboard.]]|-| style = "text-align: center" | [[#MCA-GAN|MCA-GAN, 2019]] | style = "text-align: center" | {{---}}| style = "text-align: center" | {{---}}| style = "text-align: center" | {{---}}| style = "text-align: center" | <tex>256 \times 256</tex>| style = "text-align: center" | нет| Генерация изображения с произвольных ракурсов, основывающаяся на семантическом отображении (англ. ''semantic mapping'').| [[Файл:MCA-GANExample.png|128px|thumb|center]]|} === Attribute2Image ===[[Файл: Attribute2Image-2.png|400px|thumb|right|Рисунок 3.<ref name="Attribute2Image"/> Пример результата работы Attribute2Image.]]'''Условная генерация изображений из визуальных атрибутов''' (англ. ''Conditional Image Generation from Visual Attributes, Attribute2Image''<ref name="Attribute2Image">[https://arxiv.org/abs/1512.00570 Xinchen Y. {{---}} Conditional Image Generation from Visual Attributes, 2015]</ref>) моделирует изображение как смесь переднего и заднего планов и разрабатывает многоуровневую генеративную модель с выделенными скрытыми переменными (рис. 4), которые можно изучать от начала до конца с помощью [[Вариационный автокодировщик| вариационного автокодировщика]] (англ. ''Variational Autoencoder, VAE''). Экспериментируя с естественными изображениями лиц и птиц на наборах данных [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]] и [http://vis-www.cs.umass.edu/lfw LFW] Attribute2Image демонстрирует, что способен генерировать реалистичные и разнообразные изображения размером 64x64 пикселя с распутанными скрытыми представлениями (англ. ''disentangled latent representations'') {{---}} это состояние, в котором каждый фактор приобретается как каждый элемент скрытых переменных, то есть если в модели с обученными скрытыми представлениями смещение одной скрытой переменной при сохранении других фиксированными генерирует данные, показывающие, что изменяется только соответствующий фактор. (рис. 3). Таким образом, изученные генеративные модели показывают отличные количественные и визуальные результаты в задачах реконструкции и завершения изображения, обусловленного атрибутами. <div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:Attribute2Image-1.png|thumb|alt=Архитектура Attribute2Image|x350px|center|Рисунок 4.<ref name="Attribute2Image"/> Архитектура Attribute2Image.]]</div> === GAN-INT-CLS ===
'''Глубокая сверточная генеративная состязательная сеть''' (англ. ''Deep Convolutional Generative Adversarial Network, DCGAN'') {{---}} обусловлена текстовыми признаками, кодируемыми гибридной сверточно-рекуррентной
нейронной сетью на уровне символов. DCGAN имеет эффективную архитектуру (рис. 1) и обучающую структуру, которая позволяет синтезировать изображения птиц и цветов из текстовых описаний.
Для обучения такой модели для птиц был использован набор данных [[Известные наборы данных#Caltech-UCSD<ref name="caltech">[http://www.vision.caltech.edu/visipedia/Birds 200 (CUB-200.html )|Caltech-UCSD Birds 200 dataset]</ref>], а для цветов {{---}} Oxford-102<ref name="oxford">[https://www.robots.ox.ac.uk/~vgg/data/flowers/[Известные наборы данных#102/ Category Flower|Oxford Flowers -102 dataset]</ref>]. Наряду с этим было собрано по пять текстовых описаний на изображение, которые были использованы в качестве параметров оценки.
DCGAN во многих случаях может генерировать на основе текста визуально-правдоподобные изображения размером ​64×64пикселя, а также отличается тем, что сама модель является генеративной состязательней сетью, а не только использует ее для постобработки. Текстовые запросы кодируются с помощью текстового кодировщика <tex>\varphi</tex>, который позволяет получить [[Векторное представление слов|векторное представление слов]]. Затем применяется концепция [[Generative Adversarial Nets (GAN)#CGAN (Conditional Generative Adversarial Nets)|условной генеративной состязательной сети]] (англ. ''Conditional Generative Adversarial Network, CGAN''). ОписаниеТаким образом, описание, внедренное в <tex>\varphi(t)</tex> сначала сжимается с помощью полностью связанного слоя до небольшого размера (на практике было использовано 128), затем применяется функция активации [[Практики реализации нейронных сетей|Leaky ReLU]] и результат конкатенируется с вектором шума <tex>z</tex>.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:DCGAN-1.png|thumb|alt=Рисунок 1. Архитектура DCGAN.|x350px|center|Рисунок 1.<ref name="DCGAN">[https://arxiv.org/abs/1605.05396 Scott R. {{---}} Generative Adversarial Text to Image Synthesis, 2016]</ref> Архитектура DCGAN.]]</div>
заданному описанию или нет. Модель должна неявно разделять два источника ошибок: нереалистичные образы (для любого текста) и реалистичные образы неправильного класса, которые не соответствуют текстовым признакам. Алгоритм обучения GAN был модифицирован таким образом, чтобы разделять эти источники ошибок. В дополнение к реальным/поддельным входным данным в дискриминатор во время обучения был добавлен третий тип входных данных, состоящий из реальных изображений с несовпадающим текстовым описанием, на которых дискриминатор должен обучиться оценивать поддельные изображения.
<div classgallery mode="oo-ui-panelLayout-scrollable" stylepacked heights=400px caption="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:DCGAN-2.png|thumb|alt=Рисунок 2. Пример результата работы DCGAN.|x350px|center|Рисунок 2.<ref name="PyTorchDCGAN">[https://pytorch.org/tutorials/_images/sphx_glr_dcgan_faces_tutorial_004.png Nathan I. {{GAN-CLS, GAN-INT и GAN-INT-}} DCGAN TUTORIAL]</ref> Пример результата работы DCGANCLS.]]</div"=== Attribute2Image ===[[Файл: Attribute2ImageDCGAN-2.png|400px|thumb|right|Рисунок 3.Сгенерированные изображения птиц<ref name="Attribute2ImageDCGAN"/> Пример результата работы Attribute2Image.]]'''Условная генерация изображений из визуальных атрибутов''' (англ. ''Conditional Image Generation from Visual Attributes, Attribute2Image''<ref name|alt="Attribute2Image">[https://arxiv.org/abs/1512.00570 Xinchen Y. {{---}} Conditional Image Generation from Visual Attributes, 2015]</ref>) {{---}} это еще один способ создания изображений из визуальных атрибутов. Attribute2Image моделирует изображение как смесь переднего и заднего планов и разрабатывает многоуровневую генеративную модель с выделенными скрытыми переменными (рис. 4), которые можно изучать от начала до конца с помощью [[Вариационный автокодировщик| вариационного автокодировщика]] (англ. ''Variational Autoencoder, VAE''). Экспериментируя с естественными изображениями лиц и Сгенерированные изображения птиц Attribute2|Image демонстрирует, что способен генерировать реалистичные и разнообразные изображения с распутанными скрытыми представлениями (рис. 3). Модель использует общий алгоритм минимизации энергии для апостериорного вывода скрытых переменных с учетом новых изображений. Таким образом, изученные генеративные модели показывают отличные количественные и визуальные результаты в задачах реконструкции и завершения изображения, обусловленного атрибутами. <div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:Attribute2ImageDCGAN-13.png|thumb|alt=Архитектура Attribute2Image|x350px|center|Рисунок 4.Сгенерированные изображения цветов<ref name="Attribute2ImageDCGAN"/> Архитектура Attribute2Image.]]|alt=Сгенерированные изображения цветов</divgallery>
=== StackGAN ===
'''Составные генеративные состязательные сети''' (англ. ''Stacked Generative Adversarial Networks, StackGAN''<ref name="StackGAN>[https://arxiv.org/abs/1612.03242 Han Z., Tao X. {{---}} Text to Photo-realistic Image Synthesis with Stacked Generative Adversarial Networks, 2017]</ref>) {{---}} служат для генерации фотореалистичных изображений размера 256x256, заданных текстовыми описаниями. В данной модели трудная задача генерации изображения разлагается на более решаемые мелкие подзадачи с помощью процесса эскиз-уточнения (англ. ''sketch-refinement process''). Таким образом, Stage-I GAN рисует примитивную форму и цвета объекта на основе данного текстового описания, получая изображения Stage-I с низким разрешением (рис. 5). 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 (GAN)#CGAN(Conditional Generative Adversarial Nets) 2014|CGAN]</ref> ], вводится техника условно-когнитивной регуляции (англ. ''Conditioning Augmentation''), которая способствует плавности в обусловливающем многообразии.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:StackGAN-1.png|thumb|alt=Архитектура StackGAN|x350px|center|Рисунок 5.<ref name="StackGAN/> Архитектура StackGAN.]]</div>
Вклад предлагаемого метода состоит из трех частейв следующем:* Предлагается новая составная генеративная состязательная сеть для синтеза фотореалистичных изображений из текстовых описаний. Он разбивает сложную задачу генерации изображений с высоким разрешением на более решаемые мелкие подзадачи и значительно улучшает состояние дел. StackGAN впервые генерирует изображения с разрешением 256х256 пикселей с фотореалистичными деталями из текстовых описаний.* Предлагается техника Condition Augmentation для стабилизации обучения [[Generative Adversarial Nets (GAN)#CGAN<ref name="(Conditional Generative Adversarial Nets)|CGAN"/>]], а также для улучшения разнообразия генерируемых выборок.
* Обширные качественные и количественные эксперименты демонстрируют эффективность дизайна модели в целом, а также влияние отдельных компонентов, которые предоставляют полезную информацию для разработки будущих условных моделей GAN.
{| class="wikitable"
|+ '''Inception scores для сгенерированных изображений в тестовых наборах [[Известные наборы данных#Caltech-UCSD<ref name="caltech"/>Birds 200 (CUB)|Caltech-UCSD]], [[Известные наборы данных#102 Category Flower|Oxford-102<ref name="oxford"/> ]] и [[Известные наборы данных#COCO<ref name="|COCO" />]]'''
|-
! Набор данных !! Inception Score<ref name="inception"/>
|-
| style = "text-align: right" | [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]] || style = "text-align: center" | <tex>3.70 \pm 0.04</tex>
|-
| style = "text-align: right" | [[Известные наборы данных#102 Category Flower| Oxford-102 ]] || style = "text-align: center" | <tex>3.20 \pm 0.01</tex>
|-
| style = "text-align: right" | [[Известные наборы данных#COCO |COCO]]|| style = "text-align: center" | <tex>8.45 \pm 0.03</tex>
|}
Для проверки метода были проведены обширные количественные и качественные оценки. Результаты работы модели сравниваются с двумя современными методами синтеза текста в изображение {{---}} [[#GAN-INT-CLS<ref name="scott">[http://proceedings.mlr.press/v48/reed16.pdf Scott R. {{|GAN-INT--}} Generative Adversarial Text to Image SynthesisCLS]]</ref> и [[#GAN-INT-CLS|GAWWN<ref name="scott"/> ]] (рис. 6).
<gallery mode="slideshow" packed heights=350px caption="Рисунок 6. Пример результата работы StackGAN.">Файл:StackGAN-2.png|Сравнение StackGANСгенерированные изображения птиц<ref name="StackGAN/>.|alt=Сгенерированные изображения птицФайл:StackGAN-3.png|Сравнение StackGANСгенерированные изображения цветов<ref name="StackGAN/>.|alt=Сгенерированные изображения цветов
</gallery>
 
=== FusedGAN ===
Для улучшения генерации изображений по описанию и получения контролируемой выборки, некоторые модели разделяют процесс генерации на несколько этапов. Например, в модели [[#Attribute2Image|Attribute2Image]] раздельная генерации фона и переднего плана позволила получить контролируемую выборку (фиксируя фон и меняя основную сцену, и наоборот). В свою очередь модель FusedGAN<ref name="FusedGAN">[https://arxiv.org/abs/1801.05551 Navaneeth B., Gang H. {{---}} Semi-supervised FusedGAN for ConditionalImage Generation, 2018]</ref> может выполнять контролируемую выборку различных изображений с очень высокой точностью, что так же достигается путём разбиения процесса генерации изображений на этапы. В данной модели в отличие от [[#StackGAN|StackGAN]], где несколько этапов [[Generative Adversarial Nets (GAN)| GAN]] обучаются отдельно с полным контролем помеченных промежуточных изображений, FusedGAN имеет одноступенчатый конвейер со встроенным StackGAN.
 
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:FusedGAN.png|thumb|alt=Архитектура FusedGAN|x350px|center|Рисунок 19.<ref name="FusedGAN"/> Архитектура FusedGAN]]</div>
Контролируемая выборка относится к процессу выборки изображений путем изменения таких факторов как стиль, фон и другие детали. Например, можно генерировать разные изображения, оставляя постоянным фон, или генерировать изображения в различных стилях, сохраняя остальной контекст неизменным.
Основное преимущество данной модели состоит в том, что для обучения она может использовать полу-размеченные данные. Это означает, что помимо размеченных данных (изображение и его описание) для генерации изображений, модель может использовать изображения без текстового описания.
Модель состоит из двух взаимосвязанных этапов (рис. 19):
* На первом этапе с помощью [[Generative Adversarial Nets (GAN)| GAN]] выполняется генерация изображений из случайного вектора, а также создаются признаки для стиля, в котором будет оформлено сгенерированное изображение на втором шаге.
* На втором этапе [[Generative Adversarial Nets (GAN)#CGAN (Conditional Generative Adversarial Nets)|CGAN]] генерирует окончательное изображение (то есть изображение, соответствующее описанию и стилю заданному на первом шаге), используя в качестве входных данных текстовое описание и данные полученные с первого шага.
<tex>М_{s}</tex> выступает в роли шаблона подавая дополнительные признаки на второй шаг генерации. Вследствие чего изображения сгенерированных птиц не только соответствуют описанию, но также сохраняют информацию о стиле. Поэтому вместо того, чтобы учиться с нуля, <tex>G_{c}</tex> строится поверх <tex>М_{s}</tex>, добавляя к нему стили с помощью текстового описания.
Следует отметить, что в модели отсутствует явная иерархия, поэтому оба этапа могут обучаться одновременно, используя альтернативный метод оптимизации.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[ Файл:FusedGAN_ example.png|thumb| alt=Пример работы FusedGAN|x350px|center|Рисунок 20.<ref name="FusedGAN"/> Сравнение FusedGAN с другими моделями]]</div>
Для оценки качества генерируемых изображений с помощью FusedGAN, были отобраны 30 тысяч изображений и посчитано inception scores, используя предварительно обученную модель на тестовом наборе [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]]. Данные сравнения приведены в таблице.
{| class="wikitable"
|-
! Модель !! Inception Score <ref name="inception"/>
|-
| style = "text-align: right" | [[#GAN-INT-CLS|GAN-INT-CLS]] || style = "text-align: center" | <tex>2.88 \pm 0.04</tex>
|-
| style = "text-align: right" | [[#StackGAN++|StackGAN-I]] || style = "text-align: center" | <tex>2.95 \pm 0.02</tex>
|-
| style = "text-align: right" | FusedGAN || style = "text-align: center" | <tex>3.00 \pm 0.03</tex>
|}
 
=== ChatPainter ===
В предыдущих и последующих моделях для создания изображений используются текстовые описания. Однако они могут быть недостаточно информативными, чтобы охватить все представленные изображения, и модели будет недостаточно данных для того чтобы сопоставить объекты на изображениях со словами в описании. Поэтому в качестве дополнительных данных в модели ChatPainter предлагается<ref name="ChatPainter">[https://arxiv.org/abs/1802.08216 Shikhar S., Dendi S. {{---}} ChatPainter: Improving Text to Image Generation using Dialogue, 2018]</ref> использовать диалоги, которые дополнительно описывают сцены (пример рис. 16). Это приводит к значительному улучшению Inception score<ref name="inception"/> и качества генерируемых изображений в наборе данных [[Известные наборы данных#COCO|MS COCO (Microsoft COCO dataset)]]. Для создания нового набора данных с диалогами, были объединены описания представленные в наборе данных [[Известные наборы данных#COCO|MS COCO]], с данными из Visual Dialog dataset (VisDial)<ref>[https://arxiv.org/abs/1611.08669 Visual Dialog]</ref>.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл: ChatPainter.png|thumb| alt=Архитектура ChatPainter|x350px|center|Рисунок 15.<ref name="ChatPainter"/> Архитектура ChatPainter: <ol style="list-style-type:lower-alpha">
<li>Этап 1: модель генерирует изображение 64×64, по описанию и диалогу. </li>
<li>Этап 2: модель генерирует изображение размером 256×256, на основе изображения сгенерированного на 1 этапе, а также описанию и диалогу </li>
</ol>]]</div>
 
[[Файл:SurfBoard-questions.png|alt=Изображение, сгенерированное моделью ChatPainter для данного описания и диалога|thumb|x200px|right|Рисунок 16.<ref name="ChatPainter"/> Пример работы ChatPainter.]]
 
Данная архитектура (рис. 15) опирается на модель [[#StackGAN|StackGAN]]. StackGAN генерирует изображение в два этапа: на первом этапе генерируется грубое изображение 64×64, а на втором генерируется уже улучшенное изображение 256×256.
 
Формирование вектора текстовых описаний <tex>\phi_{t}</tex> происходит путем кодирования подписей с помощью предварительно обученного кодировщика<ref>[https://github.com/reedscot/icml2016 Pre-trained encoder for ICML 2016 paper]</ref>. Для генерации диалоговых вложений <tex>\zeta_{d}</tex> используется два метода:
 
*Нерекурсивный кодировщик {{---}} сжимает весь диалог в одну строку и кодирует его с помощью предварительно обученного кодировщика 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 нужен для получения скрытых условных переменных, которые передаются на вход генератору.
Архитектура блоков (рис. 15) upsample, downsample и residual blocks сохраняется такой же, как и у исходного StackGAN
 
Результаты тестирования и сравнение модели ChatPainter с другими приведены в таблице. Из неё видно, что модель ChatPainter, которая получает дополнительную диалоговую информацию, имеет более высокий Inception score<ref name="inception"/>, в отличии от модели [[#StackGAN|StackGAN]]. Кроме того, рекурсивная версия ChatPainter получилась лучше, чем нерекурсивная версия. Вероятно, это связано с тем, что в нерекурсивной версии кодировщик не обучается на длинных предложениях сворачивая весь диалог в одну строку.
 
{| class="wikitable"
|+ '''Inception scores для сгенерированных изображений в тестовом наборе [[Известные наборы данных#COCO|MS COCO]]'''
|-
! Модель !! Inception Score <ref name="inception"/>
|-
| style = "text-align: right" | [[#StackGAN|StackGAN]] || style = "text-align: center" | <tex>8.45 \pm 0.03</tex>
|-
| style = "text-align: right" | ChatPainter (non-recurrent)|| style = "text-align: center" | '''<tex>9.43 \pm 0.04</tex>'''
|-
| style = "text-align: right" | '''ChatPainter (recurrent)'''|| style = "text-align: center" | '''<tex>9.74 \pm 0.02</tex>'''
|-
| style = "text-align: right" | [[#AttnGAN|AttnGAN]] || style = "text-align: center" | <tex>25.89 \pm 0.47</tex>
|}
 
=== StackGAN++ ===
Хотя генерирующие состязательные сети (GAN) показали замечательный успех в различных задачах, они все еще сталкиваются с проблемами при создании изображений высокого качества. В Поэтому в данном разделе предлагаются, во-первых, предлагается двухэтапная генеративная состязательная сетевая архитектура StackGAN-v1<ref name="StackGAN++">[https://arxiv.org/abs/1710.10916 Han Z., Tao X. {{---}} Realistic Image Synthesis with Stacked Generative Adversarial Networks, 2018]</ref> составные генеративные состязательные сети, предназначенные для создания фотореалистичных изображений с высоким разрешением. Во-первых, предлагается двухэтапная генеративная состязательная сетевая архитектура StackGAN-v1 для синтеза текста в изображение. Stage-I по-прежнему рисует примитивную форму и цвета сцены на основе заданного текстового описания, что дает изображения с низким разрешением. Stage-II все также принимает результаты этапа I и текстовое описание в качестве входных данных и генерирует изображения высокого разрешения с фотореалистичными деталями. Во-вторых, усовершенствованная многоэтапная генеративно-состязательная сетевая архитектура StackGAN-v2 предлагается как для условных, так и для безусловных генеративных задач. StackGAN-v2 состоит из нескольких генераторов и нескольких дискриминаторов, организованных в древовидную структуру (рис. 7); изображения в нескольких масштабах, соответствующие одной и той же сцене, генерируются из разных ветвей дерева. StackGAN-v2 демонстрирует более стабильное поведение при обучении, чем StackGAN-v1, за счет совместной аппроксимации нескольких распределений.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:StackGAN++-1.png|thumb|alt=Архитектура StackGAN++|x350px|center|Рисунок 7.<ref name="StackGAN++"/> Архитектура StackGAN++.]]</div>
Несмотря на успех, GAN, как известно, сложно обучить. Тренировочный процесс обычно нестабилен и чувствителен к выбору [[Настройка гиперпараметров | гиперпараметров]]. В нескольких статьях утверждалось, что нестабильность частично связана с несвязными носителями распределения данных и подразумеваемого модельного распределения. Эта проблема становится более серьезной при При обучении GAN генерировать изображения с высоким разрешением (например, 256x256), потому что вероятность того, что распределение изображений и распределение моделей будет совместно использовать один и тот же носитель в многомерном пространстве, очень мала. Более того, обычным явлением сбоя при обучении GAN является свертывание режима[[Generative_Adversarial_Nets_(GAN)#Mode_Collapse|схлопывание мод распределения]] (англ. ''mode collapse''), когда многие из сгенерированных выборок содержат одинаковый цвет или узор текстуры. Чтобы стабилизировать процесс обучения GAN и улучшить разнообразие выборок, несколько методов пытались решить проблемы, предлагая новые сетевые архитектуры, вводя эвристические приемы или изменяя цели обучения.
Предлагается продвинутая многоэтапная генеративно-состязательная сетевая архитектура StackGAN-v2 как для условных, так и для безусловных генеративных задач. StackGAN-v2 имеет несколько генераторов, которые разделяют между собой большинство своих параметров в древовидной структуре. Входные данные сети можно рассматривать как корень дерева, а изображения разного масштаба генерируются из разных ветвей дерева. Конечная цель генератора на самой глубокой ветви {{---}} создание фотореалистичных изображений с высоким разрешением. Генераторы в промежуточных ветвях имеют прогрессивную цель создания изображений от малых до больших для достижения конечной цели. Вся сеть совместно обучается аппроксимировать различные, но сильно взаимосвязанные распределения изображений в разных ветвях. Кроме того, предлагается термин регуляризации используется '''регуляризация согласованности цвета''' (англ. ''color-consistency regularization''), чтобы генераторы могли генерировать более согласованные образцы для разных масштабов.
{| class="wikitable"
|+ '''Inception scores для сгенерированных изображений в тестовых наборах [[Известные наборы данных#Caltech-UCSD<ref name="caltech"/>Birds 200 (CUB)|Caltech-UCSD]], [[Известные наборы данных#102 Category Flower|Oxford-102<ref name="oxford"/> ]] и [[Известные наборы данных#COCO<ref name="|MS COCO" />]]'''
|-
! Набор данных !! StackGAN-v1 !! StackGAN-v2
|-
| style = "text-align: right" | [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]] || style = "text-align: center" | <tex>3.70 \pm 0.04</tex> || <tex>4.04 \pm 0.05</tex>
|-
| style = "text-align: right" | [[Известные наборы данных#102 Category Flower| Oxford-102 ]] || style = "text-align: center" | <tex>3.20 \pm 0.01</tex> || <tex>3.26 \pm 0.01</tex>
|-
| style = "text-align: right" | [[Известные наборы данных#COCO |MS COCO]]|| style = "text-align: center" | <tex>8.45 \pm 0.03</tex> || <tex>8.30 \pm 0.10</tex>
|}
<gallery mode="slideshow" caption="Рисунок 8. Пример результата работы StackGAN++.">
Файл:StackGAN++-2.png|Сравнение StackGAN++<ref name="StackGAN++"/>.Примеры результата работы для тестовых наборов [[Известные наборы данных#102 Category Flower|alt=Сгенерированные изображения цветовФайл:StackGAN++Oxford-3102]] (крайние левые четыре столбца) и [[Известные наборы данных#COCO|COCO]] (крайние правые четыре столбца).png|Сравнение StackGAN++<ref name="StackGAN++"/>.|alt=Сгенерированные изображения интерьерацветовФайл:StackGAN++-4.png|Сравнение StackGAN++Примеры результата работы для тестового набора [[Известные наборы данных#ImageNet|ImageNet]].<ref name="StackGAN++"/>.|alt=Сгенерированные изображения собак и кошек
</gallery>
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:Semantic-1.png|thumb|alt=Архитектура|x350px|center|Рисунок 9.<ref name="HTIS"/> Архитектура HTIS.]]</div>
* '''Генератор рамок''' (англ. ''Box Generator'') принимает в качестве входных данных вложения текста и генерирует грубую компоновку, композируя комбинируя экземпляры объектов в изображении. Выходные данные генератора представляют собой набор ограничивающих рамок <tex>B_1: T = \{B_1, ..., B_T\}</tex>, где каждая ограничивающая рамка <tex>B_t</tex> определяет местоположение, размер и метку категории <tex>t</tex>-го объекта.
* '''Генератор фигур''' (англ. ''Shape Generator'') берет набор ограничивающих рамок, созданных на предыдущем шаге, и предсказывает формы объектов внутри рамок. Результатом является набор двоичных масок <tex>M_1: T = \{M_1, ..., M_T\}</tex>, где каждая маска <tex>M_t</tex> определяет форму переднего плана <tex>t</tex>-го объекта.
* '''Генератор изображений''' (англ. ''Image Generator'') принимает карту семантических меток <tex>M</tex>, полученную путем агрегирования масок по экземплярам, и текстовое описание в качестве входных данных, и генерирует изображение, переводя семантический макет в пиксели, соответствующие текстовому описанию.
Модель не только генерирует семантически более значимые изображения, но также позволяет автоматически аннотировать генерируемые изображения. Созданные изображения и процесс генерации под управлением пользователя путем изменения сгенерированного макета сцены.
Возможности предложенной модели были продемонстрированы на сложном наборе данных [[Известные наборы данных#COCO|MS COCO dataset<ref name="MSCOCO"/>]]. Оказывается, модель может существенно улучшить качество изображения, интерпретируемость вывода и семантическое выравнивание вводимого текста по сравнению с существующими подходами.
{| class="wikitable" style="float:right; margin-right: 10px;"|+ '''Inception scores для сгенерированных изображений в тестовом наборе [[Известные наборы данных#COCO|MS COCO<ref name="MSCOCO" />]]'''
|-
! Модель !! Inception Score<ref name="inception"/>
|-
| style = "text-align: right" | [[#StackGAN|StackGAN]] || style = "text-align: center" | <tex>8.45 \pm 0.03</tex>
=== AttnGAN ===
Последние разработки исследователей в области автоматического создания изображений по текстовому описанию, основаны на [[Generative Adversarial Nets (GAN)|генеративных состязательных сетях (GANs)]].Общепринятый подход заключается в кодировании всего текстового описания в глобальное векторное пространство предложений (англ. ''global sentence vector''). Такой подход демонстрирует ряд впечатляющих результатов, но у него есть главные недостатки: отсутствие чёткой детализации на уровне слов и невозможность генерации изображений высокого разрешения. Эта проблема становится еще более серьезной при генерации сложных кадров, таких как в наборе данных [[Известные наборы данных#COCO<ref name="|COCO">[https://cocodataset.org COCO dataset (Common Objects in Context)]</ref>].
В качестве решения данной проблемы была предложена<ref name="AttnGan">[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; max-width: auto854;float: center">[[Файл:AttnGanNetwork.png|thumb|alt=Архитектура AttnGAN|x350px|center|Рисунок 11.<ref name="AttnGan"/> Архитектура AttnGAN.]]</div>
Модель состоит из нескольких взаимодействующих нейросетей (рис. 11):
*Attentional Generative Network {{---}} самая большая сеть, состоящая из трех уровней. Каждый уровень порождает изображения все большего разрешения, от 64x64 до 256x256 пикселей, и результат работы на каждом уровне корректируется с помощью сетей внимания <math>F^{attn}</math>, которые несут в себе информацию о правильном расположении отдельных объектов сцены. Кроме того, результаты на каждом уровне проверяются тремя отдельно работающими дискриминаторами, которые оценивают реалистичность изображения и соответствие его общему представлению о сцене.
Благодаря модификациям нейросеть AttnGAN показывает значительно лучшие результаты, чем традиционные системы GAN. В частности, максимальный из известных показателей Inception Score<ref name="inception">[https://arxiv.org/abs/1801.01973 A Note on the Inception Score]</ref> для существующих нейросетей улучшен на 14,14% (с 3,82 до 4,36) на наборе данных [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD<ref name="caltech"/> ]] и улучшен на целых 170,25% (с 9,58 до 25,89)<ref>[https://paperswithcode.com/sota/text-to-image-generation-on-coco Test results {{---}} Text-to-Image Generation on COCO]</ref> на более сложном наборе данных [[Известные наборы данных#COCO<ref name="|COCO" />]].  
<gallery mode="slideshow" packed heights=300px caption="Рисунок 12. Пример результата работы AttnGAN.">Файл:Attngan_bird.png|Во второй и третьей строке приведены по 5 наиболее используемых слов сетями внимания <math>F_{1}^{attn}</math> и <math>F_{2}^{attn}</math> соответственно<ref name="AttnGan"/>.|alt=Сгенерированная красная птичка
Файл:Attngan_coco.png|Во второй и третьей строке приведены по 5 наиболее используемых слов сетями внимания <math>F_{1}^{attn}</math> и <math>F_{2}^{attn}</math> соответственно<ref name="AttnGan"/>.|alt=Сгенерированная еда
Файл:Attngan_fruit.png|Во второй и третьей строке приведены по 5 наиболее используемых слов сетями внимания <math>F_{1}^{attn}</math> и <math>F_{2}^{attn}</math> соответственно<ref name="AttnGan"/>.|alt=Сгенерированные фрукты
</gallery>
=== Stacking VAE and CVAE&GAN ===
Большинство существующих методов генерации изображения по тексту нацелены на создание целостных изображений, которые не разделяют передний и задний план изображений, в результате чего объекты искажаются фоном. Более того, они обычно игнорируют взаимодополняемость различных видов генеративных моделей. Данное решение<ref name="CVAE&GAN">[https://ieeexplore.ieee.org/document/8499439 Chenrui Z., Yuxin P. {{---}} Stacking VAE and GAN for Context-awareText-to-Image Generation, 2018]</ref> предлагает контекстно-зависимый подход к генерации изображения, который разделяет фон и передний план. Для этого используется взаимодополняющая связка [[Вариационный автокодировщик| вариационного автокодировщика]] и [[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|Рисунок 13.<ref name="CVAE&GAN"/> Архитектура Stacking VAE and GAN.]]</div>
[[Вариационный автокодировщик| VAE]] считается имеет более устойчивым стабильный выход чем GANбез [[Generative_Adversarial_Nets_(GAN)#Mode_Collapse|схлопывания мод распределения]] (англ. ''mode collapse''), это можно использовать для достоверной подборки распределения и выявления разнообразия исходного изображения. Однако он не подходит для генерации изображений высокого качества, т. к. генерируемые VAE изображения легко размываются. Чтобы исправить данный недостаток архитектура включает два компонента (рис. 13):
*Контекстно-зависимый вариационный кодировщик (англ. ''conditional [[Вариационный автокодировщик| VAE]], CVAE'') используется для захвата основной компоновки и цвета, разделяя фон и передний план изображения.
*[[Generative Adversarial Nets (GAN)|GAN]] уточняет вывод CVAE с помощью состязательного обучения, которое восстанавливает потерянные детали и исправляет дефекты для создания реалистичного изображения.
Полученные результаты проверки (рис.14) на 2 наборах данных ([[Известные наборы данных#Caltech-UCSD<ref name="caltech"/> Birds 200 (CUB)|Caltech-UCSD]] и [[Известные наборы данных#102 Category Flower|Oxford-102<ref name="oxford"/>]]) эмпирически подтверждают эффективность предложенного метода.
<gallery mode="slideshow" caption="Рисунок 14. Сравнение CVAE&GAN, StackGan и GAN-INT-CLS.">
Файл:CVAE&GAN_example_flowers.png|Сравнение CVAE&GAN, [[#StackGAN|StackGAN]] и [[#GAN-INT-CLS|GAN-INT-CLS<ref name="scott"/>]].<ref name="CVAE&GAN"/>|alt=Пример результата работы CVAE&GAN (flowers)Файл:CVAE&GAN_example_bird.png|Сверху вниз начиная со второй строки: CVAE&GAN, [[#StackGAN|StackGAN]] и [[#GAN-INT-CLS|GAN-INT-CLS<ref name="scott"/>]]. <ref name="CVAE&GAN"/>|alt=Пример результата работы CVAE&GAN (birds)
</gallery>
 
=== ChatPainter ===
В предыдущих и последующих моделях для создания изображений используются текстовые описания. Однако они могут быть недостаточно информативными, чтобы охватить все представленные изображения, и модели будет недостаточно данных для того чтобы сопоставить объекты на изображениях со словами в описании. Поэтому в качестве дополнительных данных в модели ChatPainter предлагается<ref name="ChatPainter">[https://arxiv.org/abs/1802.08216 Shikhar S., Dendi S. {{---}} ChatPainter: Improving Text to Image Generation using Dialogue, 2018]</ref> использовать диалоги, которые дополнительно описывают сцены (пример рис. 16). Это приводит к значительному улучшению Inception score<ref name="inception"/> и качества генерируемых изображений в наборе данных MS COCO (Microsoft COCO dataset)<ref name="MSCOCO">[https://www.microsoft.com/en-us/research/wp-content/uploads/2014/09/LinECCV14coco.pdf Microsoft COCO]</ref>. Для создания нового набора данных с диалогами, были объединены описания представленные в наборе данных MS COCO<ref name="MSCOCO" />, с данными из Visual Dialog dataset (VisDial)<ref>[https://arxiv.org/abs/1611.08669 Visual Dialog]</ref>.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл: ChatPainter.png|thumb| alt=Архитектура ChatPainter|x350px|center|Рисунок 15.<ref name="ChatPainter"/> Архитектура ChatPainter: <ol style="list-style-type:lower-alpha">
<li>Этап 1: модель генерирует изображение 64×64, по описанию и диалогу. </li>
<li>Этап 2: модель генерирует изображение размером 256×256, на основе изображения сгенерированного на 1 этапе, а также описанию и диалогу </li>
</ol>]]</div>
 
[[Файл:SurfBoard-questions.png|alt=Изображение, сгенерированное моделью ChatPainter для данного описания и диалога|thumb|x200px|right|Рисунок 16.<ref name="ChatPainter"/> Пример работы ChatPainter.]]
 
Данная архитектура (рис. 15) опирается на модель [[#StackGAN|StackGAN]]. StackGAN генерирует изображение в два этапа: на первом этапе генерируется грубое изображение 64×64, а на втором генерируется уже улучшенное изображение 256×256.
 
Формирование вектора текстовых описаний <tex>\phi_{t}</tex> происходит путем кодирования подписей с помощью предварительно обученного кодировщика<ref>[https://github.com/reedscot/icml2016 Pre-trained encoder for ICML 2016 paper]</ref>. Для генерации диалоговых вложений <tex>\zeta_{d}</tex> используется два метода:
 
*Нерекурсивный кодировщик {{---}} сжимает весь диалог в одну строку и кодирует его с помощью предварительно обученного кодировщика 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 нужен для получения скрытых условных переменных, которые передаются на вход генератору.
Архитектура блоков (рис. 15) upsample, downsample и residual blocks сохраняется такой же, как и у исходного StackGAN
 
Результаты тестирования и сравнение модели ChatPainter с другими приведены в таблице. Из неё видно, что модель ChatPainter, которая получает дополнительную диалоговую информацию, имеет более высокий Inception score<ref name="inception"/>, в отличии от модели StackGAN. Кроме того, рекурсивная версия ChatPainter получилась лучше, чем нерекурсивная версия. Вероятно, это связано с тем, что в нерекурсивной версии кодировщик не обучается на длинных предложениях сворачивая весь диалог в одну строку.
 
{| class="wikitable"
|+ '''Inception scores для сгенерированных изображений в тестовом наборе MS COCO<ref name="MSCOCO" />'''
|-
! Модель !! Inception Score
|-
| style = "text-align: right" | [[#StackGAN|StackGAN]] || style = "text-align: center" | <tex>8.45 \pm 0.03</tex>
|-
| style = "text-align: right" | ChatPainter (non-recurrent)|| style = "text-align: center" | '''<tex>9.43 \pm 0.04</tex>'''
|-
| style = "text-align: right" | '''ChatPainter (recurrent)'''|| style = "text-align: center" | '''<tex>9.74 \pm 0.02</tex>'''
|-
| style = "text-align: right" | [[#AttnGAN|AttnGAN]] || style = "text-align: center" | <tex>25.89 \pm 0.47</tex>
|}
=== MMVR ===
Обучение начинается с генерации случайного 4096-мерного вектора <tex>h_{t}</tex>, который передаётся в модель для последующего итеративного обновления. Процесс завершается после 200 итераций, и полученное изображение считается репрезентативным для данного описания.
{| class="wikitable"
|+ '''Inception scores для сгенерированных изображений в тестовом наборе [[Известные наборы данных#COCO|MS COCO<ref name="MSCOCO" />]] '''
|-
! Модель !! Inception Score<ref name="inception"/>
|-
| style = "text-align: right" | Plug and Play Generative Networks (PPGN)<ref name="PPGN" /> || style = "text-align: center" | <tex>6.71 \pm 0.45</tex>
|-
| style = "text-align: right" | MMVR (<tex>N_{c}=5</tex>)|| style = "text-align: center" | <tex>8.30 \pm 0.78</tex>
|}MMVR (<tex>N_{c}</tex>) {{---}} модификация MMVR с несколькими текстовыми описаниями на изображение, где <tex>N_{c}</tex> {{- --}} количество описаний.
=== FusedGAN MirrorGAN ===Для улучшения генерации изображений по описанию и получения контролируемой выборки, некоторые модели разделяют процесс генерации на несколько этапов. Например, в модели [[#Attribute2Image|Attribute2Image]] раздельная генерации фона и переднего плана позволила получить контролируемую выборку (фиксируя фон и пеняя основную сцену, и наоборот). В свою очередь модель FusedGAN<ref name="FusedGAN">[https://arxiv.org/abs/1801.05551 Navaneeth B., Gang H. {{---}} Semi-supervised FusedGAN for ConditionalImage Generation, 2018]</ref> может выполнять контролируемую выборку различных изображений с очень высокой точностью, что так же достигается путём разбиения процесса генерации изображений на этапы. В данной модели в отличие от [[#StackGAN|StackGAN]], где несколько этапов [[Generative Adversarial Nets (GAN)| GAN]] обучаются отдельно с полным контролем помеченных промежуточных изображений, FusedGAN имеет одноступенчатый конвейер со встроенным StackGAN.
<div {| class="oo-ui-panelLayout-scrollablewikitable" style="displayfloat: blockright; verticalmargin-alignleft:middle; height: auto; width: auto10px;">|+ '''Inception scores для сгенерированных изображений в тестовых наборах [[Файл:FusedGAN.pngИзвестные наборы данных#Caltech-UCSD Birds 200 (CUB)|thumb|alt=Архитектура FusedGAN|x350px|centerCaltech-UCSD]] и [[Известные наборы данных#COCO|Рисунок 19.<ref name="FusedGAN"/> Архитектура FusedGANCOCO]]</div>'''Контролируемая выборка относится к процессу выборки изображений путем изменения таких факторов как стиль, фон и другие детали. Например, можно генерировать разные изображения, оставляя постоянным фон, или генерировать изображения в различных стилях, сохраняя остальной контекст неизменным.Основное преимущество данной модели состоит в том, что для обучения она может использовать полу|-размеченные данные. Это означает, что помимо размеченных данных (изображение и его описание) для генерации изображений, модель может использовать изображения без текстового описания.! Модель состоит из двух взаимосвязанных этапов !! Inception Score (рис. 19): * На первом этапе с помощью [[Generative Adversarial Nets Известные наборы данных#Caltech-UCSD Birds 200 (GANCUB)|Caltech-UCSD]])!! Inception Score ([[Известные наборы данных#COCO| GANCOCO]] выполняется генерация изображений из случайного вектора, а также создаются признаки для стиля, в котором будет оформлено сгенерированное изображение на втором шаге.)|-* На втором этапе CGAN<ref>| style = "text-align: right" | [[https://arxiv.org/abs/1411.1784 Mirza M. and Osindero S. {{#GAN-INT-CLS|GAN-INT-}} Conditional Generative Adversarial Nets (CGAN) 2014CLS]]|| style = "text-align: center" | </ref> генерирует окончательное изображение (то есть изображение, соответствующее описанию и стилю заданному на первом шаге), используя в качестве входных данных текстовое описание и данные полученные с первого шага. <tex>М_{s}</tex> выступает в роли шаблона подавая дополнительные признаки на второй шаг генерации2. Вследствие чего изображения сгенерированных птиц не только соответствуют описанию, но также сохраняют информацию о стиле88 \pm 0. Поэтому вместо того, чтобы учиться с нуля, <tex>G_{c}04</tex> строится поверх || style = "text-align: center" | <tex>М_{s}7.88 \pm 0.07</tex>, добавляя к нему стили с помощью текстового описания.Следует отметить, что в модели отсутствует явная иерархия, поэтому оба этапа могут обучаться одновременно, используя альтернативный метод оптимизации.|-<div class| style ="ootext-uialign: right" | [[#GAN-panelLayoutINT-scrollable" CLS|GAWWN]] || style="display: block; verticaltext-align:middle; height: auto; width: auto;center"| <tex>[[ Файл:FusedGAN_ example3.70 \pm 0.png04</tex> |thumb| altstyle =Пример работы FusedGAN|x350px|"text-align: center" |Рисунок 20.<ref name="FusedGAN"/tex> Сравнение FusedGAN с другими моделями]]-</divtex>Для оценки качества генерируемых изображений с помощью FusedGAN, были отобраны 30 тысяч изображений и посчитано inception scores, используя предварительно обученную модель на тестовом наборе Caltech|-| style = "text-UCSD<ref namealign: right" | [[#StackGAN | StackGAN]] || style ="caltechtext-align: center"/| <tex>3. Данные сравнения приведены в таблице62 \pm 0.{07</tex> || classstyle ="wikitabletext-align: center"| <tex>8.45 \pm 0.03</tex>
|-
! Модель !! Inception Score| style = "text-align: right" | [[#StackGAN++ | StackGAN++]] || style = "text-align: center" | <tex>3.82 \pm 0.06</tex> || style = "text-align: center" | <tex>-</tex>
|-
| style = "text-align: right" | GAN-INT-CLS PPGN<ref name="scottPPGN"/> || style = "text-align: center"| <tex>-</tex> || style = "text-align: center" | <tex>29.88 58 \pm 0.0421</tex>
|-
| style = "text-align: right" | [[#StackGAN++AttnGAN |StackGAN-IAttnGAN]] || style = "text-align: center" | <tex>24.36 \pm 0.03</tex> || style = "text-align: center" | <tex>25.95 89 \pm 0.0247</tex>
|-
| style = "text-align: right" | FusedGAN MirrorGAN || style = "text-align: center" | <tex>34.00 56 \pm 0.0305</tex> || style = "text-align: center" | <tex>26.47 \pm 0.41</tex>
|}
=== MirrorGAN ===Генерация изображения из заданного текстового описания преследует две главные цели: реалистичность и семантическое постоянство. Несмотря на то, что существует значительный прогресс в создании визуально реалистичных изображений высокого качества посредством [[Generative Adversarial Nets (GAN) | генеративных состязательных сетей]], обеспечение вышепоставленных целей все еще является довольно сложной задачей. Для осуществления попытки их реализации рассмотрим text-to-image-to-text фреймворкс вниманием, сохраняющий семантику с вниманием , под названием <b>MirrorGAN</b><ref name="MirrorGAN">[https://arxiv.org/abs/1903.05854 Tingting Q., Jing Z. {{---}} MirrorGAN: Learning Text-to-image Generation by Redescription, 2019]</ref>. Данный фреймворк, который из текстового описания генерирует изображение, использует идею обучения с помощью переописания (англ. ''redescription'') и состоит из трёх модулей:* модуль Модуль встраивания семантического текста (англ. ''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) должно предоставлять аналогичную семантику семантически совпадать с заданным.
Чтобы обучать модель сквозным методом, будем использовать две состязательные [[Функция потерь и эмпирический риск | функции потерь]]: состязательная # Состязательная потеря в реалистичности и состязательная : <tex>\mathcal{L}_{G_i}^{VR} = -\frac{1}{2} \mathbb{E}_{I_i \sim p_{I_i}} [\log(D_i(I_i))]</tex>.# Состязательная потеря в семантическом постоянстве: <tex>\mathcal{L}_{G_i}^{SC} = -\frac{1}{2} \mathbb{E}_{I_i \sim p_{I_i}} [\log(D_i(I_i, s))]</tex>.Где <tex>I_i</tex> {{---}} сгенерированное на этапе <tex>i</tex> изображение, взятое из распределения <tex>p_{I_i}</tex>. Вдобавок, для эффективного использования двойного регулирования T2I и I2T, применим текстово-семантическую реконструированную функцию потерь, основанную на перекрёстной энтропии: <tex>\mathcal{L}_{stream} = -\displaystyle\sum_{t = 0}^{L - 1} \log(p_t(T_t))</tex>.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:MirrorGAN.png|thumb|center|x350px|Рисунок 21.<ref name="MirrorGAN"/> Архитектура MirrorGAN.]]</div>
MirrorGan представляет собой зеркальную структуру, объединяя T2I и I2T. Чтобы сконструировать многоэтапный каскадный генератор, нужно совместить все три сети генерации изображений последовательно(<b>STEM</b>, <b>GLAM</b> и <b>STREAM</b>) необходимо объединить. В качестве архитектуры STREAM будем использовать довольно распространенный фреймворк захвата создания текстового описания изображения(англ. ''image captioning framework''), базирующийся на кодировании и декодировании. Кодировщик изображений есть {{---}} это [[Сверточные нейронные сети | свёрточная нейронная сеть]], предварительно обученная на ImageNet<ref name="ImageNet">[http://www.image-net.org/ ImageNet image database ]</ref>, а декодировщик есть {{---}} это [[Рекуррентные нейронные сети | рекуррентная нейронная сеть]]. Предварительное обучение STREAM помогло MirrorGAN достичь более стабильного процесса обучения и более быстрой сходимости, в то время, как их совместная оптимизация довольно нестабильна и с точки зрения занимаемого , занимает много места и времени очень дорогадолго работает. Структура кодировщик-декодировщик и соответствующие ей параметры фиксированы во время обучения других модулей MirrorGAN.
Обучая <tex>G_i</tex>, градиенты из <tex>L_\mathcal{L}_{stream}</tex> [[Обратное распространение ошибки | обратно распространяются (англ. ''backpropagated'') ]] через STREAM в <tex>G_i</tex>, веса сетей которых остаются фиксированными. Финальная целевая функция генератора выглядит так:
<tex>\mathcal{L}_G = \displaystyle\sum_{i = 0}^{m - 1}{\mathcal{L}_{G_i}^{VR} + \mathcal{L}_{G_i}^{SC} + \lambda \mathcal{L}_{stream}}</tex>,
где <tex>\lambda</tex> {{---}} вес потери для обработки важности участия состязательной потери (англ. ''adversarial loss'') и потери текстово-семантической реконструкции (англ. ''text-semantic reconstruction loss''). Для наилучшего качества генерации можно поставить коэффициент <tex>\lambda := 20</tex>.
Показатель Inception Score<ref name="inception"/> был использован для измерения как объективности, так и разнообразия сгенерированных изображений. [[https://en.wikipedia.org/wiki/Evaluation_measures_(information_retrieval)#R-Precision R-precision]] был использован для вычисления визуально-семантической схожести между сгенерированными изображениями и их соответствующими текстовыми описаниями.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:MirrorGAN&Co.jpg|thumb|center|x500px|Рисунок 22.<ref name="MirrorGAN"/> Сравнение MirrorGAN, [[#AttnGAN|AttnGAN]] и других генеративных состязательных сетей.]]</div>
{| class="wikitable"== TextKD-GAN ===|+ Генерация текста представляет особый интерес во многих приложениях [https://en.wikipedia.org/wiki/Neuro-linguistic_programming нейролингвистического программирования] (англ. ''neuro-linguistic programming, NLP''Inception scores для сгенерированных ), таких как [https://en.wikipedia.org/wiki/Machine_translation машинный перевод], моделирование языка и обобщение текста. [[Generative Adversarial Nets (GAN) | Генеративные состязательные сети]] достигли замечательного успеха в создании высококачественных изображений в тестовых наборах CUB[[Компьютерное зрение | компьютерном зрении]], и в последнее время они также вызвали большой интерес со стороны сообщества NLP. Однако достижение подобного успеха в NLP было бы более сложным из-за дискретности текста. В данной статье<ref name="caltechTextKD-GAN">[https:/> и COCO/arxiv.org/abs/1905.01976 Md. Akmal H. and Mehdi R.{{---}} TextKD-GAN: Text Generation using KnowledgeDistillation and Generative Adversarial Networks, 2019]</ref name="COCO" />'''вводится метод, использующий дистилляцию знаний (перенос знаний, усвоенных большой моделью (учителем), на меньшую модель (ученика)) для эффективного оперирования настройками сети. |TextKD-! Модель !! CUBGAN представляет из себя решение для основного узкого места использования генеративных состязательных сетей для генерации текста с <ref name="caltech"/b> Inception Score !! COCOдистилляцией знаний<ref name="MSCOCO"/b> Inception Score|{{---| style = "text}} методом, переносящим знания смягченного вывода модели (учителя) в меньшую модель (ученика). Решение основано на автокодировщике (учителе), чтобы получить гладкое представление настоящего текста. Это представление затем подается в дискриминатор TextKD-align: right" | GANвместо обычного one-INThot представления. Генератор (студент) пытается изучить многообразие смягченного гладкого представления автокодировщика. TextKD-CLS GAN, в конечном итоге, будет превосходить обычный генератор текста на основе генеративных состязательных сетей, который не нуждается в предварительном обучении. <ref namediv class="scottoo-ui-panelLayout-scrollable"/> || style = "textdisplay: block; vertical-align: centermiddle; height: auto; width: auto;" | <tex>2[[Файл:TextKD-GAN_Model.88 \pm 0png|thumb|center|x400px|Рисунок 27.04</tex> || style ref name= "textTextKD-align: centerGAN" | <tex/>7Модель TextKD-GAN для генерации текста.88 \pm 0.07]]</texdiv>|-| style = "text-alignВ общепринятом текстовом распознавании, реальные и сгенерированные входные данные дискриминатора будут иметь разные типы ([https: right" | GAWWN <ref name="scott"/> || style = "text/en.wikipedia.org/wiki/One-hot one-alignhot] и [https: center" | <tex>3//en.70 \pm 0wikipedia.04<org/wiki/tex> || style = "textSoftmax_function softmax]). Один из способов избежать этой проблемы состоит в получении непрерывно гладкого представление слов, а не one-hot представления, и обучении дискриминатора различать их. На рисунке 27 проиллюстрирована модель, в которой используется стандартный автокодировщик (учитель), чтобы заменить one-hot представление выходом, перестроенным softmax-функцией, который является представлением, дающим меньшую дисперсию градиентов. Как видно, вместо one-align: center" | <tex>hot представления реальных слов смягченный преобразованный выход автокодировщика подается на вход дискриминатору. Эта техника значительно усложняет распознавание для самого дискриминатора. Генератор с softmax выходом пытается имитировать распределение выходного сигнала автокодировщика вместо обычного one-</tex>hot представления.|-| style = "textОбучение автокодировщика и TextKD-alignGAN происходит одновременно. Чтобы добиться этого, необходимо раздробить целевую функцию на три члена: right" | [[#StackGAN | StackGAN]] || style = "text-alignРеконструирующий член для автокодировщика: center" | <tex>3.62 \pm 0.07</tex> |min\limits_{(\varphi, \psi)} L_{AE}(\varphi, \psi) = \min\limits_{(\varphi, \psi)} \| style = "textx -align: center" \mathrm{softmax}(\mathrm{dec}_\psi(\mathrm{enc}_\varphi(x))) \| <tex>8.45 \pm 0^ 2.03</tex>|-| style = "text-align: right" | # [[#StackGAN++ Функция потерь и эмпирический риск | StackGAN++Функция потерь]] || style = "text-alignдля дискриминатора с градиентным штрафом (англ. ''discriminator loss function with gradient penalty''): center" | <tex>3.82 \pm 0.06</tex> || style min\limits_{w \in W} L_{discriminator}(w) = "text\min\limits_{w \in W} -align: center" 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}) \| <tex>_2 -1)^2].</tex>|-| style = "text-align# Состязательная стоимость (англ. ''adversarial cost'') генератора: right" | PPGN<ref name="PPGN"/tex> || style \min\limits_\theta L_{Gen}(\theta) = "text-align: center" | <tex>-\min\limits_\theta E_{z \sim P_z} [f_w(G(z))].</tex> || style = "text-align: center" |  Эти функции потерь обучаются поочередно, чтобы оптимизировать различные части модели. В члене штрафа градиента необходимо посчитать норму градиента случайных выборок <tex>9.58 \pm 0.21hat{x} \sim P_{\hat{x}}</tex>. |<div class="oo-ui-panelLayout-| scrollable" style = "textdisplay: block; vertical-align: rightmiddle; height: auto; width: auto;" | >[[#AttnGAN Файл:TextKD-GAN&Co.png| AttnGAN]] thumb|center| style = "text-align: center" x500px| <tex>4Рисунок 28.36 \pm 0.03</tex> || style ref name= "textTextKD-align: centerGAN" | <tex>25.89 \pm 0.47</tex>|Дивергенция Дженсена-| style = "textШеннона (англ. ''Jensen-align: right" | MirrorGAN || style = "textShannon divergence, JSD'') между сгенерированным и обучающимся предложениями (n-align: center" | граммами) полученных из эксперимента SNLI<texref>4[https://nlp.56 \pm 0stanford.05edu/projects/snli/ The Stanford Natural Language Inference (SNLI) Corpus]</texref> || style = "text-align: center" | <tex>26(Stanford Natural Language Inference, Стэнфордский Вывод Естественного Языка).47 \pm 0.41]]</texdiv>|}
=== Obj-GAN ===
'''Объектно-управляемая [[Generative Adversarial Nets (GAN)| генеративная состязательная сеть]] с вниманием''' (англ. ''Object-Driven Attentive Generative Adversarial Network, Obj-GAN'') позволяет создавать изображения по описанию с учётом объектной компоновки. Объектно-управляемый генератор изображений, создаёт изображения на основе двухэтапной генерации. Сначала создаётся макет по наиболее значимым словам в текстовом описании, после этого генерируется изображение с полученной компоновкой объектов. А для сопоставления синтезируемых объектов с текстовым описанием и сгенерированным макетом, предлагается<ref name="Obj-GAN">[https://openaccess.thecvf.com/content_CVPR_2019/papers/Li_Object-Driven_Text-To-Image_Synthesis_via_Adversarial_Training_CVPR_2019_paper.pdf Wendo L., Pengchuan Z. {{---}} Object-driven Text-to-Image Synthesis via Adversarial Training 2019]</ref> новый объектный дискриминатор, базирующийся основывающийся на Fast R-CNN<ref>[https://arxiv.org/abs/1504.08083 Ross Girshick {{---}} Fast R-CNN, 2015]</ref>. В результате модификаций Obj-GAN значительно превосходит по производительности другие модели на наборе данных [[Известные наборы данных#COCO<ref name="|COCO" />]], увеличивая показатель Inception score<ref name="inception"/> на 11% и уменьшая показатель FID (Fréchet inception distance)<refname="FID">[https://en.wikipedia.org/wiki/Fréchet_inception_distance Fréchet inception distance, FID]</ref> на 27%. <div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:Obj-GAN.png|thumb|alt=Архитектура Obj-GAN|x300px|thumb|center|Рисунок 23.<ref name="Obj-GAN"/> Архитектура Obj-GAN.]]</div>
{| class="wikitable" style="float:right; margin-left: 10px;"
|+ '''Inception score в тестовом наборе [[Известные наборы данных#COCO<ref name="MSCOCO" />|COCO]]'''
|-
! Модель !! Inception Score <ref name="inception"/> !! FID <ref name="FID"/>
|-
| style = "text-align: right" | Obj-GAN (pred box & pred shp) || style = "text-align: center" | <tex>27.32 \pm 0.40</tex> || style = "text-align: center" | <tex>24.70</tex>
|}
[[Файл:Основная цель Obj-GAN{{---}} генерация качественных изображений с семантически значимым макетом и реалистичными объектами.png|thumb|alt=Архитектура Obj-GAN|x300px|thumb|right|Рисунок 23состоит из пары генератора изображений с вниманием, управляемый объектами, и пообъектного дискриминатора (англ.<ref name="Obj''object-GAN"/> Архитектура Obj-GANwise discriminator''). Генератор изображений в качестве входных данных принимает текстовое описание и предварительно сгенерированный семантический макет (англ. ''semantic layout''), по которым создаёт изображение с помощью процесса, заключающегося в поэтапном улучшении качества результирующего изображения. На каждом этапе генератор синтезирует фрагмент изображений внутри ограничивающей рамки (англ. ''bounding box''), фокусируясь на наиболее релевантных объекту словах.]]
Основная цель Obj-GAN {{---}} генерация качественных изображений Говоря более конкретно, он, с семантически значимым макетом и реалистическими использованием управляемого объектами. Obj-GAN состоит из пары генератора изображений с вниманиемслоя внимания, оперирует метками класса, запрашивая слова в предложениях, управляемый объектамичтобы сформировать вектор контекстов, и пообъектного дискриминатора (англвпоследствии синтезирует фрагмент изображения при условиях метки и вектора контекстов. ''object-wise discriminator'')Пообъектный дискриминатор проверяет каждую ограничивающую рамку, чтобы удостовериться в том, что сгенерированный объект действительно может быть сопоставлен с заранее сгенерированным макетом. Генератор изображений в качестве входных данных принимает текстовое описание Чтобы вычислить все потери при распознавании для всех заданных ограничивающих рамок одновременно и предварительно сгенерированный семантический макет эффективно, дискриминатор представляет из себя быструю [[Сверточные нейронные сети|свёрточную нейронную сеть]] на основе регионов (англ. ''semantic layoutFast Region-based Convolutional Neural Network, Fast R-CNN''), по которым создаёт изображение с помощью многоэтапного процесса coarse-to-fine. На каждом этапе генератор синтезирует фрагмент изображений внутри ограничивающей двоичной [[Функция потерь и эмпирический риск | функцией потерь]] перекрёстной энтропии для каждой рамки (англ. ''bounding box''), фокусируясь на наиболее релевантных объекту словах.
Говоря более конкретно, он, с использованием управляемого объектами слоя внимания, оперирует метками класса, запрашивая слова в предложениях, чтобы сформировать вектор контекстов, и впоследствии синтезирует фрагмент изображения при условиях метки и вектора контекстов. Пообъектный дискриминатор проверяет каждую ограничивающую рамку, чтобы удостовериться в том, что сгенерированный объект действительно может быть сопоставлен с заранее сгенерированным макетом. Чтобы вычислить все потери при распознавании для всех заданных ограничивающих рамок одновременно и эффективно, дискриминатор базирован быстрой региональной [[Сверточные нейронные сети|свёрточной нейронной сетью]] (англ. ''Fast Region-based Convolutional Neural Network, Fast R-CNN'') с двоичной [[Функция потерь и эмпирический риск | функцией потерь]] перекрёстной энтропии для каждой рамки.
Рассмотрим архитектуру Obj-GAN. Первым этапом, генеративная состязательная сеть принимает текстовое предложение и генерирует <b>семантический макет</b> {{---}} последовательность объектов специфицированных соответствующими ограничивающими рамками (наряду с метками классов) и фигурами. <b>Генератор рамок</b> (англ. ''box generator'') и <b>генератор фигур</b> (англ. ''shape generator'') работают соответствующим образом, сначала создавая последовательность ограничивающих рамок, а затем {{---}} фигуру для каждой. Поскольку большинству рамок сопоставлены слова из данного текстового предложения, модель [[Механизм_внимания#.D0.91.D0.B0.D0.B7.D0.BE.D0.B2.D0.B0.D1.8F_.D0.B0.D1.80.D1.85.D0.B8.D1.82.D0.B5.D0.BA.D1.82.D1.83.D1.80.D0.B0_Seq2seq | seq2seq]] с вниманием охватывает это соответствие. Далее конструируется <tex>G_{shape}</tex>, базированный на двунаправленной [[Сверточные нейронные сети | свёрточной]] [[Долгая краткосрочная память|долгой краткосрочной памяти ]] (англ. ''bidirectional convolutional long short-term memory, [[Долгая краткосрочная память | LSTM]]''). Обучение <tex>G_{shape}</tex> основывается на фреймворке генеративной состязательной сети, в которой потеря восприятия используется для ограничения генерируемых фигур и стабилизирования обучения.
Рассмотрим архитектуру Obj-GAN. Первым этапом, генеративная состязательная сеть принимает текстовое предложение и генерирует <b>семантический макет</b> {{---}} последовательность объектов специфицированных соответствующими ограничивающими рамками (наряду с метками классов) и фигурами. <b>Генератор рамок</b> (англ. ''box generator'') и <b>генератор фигур</b> (англ. ''shape generator'') работают соответствующим образом, сначала создавая последовательность ограничивающих рамок, а затем {{---}} фигуру для каждой. Поскольку большинству рамок сопоставлены слова из данного текстового предложения, модель seq2seq с вниманием охватывает это соответствие. Далее конструируется <tex>G_{shape}</tex>, базированный на двунаправленной [[Сверточные нейронные сети | свёрточной]] [[Долгая краткосрочная память|долгой краткосрочной памяти ]] (англ. ''bidirectional convolutional long short-term memory, [[Долгая краткосрочная память | LSTM]]''). Обучение <tex>G_{shape}</tex> основывается на фреймворке генеративной состязательной сети, в которой потеря восприятия используется для ограничения генерируемых фигур и стабилизирования обучения. <gallery classmode="center" modepacked heights="slideshow" 450px caption="Рисунок 24. Сравнение результатов Obj-GAN с другими генеративными состязательными сетями.">
Файл:Obj-GAN_ex1.png|Сравнение Obj-GAN<ref name="Obj-GAN"/>
Файл:Obj-GAN_ex2.png|Сравнение Obj-GAN<ref name="Obj-GAN"/>
</gallery>
=== LayoutVAE ===
Модели, используемые для генерации создания макетов сцен из текстовых описаний по большей части игнорируют возможные визуальные вариации внутри структуры, описываемой самим текстом.
'''Макетный вариационный автокодировщик''' (англ. ''Layout variational autoencoder (, LayoutVAE)'') {{---}} фреймворк, базирующийся на [[Вариационный автокодировщик | вариационном автокодировщике]] для генерации стохастических макетов сцен (англ. ''stochastic scene layouts'') {{---}} есть разносторонняя это программная платформа моделирования, позволяющая генерировать либо полные макеты изображений с заданным набором меток, либо макеты меток для существующего изображения с новой заданной новой меткой. Вдобавок, она также способна обнаруживать необычные макеты, потенциально открывая пути к решению проблемы генерации макетов.
Будем рассматривать Рассмотрим задачу генерации сцен с описанием набора меток. Набор меток, представленный как более слабое описание, Этот набор всего лишь предоставляет множество меток, присутствующих в данном изображении (без дополнительного описания взаимосвязи), заставляя модель изучать пространственные и подсчитываемые отношения (англ. ''spatial and count relationships'') на основе визуальных данных.
Касательно описанных проблем вышеописанной задачи предлагаются следующие решения:* модель Модель стохастических генераций макетов сцен с заданным множеством меток, которая будет иметь две компоненты: моделирование распределений подсчитываемых отношений между объектами; моделирование распределений пространственных отношений между объектами;.* синтетический Синтетический набор данных, MNIST-макеты, отражающие стохастическую природу генерации макета сцен;.* экспериментальная Экспериментальная валидация моделей с использованием 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|Рисунок 25.<ref name="LayoutVAE"/> Архитектура LayoutVAE.]]</div>В статье<ref name="LayoutVAE">[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-сцен в помещении в скрытом коде ; и ттак далее.д..
Обучение генеративных моделей нужнонеобходимо, чтобы предсказать разнообразные, но правдоподобные наборы ограничивающих рамок(англ. ''bounding boxes'') <tex>b_{k, i} = [x_{k, i}, y_{k, i}, w_{k, i}, h_{k, i}]</tex>, учитывая набор меток в качестве входных данных. Рамки в наборе представлены верхними левыми координатами, шириной и высотой <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>
Имея набор меток <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: auto;">[[Файл:LayoutVAEGeneration.png|thumb|center|x350px|Рисунок 26.<ref name="LayoutVAE"/> Генерация по множеству меток <tex>\{person, sea, surfboard\}</tex>.]]</div>
 
=== 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 name="TextKD-GAN">[https://arxiv.org/abs/1905.01976 Md. Akmal H. and Mehdi R.{{---}} TextKD-GAN: Text Generation using KnowledgeDistillation and Generative Adversarial Networks, 2019]</ref> вводится метод, использующий дистилляцию знаний для эффективного использования настройку GAN для генерации текста. Также показываются, как [[Автокодировщик | автокодировщики]] (англ. ''autoencoders, AEs'') могут быть использованы для обеспечения непрерывного представления предложений, которое в свою очередь представляет собой гладкое представление, присваивающее ненулевые вероятности более чем одному слову.
 
TextKD-GAN представляет из себя решение для основного узкого места использования генеративных состязательных сетей для генерации текста с дистилляцией знаний: метод, переносящий знания смягченного вывода модели преподавателя в модель студента. Решение основано на AE (учителе), чтобы получить гладкое представление реального текста. Это гладкое представление подается в дискриминатор TextKD-GAN вместо обычного однократного представления. Генератор (студент) пытается изучить многообразие смягченного гладкого представления AE. TextKD-GAN, в конечном итоге, будет превосходить обычный генератор текста на основе GAN, который не нуждается в предварительной подготовке.
 
[[Файл:TextKD-GAN_Model.png|thumb|right|x400px|Рисунок 27.<ref name="TextKD-GAN"/> Модель TextKD-GAN для генерации текста.]]
 
В общепринятом текстовом подходе к распознавании, реальные и сгенерированные входные данные дискриминатора будут иметь разные типы ([https://en.wikipedia.org/wiki/One-hot one-hot] и [https://en.wikipedia.org/wiki/Softmax_function softmax]), и он может обыкновенно отличить их друг от друга. Один из способов избежать этой проблемы состоит в получении непрерывно гладкого представление слов, а не one-hot представления, и обучении дискриминатора различать их. Здесь используется общепринятый атокодировщик (учитель), чтобы заменить one-hot представление выходом, перестроенным softmax-функцией, который является представлением, дающим меньшую дисперсию градиентов. Предложенная модель изображена на рисунке 27. Как видно, вместо one-hot представления реальных слов смягченный реконструированный выход автокодировщика подается на вход дискриминатору. Эта техника значительно усложняет распознавание для самого дискриминатора. Генератор GAN с softmax выходом пытается имитировать распределение выходного сигнала автокодировщика вместо общепринятого one-hot представления.
 
Обучение автокодировщика и 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>
# [[Функция потерь и эмпирический риск | функция потерь]] для дискриминатора с градиентным штрафом (англ. ''discriminator loss function with gradient penalty''): <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>
# состязательная стоимость (англ. ''adversarial cost'') генератора: <tex>\min\limits_\theta L_{Gen}(\theta) = -\min\limits_\theta E_{z \sim P_z} [f_w(G(z))]</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|x500px|Рисунок 28.<ref name="TextKD-GAN"/> Дивергенция Дженсена-Шеннона (англ. ''Jensen-Shannon divergence, JSD'') между сгенерированным и обучающимся предложениями (n-граммами) полученных из эксперимента SNLI<ref>[https://nlp.stanford.edu/projects/snli/ The Stanford Natural Language Inference (SNLI) Corpus]</ref> (Stanford Natural Language Inference, Стэнфордский Вывод Естественного Языка).]]</div>
=== MCA-GAN ===
Преобразование изображений перекрестным видом (англ. ''cross-view image translation'') проблематично, поскольку оно оперирует изображениями со значительно отличающимися перспективами ракурсами и тяжёлыми деформациями. В статье<ref name="MCA-GAN">[https://arxiv.org/pdf/1904.06807.pdf Multi-Channel Attention Selection GAN with Cascaded Semantic Guidancefor Cross-View Image Translation]</ref> о выборочной [[Generative Adversarial Nets (GAN) | генеративной состязательной сети]] с мультиканальным вниманием (англ. ''Multi-Channel Attention Selection GAN, MCA-GAN'') рассматривается подход, позволяющий делать возможным генерацию изображения, максимально приближенной к реальной, с произвольных перпсективахракурсах, основывающийся на семантическом отображении (англ. ''semantic mapping''). Работа сети происходит в два этапа:# изображение Изображение и целевое семантическое отображение (англ. ''target semantic map'') подаются на вход циклической семантически-управляемой генерационной генеративной сети (англ. ''cycled semantic-guided generation network'') для получения начальных результатов;.# начальные Начальные результаты уточняются, используя механизм мультиканального выделения внимания (англ. ''multi-channel attention selection mechanism'').
Обширные эксперименты на наборах данных Dayton, CVUSA<ref>[http://mvrl.cs.uky.edu/datasets/cvusa/ Crossview USA (CVUSA)]</ref> и Ego2Top<ref>[https://www.crcv.ucf.edu/projects/ego2top/index.php Ego2Top: Matching Viewers in Egocentric and Top-view Videos (ECCV 2016)]</ref> показывают, что данная модель способна генерировать значительно более качественные результаты, чем другие современные методы.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:MCA-GAD.png|thumb|leftcenter|x300px|Рисунок 29.<ref name="MCA-GAN"/> Архитектура MCA-GAD.]] На рисунке 29 проиллюстрирована структура сети. Первый этап, как было описано выше, состоит из каскадной семантически-управляемой генерацинной подсети, использующая изображения с одном представлении и условные семантические отображения в другом представлении в качестве входных данных и реконструирующая эти изображения в другом представлении. Результирующие изображения далее подаются на вход семантическому генератору для восстановления исходного семантического отображения, формируя цикл генерации. Второй этап заключается в том, что грубый синтез (англ. ''coarse synthesis'') и глубокие характеристики объединяются и передаются в модуль мультиканального выделения внимания, направленный на получение более детализированного синтеза (англ. ''fine-grained synthesis'') из большего пространства генерации и создание отображений неопределенности (англ. ''uncertainty maps'') для управления множественными потерями оптимизации (англ. ''optimization losses'').</div>
На рисунке 29 проиллюстрирована структура сети. Первый этап, как было описано выше, состоит из <b>каскадной семантически-управляемой генерацинной подсети</b>, использующая изображения в одном представлении и условные семантические отображения в другом представлении в качестве входных данных и преобразующая эти изображения в другом представлении. Результирующие изображения далее подаются на вход семантическому генератору для восстановления исходного семантического отображения, формируя цикл генерации. Второй этап заключается в том, что грубый синтез (англ. ''coarse synthesis'') и отображения глубоких характеристик объединяются и подаются на вход в <b>модуль мультиканального выделения внимания</b>, направленный на получение более детализированного синтеза (англ. ''fine-grained synthesis'') из большего пространства генерации и создание отображений неопределенности (англ. ''uncertainty maps'') для управления множественными потерями оптимизации (англ. ''optimization losses''). Модуль мультиканального выделения внимания в свою очередь состоит из многомасштабного пространственного пулинга (англ. ''multiscale spatial pooling'') и компоненты мультиканального выделения внимания (англ. ''multichannel attention selection component'').
Поскольку между изначальной перспективой изначальным ракурсом и результирующей результирующим существует объемная деформация объекта и/или сцены, одномасштабная характеристика (англ. ''single-scale feature'') вряд ли сможет захватить всю необходимую информацию о пространстве для детализированной генерации. Многомасштабный пространственный пулинг оперирует же другими значениями размера ядра и шага для выполнения глобального среднего пулинга (англ. ''global average pooling'') на одних и тех же входных характеристиках, тем самым получая многомасштабные характеристики с отличающимися рецептивными полями (англ. ''receptive fields'') для восприятия различных пространственных контекстов. Механизм мультиканального внимания позволяет осуществлять выполнение пространственного и временного отбора (англ. ''spatial and temporal selection''), чтобы синтезировать конечный детализированный результат.
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:MCA-GAN_Module.png|thumb|center|x400px|Рисунок 30.<ref name="MCA-GAN"/> Архитектура модуля мультиканального выделения внимания (англ. ''multi-channel attention selection module'').]]</div>
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:MCA-GAN_CrossviewImageTranslation.png|thumb|center|x500px|Рисунок 31.<ref name="MCA-GAN"/> Преобразование изображения перекрестным видом.]]</div>
== Области применения ==
*Создание контента и данных :**Картинки картинки для интернет-магазина;**Аватары аватары для игр;**Видеоклипывидеоклипы, сгенерированные автоматически, исходя из музыкального бита произведения;**Виртуальные виртуальные ведущие<ref>[https://dictor.mail.ru/ Виртуальный диктор]</ref>.*Благодаря работе Обучение систем на основе синтеза данных, возникающего в результате работы генеративных моделей возникает синтез данных, на которых потом могут обучаться другие системы:**Генерации генерация реалистичного видео городской среды<ref>[https://news.developer.nvidia.com/nvidia-invents-ai-interactive-graphics/ NVIDIA Interactive Graphics]</ref>.
== См. также ==
*[[Generative Adversarial Nets (GAN)|Порождающие состязательные сети (GAN)]]
1632
правки

Навигация