Мулявин Дмитрий Евгеньевич

Факультет: «Интеллектуальных систем и программирования».

Кафедра: «Компьютерная инженерия».

Специальность: «Информатика и вычислительная техника».

Разработка алгоритма генерации изображений с элементами искусственного интеллекта.

Научный руководитель: к.т.н., доц., Мальчева Раиса Викторовна.

При написании данного реферата магистерская работа еще не завершена. Окончательное завершение: июнь 2025 года. Полный текст работы и материалы по теме могут быть получены у автора или его руководителя после указанной даты.

Введение

Генерация изображений представляет собой важнейший инструмент, применяемый в различных областях человеческой деятельности от любительских увлечений до сложных научных исследований в таких сферах, как космология, биология, химия и другие. С развитием цифровых технологий, ростом вычислительных мощностей и внедрением новых методов, человечество продолжает совершенствовать инструменты для создания и обработки изображений [1]. Историческая эволюция методов синтеза прошла значительный путь — от простейших систем процедурной генерации, использующих алгоритмы для создания изображений, до современных, высокоэффективных технологий на базе искусственных нейронных сетей, обеспечивающих глубокое обучение и адаптивную генерацию контента. Эти передовые системы позволяют достигать беспрецедентного уровня реалистичности и детализации в визуализации, что делает их незаменимыми для научных исследований, медицины и индустрии развлечений.


1. Актуальность исследования

Генерация изображений в условиях цифровизации человечества становится мощным инструментом, способным поддерживать различные сферы деятельности. Рассмотрим некоторые возможности, которые предоставляет эта технология:

  1. Создание неограниченного количества бесплатных изображений. Генерация позволяет обойтись без привлечения дорогостоящего художника.
  2. Источник вдохновения. Если человек сам является художником, но испытывает сложности с поиском оригинальных идей, эта технология может подсказать, в каком направлении двигаться.
  3. Визуализация дизайна. Полезно для быстрой оценки дизайна, например, интерьеров.
  4. Коррекция существующих изображений. Когда исходное изображение повреждено или нуждается в доработке, генерация может помочь исправить недочеты.

Исходя из этих аргументов, можно сделать вывод, что значимость данной технологии возрастает по мере развития цифровизации и компьютеризации. Особенностью данной работы является добавление возможностей искусственного интеллекта к традиционным алгоритмам генерации изображений с целью сокращения затрачиваемых ресурсов и повышения качества.


2. Обзор предметной области

Искусственный интеллект (ИИ) представляет собой область информационных технологий, занимающуюся созданием компьютерных программ, способных решать задачи, требующие моделирования человеческой мыслительной деятельности. Эти программы могут обобщать информацию, делать выводы на основе анализа данных, находить взаимосвязи и обучаться, используя накопленный опыт. Системы ИИ не замещают человека, а служат для расширения его возможностей [2].


2.1 Обоснование выбора предметной области

Популяризация искусственного интеллекта (ИИ) значительно усиливается благодаря стремительному внедрению технологий в повседневную жизнь и бизнес. В глобальном масштабе ИИ уже активно используется миллионами людей, а его влияние ощущается в самых разных сферах, от здравоохранения и образования до финансов и развлечений.

ИИ стал неотъемлемой частью цифровой инфраструктуры в развитых странах. В США, например, 27% людей используют ИИ-технологии в повседневной жизни, включая голосовых ассистентов (таких как Siri и Alexa), генерацию контента, а также автоматизацию рутинных задач. Одной из главных причин массового внедрения ИИ является его способность значительно ускорять и упрощать работу с большими данными, что открывает новые возможности для анализа, прогнозирования и автоматизации процессов.

Особенно заметно применение ИИ в индустриях, таких как медицина и биотехнологии, где его использование помогает быстрее разрабатывать новые методы лечения, прогнозировать развитие заболеваний и анализировать огромные массивы данных о пациентах. Также в автомобилестроении ИИ нашел широкое применение в разработке автономных транспортных средств [3].

