Изменения

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

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

6677 байт добавлено, 18:51, 21 января 2021
Fix table
{{В разработке}}
Автоматический синтез Автоматическое создание реалистичных высококачественных изображений из текстовых описаний был бы интересен и довольно полезен, так как имеет множество практических применений, но современные системы искусственного интеллекта все еще далеки от этой цели, так как это является довольно сложной задачей в области компьютерного зрения. Однако в последние годы были разработаны универсальные и мощные рекуррентные архитектуры нейронных сетей для изучения различных представлений текстовых признаков. Между тем, глубокие сверточные [[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 | РеализацияРазрешение генерируемой картинки !! colspanrowspan=2|Inception ScoreРеализация !!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" | [[#AttnGAN Attribute2Image| AttnGANAttribute2Image]] | 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/taoxugitxcyan/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]] | 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://AttnGAN github.com/taoxugitsoumith/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]]| style = "text-align: center" | <tex>258.89 45 \pm 0.4703</tex>| style = "text-align: center" | <tex>43.36 70 \pm 0.0304</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: rightcenter" | [[#MMVRFusedGAN|MMVRFusedGAN]]
| style = "text-align: center" | {{---}}
| style = "text-align: center" | <tex>83.30 00 \pm 0.7803</tex>
| style = "text-align: center" | {{---}}
| Обучение style = "text-align: center" | <tex>256 \times 256</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]] | style = "text-align: center"| {{---}}
| 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: right" | [[#StackGAN|StackGAN]] | style = "text-align: center" | [https://github.com/hanzhanggit/StackGAN github/hanzhanggit]| style = "text-align: center" | <tex>8.45 \pm 0.03</tex>| style = "text-align: center" | <tex>3.70 \pm 0.04</tex>| TODO|-| style = "text-align: right" | [[#StackGAN++|StackGAN++]] | style = "text-align: center" | [https://github.com/hanzhanggit/StackGAN-v2 github/hanzhanggit]
| style = "text-align: center" | <tex>8.30 \pm 0.10</tex>
| style = "text-align: center" | <tex>3.84 \pm 0.06</tex>
| TODOstyle = "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: rightcenter" | [[#FusedGANHTIS|FusedGANHTIS]] | 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" | [[#MirrorGANAttnGAN |MirrorGANAttnGAN]] | style = "text-align: center" | [https://github<tex>25.89 \pm 0.com47</qiaott/MirrorGAN github/qiaott]tex>| style = "text-align: center" | <tex>264.47 36 \pm 0.4103</tex>| style = "text-align: center" | <tex>428.56 76</tex>| style = "text-align: center" | <tex>256 \pm 0.05times 256</tex>| TODOstyle = "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: rightcenter" | [[#CVAE&GAN|CVAE&GAN]]
| 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" | [[#Obj-GANMMVR|Obj-GANMMVR]] | style = "text-align: center" | [https://github<tex>8.30 \pm 0.com78</jamesli1618/Obj-GAN github/jamesli1618]tex>| style = "text-align: center" | <tex>31.01 \pm 0.27</tex>{{---}}
| style = "text-align: center" | {{---}}
| TODOstyle = "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" | [[#HTISMirrorGAN|HTISMirrorGAN]] | 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>11256 \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]] | style = "text-align: center" | <tex>31.46 01 \pm 0.0927</tex>
| style = "text-align: center" | {{---}}
| TODOstyle = "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: rightcenter" | [[#Attribute2ImageLayoutVAE|Attribute2ImageLayoutVAE]] | style = "text-align: center" | {{---}}
| style = "text-align: center" | {{---}}
| style = "text-align: center" | <tex>14.30 \pm 0.10</tex>
| style = "text-align: center" | {{---}}
| TODOstyle = "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" | [[#DCGANMCA-GAN|DCGAN]MCA-GAN] | style = "text-align: center" | [https://github.com/soumith/dcgan.torch github/soumith]
| style = "text-align: center" | {{---}}
| style = "text-align: center" | {{---}}
| TODOstyle = "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>
=== DCGAN GAN-INT-CLS ===
'''Глубокая сверточная генеративная состязательная сеть''' (англ. ''Deep Convolutional Generative Adversarial Network, DCGAN'') {{---}} обусловлена текстовыми признаками, кодируемыми гибридной сверточно-рекуррентной
нейронной сетью на уровне символов. DCGAN имеет эффективную архитектуру (рис. 1) и обучающую структуру, которая позволяет синтезировать изображения птиц и цветов из текстовых описаний.
Для обучения такой модели для птиц был использован набор данных [[Известные наборы данных#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 был модифицирован таким образом, чтобы разделять эти источники ошибок. В дополнение к реальным/поддельным входным данным в дискриминатор во время обучения был добавлен третий тип входных данных, состоящий из реальных изображений с несовпадающим текстовым описанием, на которых дискриминатор должен обучиться оценивать поддельные изображения.
<div classgallery mode="oo-ui-panelLayout-scrollableslideshow" stylecaption="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 ===
|+ '''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<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" 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 является свертывание '''коллапс режима''' (англ. ''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>
Полученные результаты проверки (рис.14) на 2 наборах данных ([[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]] и [[Известные наборы данных#102 Category Flower|Oxford-102]]) эмпирически подтверждают эффективность предложенного метода.
<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"/> и качества генерируемых изображений в наборе данных [[Известные наборы данных#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 <ref name="scott"/> || 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 <ref name="scott"/> || 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 <ref name="scott"/> ]] || style = "text-align: center" | <tex>3.70 \pm 0.04</tex> || style = "text-align: center" | <tex>-</tex>
|-
| style = "text-align: right" | [[#StackGAN | StackGAN]] || style = "text-align: center" | <tex>3.62 \pm 0.07</tex> || 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;">[[Файл: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) | Генеративные состязательные сети]] достигли замечательного успеха в создании высококачественных изображений в [[Компьютерное зрение | компьютерном зрении]], и в последнее время 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>
=== 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>
<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'').
135
правок

Навигация