3,583 papers
arXiv:2512.20362 73 23 дек. 2025 г. FREE

CRAFT: структурированная проверка и итеративная доработка промптов для генерации изображений

КЛЮЧЕВАЯ СУТЬ
T2I-модели теряют детали в длинных промптах. Просишь "красный кот с текстом 'HELLO'" — получаешь серого кота и искажённый "HELO". CRAFT позволяет генерировать изображения с точным соблюдением всех требований — объекты, цвета, композиция, текст. Фишка: промпт разбивается на проверяемые вопросы ("Есть кот?", "Кот красный?", "Текст читается?"), vision-модель проверяет изображение по каждому, и если есть НЕТ — промпт правится только в проблемных местах. Итерации пока не будет 100% — обычно хватает 1-2 круга.
Адаптировать под запрос

TL;DR

CRAFT — метод улучшения генерации изображений через декомпозицию промпта на проверяемые вопросы и целевую коррекцию. Исходный промпт разбивается на набор визуальных вопросов ("Есть ли кот?", "Кот красный?", "Виден ли текст 'HELLO'?"), затем модель генерирует изображение, vision-модель проверяет его по каждому вопросу (ДА/НЕТ), и если есть НЕТ — промпт правится только в проблемных местах. Процесс повторяется пока все вопросы не получат ДА или пока не исчерпан лимит итераций (обычно 2).

T2I-модели плохо держат в голове все ограничения сразу — особенно в длинных промптах с несколькими объектами, атрибутами, отношениями и текстом. Модель может нарисовать кота, но забыть что он красный, или добавить текст но исказить буквы. Происходит это потому что промпт — единственный канал контроля, и чем больше в нём требований, тем выше шанс что что-то потеряется. Холистические проверки ("хорошее ли изображение?") не помогают — неясно что именно не так и как именно исправить.

CRAFT переводит неявные требования в явные вопросы и правит промпт точечно. Система работает в 4 шага за итерацию: (1) Переписывает промпт по правилам T2I (структура, стиль, сохранение текста в кавычках), (2) Генерирует изображение, (3) Проверяет через VLM по списку вопросов с объяснениями почему НЕТ, (4) LLM целенаправленно правит промпт только там где провал. Если все вопросы ДА — останавливается досрочно. Если нет — идёт следующая итерация.

🔬

Схема метода

ПОДГОТОВКА (один раз):
→ Из промпта генерируются визуальные вопросы Q
→ Добавляются проверки текста и артефактов
→ Промпт переписывается по правилам T2I → P₀

ИТЕРАЦИЯ t:
ШАГ 1: Генерация → изображение Iₜ из промпта Pₜ
ШАГ 2: Проверка → VLM отвечает ДА/НЕТ на каждый вопрос + объяснения для НЕТ
ШАГ 3: Оценка → подсчёт score = (число ДА) / (всего вопросов)
ШАГ 4: Выбор → если score выше предыдущего → обновить лучшее изображение
ШАГ 5: Коррекция → LLM правит промпт только по провальным вопросам → Pₜ₊₁

ОСТАНОВКА:
→ Если score = 1.0 (все ДА)
→ Или достигнут лимит итераций (обычно 2)

Все шаги выполняются последовательными запросами к разным моделям (T2I, VLM, LLM).

🚀

Пример применения

Задача: Создать афишу для бара "Синий слон" — синий неоновый слон на фоне ночного города, с текстом "СИНИЙ СЛОН" светящимися буквами сверху.

Промпт (итерация 1):

Создай изображение для афиши бара. В центре — силуэт синего неонового 
слона с подсветкой. Фон — ночной городской пейзаж с размытыми огнями. 
Сверху крупным планом светящийся текст "СИНИЙ СЛОН". Стиль — 
неоновый киберпанк, тёмная цветовая гамма с яркими акцентами.

Проверочные вопросы (генерируются автоматически): - Есть ли на изображении слон? - Слон синего цвета? - Слон выглядит как неоновая вывеска / с подсветкой? - На фоне ночной город? - Огни города размыты? - Виден ли текст "СИНИЙ СЛОН"? - Текст расположен сверху? - Текст выглядит светящимся? - Текст читается полностью и без ошибок? - Изображение выглядит естественно, без артефактов?

