Как ИИ генерирует картинки из текста
Пишешь «кот-астронавт в стиле Ван Гога» — и через пару секунд получаешь готовую картинку, которой раньше не существовало. Разбираемся, что происходит внутри и почему ИИ рисует, начиная с чистого шума.
Ты вводишь фразу «рыжий кот в скафандре на фоне Сатурна, акварель» — и через несколько секунд видишь картинку, которой никогда не было в мире. Не нашли в интернете, не склеили из кусочков чужих фото, а именно нарисовали с нуля. Как кучка чисел внутри компьютера превращает твои слова в изображение? Давай разберёмся без магии.
Сначала ИИ учится отличать кота от хаоса
Прежде чем нейросеть научится рисовать, её долго учат видеть. Разработчики показывают ей сотни миллионов картинок из интернета, и почти у каждой есть подпись: «щенок на траве», «закат над морем», «чашка кофе на столе». Постепенно сеть нащупывает связь между словами и тем, как выглядят вещи. Она не запоминает картинки наизусть — она ловит закономерности: какие формы, цвета и текстуры обычно стоят за словом «кот», а какие за словом «облако».
Это похоже на то, как ты сам учился узнавать предметы в детстве. Тебе показывали разных собак — большую, маленькую, лохматую, гладкую — и в какой-то момент в голове сложился общий образ «собаки». Теперь ты узнаешь собаку, даже если видишь её впервые. ИИ проходит тот же путь, только на чудовищном количестве примеров.
Магия начинается с чистого шума
А теперь самое странное и самое интересное. Современные генераторы картинок (их называют диффузионными моделями) начинают рисовать не с пустого холста, а с случайного шума — той самой «ряби», которую старые телевизоры показывали, когда не ловили канал. Просто экран, забитый хаотичными цветными точками.
Звучит безумно: как из мусора получить кота? Но вот в чём фокус. Во время обучения сеть тренировали наоборот: брали нормальную картинку и постепенно добавляли к ней шум, шаг за шагом, пока от изображения не оставалась сплошная рябь. А сеть училась предсказывать, что именно нужно убрать, чтобы вернуться на один шаг назад — к чуть более чёткой картинке.
ИИ не рисует картинку линиями, как художник. Он берёт случайный шум и аккуратно вычищает из него всё лишнее, пока сквозь хаос не проступит изображение.
Когда модель уже обучена, её запускают в обратную сторону. Дают ей случайный шум — и просят за много шагов превратить его в чёткую картинку, убирая «лишние» точки понемногу.
А где же здесь твой текст?
Хороший вопрос. Если просто чистить шум, получится какая-то картинка, но не та, что ты просил. Поэтому твоя фраза играет роль проводника.
Сначала отдельная часть системы превращает твои слова в набор чисел — компактное математическое описание смысла. Для компьютера «рыжий кот в скафандре» — это не буквы, а координаты в огромном пространстве смыслов, где похожие понятия лежат рядом. И на каждом шаге очистки шума модель сверяется с этим описанием: «Я двигаюсь в сторону кота в скафандре или куда-то не туда?»
Получается, текст — это как штурман в ралли. Гонщик (модель очистки шума) крутит руль, а штурман постоянно подсказывает: «Чуть больше рыжего, добавь скафандр, фон делай космическим». Без штурмана машина уехала бы куда попало; без водителя штурман никуда не доедет. Только вместе они приходят к нужной картинке.
Почему две одинаковые фразы дают разные картинки
Ты мог заметить: вводишь один и тот же запрос дважды — и получаешь две разные картинки. Это не баг. Всё дело в том, что начальный шум каждый раз случайный, разный. А раз отправная точка другая, то и путь очистки идёт иначе — и финал получается свой.
Именно поэтому такие модели называют генеративными: они не достают готовый ответ из базы, а каждый раз создают новый. Вот почему стоит запомнить пару вещей о том, как с ними работать:
- Детали в запросе решают многое. Чем точнее ты опишешь сцену, стиль, освещение и настроение, тем ближе результат к задумке.
- Случайность — это фича. Не понравилось — жми генерацию ещё раз, выпадет другой вариант из того же описания.
- Модель знает только то, чему её учили. Если в обучающих данных чего-то не было, нарисовать это правдоподобно ей будет трудно.
Почему у ИИ иногда шесть пальцев
Раз всё так умно устроено, почему генераторы порой выдают руки с лишними пальцами или кривой текст на вывеске? Потому что модель не понимает, что у человека ровно пять пальцев, а у слова «кофе» строгий порядок букв. Она работает со статистикой: какие пиксели обычно стоят рядом с какими. Рука — штука сложная, в данных она встречается в куче разных поз, и сеть легко «запутывается» в количестве пальцев.
Это важная мысль вообще про современный ИИ: он невероятно хорош в правдоподобии, но у него нет настоящего понимания мира, как у тебя. Он не считает пальцы — он угадывает, как обычно выглядит «похожее на руку». Поэтому такие модели — мощный инструмент в руках человека, а не волшебник, который всё знает. Финальное слово, вкус и проверка по-прежнему за тобой.