Top.Mail.Ru

Как нейросети создают изображения и почему они ошибаются

2.4К 232 ~5 мин
  • Наука и мир

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

Как нейросеть работает с изображением

Хранить цвет пикселей можно по-разному. Один из распространённых вариантов — RGB: цвет каждого пикселя задаётся тремя значениями — для красного, зелёного и синего. Возьмём 8-битное RGB-изображение. В нём каждое из трёх значений может быть от 0 до 255. Поэтому картинка размером 512 × 512 пикселей содержит 786 432 числовых значения.

Нейросеть учится находить в этих числах визуальные признаки. Хороший пример — AlexNet, модель для распознавания изображений, которая появилась в 2012 году. Одни её слои реагировали на простые элементы, например края и цвета, а другие — на более сложные детали.

AlexNet обучали на базе ImageNet. Модель получала изображение и должна была определить, к какому из тысячи классов оно относится. Когда она ошибалась, её внутренние параметры корректировались. Постепенно модель всё лучше справлялась с распознаванием, но создавать новые картинки не умела.

Набор данных, на котором обучается нейросеть, называется датасетом. Результат обучения зависит не только от устройства и настроек модели, но и от качества и разнообразия данных.

Как работают GAN-сети

В 2014 году Ян Гудфеллоу и его коллеги представили новый способ генерации изображений — генеративно-состязательные сети, или GAN (Generative Adversarial Networks). В такой системе одновременно обучаются две нейросети, которые соревнуются друг с другом.

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

Во второй половине 2010-х GAN стали одним из ведущих способов генерации изображений. К 2017–2018 годам такие модели уже могли создавать высококачественные портреты людей размером до 1024 × 1024 пикселей.

Но у этого подхода есть слабое место: две сети должны обучаться достаточно согласованно. Если одна начинает заметно превосходить другую, обучение генератора может ухудшиться. Другая проблема — mode collapse, или «схлопывание режимов». Так называют ситуацию, когда генератор начинает выдавать слишком похожие изображения и перестаёт передавать всё разнообразие обучающих данных.

Из-за этих сложностей исследователи продолжали искать другие способы генерации изображений. В начале 2020-х альтернативой GAN стали диффузионные модели. В ряде стандартных тестов они превзошли лучшие GAN по качеству синтеза изображений.

Подготовка к экзаменам в 100балльном репетиторе

Как работают диффузионные модели

Диффузионная модель учится создавать изображения через обратную задачу — восстанавливать картинку, которую постепенно превратили в шум. Один из базовых вариантов такого подхода — DDPM (Denoising Diffusion Probabilistic Models) — появился в современной форме в 2020 году.

Принцип DDPM можно представить так. К фотографии раз за разом добавляют случайный шум — множество беспорядочно расположенных цветных точек, которые не складываются в узнаваемое изображение. Сначала за ними теряются мелкие детали, затем — очертания предметов, а в конце исходную картинку уже почти невозможно различить. Во время обучения нейросеть учится проходить этот путь в обратную сторону — шаг за шагом убирать шум и восстанавливать изображение. После обучения исходная фотография уже не нужна: модель начинает со случайного шума и постепенно создаёт из него новую картинку.

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

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

Зачем модели латентное пространство

Stable Diffusion относится к латентным диффузионным моделям, или Latent Diffusion Models. Их особенность в том, что основная часть генерации происходит не с пикселями большой картинки, а с её сжатым представлением — латентным пространством.

Зачем это нужно? Диффузионная модель создаёт изображение за много шагов. Если на каждом из них обрабатывать все пиксели большой картинки, потребуется очень много вычислений. В латентном пространстве данных гораздо меньше, поэтому модель может выполнять ту же работу с меньшими затратами.

В Stable Diffusion процесс устроен так:

  1. Картинка сжимается. Этим занимается вариационный автоэнкодер, или VAE. Его кодировщик переводит изображение из пикселей в латентное пространство.
  2. Модель создаёт изображение. Диффузионный процесс происходит уже в латентном пространстве: модель работает с шумом и шаг за шагом формирует новое изображение.
  3. Картинка восстанавливается. Декодер переводит полученный результат из латентного пространства обратно в пиксели.

