Изменения

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

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

1838 байт добавлено, 23:08, 23 января 2021
Remove category "В разработке"
{{В разработке}}Автоматическое создание реалистичных высококачественных изображений из текстовых описаний был было бы интересен интересно и довольно полезенполезно, так как имеет множество практических применений, но современные системы искусственного интеллекта все еще далеки от этой цели, так как это является довольно сложной задачей в области компьютерного зрения. Однако в последние годы были разработаны универсальные и мощные рекуррентные архитектуры нейронных сетей для изучения различных представлений текстовых признаков. Между тем, глубокие сверточные [[Generative Adversarial Nets (GAN)| генеративные состязательные сети]] (англ. ''Generative Adversarial Nets, GANs'') начали генерировать весьма убедительные изображения определенных категорий, таких как лица, обложки альбомов и интерьеры комнат. Образцы, генерируемые существующими подходами "текст-изображение", могут приблизительно отражать смысл данных описаний, но они не содержат необходимых деталей и ярких частей объекта. В данной статье рассмотрены формулировка и глубокая архитектура GAN, а также объединены достижения в генерации изображений по тексту.
== Обзор генеративных моделей ==
|+ '''Сравнение моделей'''
|-
! rowspan=2 | Модель !! colspan=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: rightcenter" | [[#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>256 64 \times 25664</tex>| style = "text-align: center" | [https://github.com/xcyan/eccv16_attr2img github/xcyanда]
| Генерация изображения как смесь переднего и заднего планов на основе многоуровневой генеративной модели.
| [[Файл: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: rightcenter" | [[#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>256 64 \times 25664</tex>| style = "text-align: center" | [https://github.com/soumith/dcgan.torch github/soumithда]
| Обучение на текстовых признаках, кодируемых гибридной сверточно-рекуррентной нейронной сетью.
| [[Файл:GAN-INT-CLS-example.png|128px|thumb|center|This flower is white and pink in color, with petals that have veins.]]
|-
| style = "text-align: rightcenter" | [[#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 github/hanzhanggitда]
| Генерация изображения происходит в два этапа, на первом этапе создается примитивная форма изображения и задаются цвета объектов, на втором исправляются дефекты предыдущего этапа и добавляются более мелкие детали.
| [[Файл:StackGAN-example.png|128px|thumb|center|This flower has a lot of small purple petals in a dome-like configuration.]]
|-
| style = "text-align: rightcenter" | [[#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>256 64 \times 25664</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: rightcenter" | [[#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: rightcenter" | [[#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 github/hanzhanggitда]
| Генерация изображений разного масштаба из разных ветвей древовидной структуры, в которой несколько генераторов разделяют между собой большинство своих параметров.
| [[Файл:StackGAN++-example.png|128px|thumb|center|A picture of a very clean living room.]]
|-
| style = "text-align: rightcenter" | [[#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: rightcenter" | [[#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 github/taoxugitда]
| Выделение слов для генерации областей картинки с помощью механизма внимания.
| [[Файл:AttnGan_256x256_coco.png|128px|thumb|center|A photo a homemade swirly pasta with broccoli carrots and onions.]]
|-
| style = "text-align: rightcenter" | [[#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: rightcenter" | [[#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: rightcenter" | [[#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 github/qiaottда]
| Генерация изображения с использованием идеи обучения посредством переописания.
| [[Файл:MirrorGANExample.png|128px|thumb|center|Boats at the dock with a city backdrop.]]
|-
| style = "text-align: right" | [[#TextKD-GAN|TextKD-GAN]] | style = "text-align: center" | {{---}}| style = "text-align: center" | {{---}}| style = "text-align: center" | {{---}}| style = "text-align: center" | text| style = "text-align: center" | ???| Генерация текста с использованием дистилляции знаний (перенос знаний, усвоенных большой моделью (учителем), на меньшую модель (ученика)).|-| style = "text-align: right" | [[#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 github/jamesli1618да]
| Основной принцип генерации изображений заключается в распознавании и создании отдельных объектов из заданного текстового описания.
| [[Файл:Obj-GANExample.png|128px|thumb|center|A hotel room with one bed and a blue chair.]]
|-
| style = "text-align: rightcenter" | [[#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: rightcenter" | [[#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 ===
Для обучения такой модели для птиц был использован набор данных [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]], а для цветов {{---}} [[Известные наборы данных#102 Category Flower|Oxford-102]]. Наряду с этим было собрано по пять текстовых описаний на изображение, которые были использованы в качестве параметров оценки.
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 был модифицирован таким образом, чтобы разделять эти источники ошибок. В дополнение к реальным/поддельным входным данным в дискриминатор во время обучения был добавлен третий тип входных данных, состоящий из реальных изображений с несовпадающим текстовым описанием, на которых дискриминатор должен обучиться оценивать поддельные изображения.
<gallery mode="slideshow" packed heights=400px caption="Рисунок 2. Пример результата работы GAN-CLS, GAN-INT и GAN-INT-CLS.">
Файл:DCGAN-2.png|Сгенерированные изображения птиц<ref name="DCGAN"/>.|alt=Сгенерированные изображения птиц
Файл:DCGAN-3.png|Сгенерированные изображения цветов<ref name="DCGAN"/>.|alt=Сгенерированные изображения цветов
</gallery>
 
=== 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''). Экспериментируя с естественными изображениями лиц и птиц Attribute2|Image демонстрирует, что способен генерировать реалистичные и разнообразные изображения с распутанными скрытыми представлениями (рис. 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>
=== StackGAN ===
|+ '''Inception scores для сгенерированных изображений в тестовых наборах [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]], [[Известные наборы данных#102 Category Flower|Oxford-102]] и [[Известные наборы данных#COCO|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>
Для проверки метода были проведены обширные количественные и качественные оценки. Результаты работы модели сравниваются с двумя современными методами синтеза текста в изображение {{---}} [[#GAN-INT-CLS|GAN-INT-CLS]] и [[#GAN-INT-CLS|GAWWN]] (рис. 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++ ===
<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''), когда многие из сгенерированных выборок содержат одинаковый цвет или узор текстуры.
Предлагается продвинутая многоэтапная генеративно-состязательная сетевая архитектура StackGAN-v2 как для условных, так и для безусловных генеративных задач. StackGAN-v2 имеет несколько генераторов, которые разделяют между собой большинство своих параметров в древовидной структуре. Входные данные сети можно рассматривать как корень дерева, а изображения разного масштаба генерируются из разных ветвей дерева. Конечная цель генератора на самой глубокой ветви {{---}} создание фотореалистичных изображений с высоким разрешением. Генераторы в промежуточных ветвях имеют прогрессивную цель создания изображений от малых до больших для достижения конечной цели. Вся сеть совместно обучается аппроксимировать различные, но сильно взаимосвязанные распределения изображений в разных ветвях. Кроме того, предлагается термин регуляризации используется '''регуляризация согласованности цвета''' (англ. ''color-consistency regularization''), чтобы генераторы могли генерировать более согласованные образцы для разных масштабов.
{| class="wikitable"
<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>
|+ '''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>
<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 Generative_Adversarial_Nets_(GAN)#Улучшение обучения GANMode_Collapse|схлопывания мод распределения]] (англ. ''mode collapse''), это можно использовать для достоверной подборки распределения и выявления разнообразия исходного изображения. Однако он не подходит для генерации изображений высокого качества, т. к. генерируемые VAE изображения легко размываются. Чтобы исправить данный недостаток архитектура включает два компонента (рис. 13):
*Контекстно-зависимый вариационный кодировщик (англ. ''conditional [[Вариационный автокодировщик| VAE]], CVAE'') используется для захвата основной компоновки и цвета, разделяя фон и передний план изображения.
*[[Generative Adversarial Nets (GAN)|GAN]] уточняет вывод CVAE с помощью состязательного обучения, которое восстанавливает потерянные детали и исправляет дефекты для создания реалистичного изображения.
Файл:CVAE&GAN_example_bird.png|Сверху вниз начиная со второй строки: CVAE&GAN, [[#StackGAN|StackGAN]] и [[#GAN-INT-CLS|GAN-INT-CLS]]. <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"/> и качества генерируемых изображений в наборе данных [[Известные наборы данных#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
|-
| 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 ===
|+ '''Inception scores для сгенерированных изображений в тестовом наборе [[Известные наборы данных#COCO|MS COCO]] '''
|-
! Модель !! 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 ===
Для улучшения генерации изображений по описанию и получения контролируемой выборки, некоторые модели разделяют процесс генерации на несколько этапов. Например, в модели [[#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
|-
| 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>
|}
=== MirrorGAN ===
! Модель !! Inception Score ([[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]]) !! Inception Score ([[Известные наборы данных#COCO|COCO]])
|-
| style = "text-align: right" | [[#GAN-INT-CLS|GAN-INT-CLS]] GAN-INT-CLS || style = "text-align: center" | <tex>2.88 \pm 0.04</tex> || style = "text-align: center" | <tex>7.88 \pm 0.07</tex>
|-
| style = "text-align: right" | [[#GAN-INT-CLS|GAWWN]] || style = "text-align: center" | <tex>3.70 \pm 0.04</tex> || style = "text-align: center" | <tex>-</tex>
<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>
 
=== 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) | Генеративные состязательные сети]] достигли замечательного успеха в создании высококачественных изображений в [[Компьютерное зрение | компьютерном зрении]], и в последнее время они также вызвали большой интерес со стороны сообщества 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> вводится метод, использующий дистилляцию знаний (перенос знаний, усвоенных большой моделью (учителем), на меньшую модель (ученика)) для эффективного оперирования настройками сети.
 
TextKD-GAN представляет из себя решение для основного узкого места использования генеративных состязательных сетей для генерации текста с <b>дистилляцией знаний</b> {{---}} методом, переносящим знания смягченного вывода модели (учителя) в меньшую модель (ученика). Решение основано на автокодировщике (учителе), чтобы получить гладкое представление настоящего текста. Это представление затем подается в дискриминатор TextKD-GAN вместо обычного one-hot представления. Генератор (студент) пытается изучить многообразие смягченного гладкого представления автокодировщика. TextKD-GAN, в конечном итоге, будет превосходить обычный генератор текста на основе генеративных состязательных сетей, который не нуждается в предварительном обучении.
 
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:TextKD-GAN_Model.png|thumb|center|x400px|Рисунок 27.<ref name="TextKD-GAN"/> Модель TextKD-GAN для генерации текста.]]</div>
 
В общепринятом текстовом распознавании, реальные и сгенерированные входные данные дискриминатора будут иметь разные типы ([https://en.wikipedia.org/wiki/One-hot one-hot] и [https://en.wikipedia.org/wiki/Softmax_function softmax]). Один из способов избежать этой проблемы состоит в получении непрерывно гладкого представление слов, а не one-hot представления, и обучении дискриминатора различать их. На рисунке 27 проиллюстрирована модель, в которой используется стандартный автокодировщик (учитель), чтобы заменить one-hot представление выходом, перестроенным softmax-функцией, который является представлением, дающим меньшую дисперсию градиентов. Как видно, вместо one-hot представления реальных слов смягченный преобразованный выход автокодировщика подается на вход дискриминатору. Эта техника значительно усложняет распознавание для самого дискриминатора. Генератор с 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>
=== 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|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>
|+ '''Inception score в тестовом наборе [[Известные наборы данных#COCO|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>
=== LayoutVAE ===
Модели, используемые для генерации создания макетов сцен из текстовых описаний по большей части игнорируют возможные визуальные вариации внутри структуры, описываемой самим текстом.
'''Макетный вариационный автокодировщик''' (англ. ''Layout variational autoencoder (, LayoutVAE)'') {{---}} фреймворк, базирующийся на [[Вариационный автокодировщик | вариационном автокодировщике]] для генерации стохастических макетов сцен (англ. ''stochastic scene layouts'') {{---}} есть разносторонняя это программная платформа моделирования, позволяющая генерировать либо полные макеты изображений с заданным набором меток, либо макеты меток для существующего изображения с новой заданной новой меткой. Вдобавок, она также способна обнаруживать необычные макеты, потенциально открывая пути к решению проблемы генерации макетов.
Будем рассматривать Рассмотрим задачу генерации сцен с описанием набора меток. Набор меток, представленный как более слабое описание, Этот набор всего лишь предоставляет множество меток, присутствующих в данном изображении (без дополнительного описания взаимосвязи), заставляя модель изучать пространственные и подсчитываемые отношения (англ. ''spatial and count relationships'') на основе визуальных данных.
Касательно описанных проблем вышеописанной задачи предлагаются следующие решения:
* Модель стохастических генераций макетов сцен с заданным множеством меток, которая будет иметь две компоненты: моделирование распределений подсчитываемых отношений между объектами; моделирование распределений пространственных отношений между объектами.
* Синтетический набор данных, MNIST-макеты, отражающие стохастическую природу генерации макета сцен.
<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, который не нуждается в предварительной подготовке.
 
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:TextKD-GAN_Model.png|thumb|center|x400px|Рисунок 27.<ref name="TextKD-GAN"/> Модель TextKD-GAN для генерации текста.]]</div>
 
В общепринятом текстовом подходе к распознавании, реальные и сгенерированные входные данные дискриминатора будут иметь разные типы ([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|center|x300px|Рисунок 29.<ref name="MCA-GAN"/> Архитектура MCA-GAD.]]</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>
135
правок

Навигация