Результат итерации 1: VLM проверяет изображение и находит: слон есть (ДА), синий (ДА), неоновый (ДА), но текст искажён — видно "СИНЙ СЛОМ" (НЕТ на вопрос о читаемости). Score = 9/10.

Коррекция промпта: LLM видит провал только по тексту и усиливает инструкцию: добавляет "текст должен быть чётким, читаемым, без искажений букв", уточняет "точная надпись: СИНИЙ СЛОН".

Итерация 2: Генерация с исправленным промптом → проверка → текст теперь читается правильно → score = 10/10 → останов.

🧠

Почему это работает

T2I-модели теряют детали в длинных промптах потому что им нужно одновременно держать в голове объекты, атрибуты, отношения, композицию, стиль и текст. Каждое дополнительное требование размывает внимание. Особенно страдают текст (буквы искажаются), композиция (забывается количество объектов или их расположение) и атрибуты (цвета, размеры). Модель не получает обратной связи — она выдаёт результат и не знает что пошло не так.

VLM хорошо отвечают на бинарные вопросы — "Есть ли X?" гораздо проще чем "Насколько хорошее изображение?". Декомпозиция на вопросы делает проверку однозначной — нет субъективности, нет абстрактных критериев. Плюс VLM может объяснить почему НЕТ ("текст искажён", "не хватает объекта"), что даёт LLM точку опоры для правки.

Целевая коррекция эффективнее полной перезаписи — если 9 из 10 требований выполнены, нет смысла переписывать весь промпт и рисковать потерять работающее. LLM видит только провальные вопросы и их объяснения, и усиливает именно эти части промпта — добавляет уточнения, дубли ключевых слов, явные инструкции ("точная надпись", "без искажений"). Остальное остаётся стабильным.

Рычаги управления: - Число итераций — уменьши до 1 для простых промптов (экономия запросов), увеличь до 3-4 для сложных сцен с текстом - Список вопросов — добавь специфичные проверки ("персонаж смотрит влево", "объект на переднем плане") для точного контроля - Правила переписывания — убери добавление стиля по умолчанию, если хочешь абстрактные результаты - Критерий остановки — можно заменить на "score > 0.9" вместо "score = 1.0" если идеал не критичен

📋

Шаблон промпта

Применимость: Полный автоматический пайплайн требует API-доступа к T2I, VLM и LLM. Но принципы работают вручную в любом T2I-сервисе.

🚀

Вариант 1: Ручное применение принципов (работает в любом T2I-сервисе)

Шаг 1 — Переписывание промпта (используй LLM в чате):

Перепиши мой промпт для текст-в-изображение генерации по этим правилам:

1. СТРУКТУРА: субъект (кто/что) → контекст (окружение, действие) → стиль
2. Если текст в кавычках ("...") — сохрани ДОСЛОВНО, это должно появиться на изображении
3. Если стиля нет — добавь "реалистичный стиль" или другой подходящий
4. Сделай описание чётким, без двусмысленности
5. Сохрани исходную идею, не добавляй лишнего

Исходный промпт: {твой_промпт}

Шаг 2 — Составь проверочные вопросы (используй LLM):

Составь список проверочных вопросов для изображения, чтобы проверить 
выполнены ли все требования. Вопросы должны быть:
- Бинарные (можно ответить только ДА или НЕТ)
- Конкретные (не "хорошее ли", а "есть ли кот", "кот красный")
- С зависимостями (сначала "есть ли объект", потом "его атрибуты")

Промпт: {переписанный_промпт}

Шаг 3 — Генерируй изображение с переписанным промптом в T2I-сервисе

Шаг 4 — Проверка (используй VLM в чате, загрузи изображение):

Ответь на вопросы об этом изображении. Только ДА или НЕТ. 
Если НЕТ — объясни почему.

{список_вопросов}

Шаг 5 — Целевая коррекция (если есть НЕТ):

Исходный промпт: {переписанный_промпт}
Проверочные вопросы с НЕТ: {вопросы_и_объяснения}

Исправь промпт ТОЛЬКО в тех местах, где проверка провалилась. 
Не меняй то, что работает. Усиль формулировки по проблемным частям.

Шаг 6 — Повтори генерацию с исправленным промптом


📋

Вариант 2: Метапромпт для автоматизации (если есть доступ к API или мультимодальному чату)

