English translation is not available yet. Showing Russian content.

Как работает модели типа Kosmos-2 (grounding объектов на изображении)?

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

Kosmos-2 (Microsoft) — это мультимодальная языковая модель (VL-LLM), которая умеет не только описывать изображение, но и точно указывать, где на картинке находятся упомянутые объекты — то есть выполнять grounding. Для этого модель генерирует текст вместе с координатами bounding boxes, закодированными специальными токенами. Kosmos-2 обучается на парах «изображение — текст с разметкой» (COCO, Visual Genome) и может отвечать на вопросы вроде «Где кошка?», возвращая bounding box. Это ключевой шаг к RAG|agentic RAG — модель может «смотреть» на изображение и ссылаться на конкретные области.


1. Термин: Grounding (привязка к изображению)

Grounding — это способность модели связать текстовое упоминание объекта с его пространственным расположением на изображении. В отличие от простого распознавания объектов (object detection), grounding выполняется в контексте естественного языка: модель не просто выдаёт список объектов, а отвечает на вопрос или генерирует описание, одновременно указывая координаты.

Зачем grounding в RAG
В RAG|agentic RAG агент может получать изображения как часть запроса. Если агент умеет локализовать объекты, он может:

  • уточнить вопрос («А какой именно стол?»);
  • передать bounding box в другой инструмент (например, обрезку изображения);
  • повысить интерпретируемость ответа.

2. Архитектура Kosmos-2

Kosmos-2 построена на основе трансформерной архитектуры с кросс-модальным вниманием. Основные компоненты:

КомпонентОписание
Vision EncoderCLIP ViT-L/14 — извлекает признаки из изображения (patch embeddings).
ResamplerСлой, который преобразует последовательность визуальных признаков в фиксированное число токенов (например, 64 или 256).
Language ModelБольшая языковая модель (LLM) на основе трансформера (например, 1.3B или 7B параметров).
Grounding HeadДополнительный линейный слой, который предсказывает координаты bounding box для каждого специального токена <box>.

Отличие от Flamingo Kosmos-2 использует прямую токенизацию координат (см. раздел 3), а не отдельный детектор. Это позволяет модели генерировать bounding boxes авторегрессивно, как часть текста.


3. Токенизация bounding boxes

Kosmos-2 вводит токены|специальные токены для кодирования координат:

  • <box> — начало bounding box;
  • <x1>, <y1>, <x2>, <y2> — координаты левого верхнего и правого нижнего углов, нормализованные к диапазону [0, 1] и дискретизированные (например, 0–1000);
  • </box> — конец bounding box.

Пример сгенерированного текста

На изображении кошка <box><x1>120</x1><y1>50</y1><x2>400</x2><y2>350</y2></box> сидит на диване.

Как это работает на уровне токенов?
Координаты квантуются в целые числа от 0 до 999 (1000 значений). Каждое число представляется отдельным токеном из специального словаря (например, <loc_120>, <loc_50> и т.д.). Таким образом, bounding box занимает 4 токена + 2 токена-скобки.

Преимущество модель учится генерировать координаты так же, как обычные слова, используя ту же функцию потерь (cross-entropy). Не требуется отдельный детектор или дополнительная loss-функция для регрессии.


4. Обучение Kosmos-2

Модель обучается в два этапа:

4.1 Предобучение (Pre-training)

  • Данные большие корпуса пар «изображение — текст» (LAION-5B, CC12M) без grounding разметки.
  • Задача языковое моделирование с визуальным контекстом (image captioning, VQA).
  • Цель научить LLM понимать изображения.

4.2 Fine-tuning на grounding данных

  • Данные COCObounding boxes), Visual Genome (с региональными описаниями), Flickr30k Entities.
  • Формат каждое предложение содержит ссылки на объекты с координатами.
  • Задача генерация текста с вставленными <box> токенами.
  • Loss: стандартный cross-entropy на все токены, включая координатные.

Важно модель не использует отдельный детектор на этапе инференса — она генерирует bounding boxes авторегрессивно, опираясь на визуальные признаки и контекст.


5. Инференс (как модель отвечает на вопрос)

Рассмотрим запрос: «Где кошка?» + изображение.

  1. Кодирование изображения Vision Encoder + Resampler → последовательность визуальных токенов.
  2. Формирование промпта токены изображения + текстовый запрос.
  3. Авторегрессивная генерация: LLM генерирует токены один за другим. Когда модель решает, что нужно указать местоположение, она выводит <box>, затем четыре координатных токена, затем </box>.
  4. Постобработка координаты декодируются из токенов обратно в числа, умножаются на ширину/высоту изображения для получения пиксельных координат.

Пример вывода

Кошка находится <box><loc_120><loc_50><loc_400><loc_350></box>.

6. Сравнение с альтернативными подходами

ПодходПример моделиGroundingТребует детекторГенерация координат
Токенизация координатKosmos-2ВстроенноеНетАвторегрессивная
Отдельный детекторFlamingo + DETRВнешнееДаОтдельный модуль
Prompt-based groundingGPT-4V (через API)КосвенноеНетТолько текст (не координаты)
Referential languageOFA, UniTABВстроенноеНетТокенизация (аналогично Kosmos-2)

Kosmos-2 выигрывает в простоте пайплайна (end-to-end) и возможности fine-tuning под конкретные домены.


7. Применение в agentic RAG

В контексте agentic RAG (вопросы 561–570) Kosmos-2 может выступать как инструмент агента:

  • Поиск по изображению агент получает картинку, Kosmos-2 находит объекты, агент формирует запрос к векторной БД по описанию объекта.
  • Уточнение запроса пользователь спрашивает «Что написано на вывеске?», Kosmos-2 локализует вывеску, затем OCR-модуль читает текст.
  • Мультимодальный RAG изображение разбивается на регионы, каждый регион индексируется отдельно; Kosmos-2 помогает выбрать релевантные регионы.

Пример пайплайна

Пользователь: "Найди документ, где упоминается красная машина на картинке"
Агент: 
  1. Запускает Kosmos-2 на изображении → получает bounding box красной машины
  2. Обрезает изображение по боксу
  3. Отправляет обрезок в VLM (например, LLaVA) для описания
  4. Использует описание как запрос к векторной БД

8. Ограничения и вызовы

  • Точность координат дискретизация 0–999 даёт грубую привязку; для мелких объектов может не хватить.
  • Длина контекста bounding boxes добавляют много токенов, что увеличивает затраты на генерацию.
  • Обучение требует дорогой разметки (bounding boxes + текст).
  • Сложные сцены модель может путать объекты при большом количестве перекрытий.
  • Языковая зависимость grounding качество падает для редких языков (Kosmos-2 обучался в основном на английском).

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

Задача Реализовать простой grounding-сервис на основе Kosmos-2 (или его open-source аналога — например, Groma или Shikra).

Инструменты

Шаги:

  1. Загрузить модель и процессор из transformers.
  2. Написать функцию ground(image, query), которая:
    • принимает изображение (PIL.Image) и текстовый запрос;
    • генерирует ответ с bounding boxes;
    • парсит токены <box> и извлекает координаты;
    • рисует bounding boxes на изображении (PIL.ImageDraw).
  3. Обернуть в FastAPI endpoint /ground.
  4. Протестировать на изображениях из COCO.

Ожидаемый результат
Веб-сервис, который по картинке и вопросу «Где ...?» возвращает изображение с нарисованным прямоугольником вокруг объекта.

Дополнительно интегрировать с простым RAG-агентом (например, на LangChain), который использует Kosmos-2 как инструмент для локализации.


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

ВопросТема
561Что такое Agentic RAG и как он отличается от обычного RAG?
562Как работает ReAct (Reasoning + Acting) в контексте RAG?
563Как агент выбирает, какой инструмент использовать?
565Как работает Visual RAG (изображения как источник знаний)?
566Как объединять текстовую и визуальную информацию в RAG?

Навигация