Matrix3D от Apple — Универсальный инструмент для 3D-реконструкции
Репозиторий давно не обновлялся
Последнее обновление было 11 месяцев назад.
Представьте, что у вас есть несколько фотографий объекта, но нет информации о положении камеры. Или нужно создать 3D-модель по одному-единственному снимку. Обычно для каждой такой задачи требуется отдельное решение — но что если все это может делать одна модель? Команда Apple и исследователей из университетов представила Matrix3D — универсальный инструмент для фотограмметрии, который объединяет несколько функций в единый конвейер.
Что умеет Matrix3D?
Matrix3D — это единая нейросетевая модель, обученная решать три ключевые задачи фотограмметрии:
- Предсказание позы камеры — определяет положение и ориентацию камеры для каждого кадра
- Оценка глубины — строит карту глубины для каждого пикселя изображения
- Синтез новых ракурсов — генерирует изображения объекта с новых точек зрения
Причем все это работает даже при минимальном количестве исходных данных — например, можно получить 3D-модель всего по одному фото!

Ключевые возможности
1. Гибкость входных данных
Мало где можно найти модель, которая одинаково хорошо работает:
- С известными параметрами камеры
- С неизвестной позицией камеры (но известным углом обзора)
- Даже когда вообще ничего не известно о камере (используется FOV=60° по умолчанию)
2. Комбинирование задач
Matrix3D поддерживает «маскированный вывод» — можно комбинировать разные режимы работы в одном конвейере. Например:
# Синтез новых видов из одного изображения
sh scripts/novel_view_synthesis.sh examples/co3dv2-samples/31_1359_4114
# Оценка позы камеры
sh scripts/pose_estimation.sh examples/co3dv2-samples/31_1359_4114
# Построение карты глубины
sh scripts/depth_prediction.sh examples/co3dv2-samples/31_1359_4114
3. Полный цикл 3D-реконструкции
Особенно впечатляет возможность полной реконструкции сцены:
- По одному изображению (с автоматической оценкой позы камеры)
- По нескольким фото без информации о камере (позы оцениваются автоматически)
Пример создания 3D-модели по одному фото:
sh scripts/single_view_to_3d.sh single-view-to-3d examples/single-view/skull.png
Технические детали
Под капотом Matrix3D использует:
- PyTorch 2.4 в качестве бэкенда
- Модифицированный конвейер 3D Gaussian Splatting (3DGS) для реконструкции
- Максимальное количество входных видов — 8 (ограничение архитектуры)
Модель обучена на датасетах CO3Dv2 и ARKitScenes, но может адаптироваться и к другим данным. Интересно, что для камер поддерживается несколько систем координат (Blender, OpenCV), которые автоматически конвертируются во внутренний формат.
Практическое применение
Где это может пригодиться?
- Разработка AR/VR приложений — быстрая реконструкция окружения
- Архитектура и дизайн — создание 3D-моделей по фотографиям
- Кино и геймдев — генерация ассетов из референсов
- Робототехника — оценка глубины и навигация
Выводы: стоит ли пробовать?
Matrix3D — это мощный (хоть и не без ограничений) инструмент, который действительно объединяет несколько задач фотограмметрии в одной модели. Особенно он понравится:
- Разработчикам, которым нужно быстро прототипировать 3D-контент
- Исследователям в области компьютерного зрения
- Всем, кто работает с ограниченными входными данными (например, когда нет информации о камере)
Установка требует некоторой возни с зависимостями (особенно pytorch3d), но готовые скрипты существенно упрощают запуск. Если вы работаете с 3D-реконструкцией — определенно стоит попробовать!
Проект открыт под лицензией Apple, но перед использованием в коммерческих продуктах стоит уточнить юридические нюансы.