Ты — система CRAFT для улучшения генерации изображений.

ВХОДНЫЕ ДАННЫЕ:
- Промпт пользователя: {промпт}
- [Опционально] Изображение для проверки

ТВОЯ ЗАДАЧА зависит от этапа:

ЭТАП 1 — ПОДГОТОВКА (если изображения нет):
1. Перепиши промпт по правилам:
   - Структура: субъект → контекст → стиль
   - Текст в кавычках сохраняй ДОСЛОВНО
   - Добавь стиль если нет
   - Убери двусмысленность

2. Составь проверочные вопросы (бинарные ДА/НЕТ):
   - Объекты: "Есть ли X?"
   - Атрибуты: "X цвета Y?"
   - Отношения: "X слева от Y?"
   - Текст: "Виден текст 'Z'?", "Текст читается без ошибок?"
   - Качество: "Нет артефактов?"

3. Выведи:
   - Переписанный промпт
   - Список вопросов
   - Инструкцию: "Сгенерируй изображение, затем загрузи для проверки"

ЭТАП 2 — ПРОВЕРКА (если изображение есть):
1. Ответь на каждый вопрос: ДА или НЕТ
2. Для каждого НЕТ — объясни причину (1 предложение)
3. Посчитай score = (число ДА) / (всего вопросов)

ЭТАП 3 — КОРРЕКЦИЯ (если score < 1.0):
1. Возьми исходный переписанный промпт
2. Усиль ТОЛЬКО те части, где были НЕТ:
   - Добавь уточнения
   - Продубли ключевые слова
   - Сделай инструкцию явной ("точная надпись", "без искажений")
3. Выведи исправленный промпт
4. Инструкция: "Сгенерируй ещё раз с этим промптом"

ЭТАП 4 — ЗАВЕРШЕНИЕ (если score = 1.0):
Выведи: "✅ Все требования выполнены. Изображение готово."

🚀 Быстрый старт — для тех, у кого есть доступ к мультимодальному чату (Claude, GPT-4 с vision):

Вот метод CRAFT для улучшения генерации изображений. Помоги применить его к моей задаче.

Моя задача: [опиши что хочешь сгенерировать]

Используй метод из шаблона выше — начни с ЭТАПА 1.

[вставить "Вариант 2: Метапромпт" выше]

Модель спросит детали промпта, затем выдаст переписанный вариант и список вопросов для проверки. Ты генерируешь изображение в T2I-сервисе, загружаешь его обратно в чат для ЭТАПА 2, получаешь коррекции и повторяешь.

📌

Почему принципы CRAFT работают в ручном режиме

Декомпозиция на вопросы работает потому что заставляет думать конкретно — не "хорошая ли картинка", а "есть ли все объекты", "правильные ли цвета", "читается ли текст". Ты сам видишь чеклист и можешь проверить каждый пункт. Это как code review по чек-листу вместо общего "норм/не норм".

Переписывание по правилам работает потому что убирает двусмысленность — модели лучше понимают структурированные промпты (субъект→контекст→стиль) чем свободный текст. Плюс явное сохранение текста в кавычках сигналит "это нужно отрендерить дословно".

Целевая коррекция работает потому что сохраняет то, что работает — если модель правильно нарисовала композицию но исказила текст, нет смысла переписывать всё. Просто усиль часть про текст ("точная надпись 'X'", "все буквы чёткие") и перегенерируй.

Итеративность с остановкой работает потому что первая итерация даёт 80% результата — исследование показало что уже после 1 коррекции quality score прыгает сильнее всего. Вторая итерация добавляет ещё немного. Третья почти не нужна. Это значит метод эффективен даже если ты сделаешь только 1 круг проверки-коррекции.

📄

Оригинал из исследования (для справки)

Исследователи автоматизировали пайплайн с API: - VLM: GPT-4V для проверки вопросов - LLM: GPT-4 для переписывания и коррекции - T2I: FLUX-Schnell, FLUX-Dev, Qwen-Image, Z-Image-Turbo, FLUX-2 Pro - Параметры: temperature=0.0, фиксированные seeds, 2 итерации по умолчанию

