TL;DR
Когда работаешь с мультимодальным AI (GPT-4V, Claude с изображениями, Gemini), модель плохо понимает пространственные отношения — что ближе к камере, что дальше, что за чем стоит. Самый очевидный «фикс» — показать дополнительную картинку с картой глубины — систематически ухудшает результат. DOP — техника, которая переводит этот же сигнал глубины в одну короткую текстовую фразу: «стул стоит ближе к камере, чем стол» — и добавляет её в промпт.
Главная находка называется form dependence — зависимость от формы подачи. Один и тот же факт («стул в 1.2 метра, стол в 2.8 метра») может навредить, если показать как изображение, но помочь, если сказать как текст. Карта глубины как второй файл конкурирует с основным изображением за «внимание» модели, вносит новые визуальные артефакты, и модель не может её легко проигнорировать даже когда она ошибается. Текстовая подсказка — другое: модель умеет взвешивать текст против визуального ответа и откатывается к картинке, когда изображение уже достаточно информативно.
Метод работает в три шага: определить объекты на изображении → оценить глубину для каждого из них → добавить в промпт одну текстовую фразу об их порядке по глубине. Ключевое: не число («1.2 метра»), а ординальное отношение — «А ближе, чем Б». Это устойчивее к ошибкам оценки глубины.
Схема метода
(Шаги 1-2 работают во внешнем инструменте или вручную. Шаг 3 — в чате.)
ШАГ 1: Определить объекты вопроса → список [объект A, объект B]
ШАГ 2: Оценить глубину каждого → ординальное отношение "A ближе/дальше чем B"
ШАГ 3: Добавить к промпту: "[объект A] appears closer than [объект B]" → один VLM-запрос
Пример применения
Задача: Ты риелтор и просишь GPT-4V / Claude проанализировать фото комнаты: «какие зоны доминируют визуально, а какие кажутся второстепенными?» Модель путается в глубине и смешивает передний план с фоном.
Промпт:
Вот фото гостиной. Перед тем как анализировать, учти пространственный контекст:
Диван расположен ближе к камере, чем стеллаж с книгами.
Журнальный столик находится ближе к камере, чем телевизор на стене.
Окно — самый дальний объект от точки съёмки.
Теперь ответь: какие зоны воспринимаются как доминирующие,
а какие — как фоновые? Что нужно изменить, чтобы усилить ощущение простора?
Результат: Модель получит явные «якоря» глубины перед анализом и не будет переоценивать объекты на заднем плане. Ответ будет содержать конкретные пространственные наблюдения — «диван занимает передний план и создаёт ощущение тесноты», а не абстрактные суждения о «стиле интерьера».
Почему это работает
LLM плохо читает пространство из изображений. Модель обучена на тексте, пространственные отношения в картинке она кодирует во внутреннее представление — но к тому моменту, когда нужно делать вывод («что ближе?»), этот сигнал становится нелинейно запутанным. Модель его в каком-то смысле «знает», но не может на него опереться при рассуждении.
Второе изображение — дополнительный груз, не помощь. Когда ты добавляешь карту глубины как отдельную картинку, модель должна: совместить две картинки в голове, понять цветную шкалу (тепловая карта — это что именно?), проигнорировать её когда она ошибается. Замороженная (не дообученная) модель плохо справляется с таким взвешиванием — она скорее сдвинется к «привычному» визуальному инстинкту с основного фото.
Текст — родной канал для рассуждений. Текстовая подсказка конкурирует с визуальным сигналом на равных: если картинка уже даёт уверенный ответ, модель игнорирует текстовую подсказку. Если картинка неоднозначна — опирается на текст. Это самоуправляемое поведение — никакого дополнительного «гейта» не нужно.
Рычаги управления: - Ординальное vs. числовое — «стул ближе, чем стол» работает лучше, чем «стул 1.2м, стол 2.8м». Числа вносят ложную точность и вводят модель в заблуждение при ошибках - Только целевые объекты — не описывай глубину всей сцены. Только те объекты, о которых задаётся вопрос - Формулировка — «appears closer than» (кажется ближе) лучше декларативного «is closer» — оставляет модели пространство для маневра при конфликте с визуальными данными
Шаблон промпта
Перед ответом учти пространственный контекст изображения:
{объект_1} расположен ближе к камере, чем {объект_2}.
{объект_3} находится дальше от камеры, чем {объект_1}.
[Добавь строки для других пар объектов, если нужно]
{вопрос_к_изображению}
Что подставлять:
- {объект_1}, {объект_2} — конкретные объекты на изображении, о которых идёт вопрос
- {вопрос_к_изображению} — твой основной вопрос к модели
- Глубину оцениваешь сам — визуально или с помощью инструмента
🚀 Быстрый старт — вставь в чат вместе с изображением:
Используй этот шаблон для анализа моего изображения.
Адаптируй под мою задачу: [опиши что хочешь понять из фото].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит об объектах на изображении и о твоей задаче — потому что метод требует знать, о каких конкретно объектах ты спрашиваешь, чтобы составить нужные пространственные подсказки.
Ограничения
⚠️ Нужна локализация объектов: метод работает только если ты знаешь, о каких объектах в изображении речь. Если вопрос абстрактный («что происходит на фото?») — некому задавать глубину.
⚠️ Оценку глубины нужно делать самому: полноценный DOP требует инструмент типа DepthAnything-v2. Ручная оценка работает для явных случаев (явный передний/задний план), но может ошибиться на сложных сценах.
⚠️ Не работает если изображение и само даёт ответ: там, где модель уже уверена по картинке (CV-Bench: 92.8%), добавление текстовой подсказки не даёт прироста — лишняя работа.
⚠️ Бесполезно для абстрактных точечных сцен: в тестах типа BLINK (отметки-точки без реальных объектов) метод не работал — нет физических объектов для считывания глубины.
Как исследовали
Идея была простой: взять одно и то же изображение, одну и ту же информацию о глубине — и подать её модели в разных форматах. Исследователи тестировали шесть замороженных VLM на нескольких пространственных бенчмарках с тысячами пар объектов. Baseline: только RGB-картинка. Варианты: карта глубины как второй файл, сырые числа глубины в тексте, CoT-промпт, описание координат боксов, и собственно DOP (ординальная текстовая подсказка).
Что удивило: добавление карты глубины как изображения ухудшало результат на −16 до −27 процентных пунктов на нескольких бенчмарках — то есть модель деградировала сильнее, чем если бы карту вообще не добавляли. При этом GT-глубина (точная, из лидара) помогала на региональных задачах (+14pp на NYU). Противоречие разрешается через структуру ошибки: региональная задача усредняет много пикселей, случайные ошибки гасятся. Объектная задача зависит от точного сравнения двух небольших областей — один неверный пиксель переворачивает ответ.
В диагностическом эксперименте исследователи «вшивали» чистый сигнал глубины напрямую в первый слой языкового декодера модели — в обход визуального кодировщика. Это дало +13pp — почти столько же, сколько идеальная GT-карта. Вывод: модель умеет использовать глубину, но к финальным слоям сигнал становится нелинейно запутанным и недоступным. Текст возвращает этот сигнал в читаемую форму — без дообучения.
Оригинал из исследования
# Формальная запись метода (DOP)
Require: Original image I; spatial question q; queried objects O = {oi}^k_{i=1}
with regions B = {Bi}^k_{i=1}; frozen VLM fθ; monocular depth estimator g.
1: D ← g(I) # Pseudo-depth used internally only
2: Convert D to a common convention where larger values mean closer.
3: for each queried object oi do
4: di ← Pool{D(u): u ∈ Bi} # Object-level depth readout (mean pooling)
5: end for
6: rq ← πq(d1, ..., dk) # Question-targeted ordinal relation
7: cq ← τ(rq) # Verbalize as a short text cue
8: return fθ(I, q ⊕ cq) # One VLM inference with cued prompt
# Example verbalization:
rij: "the chair appears closer than the table"
# Final prompt: [original question] + "the chair appears closer than the table"
Контекст: Авторы запускали DepthAnything-v2-Large на входном изображении, извлекали средние значения глубины из аннотированных боксов объектов, сравнивали их (больший = ближе по конвенции), вербализовывали в одно предложение и приписывали к промпту перед вопросом.
Адаптации и экстраполяции
💡 Адаптация: анализ презентаций и инфографики
DOP-принцип работает не только для фото. Если просишь AI разобрать схему или диаграмму — явно укажи иерархию важности элементов.
На этой диаграмме архитектуры системы:
Компонент "API Gateway" находится на верхнем уровне (ближайший к пользователю).
"База данных" — на нижнем уровне (дальний от пользователя).
"Сервис обработки" — на среднем уровне между ними.
Теперь объясни, как запрос пользователя проходит через систему.
🔧 Техника: ординальные подсказки для временны́х отношений
Тот же принцип работает для времени, не только пространства. Если просишь проанализировать таймлайн событий — не надейся что модель поймёт хронологию из контекста. Скажи явно:
Учти последовательность событий:
Событие A произошло до события B.
Событие C — одновременно с B, но после A.
[Твой вопрос об анализе этих событий]
🔧 Принцип «форм-зависимости» в других контекстах
Form dependence — универсальный инсайт за пределами глубины. Когда хочешь передать AI дополнительный контекст к изображению:
- ❌ Не добавляй вторую картинку с выделениями/аннотациями, если это не критично
- ✅ Опиши словами что важно и в каком отношении: «Красная область — это зона дефекта, синяя — норма»
Модель лучше взвешивает текстовые инструкции против собственного «зрения», чем конкурирующие изображения.
Ресурсы
When Depth Is Better Told Than Shown: Depth-Ordinal Prompting for Vision-Language Spatial Reasoning
Авторы: Quynh Vo, Phuc Dao, Cong-Duy Nguyen, Thong Nguyen
Аффилиация: National University of Singapore; Center of AI Research, VinUniversity
Инструменты из исследования: DepthAnything-v2 (huggingface), DPT-Large, ZoeDepth
Бенчмарки: EmbSpatial-Bench, CV-Bench, NYU Depth V2, BLINK, VSR, 3DSR-Bench, KITTI
