Первый раз я написал в Midjourney "красивый закат над городом" — и получил именно это. Технически правильно, фотографически безупречно и абсолютно мёртво. Такой закат висит на заставке каждого второго корпоративного ноутбука.
Несколько недель экспериментов понадобилось, чтобы дойти до простой мысли: проблема была не в модели. Я просто не умел объяснять.
Модель не читает мысли — она читает слова
Когда я говорю "красивый" — я вижу что-то конкретное. Модель видит усреднённое по миллиону изображений, помеченных тегом "beautiful". Это разные вещи, и путать их — дорого обходится.
Первое, что изменил: перестал использовать оценочные прилагательные и начал описывать физическую реальность. Не "красивый портрет", а "портрет пожилого мужчины, морщины вокруг глаз, мягкий боковой свет из окна, взгляд в сторону". Не "атмосферный лес", а "туманный сосновый лес, раннее утро, лучи сквозь кроны, мокрая трава на переднем плане". Разница сразу видна. Оценки — это твоя субъективная реакция на картинку. Описания — то, из чего она состоит.
Дольше всего меня сбивал порядок слов. Что стоит в начале промпта — то и доминирует. Однажды я написал длинный промпт, где главным персонажем был человек, а в самом конце мимоходом упомянул "на фоне заброшенного завода" — и получил заброшенный завод с едва заметной фигурой на горизонте. Пришлось переставить всё местами.
Три слоя, которые нужно прописывать
Я разбил промпт на три части — и с тех пор стало заметно проще.
Первый — что изображено. Субъект, действие, обстановка. Это основа. "Девушка читает книгу в кресле у окна, дождь за стеклом, домашний кот рядом". Без этого слоя остальное не работает.
Второй — как это выглядит технически. Стиль, освещение, угол, цветовая палитра. "Тёплые янтарные тона, мягкий рассеянный свет, снято будто на плёнку, лёгкое зерно". Первые недели я этот слой игнорировал — и получал технически случайные результаты. Модель сама решала: студийный свет или дневной, широкий угол или портретный. Решала не всегда в мою пользу.
Третий — референс на стиль или технику. "В стиле советской книжной иллюстрации 70-х", "акварель, размытые края", "фотография на Leica, f/1.4, боке". Долго сопротивлялся — казалось, это костыль. Потом сдался. Работает.
Где я стабильно ошибался
Переусложнение — моя любимая ошибка. Я писал промпты на восемь строк, перечислял двадцать деталей, пытался контролировать всё. Результат был хуже, чем с промптом в три предложения.
Дело в том что модель пытается удовлетворить все условия одновременно, и когда их слишком много — начинает жертвовать одними ради других, непредсказуемо. Теперь держусь за правило: одна главная идея, два-три уточнения, один технический параметр. Остальное — доверяю модели.
Другая ошибка — отрицания в основном промпте. "Без фона", "не крупный план", "без людей". Генеративные модели плохо с этим справляются: они видят слово "люди" и рисуют людей, даже если перед ним стоит "без". В Midjourney для этого есть параметр --no, в других моделях — negative prompt. Туда и нужно убирать всё нежелательное, а в основном тексте — только то, что хочешь видеть.
Ещё один капкан — абстрактные эмоции. "Грустная сцена", "ощущение тревоги", "радостная атмосфера". Почти ничего не даёт. Вместо "грустная сцена" я теперь пишу "пустая скамейка в парке, осенние листья, серое небо, одинокий зонт прислонён к спинке". Та же эмоция — но через конкретику.
Как я итерирую, когда не получается
Подход "сгенерировал — посмотрел — переписал с нуля" мне не подходит. Слишком медленно, и теряется нить.
Я начинаю с минимального промпта и добавляю по одному элементу за раз. Получил базовый результат — понял что не так — добавил один параметр — сравнил. Так видно, какое именно слово изменило картинку. Итераций уходит больше, зато я понимаю что происходит, а не гадаю.
На практике это ещё упрощается, если сохранять промпты, которые сработали. Звучит банально — я сам год этого не делал и каждый раз изобретал колесо. Теперь есть простой текстовый файл с шаблонами по категориям: портреты, пейзажи, предметка, иллюстрации. Нужен быстрый результат — берёшь шаблон и меняешь субъект.
Про негативные промпты отдельно
Эту тему часто недооценивают. В Stable Diffusion и Flux негативный промпт — полноценный инструмент, а не опциональная настройка.
Я почти всегда добавляю туда: "blurry, low quality, watermark, text, logo, extra limbs, deformed hands". Руки — отдельная боль всех генеративных моделей, это знают все кто работал с людьми в кадре. "Deformed hands, extra fingers" в негативном промпте сразу поднимает процент нормальных результатов.
Для портретов ещё добавляю "overexposed, flat lighting, stock photo look" — иначе регулярно выходит что-то в духе корпоративного фотобанка.
Честно говоря, промптинг для изображений — это ремесло, которое нарабатывается итерациями, а не вычитывается из руководств. Здесь написано только то, что реально сэкономило мне время. Дальше придётся набивать собственные шишки: каждая модель реагирует по-своему, и то что работает в DALL-E — может не работать в Midjourney. Единственный способ это узнать — пробовать.
