Романова, А.Г. Нейросетевая генерация изображений на основе текстовых описаний / А.Г. Романова, О.И. Белозеров // Научно-техническое и экономическое сотрудничество стран АТР в XXI веке. - 2023. - Т. 2 - С. 482-486. - EDM FZIKBV.
УДК 004.89
Романова А.Г., Белозеров О.И., Дальневосточный государственный университет путей сообщения, г. Хабаровск
НЕЙРОСЕТЕВАЯ ГЕНЕРАЦИЯ ИЗОБРАЖЕНИЙ НА ОСНОВЕ ТЕКСТОВЫХ ОПИСАНИЙ
В статье приведено описание основных нейронных сетей, входящих в состав современных программ для генерации изображений на основе текстовых описаний, произведен разбор взаимодействия между уровнями представленных нейронных сетей. Описан пример создания программы.
Ключевые слова: нейронная сеть, DALL-E, CLIP, GLIDE, VQGAN, модель, изображение, пиксель, генерация, Google Colab.
Romanova A.G., Belozerov O.I., Far Eastern State Transport University, Khabarovsk
NEURAL NETWORK GENERATION OF IMAGES BASED ON TEXT DESCRIPTIONS
The article describes the main neural networks that are part of modern programs for generating images based on text descriptions, analyzes the interaction between the levels of the presented neural networks. An example of creating a program is described.
Keywords: Neural network, Dall-e, CLIP, GLIDE, VQGAN, model, image, pixel, generation, Google Colab.
Одной из самых распространенных и известных программ для создания изображений по текстовому описанию, является Dall-e 2. Нейронная сеть, которая умеет хорошо рисовать, может дополнить классическую картину или сделать обложку для журнала.
Структура программы включает в себя несколько нейронных сетей, которые работают сообща.
Первая – CLIP. Изначально создавалась как антипод Dall-e. Она по изображению генерировала текст описание. Можно сказать, что CLIP умеет чувствовать и понимать контекст.
Сперва нейронной сети предоставляли пары, состоящие из картинок с текстовым описанием. Например, «кот, мотоцикл, чашка…». Если сказать нужное слово, возникнет в голове не только сам текст, но и картинка предмета. Самое интересное, что нейронная сеть хранит вместе единый образ, в который входит и картинка, и текст-название. Наш мозг работает аналогичным образом [4].
Все образы переводятся на цифровой язык, и дальше нейронная сеть CLIP отправляет их на хранение в латентное пространство – область памяти, где все эти векторы хранятся и главное группируются по схожести друг с другом. Данную конструкцию можно представить в виде куба [3] (рис. 1) – представляющего внутреннюю структуру CLIP. Векторы не сплетаются, потому что они распределены по разным точкам в пространстве. Главное, что похожее будет притягиваться к похожему. Например, русалка и яхта имеют между собой общее – воду. Поэтому находятся где-то рядом в пространстве памяти. А образ Москвы будет находиться совершенно в другом месте.

Рис. 1. Представление хранения образов CLIP
Какие объекты объединены в какие группы и где находятся знает только CLIP. Такая практика относится к большинству нейронных сетей.
Затем происходит генерация изображения с помощью шума [1]. В итоге идет представление карты образов нейросети, но такой подход применяется, когда необходимо задавать текстовое описание по изображению.
Вторая нейросеть GLIDE. Имеет готовое основание, где по схожести расположены объекты, подготовленные CLIP-ом. Потом она преобразовывает и конвертирует текст в изображение.
GLIDE работает по принципу диффузной модели. Сперва создается квадрат 64x64 пикселя с белым шумом и GLIDE начинает изменять пиксели один за другим, добавляя информацию и получая одобрение у CLIP.
В итоге получается практически финальное изображение по текстовому запросу. На данном этапе проблема заключается в том, что размер изображения 64x64 пикселя. Этот вопрос решается с помощью применения третьей нейронной сети, которая в свою очередь берёт изображение, подготовленное GLIDE, и формирует пиксели, подходящие по смыслу. Сначала идёт генерация изображения 256x256, затем финальное 10241024 пикселя (Upscale изображения – перевод из меньшего разрешения в большее). Как следствие из этих трёх составляющих получается набор DALL-E.
Для нейронной сети практически не существует преград. Так как нейросеть и её помощники обучались на сотнях миллионах фотографий, есть возможность сгенерировать практически все: реалистичную фотографию, 3D – рендер, рисунок карандашом и т.д. Подобные программы умеют не только писать картины, но и редактировать их. Добавить предмет, изменить фон, дорисовать.
Из минусов работы нейронной сети для генерации изображений можно выделить то, что нейросети не всегда способны отобразить нужный рисунок по первому запросу. Для выдачи идеального изображения может потребоваться время.
В основе многих схожих программ есть нейросети VQGAN и CLIP. VQGAN генерирует изображение, а CLIP измеряет, насколько оно соответствует запросу. Чем больше итераций, тем точнее изображение (рис. 2).
Затем генератор использует обратную связь от модели CLIP, чтобы сгенерировать более точные изображения. Процедура повторяется, пока оценка CLIP не станет достаточно высокой.

