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

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

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 1: Строка 1:
Автоматическое создание реалистичных высококачественных изображений из текстовых описаний было бы интересно и довольно полезно, так как имеет множество практических применений, но современные системы искусственного интеллекта все еще далеки от этой цели, так как это является довольно сложной задачей в области компьютерного зрения. Однако в последние годы были разработаны универсальные и мощные рекуррентные архитектуры нейронных сетей для изучения различных представлений текстовых признаков. Между тем, глубокие сверточные [[Generative Adversarial Nets (GAN)| генеративные состязательные сети]] (англ. ''Generative Adversarial Nets, GANs'') начали генерировать весьма убедительные изображения определенных категорий, таких как лица, обложки альбомов и интерьеры комнат. Образцы, генерируемые существующими подходами "текст-изображение", могут приблизительно отражать смысл данных описаний, но они не содержат необходимых деталей и ярких частей объекта. В данной статье рассмотрены формулировка и глубокая архитектура GAN, а также объединены достижения в генерации изображений по тексту.
+
{{В разработке}}
 +
Автоматическое создание реалистичных высококачественных изображений из текстовых описаний был бы интересен и довольно полезен, так как имеет множество практических применений, но современные системы искусственного интеллекта все еще далеки от этой цели, так как это является довольно сложной задачей в области компьютерного зрения. Однако в последние годы были разработаны универсальные и мощные рекуррентные архитектуры нейронных сетей для изучения различных представлений текстовых признаков. Между тем, глубокие сверточные [[Generative Adversarial Nets (GAN)| генеративные состязательные сети]] (англ. ''Generative Adversarial Nets, GANs'') начали генерировать весьма убедительные изображения определенных категорий, таких как лица, обложки альбомов и интерьеры комнат. Образцы, генерируемые существующими подходами "текст-изображение", могут приблизительно отражать смысл данных описаний, но они не содержат необходимых деталей и ярких частей объекта. В данной статье рассмотрены формулировка и глубокая архитектура GAN, а также объединены достижения в генерации изображений по тексту.
  
 
== Обзор генеративных моделей ==
 
== Обзор генеративных моделей ==
Строка 8: Строка 9:
 
|+ '''Сравнение моделей'''
 
|+ '''Сравнение моделей'''
 
|-
 
|-
! rowspan=2 | Модель !! colspan=2|Inception Score <ref name="inception"/>!! rowspan=2 | FID <ref name="FID"/> !! rowspan=2 | Разрешение генерируемой картинки !! rowspan=2 | Реализация !!rowspan=2 | Модификация (отличие от GAN)!!rowspan=2 | Пример сгенерированной картинки
+
! rowspan=2 | Модель !! rowspan=2 | Реализация!! colspan=2|Inception Score!!rowspan=2 | Модификация (отличие от GAN)
 
|-
 
|-
 
