Itinai.com two developers coding side by side in a minimalist 9e46852c 56ad 43df b8ce 5a8451c13b63 2

Как избавиться от сложных нейросетей в пространственном кодировании с помощью NVIDIA SpatialClaw?

Itinai.com two developers coding side by side in a minimalist 9e46852c 56ad 43df b8ce 5a8451c13b63 2

Что такое SpatialClaw

SpatialClaw – это «обёртка‑агент» вокруг постоянного Python‑ядра, в которое загружены входные кадры и набор базовых примитивов. Инструменты восприятия (перцепции) представлены обычными Python‑функциями, а их результаты – маски, карты глубины, параметры камер и плотные облака точек – обычные переменные.

Ядро предоставляет шесть публичных точек входа:

  • InputImages – массив изображений.
  • Metadata – частота кадров, длительность и индексы.
  • tools – набор примитивов восприятия и геометрии.
  • show() – визуализирует изображение в следующем контексте агента.
  • vlm – отправка запросов в отдельный сеанс VLM.
  • ReturnAnswer() – отправка окончательного ответа.

Ключевые инструменты:

  • tools.Reconstruct – обёртка над Depth Anything 3, выводит глубину, внутренние и внешние параметры камер, плотные облака точек.
  • tools.SAM3 – обёртка над SAM 3, генерирует маски из текста, точек или прямоугольников.
  • Дополнительные лёгкие утилиты: tools.Geometry, tools.Mask, tools.Time, tools.Graph, tools.Draw.

Фреймворк работает без дообучения: один системный промпт, один набор инструментов и одинаковые гиперпараметры используют для всех бенчмарков и моделей.

Почему важен «action interface»

Исследователи сравнили три способа взаимодействия агента с инструментами на задаче «измерить расстояние между нагревателем и дверью»:

  • Однопроходный код – пишет полностью программу и сразу её исполняет. Ошибочное предположение сразу же влияет на результат.
  • Структурированный вызов инструментов – использует фиксированную JSON‑схему, не позволяя свободно комбинировать результаты с NumPy или SciPy. Операция «ближайшая точка» отсутствует, поэтому ответ неверен.
  • SpatialClaw – комбинирует инструменты в Python‑коде, последовательно проверяет промежуточные результаты и при необходимости исправляет стратегию. В примере агент сначала вычислил расстояние между центрами масс, затем заметил, что нужен минимум между точками, переключился на scipy.spatial.KDTree и получил 0.9439 м против истинных 0.9 м.

Результаты на бенчмарках

Тестирование проводилось на 20 бенчмарках из пяти категорий (одиночное изображение, мультивид, общее, видео/4D, общее видео‑понимание). Во всех шести проверенных базовых моделях (от 26 B до 397 B параметров) SpatialClaw улучшил показатели.

Интерфейс Средняя точность (20 бенч) Δ vs без‑инструментов
No‑tool baseline 53.4
Однопроходный код 55.2 +1.8
Структурированный вызов 56.7 +3.3
SpatialClaw (код как действие) 59.9 +6.5

Сравнение с другими пространственными агентами (Gemma4‑31B): VADAR – 40.5, pySpatial – 47.8, SpaceTools – 48.7, SpatialClaw – 59.9. На динамических задачах (DSI‑Bench, MindCube) прирост превысил 15 пунктов.

Пятиэтапный цикл работы

Каждый пример проходит через пять шагов:

  • Планирование – агент формирует стратегию без доступа к изображениям.
  • Генерация кода – пишет один Python‑ячейку на каждый шаг.
  • Выполнение кода – статический проверщик AST отклоняет опасные конструкции.
  • Сбор обратной связи – агент получает результаты инструментов и может их визуализировать.
  • Отправка ответа – вызывается ReturnAnswer() либо цикл завершается после 30 шагов.

Официальный репозиторий использует LangGraph, постоянный Jupyter‑ядро, модели через vLLM и перцептивные сервисы FastAPI. Запуск одного бенчмарка на одной машине выглядит так:

git clone --recursive https://github.com/NVlabs/SpatialClaw.git
cd SpatialClaw
bash spatial_agent/scripts/setup.sh
cp .env.example .env        # добавить ключи API или задать свой vLLM
python -m spatial_agent.entrypoints.run \
    --dataset spatial_agent/config/dataset/erqa.json \
    --model   spatial_agent/config/model/gemini-3-pro.json \
    --concurrency 4

Пример кода агента

# Восстановление сцены и сегментация объектов
recon = tools.Reconstruct.Reconstruct(InputImages)
seg = tools.SAM3.segment_video_by_text(["radiator heater", "door"])
show(seg.visualize(1))  # визуальная проверка масок

# Поиск ближайших точек через KD‑tree
pts_h = seg.get_masked_points(recon, frame=1, object=0)   # нагреватель
pts_d = seg.get_masked_points(recon, frame=2, object=1)   # дверь
dists, _ = scipy.spatial.KDTree(pts_d).query(pts_h, k=1)
ReturnAnswer(float(dists.min()))

Практические сценарии применения

  • Робототехника и эмбедд‑агенты – измерение метрических расстояний между объектами перед действием.
  • Мультивидовая инспекция – восстановление направления объекта из нескольких камер.
  • Анализ видео и 4D‑данных – отслеживание движения объектов и камеры.
  • Вопрос‑ответ по внутренним сценам – «Где находится дверь относительно раковины?»

Поскольку система не требует дообучения, её можно подключить к уже развернутому VLM без новых данных и без дополнительного fine‑tuning.

Ссылки

Запустите свой ИИ проект бесплатно

ИИ-агенты искусственный интеллект онлайн для бизнеса

Лучший ИИ онлайн