Рис. 2. Генерация изображений VQGAN и CLIP
Для создания используем открытый исходный код на pixray от dribnet расположенный в репозитории GitHab [2]. Его рекомендуется запускать на платформе Google Colab. Действуем последовательно.
Порядок действий
1. Устанавливаем кодовую базу и зависимости. Есть возможность задать CLIP такие параметры, как количество итераций, ширина, высота, модель генератора и многие другие.
2. Вывод кода генерации:
import sys
sys.path.append("clipit")
\import clipit
clipit.reset_settings() # сброс настроек по умолчанию
prompts = "underwater city" # "|" для разделения нескольких подсказок-текстов
quality = "normal" #Выбор качества: черновик, нормальный, лучший
aspect = "widescreen" #Соотношение сторон: широкоэкранный, квадратный
clipit.ass_settings(prompts=prompts, quality=quality,aspect=aspect) #добавление настроек
settings=clipit.apply_settings()
clipit.do_init(settings)
clipit.run(settings) #Применение настроек и запуск
3. Выбор модели изображения для загрузки изображения (какие параметры применимы к изображению решает пользователь):
imagenet_1024=True #@param {type:"boolean"}
Инструменты для выполнения
Для работы в среде Colab самое главное нужно видоизменить тексты. Среда предусматривает возможность поместить текст(ы), для дальнейшей генерации (разделенные символом |). Благодаря реализации нескольких описаний искусственный интеллект пытается собрать изображения, придавая одинаковый приоритет обоим текстам.
Чтобы использовать исходное изображение для модели, необходимо загрузить файл в среду Colab, а затем изменить init_image: указав точное имя файла. Пример: sample.png
Реализована возможность для использования target_images – помещающая одно или несколько изображений, которые искусственный интеллект примет за цель, выполняя ту же функцию, что и нанесение на него текста.
Пример кода «имя файла», где задаются данные о фотографии внутри графического файла.
def add_xmp_data(nombrefichero):
imagen=ImgTag(filename=nombrefichero)
imagen.xmp.append_array_item(libxmp.consts.XMP_NS_DC, 'creator', 'VQGANCLIP', {"prop_array_is_ordered":True, "prop_value_is_array":True})
Реализация возможности удаления сгенерированных изображений фреймов
#@markdown
%cd content/steps
%rm *.png
%cd ..
Примеры изображений, получившихся в результате произвольной генерации (рис. 3).

Рис. 3. Результат
Нейросети имеют большое будущее в сфере создания графических объектов, с их помощью вы можете реализовать практически все: реалистичную фотографию, рисунок карандашом и т.д. Возможности современных программ для генерации изображений, в состав которых входят нейронные сети, будут расти с каждым годом, ведь они уже сейчас умеют качественно и быстро работать с текстами, что позволит заменить не только таких специалистов, как корректоры, редакторы и копирайтеры, но и серьезно потеснить другие профессии.
1. Как работают нейросети-художники. - URL: URL: https://dzen.ru/a/YzMU6zamiwjT5P8f (дата обращения: 07.03.2023).
2. GitHub – дрибнет/клипит: CLIP + VQGAN/ PixelDraw. – URL: https://github.com/dribnet/clipit (дата обращения: 08.03.2023).
3. Документация OpenAI. – URL: https://openai.com/product/dall-e-2 (дата обращения: 9.03.2023).
4. Сверхэффективная нейронная сеть или гиперсеть – URL: https://habr.com/ru/post/26850/ (дата обращения: 09.03.2023).