Изменения

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

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

46 байт добавлено, 17:06, 12 января 2021
Replace "энкодер" with "кодировщик"
Модель состоит из нескольких взаимодействующих нейросетей:
*Энкодер Кодировщики текста (англ. ''Text Encoder'') и изображения (англ. ''Image Encoder'') векторизуют исходное текстовое описания и реальные изображения. В данном случае текст рассматривается в виде последовательности отдельных слов, представление которых обрабатывается совместно с представлением изображения, что позволяет сопоставить отдельные слова отдельным частям изображения. Таким образом реализуется механизм внимания (англ. ''Deep Attentional Multimodal Similarity Model, DAMSM'').
*<math>F^{ca}</math> {{---}} создает сжатое представление об общей сцене на изображении, исходя из всего текстового описания. Значение <tex>C</tex> на выходе конкатенируется с вектором из нормального распределения <tex>Z</tex>, который задает вариативность сцены. Эта информация является основой для работы генератора.
*Attentional Generative Network {{---}} самая большая сеть, состоящая из трех уровней. Каждый уровень порождает изображения все большего разрешения, от 64x64 до 256x256 пикселей, и результат работы на каждом уровне корректируется с помощью сетей внимания <math>F^{attn}</math>, которые несут в себе информацию о правильном расположении отдельных объектов сцены. Кроме того, результаты на каждом уровне проверяются тремя отдельно работающими дискриминаторами, которые оценивают реалистичность изображения и соответствие его общему представлению о сцене.
Данная архитектура (см. рис) опирается на модель StackGAN. StackGAN генерирует изображение в два этапа: Stage-I генерирует грубое изображение 64×64, а Stage-II генерирует улучшенное изображение 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 нужен для получения скрытых скрытые условных переменных, которые передаются на вход генератору.
Результаты тестирования и сравнение модели ChatPainter с другими приведены в таблице. Из неё видно, что модель ChatPainter, которая получает дополнительную диалоговую информацию, имеет более высокий Inception Score, в отличии от модели StackGAN. Кроме того, рекурсивная
версия ChatPainter получилась лучше, чем не рекурсивная версия. Вероятно, это связано с тем, что в не рекурсивной версии энкодер кодировщик не обучается на длинных предложениях сворачивая весь диалог в одну строку.
{| class="wikitable"
*Генератор описаний изображений на основе Long-term [[Рекуррентные нейронные сети|Recurrent]] Convolutional Networks (LRCNs)<ref>[https://arxiv.org/abs/1411.4389 Jeff D., Lisa A. H. {{---}} Long-term Recurrent Convolutional Networks for Visual Recognition and Description, 2015]</ref>.
Прямое распространение (англ. ''forward pass'') инициируется путем передачи случайного скрытого вектора (англ. ''latent vector'') <tex>h_{t}</tex> в генератор изображений (<tex>G</tex>), который генерирует изображение <tex>\hat{x}</tex>. Затем по сгенерированной картинке генератор описаний создаёт подпись. Для определения ошибки между сгенерированным описанием <tex>\hat{y}</tex> и исходным описанием <tex>y</tex> используется перекрестная энтропия на уровне слов. Она используется для итеративного обновления <tex>h_{t}</tex> (заодно и <tex>\hat{x}</tex>), оставляя при этом все остальные компоненты фиксированными. С каждой итерацией <tex>\hat{y}</tex> приближается к < tex>y</tex>, и сгенерированное изображение на каждом шаге <tex>\hat{x}</tex> является временным представлением конечного изображения. Для улучшения реалистичности изображения используется энкодер шумоподавленя кодировщик шумоподавления (англ. ''Denoising Autoencoder, DAE'')<ref name="PPGN">[https://arxiv.org/abs/1612.00005 Anh N., Jeff C. {{---}} Plug & Play Generative Networks: Conditional Iterative Generation of Images in Latent Space,2017]</ref> {{---}} в правило обновления добавляется ошибка восстановления изображения (англ. ''reconstruction error''), вычисляемая как разница между <tex>h_{t}</tex> и <tex>\hat{h_{t}}</tex>.
[[файл:MMVR_example.png|thumb|left|x190px|Сравнение PPGN<ref name="PPGN" /> и MMVR]]
Обучение начинается с генерации случайного 4096-мерного вектора <tex>h_{t}</tex>, который передаётся в модель для последующего итеративного обновления. Процесс завершается после 200 итераций, и полученное изображение считается репрезентативным для данного описания.
135
правок

Навигация