Rerun — Увидеть невидимое — как отлаживать роботов и AI с помощью мультимодальной визуализации
Знакомая ситуация? Ваш робот-пылесос снова врезался в стену, хотя по всем логам он “успешно проехал через дверной проем”. Или нейросеть, которая должна была идеально сегментировать объекты, вдруг начала путать кошку с диваном. В такие моменты обычные текстовые логи или стандартные дебаггеры становятся бесполезными. Вам нужно не просто знать, что произошло, а увидеть, как ваша система воспринимала мир и какие данные она обрабатывала в конкретный момент времени.
Именно для таких случаев и был создан Rerun — открытый SDK и платформа для логирования, хранения, запросов и визуализации мультимодальных данных. Представьте себе мощный визуальный отладчик, который позволяет вам заглянуть "в голову" вашей сложной системы, будь то робот, беспилотный автомобиль или продвинутая AI-модель.

Что такое Rerun и кому он пригодится?
По сути, Rerun — это универсальный инструмент для работы с данными, которые меняются во времени и поступают из разных источников. Он создан для того, чтобы помочь разработчикам в областях, где данные сложны и разнообразны:
- Робототехника: От автономных транспортных средств до промышленных манипуляторов.
- Пространственный и воплощенный ИИ (Spatial & Embodied AI): Системы, которые взаимодействуют с физическим миром.
- Генеративные медиа: Отладка и понимание работы моделей, создающих изображения, видео или 3D-контент.
- Промышленная обработка, симуляции, безопасность и здравоохранение: Везде, где нужно анализировать потоки данных от множества сенсоров.
В моей практике я часто сталкивался с тем, что для отладки таких систем приходилось писать кучу кастомных скриптов для визуализации или мучительно разбираться в текстовых логах, пытаясь сопоставить события во времени. Rerun решает эту проблему, предоставляя единую, удобную и, что важно, временную шкалу для всех ваших данных.
Ключевые возможности, которые меняют игру
Rerun не просто показывает картинки. Это полноценная экосистема для работы с данными. Давайте разберем его главные фичи.
1. Единая платформа для любых данных
Забудьте о разных инструментах для разных типов данных. Rerun позволяет логировать практически что угодно:
- 2D-изображения и видео: С камер, радаров.
- 3D-точечные облака и меши: С лидаров, глубинных камер.
- Тензоры: Выходные данные нейронных сетей.
- Текст: Обычные логи, метки, комментарии.
- Временные ряды: Показания сенсоров.
Все это собирается в одном месте и синхронизируется по времени, что критически важно для понимания динамических систем.
2. Визуализация в реальном времени и отложенная отладка
Одной из самых крутых фишек Rerun является возможность стримить данные в Rerun Viewer в реальном времени. Вы запускаете свой код, а Viewer тут же показывает, что происходит. Это как интерактивный дебаггер для ваших данных!
import rerun as rr # pip install rerun-sdk
rr.init("rerun_example_app") # Инициализируем приложение Rerun
rr.spawn() # Запускаем Rerun Viewer в отдельном процессе и подключаемся к нему
# rr.save("recording.rrd") # Или сохраняем все логи на диск для последующего анализа
# rr.connect_grpc() # Или подключаемся к удаленному Viewer
# Привязываем последующие данные к кадру номер 42 на временной шкале "frame"
rr.set_time("frame", sequence=42)
# Логируем цветные 3D-точки в сущность по пути `path/to/points`
rr.log("path/to/points", rr.Points3D(positions, colors=colors))
# ... и так далее для других данных
Кстати, если вы хотите проанализировать данные позже или поделиться ими с коллегами, Rerun умеет сохранять все логи в собственный формат .rrd. Это позволяет воспроизвести всю сессию отладки в любой момент.
3. Поддержка популярных языков
Rerun предоставляет SDK для самых востребованных языков в области робототехники и AI:
- Python: Самый популярный язык для ML и прототипирования.
- C++: Для высокопроизводительных систем и встроенных решений.
- Rust: Для системного программирования и обеспечения безопасности.
Это означает, что вы можете интегрировать Rerun в свои проекты, независимо от выбранного стека.
4. Time-aware logging и DataFrame API
Rerun не просто показывает данные, он понимает их временную природу. Вы можете привязывать данные к определенным временным меткам или последовательностям (как в примере выше с rr.set_time("frame", sequence=42)). Это позволяет точно отслеживать, как менялось состояние системы в каждый момент.
Более того, Rerun предлагает DataFrame API, который позволяет запросить и извлечь логированные данные. Это открывает двери не только для отладки, но и для создания новых датасетов для обучения моделей или для дальнейшего анализа.

Как это работает: взгляд под капот
Rerun состоит из двух основных частей:
- SDK (Software Development Kit): Библиотеки для Python, C++ и Rust, которые вы интегрируете в свой код. Они позволяют отправлять (логировать) данные в Rerun Viewer.
- Rerun Viewer: Само приложение, которое принимает логированные данные и визуализирует их. Его можно запустить как отдельный процесс, подключиться к нему по сети или даже использовать веб-версию в браузере.
Данные могут быть переданы в Viewer в реальном времени или сохранены в файлы .rrd для последующего анализа. Это дает гибкость в использовании: от быстрой отладки на рабочем месте до анализа записей с тестовых прогонов.
Практическое применение: от роботов до AR/VR
Представьте себе тот самый робот-пылесос, который врезается в стену. Вместо того чтобы гадать, что пошло не так, вы можете логировать с помощью Rerun:
- RGB-изображения с камеры робота.
- Глубинные карты.
- Данные лидара.
- Изображения сегментации: Как робот интерпретирует увиденное.
- 3D-карта помещения: Которую строит робот.
- Обнаруженные объекты: С их 3D-формами и уровнем уверенности.
- Показания одометрии.
Просматривая эти данные на временной шкале в Rerun Viewer, вы сможете точно определить: может быть, блик солнца на секунду ослепил датчик, из-за чего сеть сегментации выдала неверный результат? Или ошибка была в коде обработки лидара? Или робот просто "думал", что находится в другой части квартиры? Rerun покажет вам всю картину.
Но Rerun полезен не только для отладки. Он помогает:
- Понять и улучшить алгоритмы: Визуализация часто дает новые идеи.
- Создавать новые тестовые сценарии: На основе реальных проблем.
- Генерировать датасеты: Извлекая чистые данные из записей для обучения моделей.
- Объяснять работу сложных систем: Коллегам, руководству, заказчикам. Ведь, как говорится, лучше один раз увидеть!
Это идеальный инструмент для всех, кто работает с сенсорами, 2D- или 3D-состояниями, меняющимися во времени.
Стоит ли попробовать Rerun?
Однозначно да, если вы работаете с мультимодальными данными, особенно в сферах робототехники, компьютерного зрения или AI. Rerun предлагает уникальный подход к визуализации и отладке, который значительно упрощает понимание сложных систем.
Конечно, проект находится в активной разработке, и, как предупреждают авторы, возможны ломающие изменения. Есть и некоторые ограничения, например, данные должны помещаться в оперативную память, а очень большие облака точек могут работать медленно. Но команда активно работает над улучшениями, и уже сейчас Rerun является крайне полезным инструментом.
Если вы устали от рутинной отладки и хотите по-настоящему "увидеть" работу своих систем, Rerun — это то, что вам нужно. Начните с установки SDK для Python (pip install rerun-sdk) и попробуйте его в деле. Уверен, вы оцените, насколько проще станет ваша жизнь!