Стоимость: 2 итерации CRAFT добавляют ~$0.0024 ($0.0012 за VLM + $0.00001 за LLM на итерацию) — это 0.6% от стоимости генерации премиум-изображения ($0.42 за 2048×2048 в Hunyuan).

Результаты: - FLUX-Schnell: VQA score +8% (0.78→0.86), DSG score +7% (0.786→0.857), preference win-rate +53% (0.21→0.744) - Qwen-Image: VQA score +8.2% (0.864→0.946), DSG score +7.4% (0.858→0.932), preference win-rate +23% (0.36→0.59) - FLUX-2 Pro: VQA score +4.5% (0.88→0.925), DSG score +4% (0.87→0.91), preference win-rate +12% (0.4→0.52) - Рендеринг текста: FLUX-Schnell улучшился на 7.16% accuracy и +12.91% exact match rate

Особенно сильный эффект на слабых моделях — CRAFT позволяет лёгким генераторам приблизиться к качеству дорогих систем почти без дополнительных затрат.

⚠️

Ограничения

⚠️ Требует API или громоздкой ручной работы: Автоматический пайплайн невозможен без доступа к T2I API, VLM API и LLM API. Ручное применение принципов работает, но требует копирования между сервисами: генерация в одном месте (Midjourney/Stable Diffusion), проверка в другом (ChatGPT/Claude с загрузкой изображения), коррекция промпта, повторная генерация.

⚠️ Зависит от качества VLM: Если vision-модель плохо распознаёт текст или объекты на изображении, она даст ложные НЕТ → коррекция пойдёт не туда. Исследование использовало GPT-4V — более слабые VLM могут быть менее надёжными.

⚠️ Затраты на итерации: Каждая итерация = новая генерация изображения. Если T2I-сервис дорогой (Midjourney, премиум DALL-E), 2-3 итерации умножают стоимость. Выгодно для API-доступа к дешёвым моделям, невыгодно для подписок с лимитами.

⚠️ Не для быстрых задач: Если нужно просто "красивая картинка" без строгих требований, овчинка выделки не стоит. CRAFT полезен когда есть конкретные ограничения — текст, композиция, множественные объекты с атрибутами.

⚠️ Эффект насыщается: После 2 итераций улучшения минимальны — третья и четвёртая дают крошечный прирост. Для 95% задач достаточно 1-2 кругов.

🔗

Ресурсы

CRAFT: Continuous Reasoning and Agentic Feedback Tuning for Multimodal Text-to-Image Generation

V. Kovalev, A. Kuvshinov, A. Buzovkin, D. Pokidov, D. Timonin

Отсылки: DSG (Davidsonian Scene Graph), GenEval, Parti-Prompt benchmark

Контакт: {valentin, alexander, denis, alexb, dima}@flymy.ai


📋 Дайджест исследования

Ключевая суть

T2I-модели теряют детали в длинных промптах. Просишь "красный кот с текстом 'HELLO'" — получаешь серого кота и искажённый "HELO". CRAFT позволяет генерировать изображения с точным соблюдением всех требований — объекты, цвета, композиция, текст. Фишка: промпт разбивается на проверяемые вопросы ("Есть кот?", "Кот красный?", "Текст читается?"), vision-модель проверяет изображение по каждому, и если есть НЕТ — промпт правится только в проблемных местах. Итерации пока не будет 100% — обычно хватает 1-2 круга.

Принцип работы

Не спрашивай холистически "хорошее ли изображение?" — спроси конкретно по каждому требованию. Декомпозиция: промпт → набор бинарных вопросов ("Есть объект X?", "X цвета Y?", "Виден текст 'Z'?") Проверка: vision-модель отвечает ДА/НЕТ + объясняет почему НЕТ Коррекция: LLM правит промпт только там где провал — усиливает формулировки, добавляет уточнения Целевая коррекция сохраняет то что работает — если 9 из 10 требований выполнены, нет смысла переписывать всё. Правишь только проблемную часть.

Почему работает

T2I-модели теряют детали потому что держат в голове всё сразу — объекты, атрибуты, отношения, композицию, стиль, текст. Каждое дополнительное требование размывает внимание. Особенно страдают текст (буквы искажаются) и композиция (забывается количество объектов). VLM хорошо отвечают на бинарные вопросы — "Есть ли X?" проще чем "Насколько хорошее изображение?". Декомпозиция делает проверку однозначной — нет субъективности. Плюс VLM объясняет почему НЕТ ("текст искажён"), что даёт точку опоры для правки. Уже 1 итерация даёт 80% результата — первая коррекция прыгает сильнее всего, вторая добавляет немного, третья почти не нужна.

