ИНЖЕНЕРНЫЕ ЗАМЕТКИ
Сохранение стиля в Image to Prompt: что мы изменили и почему
Наш инструмент Image to Prompt правильно передавал субъект, но ошибался со стилем. Зернистый снимок из девяностых возвращался в виде отполированного постера к фильму. Это заметка о том, почему так происходит, что мы изменили и какие части вы можете применить вручную в любом инструменте.

Точный субъект в неверном стиле
Отзывы были единодушны. Кто-то загружает референс, получает промпт, запускает его, и результат узнаваемо изображает ту же сцену — тот же субъект, то же кадрирование, примерно тот же свет, — но при этом не похож на их изображение. Текстура чище. Цвет насыщеннее. Что-то сгладилось.
Эта закономерность — подсказка. Когда субъект и композиция сохраняются, а поверхность и финальная обработка — нет, значит промпт описывает то, что находится в кадре, а не то, как этот кадр был сделан. Это разные задачи, и вторую гораздо легче сделать неправильно.
Стиль был одним пунктом из девяти в списке
Наша инструкция для модели зрения раньше просила её зафиксировать «субъект, обстановку, композицию, объектив или вид, освещение, палитру, материалы, настроение и стиль». Это выглядит как тщательный чек-лист. На практике это способ гарантировать, что стилю достанется одна девятая часть внимания.
Плоский список подразумевает равномерное покрытие. Но стиль — это не один атрибут среди девяти: он определяет, как отрендерятся остальные восемь. При этом стиль сложнее всего выразить словами, а значит, это пункт, который больше всего нуждается в дополнительном руководстве, — и, при таком списке, пункт, который скорее всего его не получит.
Дайте стилю словарь, а не прилагательное
Попросите языковую модель описать стиль, не сказав ей, из чего стиль состоит, — и она потянется к словам, которые лежат ближе всего к самому понятию: «цифровое искусство», «высокая детализация», «кинематографично». Это не описания. Они несут почти никакой информации о конкретном изображении перед ней.
Хуже того, они оставляют пробел, а модель генерации изображений заполняет этот пробел собственной эстетикой по умолчанию — именно тем, что вы и пытались переопределить. Решение — назвать оси, на которые фактически раскладывается стиль, чтобы модели было на что конкретно опереться.
- Медиум и техника: фотография на 35-мм плёнку, гуашь, 3D-рендер, плоская векторная графика, линейная тушь.
- Эпоха или направление, которые часто несут больше информации, чем любое отдельное прилагательное.
- Характер камеры: ощущение фокусного расстояния, глубина резкости, тип плёнки или имитируемый рендер-движок.
- Манера нанесения штриха: толщина линии, поведение кисти, качество краёв, то, как встречаются поверхности.
- Цветокоррекция и цветовая температура — рассматриваемые отдельно от того, какие именно цвета присутствуют.
- Зерно, текстура и финальная обработка поверхности.
- Постобработка: ореол (halation), хроматическая аберрация, растровые точки, cel-шейдинг, сильное сжатие.
Никогда не «улучшайте» референс
Этот момент удивил нас тем, насколько сильно он важен. Каждая модель в цепочке — и та, что считывает изображение, и та, что генерирует по промпту, — имеет склонность к «улучшению». Получив что-то плоское, недоэкспонированное, дёшево освещённое или сжатое, она незаметно возвращает более качественную версию.
Но несовершенство — это тоже стиль. Фото с вечеринки, снятое в прямую вспышку, пересвеченный телефонный снимок, скан низкого разрешения с заметным бандингом — эти качества обычно и являются главной причиной, по которой изображение вообще сохранили. Поэтому теперь инструкция говорит об этом прямо: если изображение любительское, плоское, низкого качества или несовершенное — так и напишите, и сохраните это качество.
Если вы пишете промпты вручную, это самое простое улучшение, доступное вам. Описывайте несовершенства намеренно.
«Пустые» слова о качестве не бесплатны
«Красивый», «потрясающий», «шедевр», «высокая детализация», «8k», «отмеченный наградами». Они кажутся безобидными, как будто вы просто прибавляете громкость. Но это не так. У промпта конечный бюджет внимания, и каждое слово-«наполнитель» забирает часть этого бюджета у терминов, которые на самом деле описывают ваше изображение.
Они также тянут результат к усреднённому виду. У слова «отмеченный наградами» нет визуального значения, поэтому модель разрешает его в то, чему она научилась про то, как выглядят «отмеченные наградами» изображения, — в сильную, типовую эстетику, уводящую от вашего референса. Теперь наша инструкция явно запрещает этот список.
Определите стиль до того, как писать промпт
Если просить и анализ, и результат одним шагом, модель начинает относиться к стилю как к слоту для прилагательного, который можно заполнить чем угодно, что окажется рядом. Теперь инструкция выполняется в два этапа. Прежде чем что-либо написать, модель определяет медиум и технику исполнения, а затем отвечает на один конкретный вопрос.
Назвать это отличие — и есть вся задача. Как только оно названо, промпт пишется так, что медиум и стиль идут первыми, перед субъектом, — потому что именно там любая целевая модель придаёт им наибольший вес.
Каждая модель по-своему считывает промпт
Наши прежние инструкции для отдельных моделей настраивали тон. Промптам для Midjourney предписывалось быть «выразительными», промптам для GPT Image — «прямыми и буквальными». Это стилистический регистр, и не он решает, сохранится ли стиль.
Решает это текстовый энкодер, который использует модель, положение стилевых терминов в промпте и то, какие нативные элементы управления модель предоставляет. Это конкретные вещи, и они различаются гораздо сильнее, чем признаёт большинство гидов по промптингу.
- Nano Banana и GPT Image считывают текст на естественном языке. Указывайте медиум в первой фразе, до субъекта.
- Flux использует энкодер T5, хорошо обрабатывает длинные предложения и полностью игнорирует синтаксис весов, например (term:1.2), — акцент нужно создавать формулировкой и порядком слов.
- Midjourney придаёт большой вес началу промпта, предпочитает плотные фразы через запятую и не понимает отрицание, выраженное обычным текстом.
- Stable Diffusion считывает токены CLIP блоками по 77 токенов и придаёт больший вес началу каждого блока, поэтому теги медиума и стиля должны идти первыми, а не последними.
У Midjourney есть параметр, который борется с вашим описанием
Это самая полезная вещь во всей статье, и она вообще не является техникой написания промптов. Midjourney накладывает поверх вашего промпта собственную эстетику, управляемую параметром --stylize, значение по умолчанию — 100. При этой настройке модель активно склоняется к тому, чтобы изображение выглядело «как Midjourney», а не так, как вы просили.
Поэтому если вы конвертируете референс, а результат раз за разом получается более отполированным, более кинематографичным и более «арт-директированным», чем ваш источник, — никакое количество описаний это не исправит. Именно этот параметр перебивает вас.
Теперь каждый промпт для Midjourney, который мы генерируем, заканчивается на --style raw, что отключает эту «фирменную» эстетику, и низким --stylize около 50. Исключения выражаются через --no, а не обычным текстом, потому что текстовое отрицание здесь не работает.
Для Stable Diffusion половина промпта — негативная
Пользователи Stable Diffusion ожидают два блока: промпт и негативный промпт. Точность передачи стиля сильно зависит от второго, потому что именно там подавляется смещение к типовой эстетике, которое модель применила бы по умолчанию.
Раньше мы генерировали только первый блок, что составляло лишь половину результата. Теперь сгенерированные промпты для Stable Diffusion начинаются с тегов медиума и стиля, применяют вес (term:1.2) экономно — к одному-двум тегам, определяющим внешний вид, — и включают негативный промпт, написанный специально под конкретное изображение, а не скопированный типовой список.
Когда формат вывода и целевая модель расходятся
Инструмент позволяет выбрать формат вывода — обычный промпт, структурированный шаблон, JSON — и отдельно выбрать целевую модель. Эти два выбора могут противоречить друг другу. Требования «верни только валидный JSON» и «напиши теги через запятую, заканчивающиеся параметрами» невозможно выполнить одновременно.
Раньше мы передавали обе инструкции и позволяли модели самой разбираться. Она действительно разбиралась, но по-разному в разных запусках. Эта непоследовательность невидима как баг, но очень заметна как пользовательский опыт: одно и то же изображение с одними и теми же настройками выдаёт промпты заметно разного характера, что воспринимается как случайная потеря стиля.
Теперь приоритет задан явно. Свободные форматы полностью передают вывод целевой модели и применяют её синтаксис и параметры в полном объёме. Структурированные форматы владеют собственной формой, поэтому целевая модель вносит только лексику и не добавляет параметров.
Считывание изображения — это транскрипция, а не сочинение
Одно небольшое изменение с непропорционально большим эффектом: мы понизили temperature семплирования для инструментов, которые считывают изображение. Написание промпта из смутной идеи — это творческий акт, которому идёт на пользу некоторая свобода. Считывание референса ближе к транскрипции, и каждая степень свободы здесь — это степень отклонения от того, что реально находится в кадре.
У Text to Prompt свобода осталась прежней. Image to Prompt и описатель изображений стали заметно более буквальными.
Что из этого стоит взять на вооружение
Большинство из этих изменений можно применить вручную, каким бы инструментом вы ни пользовались.
- Называйте медиум первым, перед субъектом, в каждом промпте.
- Описывайте несовершенства намеренно, потому что модели убирают их, если им не сказать иначе.
- Удаляйте «пустые» слова о качестве — они отнимают внимание и тянут результат к усреднённому виду.
- В Midjourney сначала прибегайте к --style raw и низкому --stylize, прежде чем в очередной раз переписывать промпт.
- В Stable Diffusion относитесь к негативному промпту как к половине всей работы.
- Сначала задайте определяющий вопрос: что делает это изображение таким, какое оно есть?