中文翻译暂不可用,显示俄语原文。

Как вы тестируете видение модели (vision-language) на пропущенные детали?

Краткий тезис

Тестирование vision-language моделей (VLM) на пропущенные детали — это проверка, замечает ли модель тонкие визуальные нюансы, такие как предлоги, множественное число, отрицания или замену объектов. Основной подход — бенчмарк VALSE (Vision and Language Structured Evaluation), где изображения модифицируются, а модель должна ответить, соответствует ли описание картинке. Дополнительно используются adversarial примеры, LLM-as-judge и повповеденческое тестирование (behavioral testing) для выявления систематических ошибок.


1. Термин: Vision-Language Model (VLM)

Vision-Language Model — модель, способная одновременно обрабатывать изображения и текст. Примеры: CLIP, BLIP, LLaVA, GPT-4V. Такие модели используются в Agentic RAG для анализа визуальной информации (схемы, графики, фотографии) и генерации ответов на естественном языке.

Проблема пропущенных деталей (missing details) — модель может игнорировать мелкие, но критически важные элементы: цвет объекта, его количество, пространственное расположение («слева от», «над»), отрицание («нет яблока»). Это снижает faithfulness (точность) ответа.


2. Бенчмарк VALSE (Vision and Language Structured Evaluation)

VALSE — набор тестов, специально разработанный для проверки, насколько VLM понимает лингвистические конструкции, требующие внимания к деталям. Состоит из шести задач:

ЗадачаСутьПример
Предлоги (prepositions)Проверка понимания пространственных отношений«Кошка под столом» vs «Кошка на столе»
Множественное число (plurals)Различение единственного/множественного числа«Одно яблоко» vs «Два яблока»
Отрицания (negations)Понимание отрицательных конструкций«На картинке нет собаки»
Подмена объектов (object substitution)Замена одного объекта на другойВместо «чашка» — «книга»
Счёт (counting)Точное количество объектов«Три мяча» vs «Четыре мяча»
Семантическая роль (semantic role)Кто выполняет действие«Мальчик гладит собаку» vs «Собака гладит мальчика»

Метрика VALSE: accuracy на каждом поднаборе. Низкий score на предлогах или отрицаниях указывает на то, что модель «смотрит, но не видит» детали.


3. Методология тестирования: подмена объектов и модификация изображений

Ключевой приём — контролируемая модификация изображения при сохранении текста (или наоборот). Создаются пары (image, caption), где только один элемент изменён.

Пример с подменой объекта:

  • Исходное: изображение с яблоком, текст «На столе лежит яблоко».
  • Модифицированное: то же изображение, но яблоко заменено на апельсин (через inpainting или ручное редактирование). Текст остаётся «На столе лежит яблоко».
  • Ожидание: VLM должна сказать «не соответствует» (или низкий score similarity).

Псевдокод теста:

def test_object_substitution(model, original_img, modified_img, caption):
    score_orig = model.score(original_img, caption)  # должно быть высоко
    score_mod = model.score(modified_img, caption)    # должно быть низко
    return score_orig > threshold and score_mod < threshold

Важно: модификации должны быть минимальными, чтобы модель не могла «списать» на общее изменение сцены. Используются adversarial perturbations (например, замена текстуры, изменение цвета, добавление/удаление мелких объектов).


4. Другие бенчмарки и подходы

БенчмаркФокусОписание
WinogroundКомпозициональностьДва изображения и два текста, нужно сопоставить правильно (например, «девочка кормит кошку» vs «кошка кормит девочку»)
VL-CheckListПоведенческое тестированиеНабор минимальных пар (image, caption) с изменениями цвета, размера, количества, отрицания
COCO-TextТекст на изображенияхПроверка, читает ли модель надписи (важно для документов)
A-OKVQAВопросы с визуальными рассуждениямиТребует не только распознавания, но и логики (например, «Почему человек держит зонт?»)

LLM-as-judge — использование сильной LLM (GPT-4, Claude) для оценки ответов VLM. Например, даём VLM изображение и вопрос, затем LLM проверяет, учтены ли все детали. Это позволяет автоматизировать тестирование без ручной разметки.


5. Метрики для оценки пропущенных деталей

МетрикаОписаниеФормула
Accuracy на VALSEДоля правильных ответов по каждой задачеTP+TN / total
Recall пропущенных деталейДоля случаев, когда модель заметила изменениеTP / (TP+FN)
F1-scoreБаланс между точностью и полнотой2*P*R/(P+R)
Faithfulness (через LLM)Оценка, насколько ответ соответствует изображениюШкала 1–5 от LLM-судьи