Stable Diffusion публично выпустили в 2022 году. Работа в латентном пространстве позволяла сократить объём необходимых вычислений. Вскоре после выхода модели появились способы запускать её примерно с 7–8 Гб видеопамяти, а дополнительные оптимизации позволяли уменьшить требования ещё сильнее.

Как нейросеть понимает текстовый промпт

Чтобы создать изображение по промпту, модели нужно понять, какие визуальные признаки связаны со словами из описания. В Stable Diffusion v1 за работу с текстом отвечает CLIP. Эту модель обучали на 400 миллионах пар «изображение — связанный с ним текст», собранных из общедоступных источников в интернете. На таких примерах CLIP учился находить связь между словами и тем, что изображено на картинках.

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

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

Почему нейросети ошибаются в изображениях

Даже хорошие генеративные модели иногда ошибаются. Чаще всего проблемы заметны в нескольких местах:

  • Руки и пальцы. Руки сложны для генерации: кисть может принимать множество положений, а пальцы — сгибаться и перекрывать друг друга. Результат также зависит от устройства модели и данных, на которых она обучалась.
  • Мелкие детали. В моделях вроде Stable Diffusion часть информации может потеряться при сжатии изображения и его последующем восстановлении. Кроме того, качество зависит от самой модели, обучающих данных и процесса генерации.
  • Текст на изображении. Особенно плохо с надписями справлялись более ранние модели: вместо слов они могли создавать псевдобуквы или писать с ошибками. Современные системы воспроизводят текст лучше.

По таким ошибкам иногда можно заподозрить изображение, созданное ИИ.

Современная нейросеть может создать картинку без заметных ошибок, а обработанная настоящая фотография, наоборот, иногда выглядит искусственно.

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

Сколько ресурсов нужно для обучения нейросети

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

Масштаб хорошо виден на примере оригинального Stable Diffusion. Для его обучения использовали 256 графических процессоров NVIDIA A100. В сумме они выполнили такой объём работы, на который одному такому процессору потребовалось бы около 150 тысяч часов, или больше 17 лет.

Для обучения нужны и огромные наборы данных. Например, нейросеть CLIP, которая училась находить связь между изображениями и текстом, обучали на 400 миллионах пар «картинка — текст». Есть датасеты ещё больше. Один из таких наборов, LAION-5B, содержит 5,85 миллиарда пар «картинка — текст».

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

Можно ли обучить нейросеть самостоятельно

Обучать большую нейросеть с нуля необязательно. Можно взять готовую модель, которая уже умеет создавать изображения, и дополнительно научить её чему-то конкретному. Это и называется дообучением, или fine-tuning.

Например, метод DreamBooth позволяет дообучить модель на нескольких изображениях конкретного объекта. Модель учится распознавать его характерные визуальные признаки, чтобы затем создавать изображения этого объекта в новых сценах и ракурсах.

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

Главное

В 2010-е и начале 2020-х технологии генерации изображений быстро развивались. Сначала большой шаг вперёд сделали GAN, а затем одним из ведущих подходов стали диффузионные модели. Благодаря развитию этих методов нейросети научились создавать всё более качественные и реалистичные изображения, в том числе по текстовым запросам.

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

Понравилась статья?

Подготовка к экзаменам в 100балльном репетиторе

Похожие статьи

С нами ты получишь высокие баллы на ЕГЭ и ОГЭ!

№ 1 по стобалльникам
№ 1

по результатам ЕГЭ по версии Smart Ranking - 2025

430k+ учеников поступили в вузы мечты 430k+

школьников поступили в вузы мечты с нашей помощью

11+ лет средний опыт наших преподавателей 11+

лет - средний опыт ведущих наших курсов

Мы знаем, как забрать максимум на экзамене

Мы знаем, как забрать максимум на экзамене

Отправим стратегию подготовки к экзаменам на бесплатной консультации

  • Оценим текущий уровень знаний
  • Подскажем, с чего начать
  • Дадим понятный план действий
  • 11 класс
  • 10 класс
  • 9 класс
  • 8 класс
  • 7 класс
  • 6 класс
  • 5 класс