Когда применять

Генерация изображений через текст-в-изображение сервисы → конкретно для сложных промптов с несколькими объектами, атрибутами, композицией и текстом, особенно когда модель забывает детали или искажает текст. НЕ подходит для простых промптов ("пейзаж леса") — овчинка выделки не стоит.

Мини-рецепт

Полный пайплайн требует API к T2I, VLM и LLM. Но принципы работают вручную в любом T2I-сервисе:

1. Переписывание (через LLM): структура субъект→контекст→стиль, текст в кавычках дословно — это появится на картинке
2. Вопросы (через LLM): бинарные по объектам ("Есть X?"), атрибутам ("X цвета Y?"), тексту ("Читается 'Z'?", "Без ошибок?")
3. Генерация: используй переписанный промпт в T2I-сервисе
4. Проверка (через VLM): загрузи изображение в vision-модель (Claude, GPT-4), задай вопросы, получи ДА/НЕТ + объяснения
5. Правка (если НЕТ): через LLM покажи промпт + вопросы с НЕТ, попроси исправить только проблемные части
6. Повтор: обычно хватает 1-2 круга

Примеры

[ПЛОХО] : Создай афишу для бара — синий неоновый слон на фоне ночного города с текстом "СИНИЙ СЛОН"
[ХОРОШО] : Сначала переписываешь структурно (субъект→контекст→стиль), генерируешь вопросы ("Есть слон?", "Слон синий?", "Виден текст 'СИНИЙ СЛОН'?", "Текст читается без ошибок?"), генерируешь изображение, проверяешь через VLM — получаешь НЕТ на "текст читается" (видно "СИНЙ СЛОМ"), правишь промпт только в части текста ("точная надпись: СИНИЙ СЛОН, все буквы чёткие"), перегенерируешь. Обычно со второй попытки все вопросы ДА.
Источник: CRAFT: Continuous Reasoning and Agentic Feedback Tuning for Multimodal Text-to-Image Generation
ArXiv ID: 2512.20362 | Сгенерировано: 2026-01-08 23:43
📖 Простыми словами

CRAFT: структурированная проверка и итеративная доработка промптов для генерации изображений

arXiv: 2512.20362

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

Это как если бы ты заказал ремонт в квартире и не просто ушел на месяц, а заходил каждый день со списком вопросов. «Розетки на месте? Стены ровные? Плитка не отвалилась?» Если на какой-то вопрос ответ «нет», рабочий переделывает конкретный косяк, а не сносит весь дом до фундамента. CRAFT делает ровно то же самое — он дробит твою хотелку на атомарные вопросы, на которые можно ответить только «да» или «нет».

Вся магия держится на декомпозиции промпта и обратной связи от vision-модели. Сначала система разбирает твой запрос на запчасти: есть ли синий слон, горит ли неон, правильно ли написан текст. После первой попытки «зрячая» нейронка проверяет результат по этому чек-листу. Если она видит, что слон розовый, а текст превратился в иероглифы, она выдает целевую коррекцию — заставляет модель перерисовать именно эти куски, пока все галочки в списке не станут зелеными.

Обычно хватает всего 2 итераций, чтобы картинка пришла в норму. Исследователи тестировали это на самых больных местах — отрисовке текста, сложных композициях и мелких атрибутах. Принцип универсален: неважно, генерируешь ты постер для бара или сложную схему для презентации, CRAFT гарантирует, что детали не потеряются по дороге. Это переход от слепого творчества к контролируемому результату, где каждый элемент промпта имеет значение.

Короче, эпоха «напиши промпт и молись» заканчивается. CRAFT доказывает, что нейронке нужна не просто мощь, а нормальный менеджер, который будет бить по рукам за каждый косяк. Вместо того чтобы плодить сотни случайных вариантов в надежде на чудо, проще проверять и дожимать конкретные детали. Кто начнет использовать такие циклы обратной связи, перестанет тратить время на «удачные дубли» и начнет получать ровно то, что заказывал.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с