Пример расчёта:

  • 100 тестов на отрицания: модель правильно определила «нет» в 80 случаях → Recall = 0.8.
  • Если модель часто говорит «есть», когда объекта нет → низкая точность (precision).

6. Тестирование в контексте Agentic RAG

В Agentic RAG агент может получать изображение (например, скриншот дашборда) и должен извлечь из него точные данные для ответа. Тестирование на пропущенные детали здесь критично:

  • Сценарий: агент видит график с тремя линиями, пользователь спрашивает «Какая линия самая высокая?». Если модель не заметила одну линию — ответ неверен.
  • Метод: создаём датасет изображений с контролируемыми изменениями (удаление линии, изменение цвета, подпись оси) и проверяем, что агент даёт правильный ответ.

Инструменты:

  • VLM-based agent (LLaVA, GPT-4V) + retrieval (если агент ищет дополнительные документы).
  • Тестовый фреймворк: pytest с параметризацией по типам модификаций.

7. Adversarial тестирование

Adversarial примеры — минимальные изменения, которые человек легко замечает, а модель — нет. Примеры:

  • Изменение цвета: на изображении красный мяч, текст «синий мяч». Модель должна сказать «не соответствует».
  • Добавление шума: небольшой шум, скрывающий мелкий объект.
  • Перекрытие: объект частично закрыт другим объектом.

Метрика: adversarial robustness — доля примеров, где модель правильно реагирует на изменение.


8. Практические советы по организации тестирования

  1. Создайте тестовый датасет на основе существующих (COCO, Visual Genome) с ручными или автоматическими модификациями.
  2. Используйте VALSE как baseline — запустите на своей модели и сравните с SOTA.
  3. Автоматизируйте генерацию модификаций через библиотеки (PIL, OpenCV, inpainting модели).
  4. Включите тесты в CI/CD — при каждом обновлении модели проверяйте, не упала ли accuracy на деталях.
  5. Анализируйте ошибки по категориям: предлоги, счёт, отрицания — чтобы понять слабые места.

Пример структуры теста:

import pytest
from my_vlm import MyVLM

test_cases = [
    ("cat_on_mat.jpg", "The cat is on the mat.", True),
    ("cat_on_mat.jpg", "The cat is under the mat.", False),  # preposition test
    ("two_apples.jpg", "There are two apples.", True),
    ("two_apples.jpg", "There is one apple.", False),        # counting test
]

@pytest.mark.parametrize("img_path,caption,expected", test_cases)
def test_detail_awareness(img_path, caption, expected):
    model = MyVLM()
    result = model.check(img_path, caption)  # возвращает True/False
    assert result == expected

9. Связь с другими вопросами

ВопросТема
287Как вы оцениваете качество ответов агента?
289Как вы тестируете агента на галлюцинации?
290Какие метрики вы используете для оценки агента?
291Как вы обеспечиваете, что агент не пропускает важные шаги?
292Как вы тестируете агента на сложных многокомпонентных запросах?
293Как вы оцениваете, что агент правильно интерпретирует визуальные данные?

10. Пет-проект для закрепления

Задача: Создать тестовый набор для VLM (например, LLaVA) на пропущенные детали, используя VALSE-подход.

Инструменты:

  • Python, PyTorch, Hugging Face Transformers.
  • OpenCV, PIL для модификации изображений.
  • Библиотека valse (если есть) или ручная генерация.

Шаги:

  1. Выберите 50 изображений из COCO (по 10 на каждую категорию: предлоги, счёт, отрицания, подмена, множественное число).
  2. Для каждого изображения создайте 2–3 модифицированные версии (например, замените объект, измените количество, добавьте отрицание в текст).
  3. Напишите скрипт, который для каждой пары (image, caption) вызывает VLM и получает score (cosine similarity для CLIP или вероятность для LLaVA).
  4. Вычислите accuracy, recall, precision по каждой категории.
  5. Визуализируйте результаты в виде таблицы и heatmap ошибок.

Ожидаемый результат: Отчёт, показывающий, на каких типах деталей модель ошибается чаще всего. Например: «Accuracy на предлогах — 65%, на отрицаниях — 80%». Это позволит целенаправленно улучшать модель (дообучение на таких примерах).


11. Навигация


Навигация