В России интерес к ИИ начал стремительно расти в последние несколько лет. По данным 2024 года, количество запросов на тему нейросетей увеличилось более чем в 15 раз по сравнению с аналогичным показателем в 2022 году (рис. 1). Однако, несмотря на этот бурный рост, массовое внедрение ИИ еще не достигло уровня развитых стран. Около 33% респондентов используют текстовые нейросети, такие как ChatGPT или другие генераторы текста, а 28% предпочитают сервисы для генерации изображений, например, MidJourney, DALL-E и StableDiffusion [4].


Изображение графика популярности согласно Яндекс.Нейростат

Рисунок 1 – График отображения роста популярности на основе поисковых запросов в браузере «Яндекс»


2.2 Виды искусственного интеллекта

Существует несколько видов искусственного интеллекта:

  • artificial narrow intelligence, ANI. Представляет собой программно-аппаратный комплекс, специализирующийся в одной конкретной области;
  • artificial general intelligence, AGI. Представляет собой программно-аппаратный комплекс, интеллект которого напоминает человеческий;
  • artificial superintelligence, ASI. Интеллект, превосходящий человеческий в большинстве областей [5].

Основными понятиями в системах ИИ являются нейронные сети и машинное обучение. Нейронная сеть представляет собой некоторую математическую модель и ее реализацию в виде программы, которая воссоздает работу нейронной сети человека в упрощенном виде. Машинное обучение представляет собой набор специальных алгоритмов, которые воплощают ключевое свойство нейросетей – способность к самообучению на основе полученных данных. Тем проще обучающему алгоритму выдать точный результат, чем больший объем информации подается в качестве тренировочного массива данных.


2.3 Нейронные сети

Нейронная сеть (НС) – это большой распределенный параллельный процессор, состоящий из элементарных единиц обработки информации, накапливающих экспериментальные знания и предоставляющих их для последующей обработки [6].

Искусственная НС является упрощенной моделью биологической нейронной сети мозга человека. Аналогично биологической она принимает информацию извне и обрабатывает ее, а затем на основе полученных результатов выполняет действия, заложенные в нее. Основой нейронной сети является нейрон. Биологический нейрон представляет собой нервную клетку, состоящую из тела, дендритов и аксона.

Искусственный нейрон спроектирован также, как и биологический (рис. 2)


Изображение упрощенной модели нейрона

Рисунок 2 – Упрощенное строение искусственного нейрона

Здесь тело нейрона также принимает входные данные через дендриты (x1, x2), обрабатывает их и выводит результат через аксон – y. Нейроны в сети взаимодействуют через синапсы – места соединений выходного аксона одного нейрона с дендритами другого. Через него передается импульс, который формируется в теле нейрона, которое выступает сумматором, принимающим все входные импульсы. После получения сигналов он взвешивает их и передает в некоторую активирующую функцию, а затем принимающим решение о дальнейшем запуске импульса по аксону. Решение принимается следующим образом: если суммарные входные импульсы превышают некоторый заданный порог, то выходной импульс запускается [7].

Для реализации искусственного нейрона необходима математическая модель, реализующая его базовые функции (рис. 3).


Изображение математической модели искусственного нейрона

Рисунок 3 – Пример математической модели искусственного нейрона

На вход математического нейрона поступает некоторое количество входных параметров: x1, x2, … xm, каждый из которых имеет вес: wk1, wk2, … wmk. В теле нейрона имеется сумматор, где каждый входной сигнал умножается на некоторый действительный весовой коэффициент, после чего формируется итоговая сумма. В итоге получаем сумму произведений значений входных сигналов на их веса:

u k = j = 1 m w kj x j

(1)

y k = φ ( u k + b k )

(2)

Результат передается в функцию активации φ(∙). Перед выходом из тела нейрона происходит проверка значения функции – если оно выше порога, то на выходе из тела формируется единица. В таком случае нейрон активируется, и сигнал передается через аксон. Если же значение функции ниже порога, то на выходе значение равно нулю, и нейрон не активируется. Пороговый элемент (bk) отражает увеличение или уменьшение входного сигнала, подаваемого на функцию активации [6, 8].


2.4 Архитектура нейронных сетей

Структура нейронных сетей связана с используемыми алгоритмами обучения. Их классификация будет приведена позднее. Выделяют три основных класса нейросетевых архитектур.