| style = "text-align: center" | [[Известные наборы данных#COCO|COCO]]  
 
| style = "text-align: center" | [[Известные наборы данных#COCO|COCO]]  
 
| style = "text-align: center" | [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]]
 
| style = "text-align: center" | [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]]
 
|-
 
|-
| style = "text-align: center"  | [[#Attribute2Image|Attribute2Image, 2015]]  
+
| style = "text-align: right"  | [[#AttnGAN | AttnGAN]]  
| style = "text-align: center" | <tex>14.30 \pm 0.10</tex>
+
| style = "text-align: center" | [https://github.com/taoxugit/AttnGAN github/taoxugit]
| style = "text-align: center" | {{---}}
+
| style = "text-align: center" | <tex>25.89 \pm 0.47</tex>
| style = "text-align: center" | {{---}}
+
| style = "text-align: center" | <tex>4.36 \pm 0.03</tex>
| style = "text-align: center" | <tex>64 \times 64</tex>
+
| Выделение слов для генерации областей картинки, с помощью механизма внимания.
| style = "text-align: center" | [https://github.com/xcyan/eccv16_attr2img да]
 
| Генерация изображения как смесь переднего и заднего планов на основе многоуровневой генеративной модели.
 
| [[Файл:Attribute2Image-example.png|128px|thumb|center|Male, no eyewear, frowning, receding hairline, bushy eyebrow, eyes open, pointy nose, teeth not visible, rosy cheeks, flushed face.]]
 
|-
 
| style = "text-align: center"  | [[#GAN-INT-CLS|GAN-INT-CLS, 2016]]
 
| style = "text-align: center" | <tex>7.88 \pm 0.07</tex>
 
| style = "text-align: center" | <tex>2.88 \pm 0.04</tex>
 
| style = "text-align: center" | <tex>60.62</tex>
 
| style = "text-align: center" | <tex>64 \times 64</tex>
 
| style = "text-align: center" | [https://github.com/soumith/dcgan.torch да]
 
| Обучение на текстовых признаках, кодируемых гибридной сверточно-рекуррентной нейронной сетью.
 
| [[Файл:GAN-INT-CLS-example.png|128px|thumb|center|This flower is white and pink in color, with petals that have veins.]]
 
|-
 
| style = "text-align: center"  | [[#StackGAN|StackGAN, 2017]]  
 
| style = "text-align: center" | <tex>8.45 \pm 0.03</tex>
 
| style = "text-align: center" | <tex>3.70 \pm 0.04</tex>
 
| style = "text-align: center" | <tex>74.05</tex>
 
| style = "text-align: center" | <tex>256 \times 256</tex>
 
| style = "text-align: center" | [https://github.com/hanzhanggit/StackGAN да]
 
| Генерация изображения происходит в два этапа, на первом этапе создается примитивная форма изображения и задаются цвета объектов, на втором исправляются дефекты предыдущего этапа и добавляются более мелкие детали.
 
| [[Файл:StackGAN-example.png|128px|thumb|center|This flower has a lot of small purple petals in a dome-like configuration.]]
 
 
|-
 
|-
| style = "text-align: center"  | [[#FusedGAN|FusedGAN, 2018]]  
+
| style = "text-align: right"  | [[#MMVR|MMVR]]  
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
| style = "text-align: center" | <tex>3.00 \pm 0.03</tex>
+
| style = "text-align: center" | <tex>8.30 \pm 0.78</tex>
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
| style = "text-align: center" | <tex>64 \times 64</tex>
+
| Обучение на изменённом описании картинки.
| style = "text-align: center" | нет
 
| Генерация изображения в два этапа, на первом задаются признаки стиля, на втором генерируется изображение.
 
| [[Файл:FusedGan_256x256_cub.png|128px|thumb|center|This bird has a bright yellow body, with brown on it's crown and wings.]]
 
 
|-
 
|-
| style = "text-align: center" | [[#ChatPainter|ChatPainter, 2018]]  
+
| style = "text-align: right" | [[#ChatPainter|ChatPainter]]  
 +
| style = "text-align: center"| {{---}}
 
| style = "text-align: center" | <tex>9.74 \pm 0.02</tex>
 
| style = "text-align: center" | <tex>9.74 \pm 0.02</tex>
 
| 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" | нет
 
 
| В качестве дополнительных данных для обучения используется диалог описания изображения.
 
| В качестве дополнительных данных для обучения используется диалог описания изображения.
| [[Файл:ChatPainter_256x256_coco.png|128px|thumb|center|A person in yellow pants in on a snowboard.]]
 
 
|-
 
|-
| style = "text-align: center"  | [[#StackGAN++|StackGAN++, 2018]]  
+
| style = "text-align: 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>8.30 \pm 0.10</tex>
 
| style = "text-align: center" | <tex>3.84 \pm 0.06</tex>
 
| style = "text-align: center" | <tex>3.84 \pm 0.06</tex>
| style = "text-align: center" | <tex>81.59</tex>
+
| TODO
| style = "text-align: center" | <tex>256 \times 256</tex>
 
| style = "text-align: center" | [https://github.com/hanzhanggit/StackGAN-v2 да]
 
| Генерация изображений разного масштаба из разных ветвей древовидной структуры, в которой несколько генераторов разделяют между собой большинство своих параметров.
 
| [[Файл:StackGAN++-example.png|128px|thumb|center|A picture of a very clean living room.]]
 
 
|-
 
|-
| style = "text-align: center"  | [[#HTIS|HTIS, 2018]]  
+
| style = "text-align: right"  | [[#FusedGAN|FusedGAN]]  
| style = "text-align: center" | <tex>11.46 \pm 0.09</tex>
+
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
 
| 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" | нет
 
| Генерация изображения разбивается на несколько шагов, сначала создается семантический макет из текста, затем этот макет преобразовывается в изображение.
 
| [[Файл:HTIS-example.png|128px|thumb|center|A man is surfing in the ocean with a surfboard.]]
 
 
|-
 
|-
| style = "text-align: center"  | [[#AttnGAN | AttnGAN, 2018]]  
+
| style = "text-align: right"  | [[#MirrorGAN|MirrorGAN]]  
| style = "text-align: center" | <tex>25.89 \pm 0.47</tex>
+
| style = "text-align: center" | [https://github.com/qiaott/MirrorGAN github/qiaott]
| style = "text-align: center" | <tex>4.36 \pm 0.03</tex>
+
| style = "text-align: center" | <tex>26.47 \pm 0.41</tex>
| style = "text-align: center" | <tex>28.76</tex>
+
| style = "text-align: center" | <tex>4.56 \pm 0.05</tex>
| style = "text-align: center" | <tex>256 \times 256</tex>
+
| TODO
| style = "text-align: center" | [https://github.com/taoxugit/AttnGAN да]
 
| Выделение слов для генерации областей картинки с помощью механизма внимания.
 
| [[Файл:AttnGan_256x256_coco.png|128px|thumb|center|A photo a homemade swirly pasta with broccoli carrots and onions.]]
 
 
|-
 
|-
| style = "text-align: center"  | [[#CVAE&GAN|CVAE&GAN, 2018]]  
+
| style = "text-align: right"  | [[#CVAE&GAN|CVAE&GAN]]  
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
| style = "text-align: center" | <tex>256 \times 256</tex>
+
| Разделение переднего и заднего плана, сначала CVAE генерирует картинку в плохом качестве, после качество повышается с помощью GAN
| style = "text-align: center" | нет
 
| Разделение переднего и заднего плана, сначала CVAE генерирует картинку в плохом качестве, после качество повышается с помощью GAN.
 
| [[Файл:CVAE&GAN_256x256_cub.png|128px|thumb|center|This is a yellow and gray bird with a small beak.]]
 
 
|-
 
|-
| style = "text-align: center"  | [[#MMVR|MMVR, 2018]]  
+
| style = "text-align: right"  | [[#Obj-GAN|Obj-GAN]]  
| style = "text-align: center" | <tex>8.30 \pm 0.78</tex>
+
| style = "text-align: center" | [https://github.com/jamesli1618/Obj-GAN github/jamesli1618]
| style = "text-align: center" | {{---}}
+
| style = "text-align: center" | <tex>31.01 \pm 0.27</tex>
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
| style = "text-align: center" | <tex>256 \times 256</tex>
+
| TODO
| style = "text-align: center" | нет
 
| Обучение на изменённом описании картинки.
 
| [[Файл:MMVR_256x256_coco.png|128px|thumb|center|A boat on a beach near some water.]]
 
 
|-
 
|-
| style = "text-align: center"  | [[#MirrorGAN|MirrorGAN, 2019]]  
+
| style = "text-align: right"  | [[#HTIS|HTIS]]  
| 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" | {{---}}
| style = "text-align: center" | <tex>256 \times 256</tex>
+
| style = "text-align: center" | <tex>11.46 \pm 0.09</tex>
| style = "text-align: center" | [https://github.com/qiaott/MirrorGAN да]
 
| Генерация изображения с использованием идеи обучения посредством переописания.
 
| [[Файл:MirrorGANExample.png|128px|thumb|center|Boats at the dock with a city backdrop.]]
 
|-
 
| style = "text-align: center"  | [[#Obj-GAN|Obj-GAN, 2019]]
 
| style = "text-align: center" | <tex>31.01 \pm 0.27</tex>
 
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
| style = "text-align: center" | <tex>17.03</tex>
+
| TODO
| style = "text-align: center" | <tex>256 \times 256</tex>
 
| style = "text-align: center" | [https://github.com/jamesli1618/Obj-GAN да]
 
| Основной принцип генерации изображений заключается в распознавании и создании отдельных объектов из заданного текстового описания.
 
| [[Файл:Obj-GANExample.png|128px|thumb|center|A hotel room with one bed and a blue chair.]]
 
 
|-
 
|-
| style = "text-align: center"  | [[#LayoutVAE|LayoutVAE, 2019]]  
+
| style = "text-align: right"  | [[#Attribute2Image|Attribute2Image]]  
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
 +
| style = "text-align: center" | <tex>14.30 \pm 0.10</tex>
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
| style = "text-align: center" | {{---}}
+
| TODO
| style = "text-align: center" | <tex>256 \times 256</tex>
 
| style = "text-align: center" | нет
 
| Генерация стохастических макетов сцен (англ. ''stochastic scene layouts'') из заданного набора слов.
 
| [[Файл:LayoutVAEExample.png|128px|thumb|center|Person, sea, surfboard.]]
 
 
|-
 
|-
| style = "text-align: center"  | [[#MCA-GAN|MCA-GAN, 2019]]  
+
| style = "text-align: right"  | [[#DCGAN|DCGAN]]  
| style = "text-align: center" | {{---}}
+
| style = "text-align: center" | [https://github.com/soumith/dcgan.torch github/soumith]
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
 
| style = "text-align: center" | {{---}}
| style = "text-align: center" | <tex>256 \times 256</tex>
+
| TODO
| 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 ===
+
=== DCGAN ===
 
'''Глубокая сверточная генеративная состязательная сеть''' (англ. ''Deep Convolutional Generative Adversarial Network, DCGAN'') {{---}} обусловлена текстовыми признаками, кодируемыми гибридной сверточно-рекуррентной
 
'''Глубокая сверточная генеративная состязательная сеть''' (англ. ''Deep Convolutional Generative Adversarial Network, DCGAN'') {{---}} обусловлена текстовыми признаками, кодируемыми гибридной сверточно-рекуррентной
 
нейронной сетью на уровне символов. DCGAN имеет эффективную архитектуру (рис. 1) и обучающую структуру, которая позволяет синтезировать изображения птиц и цветов из текстовых описаний.
 
нейронной сетью на уровне символов. DCGAN имеет эффективную архитектуру (рис. 1) и обучающую структуру, которая позволяет синтезировать изображения птиц и цветов из текстовых описаний.
Строка 151: Строка 94:
 
Для обучения такой модели для птиц был использован набор данных  [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]], а для цветов {{---}} [[Известные наборы данных#102 Category Flower|Oxford-102]]. Наряду с этим было собрано по пять текстовых описаний на изображение, которые были использованы в качестве параметров оценки.
 
Для обучения такой модели для птиц был использован набор данных  [[Известные наборы данных#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>.
+
DCGAN во многих случаях может генерировать на основе текста визуально-правдоподобные изображения размером ​64×64 пикселя, а также отличается тем, что сама модель является генеративной состязательней сетью, а не только использует ее для постобработки. Текстовые запросы кодируются с помощью текстового кодировщика <tex>\varphi</tex>. Описание, внедренное в <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>
 
<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>
Строка 158: Строка 101:
 
заданному описанию или нет. Модель должна неявно разделять два источника ошибок: нереалистичные образы (для любого текста) и реалистичные образы неправильного класса, которые не соответствуют текстовым признакам. Алгоритм обучения GAN был модифицирован таким образом, чтобы разделять эти источники ошибок. В дополнение к реальным/поддельным входным данным в дискриминатор во время обучения был добавлен третий тип входных данных, состоящий из реальных изображений с несовпадающим текстовым описанием, на которых дискриминатор должен обучиться оценивать поддельные изображения.
 
заданному описанию или нет. Модель должна неявно разделять два источника ошибок: нереалистичные образы (для любого текста) и реалистичные образы неправильного класса, которые не соответствуют текстовым признакам. Алгоритм обучения GAN был модифицирован таким образом, чтобы разделять эти источники ошибок. В дополнение к реальным/поддельным входным данным в дискриминатор во время обучения был добавлен третий тип входных данных, состоящий из реальных изображений с несовпадающим текстовым описанием, на которых дискриминатор должен обучиться оценивать поддельные изображения.
  
<gallery mode=packed heights=400px caption="Рисунок 2. Пример результата работы GAN-CLS, GAN-INT и GAN-INT-CLS.">
+
<div class="oo-ui-panelLayout-scrollable" style="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. {{---}} DCGAN TUTORIAL]</ref> Пример результата работы DCGAN.]]</div>
Файл:DCGAN-2.png|Сгенерированные изображения птиц<ref name="DCGAN"/>.|alt=Сгенерированные изображения птиц
+
 
Файл:DCGAN-3.png|Сгенерированные изображения цветов<ref name="DCGAN"/>.|alt=Сгенерированные изображения цветов
+
=== Attribute2Image ===
</gallery>
+
[[Файл: 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>) {{---}} это еще один способ создания изображений из визуальных атрибутов. Attribute2Image моделирует изображение как смесь переднего и заднего планов и разрабатывает многоуровневую генеративную модель с выделенными скрытыми переменными (рис. 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 ===
 
=== StackGAN ===
Строка 178: Строка 123:
 
|+ '''Inception scores для сгенерированных изображений в тестовых наборах [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]], [[Известные наборы данных#102 Category Flower|Oxford-102]] и [[Известные наборы данных#COCO|COCO]]'''
 
|+ '''Inception scores для сгенерированных изображений в тестовых наборах [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]], [[Известные наборы данных#102 Category Flower|Oxford-102]] и [[Известные наборы данных#COCO|COCO]]'''
 
|-
 
|-
! Набор данных !! Inception Score <ref name="inception"/>
+
! Набор данных !! Inception Score
 
|-
 
|-
 
| style = "text-align: right" | [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]] || style = "text-align: center" | <tex>3.70 \pm 0.04</tex>
 
| style = "text-align: right" | [[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]] || style = "text-align: center" | <tex>3.70 \pm 0.04</tex>
Строка 187: Строка 132:
 
|}
 
|}
  
Для проверки метода были проведены обширные количественные и качественные оценки. Результаты работы модели сравниваются с двумя современными методами синтеза текста в изображение {{---}} [[#GAN-INT-CLS|GAN-INT-CLS]] и [[#GAN-INT-CLS|GAWWN]] (рис. 6).
+
Для проверки метода были проведены обширные количественные и качественные оценки. Результаты работы модели сравниваются с двумя современными методами синтеза текста в изображение {{---}} GAN-INT-CLS<ref name="scott">[http://proceedings.mlr.press/v48/reed16.pdf Scott R. {{---}} Generative Adversarial Text to Image Synthesis]</ref> и GAWWN<ref name="scott"/> (рис. 6).
  
<gallery mode=packed heights=350px caption="Рисунок 6. Пример результата работы StackGAN.">
+
<gallery mode="slideshow" caption="Рисунок 6. Пример результата работы StackGAN.">
Файл:StackGAN-2.png|Сгенерированные изображения птиц<ref name="StackGAN/>.|alt=Сгенерированные изображения птиц
+
Файл:StackGAN-2.png|Сравнение StackGAN<ref name="StackGAN/>.|alt=Сгенерированные изображения птиц
Файл:StackGAN-3.png|Сгенерированные изображения цветов<ref name="StackGAN/>.|alt=Сгенерированные изображения цветов
+
Файл:StackGAN-3.png|Сравнение StackGAN<ref name="StackGAN/>.|alt=Сгенерированные изображения цветов
 
</gallery>
 
</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++ ===
 
=== StackGAN++ ===
Строка 259: Строка 144:
 
<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>
 
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:StackGAN++-1.png|thumb|alt=Архитектура StackGAN++|x350px|center|Рисунок 7.<ref name="StackGAN++"/> Архитектура StackGAN++.]]</div>
  
Несмотря на успех, GAN, как известно, сложно обучить. Тренировочный процесс обычно нестабилен и чувствителен к выбору [[Настройка гиперпараметров | гиперпараметров]]. При обучении GAN генерировать изображения с высоким разрешением (например, 256x256), вероятность того, что распределение изображений и распределение моделей будет совместно использовать один и тот же носитель в многомерном пространстве, очень мала. Более того, обычным явлением сбоя при обучении GAN является [[Generative_Adversarial_Nets_(GAN)#Mode_Collapse|схлопывание мод распределения]] (англ. ''mode collapse''), когда многие из сгенерированных выборок содержат одинаковый цвет или узор текстуры.
+
Несмотря на успех, GAN, как известно, сложно обучить. Тренировочный процесс обычно нестабилен и чувствителен к выбору [[Настройка гиперпараметров | гиперпараметров]]. В нескольких статьях утверждалось, что нестабильность частично связана с несвязными носителями распределения данных и подразумеваемого модельного распределения. Эта проблема становится более серьезной при обучении GAN генерировать изображения с высоким разрешением (например, 256x256), потому что вероятность того, что распределение изображений и распределение моделей будет совместно использовать один и тот же носитель в многомерном пространстве, очень мала. Более того, обычным явлением сбоя при обучении GAN является свертывание режима, когда многие из сгенерированных выборок содержат одинаковый цвет или узор текстуры.
  
Предлагается продвинутая многоэтапная генеративно-состязательная сетевая архитектура StackGAN-v2 как для условных, так и для безусловных генеративных задач. StackGAN-v2 имеет несколько генераторов, которые разделяют между собой большинство своих параметров в древовидной структуре. Входные данные сети можно рассматривать как корень дерева, а изображения разного масштаба генерируются из разных ветвей дерева. Конечная цель генератора на самой глубокой ветви {{---}} создание фотореалистичных изображений с высоким разрешением. Генераторы в промежуточных ветвях имеют прогрессивную цель создания изображений от малых до больших для достижения конечной цели. Вся сеть совместно обучается аппроксимировать различные, но сильно взаимосвязанные распределения изображений в разных ветвях. Кроме того, используется '''регуляризация согласованности цвета''' (англ. ''color-consistency  regularization''), чтобы генераторы могли генерировать более согласованные образцы для разных масштабов.
+
Предлагается продвинутая многоэтапная генеративно-состязательная сетевая архитектура StackGAN-v2 как для условных, так и для безусловных генеративных задач. StackGAN-v2 имеет несколько генераторов, которые разделяют между собой большинство своих параметров в древовидной структуре. Входные данные сети можно рассматривать как корень дерева, а изображения разного масштаба генерируются из разных ветвей дерева. Конечная цель генератора на самой глубокой ветви {{---}} создание фотореалистичных изображений с высоким разрешением. Генераторы в промежуточных ветвях имеют прогрессивную цель создания изображений от малых до больших для достижения конечной цели. Вся сеть совместно обучается аппроксимировать различные, но сильно взаимосвязанные распределения изображений в разных ветвях. Кроме того, предлагается термин регуляризации согласованности цвета, чтобы генераторы могли генерировать более согласованные образцы для разных масштабов.
  
 
{| class="wikitable"
 
{| class="wikitable"
Строка 280: Строка 165:
  
 
<gallery mode="slideshow" caption="Рисунок 8. Пример результата работы StackGAN++.">
 
<gallery mode="slideshow" caption="Рисунок 8. Пример результата работы StackGAN++.">
Файл:StackGAN++-2.png|Примеры результата работы для тестовых наборов [[Известные наборы данных#102 Category Flower|Oxford-102]] (крайние левые четыре столбца) и [[Известные наборы данных#COCO|COCO]] (крайние правые четыре столбца).<ref name="StackGAN++"/>.|alt=Сгенерированные изображения цветов
+
Файл:StackGAN++-2.png|Сравнение StackGAN++<ref name="StackGAN++"/>.|alt=Сгенерированные изображения цветов
Файл:StackGAN++-4.png|Примеры результата работы для тестового набора [[Известные наборы данных#ImageNet|ImageNet]].<ref name="StackGAN++"/>.|alt=Сгенерированные изображения собак и кошек
+
Файл:StackGAN++-3.png|Сравнение StackGAN++<ref name="StackGAN++"/>.|alt=Сгенерированные изображения интерьера
 +
Файл:StackGAN++-4.png|Сравнение StackGAN++<ref name="StackGAN++"/>.|alt=Сгенерированные изображения собак и кошек
 
</gallery>
 
</gallery>
  
Строка 300: Строка 186:
 
|+ '''Inception scores для сгенерированных изображений в тестовом наборе [[Известные наборы данных#COCO|MS COCO]]'''
 
|+ '''Inception scores для сгенерированных изображений в тестовом наборе [[Известные наборы данных#COCO|MS COCO]]'''
 
|-
 
|-
! Модель !! Inception Score <ref name="inception"/>
+
! Модель !! Inception Score
 
|-
 
|-
 
| style = "text-align: right" | [[#StackGAN|StackGAN]] || style = "text-align: center" | <tex>8.45 \pm 0.03</tex>
 
| style = "text-align: right" | [[#StackGAN|StackGAN]] || style = "text-align: center" | <tex>8.45 \pm 0.03</tex>
Строка 342: Строка 228:
 
<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>
 
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:Stacking_VAE&GAN.png|thumb|alt=Архитектура Stacking VAE and GAN|x350px|center|Рисунок 13.<ref name="CVAE&GAN"/> Архитектура Stacking VAE and GAN.]]</div>
  
[[Вариационный автокодировщик| VAE]] имеет более стабильный выход чем GAN без [[Generative_Adversarial_Nets_(GAN)#Mode_Collapse|схлопывания мод распределения]] (англ. ''mode collapse''), это можно использовать для достоверной подборки распределения и выявления разнообразия исходного изображения. Однако он не подходит для генерации изображений высокого качества, т. к. генерируемые VAE изображения легко размываются. Чтобы исправить данный недостаток архитектура включает два компонента (рис. 13):
+
[[Вариационный автокодировщик| VAE]] имеет более стабильный выход чем GAN без [[Generative Adversarial Nets (GAN)#Улучшение обучения GAN|схлопывания мод распределения]] (англ. ''mode collapse''), это можно использовать для достоверной подборки распределения и выявления разнообразия исходного изображения. Однако он не подходит для генерации изображений высокого качества, т. к. генерируемые VAE изображения легко размываются. Чтобы исправить данный недостаток архитектура включает два компонента (рис. 13):
 
*Контекстно-зависимый вариационный кодировщик (англ. ''conditional [[Вариационный автокодировщик| VAE]], CVAE'') используется для захвата основной компоновки и цвета, разделяя фон и передний план изображения.
 
*Контекстно-зависимый вариационный кодировщик (англ. ''conditional [[Вариационный автокодировщик| VAE]], CVAE'') используется для захвата основной компоновки и цвета, разделяя фон и передний план изображения.
 
*[[Generative Adversarial Nets (GAN)|GAN]] уточняет вывод CVAE с помощью состязательного обучения, которое восстанавливает потерянные детали и исправляет дефекты для создания реалистичного изображения.  
 
*[[Generative Adversarial Nets (GAN)|GAN]] уточняет вывод CVAE с помощью состязательного обучения, которое восстанавливает потерянные детали и исправляет дефекты для создания реалистичного изображения.  
 
Полученные результаты проверки (рис.14) на 2 наборах данных ([[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]] и [[Известные наборы данных#102 Category Flower|Oxford-102]]) эмпирически подтверждают эффективность предложенного метода.
 
Полученные результаты проверки (рис.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.">
 
<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="CVAE&GAN"/>|alt=Пример результата работы CVAE&GAN (flowers)
+
Файл:CVAE&GAN_example_flowers.png|Сравнение CVAE&GAN, [[#StackGAN|StackGAN]] и 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="CVAE&GAN"/>|alt=Пример результата работы CVAE&GAN (birds)
+
Файл:CVAE&GAN_example_bird.png|Сверху вниз начиная со второй строки: CVAE&GAN, [[#StackGAN|StackGAN]] и GAN-INT-CLS<ref name="scott"/>. <ref name="CVAE&GAN"/>|alt=Пример результата работы CVAE&GAN (birds)
 
</gallery>
 
</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 ===
 
=== MMVR ===
Строка 365: Строка 287:
 
|+ '''Inception scores  для сгенерированных изображений в тестовом наборе [[Известные наборы данных#COCO|MS COCO]] '''
 
|+ '''Inception scores  для сгенерированных изображений в тестовом наборе [[Известные наборы данных#COCO|MS COCO]] '''
 
|-
 
|-
! Модель !! Inception Score <ref name="inception"/>
+
! Модель !! Inception Score
 
|-
 
|-
 
| 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" | Plug and Play Generative Networks (PPGN)<ref name="PPGN" /> || style = "text-align: center" | <tex>6.71 \pm 0.45</tex>
Строка 373: Строка 295:
 
| style = "text-align: right" | MMVR (<tex>N_{c}=5</tex>)|| style = "text-align: center" | <tex>8.30 \pm 0.78</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> {{---}} количество описаний.
 
|}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 ===
 
=== MirrorGAN ===
Строка 381: Строка 327:
 
! Модель !! Inception Score ([[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]]) !! Inception Score ([[Известные наборы данных#COCO|COCO]])
 
! Модель !! Inception Score ([[Известные наборы данных#Caltech-UCSD Birds 200 (CUB)|Caltech-UCSD]]) !! Inception Score ([[Известные наборы данных#COCO|COCO]])
 
|-
 
|-
| style = "text-align: right" | [[#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 <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]] || style = "text-align: center" | <tex>3.70 \pm 0.04</tex> || style = "text-align: center" | <tex>-</tex>
+
| style = "text-align: right" | 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>
 
| 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>
Строка 422: Строка 368:
  
 
<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>
 
<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 ===
 
=== 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)<ref name="FID">[https://en.wikipedia.org/wiki/Fréchet_inception_distance Fréchet inception distance, FID]</ref> на 27%.
+
'''Объектно-управляемая [[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)<ref>[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>
 
<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>
Строка 449: Строка 377:
 
|+ '''Inception score в тестовом наборе [[Известные наборы данных#COCO|COCO]]'''
 
|+ '''Inception score в тестовом наборе [[Известные наборы данных#COCO|COCO]]'''
 
|-
 
|-
! Модель !! Inception Score <ref name="inception"/> !! FID <ref name="FID"/>
+
! Модель !! Inception Score !! 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>
 
| 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>
Строка 471: Строка 399:
  
 
=== LayoutVAE ===
 
=== LayoutVAE ===
Модели, используемые для создания макетов сцен из текстовых описаний по большей части игнорируют возможные визуальные вариации внутри структуры, описываемой самим текстом.
+
Модели, используемые для генерации макетов сцен из текстовых описаний по большей части игнорируют возможные визуальные вариации внутри структуры, описываемой самим текстом.
  
'''Макетный вариационный автокодировщик''' (англ. ''Layout variational autoencoder, LayoutVAE'') {{---}} фреймворк, базирующийся на [[Вариационный автокодировщик | вариационном автокодировщике]] для генерации стохастических макетов сцен (англ. ''stochastic scene layouts'') {{---}} это программная платформа моделирования, позволяющая генерировать либо полные макеты изображений с заданным набором меток, либо макеты меток для существующего изображения с новой заданной меткой.
+
'''Макетный вариационный автокодировщик''' (англ. ''Layout variational autoencoder (LayoutVAE)'') {{---}} фреймворк, базирующийся на [[Вариационный автокодировщик | вариационном автокодировщике]] для генерации стохастических макетов сцен (англ. ''stochastic scene layouts'') {{---}} есть разносторонняя программная платформа моделирования, позволяющая генерировать либо полные макеты изображений с заданным набором меток, либо макеты меток для существующего изображения с заданной новой меткой. Вдобавок, она также способна обнаруживать необычные макеты, потенциально открывая пути к решению проблемы генерации макетов.
  
Рассмотрим задачу генерации сцен с описанием набора меток. Этот набор всего лишь предоставляет множество меток, присутствующих в данном изображении (без дополнительного описания взаимосвязи), заставляя модель изучать пространственные и подсчитываемые отношения (англ. ''spatial and count relationships'') на основе визуальных данных.  
+
Будем рассматривать задачу генерации сцен с описанием набора меток. Набор меток, представленный как более слабое описание, всего лишь предоставляет множество меток, присутствующих в данном изображении без дополнительного описания взаимосвязи, заставляя модель изучать пространственные и подсчитываемые отношения (англ. ''spatial and count relationships'') на основе визуальных данных.  
  
Касательно вышеописанной задачи предлагаются следующие решения:
+
Касательно описанных проблем предлагаются следующие решения:
 
* Модель стохастических генераций макетов сцен с заданным множеством меток, которая будет иметь две компоненты: моделирование распределений подсчитываемых отношений между объектами; моделирование распределений пространственных отношений между объектами.
 
* Модель стохастических генераций макетов сцен с заданным множеством меток, которая будет иметь две компоненты: моделирование распределений подсчитываемых отношений между объектами; моделирование распределений пространственных отношений между объектами.
 
* Синтетический набор данных, MNIST-макеты, отражающие стохастическую природу генерации макета сцен.
 
* Синтетический набор данных, MNIST-макеты, отражающие стохастическую природу генерации макета сцен.
Строка 483: Строка 411:
  
 
<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>
 
<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) | генеративных состязательных сетях]], создающая макеты графических элементов (прямоугольники, треугольники, и так далее); фреймворк, базирующийся на вариационном автокодировщике, который кодирует объект и информацию о макете 3D-сцен в помещении в скрытом коде; и так далее...
+
В статье<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-сцен в помещении в скрытом коде; и так далее...
 +
 
 +
Обучение генеративных моделей нужно, чтобы предсказать разнообразные, но правдоподобные наборы ограничивающих рамок, учитывая набор меток в качестве входных данных. Рамки в наборе представлены верхними левыми координатами, шириной и высотой <tex>i</tex>-й ограничивающей рамки категории <tex>k</tex>. LayoutVAE естественным образом декомпозируется на модель для предсказания количества для каждой заданной метки {{---}} <b>CountVAE</b> {{---}} и другая для предсказания местоположения и размера каждого объекта {{---}} <b>BBoxVAE</b>.
  
Обучение генеративных моделей необходимо, чтобы предсказать разнообразные, но правдоподобные наборы ограничивающих рамок (англ. ''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>
 
<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 ===
 
=== 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''). Работа сети происходит в два этапа:
+
Преобразование изображений перекрестным видом (англ. ''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'') для получения начальных результатов.
+
# Изображение и целевое семантическое отображение (англ. ''target semantic map'') подаются на вход циклической семантически-управляемой генерационной сети (англ. ''cycled semantic-guided generation network'') для получения начальных результатов.
 
# Начальные результаты уточняются, используя механизм мультиканального выделения внимания (англ. ''multi-channel attention selection mechanism'').
 
# Начальные результаты уточняются, используя механизм мультиканального выделения внимания (англ. ''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> показывают, что данная модель способна генерировать значительно более качественные результаты, чем другие современные методы.
 
Обширные эксперименты на наборах данных 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> показывают, что данная модель способна генерировать значительно более качественные результаты, чем другие современные методы.
Строка 499: Строка 446:
 
<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>
 
<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'').  
+
На рисунке 29 проиллюстрирована структура сети. Первый этап, как было описано выше, состоит из каскадной семантически-управляемой генерацинной подсети, использующая изображения с одном представлении и условные семантические отображения в другом представлении в качестве входных данных и реконструирующая эти изображения в другом представлении. Результирующие изображения далее подаются на вход семантическому генератору для восстановления исходного семантического отображения, формируя цикл генерации. Второй этап заключается в том, что грубый синтез (англ. ''coarse synthesis'') и глубокие характеристики объединяются и передаются в модуль мультиканального выделения внимания, направленный на получение более детализированного синтеза (англ. ''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''), чтобы синтезировать конечный детализированный результат.
+
Поскольку между изначальной перспективой и результирующей существует объемная деформация объекта и/или сцены, одномасштабная характеристика (англ. ''single-scale feature'') вряд ли сможет захватить всю необходимую информацию о пространстве для детализированной генерации. Многомасштабный пространственный пулинг оперирует же другими значениями размера ядра и шага для выполнения глобального среднего пулинга (англ. ''global average pooling'') на одних и тех же входных характеристиках, тем самым получая многомасштабные характеристики с отличающимися рецептивными полями (англ. ''receptive fields'') для восприятия различных пространственных контекстов. Механизм мультиканального внимания позволяет осуществлять выполнение пространственного и временного отбора (англ. ''spatial and temporal selection''), чтобы синтезировать конечный детализированный результат.
  
 
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:MCA-GAN_Module.png|thumb|center|x400px|Рисунок 30.<ref name="MCA-GAN"/> Архитектура модуля мультиканального выделения внимания (англ. ''multi-channel attention selection module'').]]</div>
 
<div class="oo-ui-panelLayout-scrollable" style="display: block; vertical-align:middle; height: auto; width: auto;">[[Файл:MCA-GAN_Module.png|thumb|center|x400px|Рисунок 30.<ref name="MCA-GAN"/> Архитектура модуля мультиканального выделения внимания (англ. ''multi-channel attention selection module'').]]</div>

Пожалуйста, учтите, что любой ваш вклад в проект «Викиконспекты» может быть отредактирован или удалён другими участниками. Если вы не хотите, чтобы кто-либо изменял ваши тексты, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений, или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого (см. Викиконспекты:Авторские права). НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ МАТЕРИАЛЫ!

Чтобы изменить эту страницу, пожалуйста, ответьте на приведённый ниже вопрос (подробнее):

Отменить | Справка по редактированию (в новом окне)

Шаблон, используемый на этой странице: