Генерация картинок: как это работает
Ты пишешь «рыжая кошка-космонавт пьёт молоко на Луне» — и через несколько секунд получаешь картинку, которой никогда не существовало. Сейчас разберёмся, как программа умудряется это сделать.
Эмбеддинг — представление слова или объекта в виде точки в многомерном пространстве, где похожие смыслы лежат рядом. Именно эмбеддинги связывают твой текст с тем, что окажется на картинке.
Наверняка ты уже видел в ленте странные, красивые или смешные изображения с подписью «сгенерировано нейросетью». Замок из мороженого, твой любимый герой в стиле старого аниме, кот в костюме рыцаря. Кто-то просто написал словами, что хочет увидеть, — и программа это нарисовала. Без художника, без фотошопа, за пару секунд.
К концу урока ты будешь понимать главное: откуда вообще берётся картинка, почему она «вырастает» из случайных пятен, и как твой текстовый запрос превращается в конкретное изображение. А ещё — где у этой магии границы, чтобы ты не удивлялся, почему на сгенерированной руке семь пальцев.
Зачем тебе это понимать
Генерация картинок — это уже не игрушка для гиков. Ей делают обложки для проектов, аватарки, иллюстрации к рефератам, концепты для игр, мемы. Скорее всего, ты и сам скоро что-нибудь сгенерируешь — а может, уже.
Но есть разница между тем, кто просто тыкает кнопку и удивляется результату, и тем, кто понимает, что происходит внутри. Второй пишет запросы точнее, не ждёт от программы невозможного и сразу замечает подвох — например, что «фотография» на самом деле нарисована и доверять ей как доказательству нельзя.
И ещё: понимание того, как картинка собирается из шума по текстовому описанию, — это прямое продолжение всего, что ты уже узнал про ИИ. Те же самые идеи про обучение на примерах, признаки и эмбеддинги, только теперь не для ответа словами, а для рисунка. Так что это не новая магия, а старые знакомые механизмы в новой роли.
Главная идея: скульптор, который убирает лишнее из тумана
Представь, что ты лепишь из глины наоборот. Обычный скульптор берёт кусок и добавляет детали. А теперь вообрази скульптора, перед которым стоит глыба случайного тумана — бесформенное облако шума, как «снег» на старом телевизоре без сигнала. Его задача — на каждом шаге чуть-чуть убирать лишнее, проявляя из тумана нужную фигуру. Шаг за шагом туман редеет, и из него постепенно проступает кошка. Или собака. Или кошка-космонавт.
Именно так и работает самый популярный способ генерации картинок. Программа начинает не с чистого листа, а с экрана случайных цветных точек — полного хаоса. И затем много раз подряд делает один и тот же ход: «убери немного шума, сделай картинку чуть осмысленнее». После десятков таких шагов хаос превращается в чёткое изображение.
Картинка не рисуется штрих за штрихом, как карандашом. Она проявляется из случайного шума — как фотография в ванночке с проявителем у старых фотографов.
Как машину этому научили: зубрёжка наоборот
Откуда программа знает, какой именно шум убирать? Её этому научили — на огромном количестве примеров. Вспомни наш сквозной пример: задачу «отличить кошку от собаки». Раньше мы учили модель смотреть на картинку и говорить, кто на ней. Здесь почти то же самое, только вывернутое наизнанку.
Во время обучения брали настоящие фотографии (с подписями вроде «кошка», «собака») и специально портили их шумом — чуть-чуть, потом сильнее, потом совсем в кашу. А модель тренировали делать обратное: по испорченной картинке угадывать, как убрать шум и вернуть исходную. Сделай так миллионы раз с миллионами картинок — и модель выучивает, как выглядит «расшумлённая» кошка, собака, дерево, лицо. Это снова обучение с учителем: показали испорченный пример и правильный ответ (чистую картинку), модель подстроила свои веса.
Теперь, когда обучение закончено, ей дают чистый случайный шум — и просят «убрать шум» так, будто под ним пряталась настоящая картинка. Под шумом ничего не пряталось, но модель этого не знает: она честно делает то, чему училась, и проявляет правдоподобное изображение из ничего.
Чтобы это улеглось, представь обучение как таблицу. Берётся одна и та же фотография кошки, и её портят всё сильнее — а модель учится на каждом уровне порчи угадывать шаг назад, к чистой картинке.
| Уровень шума | Что видит модель | Чему она учится |
| Слабый | Почти чёткая кошка, лёгкая рябь | Подчистить мелкие детали — усы, шерсть |
| Средний | Размытое пятно, угадывается силуэт | Вернуть форму тела, ушей, позу |
| Сильный | Почти сплошная каша из точек | Понять, что вообще тут пряталось животное |
Когда все три уровня выучены, генерация — это просто обратный путь по этой таблице: от каши к силуэту, от силуэта к деталям. Модель не помнит конкретную фотографию из обучения — она запомнила общие правила, как «кошачесть» проступает сквозь шум. Поэтому она и рисует новых кошек, которых никогда не было, а не копирует старые. Это важно: генератор не достаёт готовую картинку из памяти, как из папки, а каждый раз собирает новую по выученным закономерностям. Иногда, правда, на сложных или редких запросах он может выдать что-то слишком похожее на конкретный обучающий пример — это отдельная больная тема про авторские права, к которой относятся всерьёз.
А при чём тут текст? Связываем запрос и картинку
Пока что у нас скульптор лепит что-то из тумана. Но как заставить его лепить именно кошку-космонавта, а не случайного кота? Тут на сцену выходят эмбеддинги — те самые, про которые мы говорили в уроке «Эмбеддинги: слова как точки».
Напомню идею: каждое слово можно превратить в точку в многомерном пространстве, где похожие по смыслу слова лежат рядом. «Кошка» и «котёнок» близко, «кошка» и «трактор» далеко. Так вот, картинки можно превращать в точки в том же самом пространстве. И тогда у слова «кошка» и у фотографии кошки получаются близкие эмбеддинги. Программу специально обучили на парах «картинка + её подпись», чтобы текст и изображение про одно и то же оказывались рядом.
Дальше всё складывается. Ты пишешь запрос — его превращают в эмбеддинг (точку смысла). Эту точку отдают нашему скульптору как подсказку: «убирай шум не куда попало, а в сторону вот этого смысла». На каждом шаге расшумления модель подглядывает на эмбеддинг твоего текста и тянет картинку ближе к нему. Хочешь космонавта — добавится скафандр, хочешь на Луне — появится серый грунт и чёрное небо.
Эмбеддинг текста — это компас. Шум — это глыба. Модель на каждом шаге сверяется с компасом и откалывает лишнее в нужную сторону.
Тот же самый сквозной пример, но глубже
Смотри, как наша «кошка против собаки» прошла весь курс. Сначала это был набор признаков (форма ушей, длина морды). Потом — нейросеть, которая по картинке выдаёт ответ. Потом — эмбеддинги, где кошка и собака стали точками. И вот теперь та же пара работает в обратную сторону: по слову «кошка» (точке-эмбеддингу) модель выращивает картинку кошки из шума. Одна и та же идея, просто повёрнутая другой стороной — от ответа к рисунку.
Разберём на примерах
Курс концептуальный, поэтому код здесь — это маленькие наглядные модельки на JavaScript, которые показывают идею. Они не настоящие нейросети, а упрощённые иллюстрации механизма.
Пример 1. Как из шума постепенно «проявляется» картинка
Представим картинку как одно число — «насколько она похожа на кошку», от 0 (чистый шум) до 1 (идеальная кошка). На старте у нас случайный шум, далёкий от цели. На каждом шаге модель чуть-чуть приближает картинку к цели — убирает часть «расстояния до кошки».
// 0 = сплошной шум, 1 = идеальная картинка кошки
let картинка = 0.05; // старт: почти чистый шум
const цель = 1.0; // куда тянемся
const шагов = 6;
for (let шаг = 1; шаг <= шагов; шаг++) {
// на каждом шаге убираем половину оставшегося "тумана"
картинка = картинка + (цель - картинка) * 0.5;
console.log("Шаг " + шаг + ": похожесть на кошку = " + картинка.toFixed(3));
}
console.log("Готово! Из шума проявилась картинка.");Вывод:
Шаг 1: похожесть на кошку = 0.525 Шаг 2: похожесть на кошку = 0.763 Шаг 3: похожесть на кошку = 0.881 Шаг 4: похожесть на кошку = 0.941 Шаг 5: похожесть на кошку = 0.970 Шаг 6: похожесть на кошку = 0.985 Готово! Из шума проявилась картинка.
Видишь? Мы не нарисовали кошку за один присест. Картинка подкрадывалась к цели маленькими шагами: сначала большой скачок из хаоса, потом всё мельче и аккуратнее. Настоящие генераторы делают так же, только шагов обычно десятки, а «картинка» — это миллионы цветных точек, а не одно число.
Пример 2. Текст-компас задаёт, что именно проявить
Теперь добавим текстовый запрос. Пусть эмбеддинг запроса задаёт цель, к которой тянется шум. Сменим запрос — сменится цель, и из того же шума проявится другое.
// Очень упрощённо: эмбеддинг запроса = число-"цель"
const цели = {
"кошка": 0.30,
"собака": 0.80,
"кошка-космонавт": 0.55
};
function генерировать(запрос) {
let картинка = 0.00; // один и тот же стартовый шум
const цель = цели[запрос];
for (let шаг = 0; шаг < 5; шаг++) {
картинка = картинка + (цель - картинка) * 0.6; // тянемся к цели запроса
}
return картинка.toFixed(3);
}
console.log("Запрос 'кошка' -> " + генерировать("кошка"));
console.log("Запрос 'собака' -> " + генерировать("собака"));
console.log("Запрос 'кошка-космонавт' -> " + генерировать("кошка-космонавт"));Вывод:
Запрос 'кошка' -> 0.297 Запрос 'собака' -> 0.792 Запрос 'кошка-космонавт' -> 0.545
Стартовый шум один и тот же (0.00), а результат разный — потому что разный текст задал разную цель. Вот почему два человека с одинаковым запросом, но разным начальным шумом получат похожие, но не одинаковые картинки: смысл (компас) общий, а стартовый туман у каждого свой.
Пример 3. Почему похожие запросы дают похожие картинки
Поскольку слова с близким смыслом имеют близкие эмбеддинги, близкими получаются и цели, и картинки. Проверим: «котёнок» близок к «кошке», а «трактор» — далёк.
// Эмбеддинг = точка-число. Чем ближе числа, тем ближе смысл.
const эмбеддинг = {
"кошка": 0.30,
"котёнок": 0.34,
"трактор": 0.95
};
function расстояние(a, b) {
return Math.abs(эмбеддинг[a] - эмбеддинг[b]).toFixed(2);
}
console.log("кошка vs котёнок: " + расстояние("кошка", "котёнок"));
console.log("кошка vs трактор: " + расстояние("кошка", "трактор"));Вывод:
кошка vs котёнок: 0.04 кошка vs трактор: 0.65
Запросы «кошка» и «котёнок» почти совпадают по смыслу — и картинки выйдут похожими. А «трактор» далеко, и проявится совсем другое. Та же логика эмбеддингов, что и в тексте, только теперь она рулит рисунком.
Частые ошибки и подводные камни
Когда начнёшь генерировать сам, ты быстро наткнёшься на странности. Вот почему они возникают.
| Что ломается | Почему так |
| Кривые руки, лишние или слипшиеся пальцы | Модель не считает пальцы и не знает анатомию. Она лишь воспроизводит частые узоры из обучающих картинок, а руки в разных позах сложны и редки — вот и путается. |
| Текст на картинке — бессмысленные закорючки | Для модели буквы — это просто узор пикселей, а не символы со смыслом. Она «рисует что-то буквоподобное», не умея писать. |
| Игнорирует часть запроса («забыл» один объект) | Чем длиннее и сложнее запрос, тем труднее уместить все смыслы в один компас-эмбеддинг. Что-то перевешивает, что-то теряется. |
| «Фотореалистичное» фото на самом деле выдумано | Это не снимок реальности, а сгенерированный узор. Такая картинка не доказывает, что событие было — отсюда и проблема дипфейков. |
| Странные объекты, которых не просили | Модель тянет картинку к среднему по похожим примерам. Если в обучающих данных рядом с твоим запросом часто было что-то ещё, оно может «прилипнуть». |
Главный вывод из таблицы: генератор не понимает сцену так, как человек. Он не знает, что у руки пять пальцев и что буквы складываются в слова. Он лишь очень хорошо воспроизводит визуальные узоры, которые часто встречал. Поэтому он гениален в стиле и атмосфере, но спотыкается на строгой логике и счёте.
И отдельно про честность: раз «фотография» может быть полностью выдумана, относись к реалистичным изображениям из интернета осторожно. Сгенерировать фейковое фото события стало так же легко, как написать пост. Это та самая тема дипфейков, к которой мы ещё вернёмся.
Чем люди реально пользуются — и где предел
Чтобы это не звучало абстрактно: сегодня существует несколько популярных генераторов картинок. Они различаются стилем и характером, но устроены по одному и тому же принципу «шум плюс текст-компас», который ты только что разобрал. Тебе не нужно знать их названия наизусть — важнее понимать, что у них общего и в чём они одинаково слабы.
| В чём генераторы хороши | В чём почти всегда плохи |
| Атмосфера, настроение, стиль, цвет | Точный счёт: «ровно три кошки» легко превращается в две или четыре |
| Фантазийные сочетания («кошка-космонавт») | Читаемый текст и логотипы внутри картинки |
| Быстрые черновики идей и концептов | Анатомия: руки, зубы, отражения в зеркале |
| Вариации одной идеи десятками | Строгая фактическая точность (это не справочник) |
Заметь закономерность: машина блистает там, где нужно правдоподобие и стиль, и спотыкается там, где нужны точность и счёт. Это ровно то же самое, что мы видели у языковой модели в уроке про галлюцинации, — только теперь не со словами, а с пикселями. Один и тот же характер ИИ: гениальный имитатор, плохой бухгалтер.
Поэтому относись к генератору как к талантливому, но рассеянному художнику-стажёру. Ему отлично даются наброски, настроение и «нарисуй мне что-то в духе». Но проверять за ним детали, считать пальцы и не доверять «фотографиям» как доказательствам — твоя работа.
Мини-проект: спланируй идеальный запрос
Кода тут не будет — будет тренировка мышления, которая реально улучшит твои картинки. Возьми любую идею (например, наш сквозной герой — кошка-космонавт) и собери для неё структурированный запрос по частям:
- Главный объект. Кто или что в центре? («рыжая кошка в скафандре»)
- Действие и место. Что делает, где находится? («пьёт молоко, сидит на поверхности Луны»)
- Стиль. Как нарисовать? («в стиле детской книжной иллюстрации» / «как кадр из аниме» / «цифровая живопись»)
- Детали атмосферы. Свет, настроение, цвета? («мягкий свет звёзд, тёплые цвета, уютно»)
Теперь усложни задание для себя: попробуй мысленно предсказать, где модель споткнётся. Есть ли в твоём запросе руки, которые надо рисовать? Текст или надписи? Слишком много объектов сразу? Если да — упрости или раздели на несколько картинок. Запиши свой финальный запрос и рядом — список «рискованных мест». Если у тебя есть доступ к любому генератору, проверь догадки на практике: что получилось так, как ждал, а что поехало?
Это упражнение учит главному навыку работы с генераторами: думать не «нарисуй красиво», а «дай модели понятный компас и не проси невозможного».
Итоги
- Картинка не рисуется штрихами, а проявляется из случайного шума: модель много раз подряд убирает лишнее, пока из хаоса не выйдет изображение.
- Этому модель научили наоборот — портя настоящие фото шумом и тренируясь восстанавливать их. Это всё то же обучение с учителем, меняющее веса.
- Твой текст превращается в эмбеддинг — точку смысла, которая работает как компас и задаёт, что именно проявить из шума.
- Близкие по смыслу запросы дают похожие картинки, потому что у них близкие эмбеддинги — ровно как со словами.
- Генератор воспроизводит узоры, а не понимает сцену: отсюда кривые руки, нечитаемый текст и то, что «фото» может быть полностью выдуманным.
Ты прошёл с нашими кошкой и собакой весь путь: от набора признаков до выращивания картинки из шума по текстовому запросу. Дальше в разделе про ИИ-инструменты мы разберём другие штуки, которыми ты можешь пользоваться уже сегодня, — и научимся выжимать из них максимум, понимая, как они устроены изнутри. Идём дальше.