Однослойные сети прямого распространения. В однослойных сетях сигналы с входного слоя подаются на выходной слой. Он производит необходимые вычисления, результаты которых сразу подаются на выходы. При подсчете числа слоев во внимание не принимаются узлы источника, поскольку они не производят вычислений. На рисунке 4 показана структура такой сети [8].


Изображение однослойной сети

Рисунок 4 – Однослойная нейронная сеть

Многослойные сети прямого распространения. Этот класс характеризуется наличием одного или нескольких скрытых слоев, узлы которых называются скрытыми нейронами. Функция скрытых нейронов заключается в посредничестве между внешним входным сигналом и выходом нейронной сети.

Узлы источника входного слоя сети формируют входной вектор, который представляет собой входной сигнал, поступающий на нейроны второго слоя (то есть первого скрытого). Выходные сигналы второго слоя являются входными для третьего и т.д. Пример такой сети показан на рисунке 5.


Изображение многослойной сети

Рисунок 5 – Многослойная нейронная сеть

Приведенный пример сети в общем случае называется сетью m-h1-h2-q, где m – входной слой, h1, h2 – скрытые слои, q – выходной слой. Она также является полносвязной, поскольку, поскольку все узлы каждого слоя связаны со всеми узлами других слоев. Если некоторые связи отсутствуют, то такая сеть называется неполносвязной [6, 8].

Рекуррентные сети. Рекуррентная НС отличается от сети прямого распространения наличием как минимум одной обратной связи. Наличие обратных связей оказывает непосредственное влияние на способность к обучению и производительности таких сетей. Также, обратная связь подразумевает использование элементов единичной задержки, что приводит к нелинейному динамическому поведению, если в сети содержатся нелинейные нейроны [6]. Структура такой сети показана на рисунке 6.


Изображение рекуррентной сети

Рисунок 6 – Рекуррентная нейронная сеть


2.5 Машинное обучение

Одним из наиболее важных свойств нейронных сетей является их способность к обучению на основе поступающих данных и опыта.

Машинное обучение (МО) – это подраздел искусственного интеллекта, который изучает различные способы построения алгоритмов обучения. Непосредственно обучение – это некоторый процесс, в котором свободные параметры нейросети настраиваются посредством моделирования среды, в которую эта сеть встроена. Цель таких процессов заключается в нахождении закономерностей в данных. Обучение нейросети происходит посредством интерактивного процесса корректировки синаптических весов и порогов.

Определение процесса, приведенное выше предполагает следующую последовательность событий:

  1. В НС поступают стимулы из внешней среды.
  2. В результате этого изменяются свободные параметры нейронной сети.
  3. После изменения внутренний структуры нейросеть отвечает на возбуждения уже иным образом.

Такой список правил обучения называется алгоритмом обучения. Алгоритмы обучения отличаются способом настройки синаптических весов нейронов [6, 8, 9].

Существует несколько видов обучения: обучение без учителя, обучение с учителем и обучение с подкреплением.

Обучение с учителем. Такая техника является наиболее распространенной. Вид обучения нейронной сети, при котором веса нейронных связей подбираются таким образом, чтобы ответы на выходе из сети минимально отличались от уже готовых правильных ответов. В этом случае рассматриваются данные на предмет связей и закономерностей, после чего результат прогнозируется для следующих примеров данных в том же формате. Суть этого подхода заключается в том, что на вход сети подаются тестовые сигналы из обучающей выборки, а затем полученный ответ сравнивается с заведомо правильным ответом. С помощью специальных алгоритмов, веса связей нейронной сети меняются, и снова ей подается тестовый входной сигнал, после чего вновь сравнивается ее ответ с эталоном. Этот процесс повторяется до тех пор, пока сеть не начнет правильно отвечать с приемлемой точностью.

Обучение с учителем делится на две подкатегории: регрессию и классификацию. Регрессия подразумевает построение линии через набор точек данных таким образом, чтобы она максимально соответствовала общей форме данных. Классификация использует прогнозирование категорий образцов на основе их признаков [8, 9].

Обучение без учителя. Это вид обучения нейронной сети, при котором сеть самостоятельно классифицирует (разделяет) входные сигналы. При этом правильные (эталонные) выходные сигналы ей не демонстрируются. Обучение без учителя применяют в случае отсутствия возможности предоставить правильные ответы на входные сигналы. Тогда вся обучающая выборка состоит из набора входных сигналов, а сеть самостоятельно делает разбор поступившего на вход материала. Она, по сути, обучается самостоятельно. [6, 8, 9].

Обучение с подкреплением. В обучении с подкреплением формирование отображения входных сигналов в выходные выполняется в процессе взаимодействия с внешней средой с целью минимизации скалярного индекса производительности. На рисунке 7 показана диаграмма одной из форм системы обучения с подкреплением.

Представленная диаграмма включает блок «критики», который преобразовывает сигнал первичного подкрепления, который приходит из внешней среды, в сигнал более высокого качества, называемый сигналом эвристического подкрепления [6, 9].


Изображение диаграммы обучения с подкреплением

Рисунок 7 – Диаграмма системы обучения с подкреплением


3. Применение на практике

Для проведения демонстрационного варианта используется язык Python и две основные библиотеки для работы с генеративным ИИ – PyTorch и Diffusers.

PyTorch представляет собой набор инструментов для создания нейронных сетей и их обучения. Особенности функционирования PyTorch:

  1. тензоры – многомерные массивы, выступающие в роли основной структуры данных;
  2. aвтоматическое дифференцирование – вычисление производных с методом обратного распространения ошибки;
  3. cлои – используется множество готовых слоев для построения НС. Основополагающими являются линейные и сверточные слои [10].

Diffusers предоставляет инструменты для генерации изображений на основе диффузионных моделей. Диффузионные модели обучаются на основе процесса добавления шума к данным, а затем обратного восстановления данных из шума, улучшая их. Непосредственное обучение в этих процессах происходит путем минимизации разности между предсказанным и истинным шумом: модель учится на данных, к которым был добавлен шум, и на каждом шаге обучения пытается предсказать этот шум, чтобы в обратном процессе восстановить чистые данные [11].

Хотя предпочтительным для работы с ИИ в общем и графикой в частности является использование видеокарты – в идеале с поддержкой технологии CUDA, данный метод позволит сгенерировать изображение практически на любом современном стационарном компьютере, пусть и со значительными затратами по времени.


3.1 Общая структура кода

В общем случае код демонстрационной программы содержит несколько функций:

  1. основная функция. Принимает текстовый запрос, введенный пользователем и желаемое имя результирующего файла. Также содержит остальные функции;
  2. функция, определяющая тип устройства. Для универсального использования, программа будет определять тип устройства, на котором происходит генерация. Самым приоритетным вариантом будет устройство с CUDA (видеокарты NVIDIA), следующим по приоритету будет устройство, поддерживающее технологию MPS (видеокарты AMD) и процессор. Эта функция также необходима для выбора типа данных, с которой будут работать библиотеки. Если это видеокарта, то тип данных будет float16, иначе – float32.
  3. функция непосредственной генерации. Здесь выполняется основной алгоритм создания изображения [12].

3.2 Характеристики тестового стенда


Таблица 1 - характеристики тестового стенда - AMD Ryzen 7 5700x


Количество ядер

8

Количество потоков

16

Тактовая частота

3400МГц

Кэш-память уровня L1

512 Кб

Техпроцесс

7 нм

Частота памяти

3600


3.3 Тестирование

Тестирование производится следующим образом: задается три идентичных запроса с нарастающей сложностью, затем оценивается общее время генерации и общее качество генерации.

Запрос: Landcape. Время выполнения: 5м 26с.

Сгенерированное изображение по первому запросу

Рисунок 8 – Результат первого теста

Запрос: Landscape, mountains, river. Время выполнения: 5м 34с.

Сгенерированное изображение по второму запросу

Рисунок 9 – Результат второго теста

Запрос: Landscape, flowers field, bushes. Время выполнения: 5м 27с.

Сгенерированное изображение по третьему запросу

Рисунок 10 – Результат третьего теста

Как можно увидеть по результатам тестов, по мере добавления ключевых слов, генерируемое изображение становится детальнее и насыщеннее. Однако в данном случае это никак не влияет на общее время генерации.

Список использованных источников