TL;DR
PROVE — метод, который восстанавливает текстовый промпт по готовому изображению через цепочку проверок: сначала модель предполагает что на картинке, потом каждое утверждение проверяется отдельно против конкретного участка изображения, и в финальный промпт попадает только то, что прошло проверку.
Обычные способы «угадать промпт по картинке» страдают одной болезнью: языковая модель придумывает детали, которых на самом деле нет. Она видит человека с чашкой и пишет «мужчина пьёт кофе за деревянным столом у окна» — хотя окна на фото нет, это модель дофантазировала для связности текста. Проблема в том, что такие фантазии невозможно отличить от реальных деталей — текст звучит одинаково убедительно.
PROVE решает это, разбивая описание на атомарные утверждения («мужчина», «держит чашку», «стол деревянный») и проверяя каждое по отдельности: система вырезает конкретный участок фото и спрашивает — соответствует ли утверждение именно этому кусочку картинки. Если да — утверждение остаётся, если нет — выбрасывается. Это как детектор лжи для описания, где каждая фраза должна доказать своё право на существование.
Схема метода
ШАГ 1 (Предположение): VLM генерирует общее описание картинки + список всех объектов → черновой список утверждений
ШАГ 2 (Поиск объектов): По списку объектов детектор находит на фото конкретные области (bounding boxes) → координаты + метки
ШАГ 3 (Детальное описание): Каждая найденная область вырезается отдельно, модель описывает именно её → детальные утверждения по каждому объекту
ШАГ 4 (Проверка/фильтр): Каждое утверждение сравнивается через CLIP с вырезанным участком — если сходство недостаточно, утверждение отбрасывается → список подтверждённых фактов
ШАГ 5 (Точные факты): Количество объектов, их расположение друг относительно друга — вычисляется напрямую по координатам, без модели → жёсткие факты (не проверяются через CLIP, они и так точные)
ШАГ 6 (Сборка): Все подтверждённые факты собираются в один связный текст-промпт → финальный текст
Все шаги идут внутри одного автоматизированного пайплайна (не ручной чат-диалог) — но принцип применим и вручную.
Пример применения
Задача: Вы наткнулись на крутую AI-иллюстрацию в Pinterest или на арт-сайте и хотите понять, каким промптом её могли сгенерировать — чтобы сделать что-то похожее для обложки своего телеграм-канала.
Промпт (адаптация принципа проверки под ручной чат):
Вот изображение [прикрепить картинку].
Сделай это в 3 шага, не пропуская проверку:
ШАГ 1. Опиши картинку в целом одним предложением.
Затем перечисли ВСЕ отдельные объекты, которые видишь (люди, предметы, фон).
ШАГ 2. Для КАЖДОГО объекта из списка выше — опиши его отдельно
и детально: как он выглядит, какого цвета, что делает, где расположен.
ШАГ 3. Теперь пройди по каждому детальному описанию из шага 2
и проверь: это то, что ТОЧНО видно на изображении,
или это твоё предположение/додумывание?
Помечай каждый пункт как [ТОЧНО ВИДНО] или [ПРЕДПОЛОЖЕНИЕ].
Убери всё, что помечено как предположение.
ШАГ 4. Собери всё, что осталось после проверки, в единый
связный промпт для генерации похожего изображения в Midjourney.
Результат: Модель выдаст три отдельных блока — общий список объектов, детальное описание каждого, и финальную проверку с пометками. В последнем блоке — чистый промпт, где убраны фантазийные детали (типа «уютная атмосфера» или «мягкий свет из окна», если окна на фото не было). Промпт будет менее «красивым» литературно, но точнее передаст реальный состав картинки.
Почему это работает
Языковые модели плохо держат в голове проверку фактов, когда генерируют длинный связный текст за один проход — им важнее сделать текст гладким и правдоподобным, чем точным. Из-за этого описание картинки часто дополняется «логичными» деталями, которых там нет: если на фото человек в спортивной одежде, модель может дописать «бежит по парку», хотя парка нет.
Зато модели хорошо справляются с узкой локальной задачей — сравнить одно конкретное утверждение с одним конкретным куском изображения. Это уже не творческое сочинение, а сфокусированная проверка «да/нет».
PROVE использует именно это: разбивает большую творческую задачу на маленькие проверочные. Вместо «опиши всё честно» (что модель не умеет делать надёжно) — «опиши по частям, и каждую часть отдельно проверь на соответствие». Это как просить не «напиши правду», а «напиши черновик, потом построчно сверь с фактами и вычеркни лишнее».
Рычаги управления: - Строгость проверки (порог CLIP-сходства) → в чате это можно заменить на инструкцию «будь строг/будь мягче в оценке точности» - Уровень детализации разбивки (по объектам целиком или по каждому атрибуту объекта отдельно) → чем мельче разбивка, тем точнее, но длиннее процесс - Отдельный шаг для «точных фактов» (счёт объектов, расположение) → в ручном режиме можно попросить модель сначала посчитать объекты буквально, а потом уже описывать стиль
Шаблон промпта
Проанализируй это изображение: {ссылка_или_файл}
Работай в 4 шага, не смешивай их:
1. ОБЩАЯ КАРТИНА: одно предложение о сюжете + список всех различимых объектов/элементов.
2. ДЕТАЛИ ПО КАЖДОМУ ОБЪЕКТУ: для каждого элемента из списка — отдельное
подробное описание (внешний вид, действие, положение в кадре).
3. ПРОВЕРКА ФАКТОВ: пройди по каждому пункту из шага 2 и оцени —
это прямое наблюдение с картинки, или логичное, но непроверяемое допущение?
Отметь [ФАКТ] или [ДОПУЩЕНИЕ]. Оставь только [ФАКТ].
4. СБОРКА: объедини всё оставшееся в единый связный текст-промпт
для {целевой_инструмент: Midjourney/DALL-E/Stable Diffusion}.
Задача: {что хочешь получить в итоге — например, "восстановить промпт для похожей иллюстрации"}
🚀 Быстрый старт — вставь в чат:
Вот шаблон метода PROVE (проверенное восстановление промпта). Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какое изображение анализировать и для какого генератора картинок готовится промпт — потому что без этого невозможно понять, какую степень детализации и формат текста нужно выдать на выходе.
Ограничения
⚠️ Плохо считает и путает расположение: Модель, которая проверяет утверждения (CLIP), сама по себе плохо считает количество объектов и плохо понимает пространственные отношения («слева», «за», «между»). Поэтому в оригинальном методе счёт и расположение вычисляются отдельно, напрямую по координатам находок — не через проверку текстом. В ручном чате это придётся компенсировать явной инструкцией «посчитай объекты буквально, не через общее впечатление».
⚠️ Не работает без визуального доступа к картинке: Метод требует, чтобы модель могла разглядеть конкретные участки изображения отдельно от целого. В чате с картинками (Claude, ChatGPT с Vision) это работает, но если у вас только текстовое описание картинки — метод неприменим.
⚠️ Жертвует красотой текста ради точности: Проверенный промпт будет суше и менее «художественным», чем то, что напишет модель без проверки. Если вам нужен красивый связный текст, а не точное восстановление — этот метод не для того.
Как исследовали
Команда взяла три источника картинок: реальные фото из MS-COCO и Flickr30K (обычные бытовые сцены с кучей предметов) и Lexica — базу AI-арта с промптами, которыми их сгенерировали. По 100 картинок из каждого источника прогнали через PROVE и через семь конкурирующих методов — оптимизационных, на основе автоописания (типа BLIP) и на основе обучения с подкреплением (PromptMiner).
Дальше каждый восстановленный промпт заново подавали в две топовые модели генерации картинок (FLUX и Stable Diffusion 3.5), и сравнивали получившуюся картинку с оригиналом — насколько она похожа визуально и насколько текст промпта соответствует смыслу картинки.
Главный неожиданный результат: PROVE обошёл почти все конкурирующие методы, включая RL-подход PromptMiner, который специально обучался именно на восстановление промптов. Логика проста — RL-метод настраивался под конкретный генератор картинок и рисковал переобучиться именно под его особенности, а PROVE вообще не тренировался и не был привязан к конкретному генератору — он просто честно проверял факты.
Также проверили устойчивость метода к защитам от кражи промптов (шум, разбивка на пазл, водяные знаки) — PROVE оказался устойчивее, потому что работает через смысловые каналы (что на картинке есть), а не через пиксельные детали, которые легко испортить шумом.
