Суть прорыва: Flow Matching вместо оптимизации
Surflo (Consistent 3D Surface Flow Model with Global State) решает проблему реконструкции сцены из произвольного количества некалиброванных изображений (N=2, 10, 30, 80). В отличие от традиционных методов, требующих сотен кадров и длительной оптимизации (например, Gaussian Wrapping), Surflo кодирует сцену в латентное пространство фиксированного размера, а затем декодирует её через flow matching в произвольное количество ориентированных точек поверхности, формируя чистый меш.
Ключевое преимущество — скорость и отсутствие необходимости в предварительной калибровке камеры или оценке позы (pose estimation). Модель обучена исключительно на пейзажных изображениях (ширина > высоты), поэтому портретные фото автоматически поворачиваются на 90° во время инференса.
Производительность и ресурсы
Тестирование проводилось на GPU NVIDIA H100 при запросе 100 000 точек. Использование guidance-пресетов позволяет балансировать между скоростью и детализацией. Ниже приведены метрики для различных режимов работы:
| Пресет (Guidance) | Время инференса | Пиковая VRAM | Качество детализации |
|---|---|---|---|
| plain (без guidance) | ~8 с | ~8.5 GiB | Грубая реконструкция |
| minimal | ~15 с | ~14 GiB | Хорошее качество |
| short / short_highres | ~25 с | ~14 GiB | Четкие контуры |
| default / default_highres | ~45 с | ~14 GiB | Высокая детализация |
| long (для 64+ кадров) | ~95 с | ~14 GiB | Максимальная четкость |
Установка и запуск
Пакет устанавливается из исходного кода с обязательной компиляцией CUDA-расширений. Поддерживаются CUDA 11.8, 12.1 и 12.4. Рекомендуется использовать conda для создания изолированного окружения, хотя доступна и установка через uv/pip.
- Веса модели: доступны на Hugging Face (AntoineGuedon/Surflo-v0).
- Демо: интерактивный интерфейс на Gradio (
python examples/gradio_demo.py). - CLI: скрипт
scripts/infer.pyпозволяет запускать реконструкцию с разными пресетами guidance.
Для тестирования в репозитории уже включена сцена "garden" с 16 видами, что позволяет сразу проверить работоспособность модели после установки.
Источник: Github ↗
