MoGe-2
MoGe-2 — монокулярная геометрическая модель, которая за один прямой проход предсказывает плотное поле нормалей поверхности по одному RGB-изображению. В LibreYOLO она доступна только для оценки нормалей — через официальные чекпойнты ViT-S, ViT-B и ViT-L.
- Задачи
- surface normals
- Размеры
- s, b, l at 518 px
- Установка
pip install libreyolo- Уровень поддержки
- Только инференс, начиная с v1.5.0. Только предсказание, валидация и экспорт. Функции обучения неприменимы.
- Исходный проект
- MoGe-2 от Microsoft, MIT. Статья, исходный код
- Лицензии
- Код: MIT, веса: MIT. Коммерческое использование
Установка
MoGe-2 не требует установки дополнительных extra-пакетов. Всё, что он импортирует, входит в базовую установку.
pip install libreyoloПредсказание
Веса скачиваются автоматически при первом использовании. Размеры s и l используют зеркала LibreYOLO; b по-прежнему использует исходный чекпойнт.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreMoGe2s-normal.pt")result = model(SAMPLE_IMAGE, save=True) normal = result.normal_mapprint(normal.array.shape) # (H, W, 3) float32, единичные векторыlibreyolo predict model=LibreMoGe2s-normal.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueMoGe-2 возвращает плотное поле, а не набор детекций, поэтому result.boxes
пуст, а conf, iou и max_det ни на что не влияют. Результат лежит в
result.normal_map: массив (H, W, 3) из единичных векторов в системе
координат камеры OpenCV, где +x — вправо, +y — вниз, +z — вглубь сцены, а
обращённая к камере поверхность даёт (0, 0, -1). Предсказание по списку
изображений выполняет по одному прямому проходу на изображение; быстрого пути со
сборкой батча у этого семейства нет. Об источниках, стриминге и обработке
результатов — в разделе предсказание.
Варианты
Три размера энкодера поставляются отдельными чекпойнтами: ViT-S, ViT-B и ViT-L, все с одним и тем же входным разрешением. Бенчмарк-стенд LibreYOLO это семейство не измерял, поэтому опубликованных чисел по точности, по которым их можно было бы сравнить, нет; выбирайте размер под свой бюджет вычислений.
Валидация
val() измеряет угловую ошибку на парном датасете карт нормалей: изображения
рядом с 16-битными PNG нормалей с тем же именем файла и необязательная маска
валидности, чтобы пиксели заполнения и некорректные пиксели никогда не
учитывались. Возвращаются средняя и медианная угловая ошибка в градусах, а также
процент пикселей, попавших в 11.25, 22.5 и 30 градусов.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMoGe2s-normal.pt")metrics = model.val(data="my-dataset.yaml", imgsz=518) print(metrics["metrics/mean_angular_error"]) # градусыprint(metrics["metrics/median_angular_error"])print(metrics["metrics/within_11_25"]) # процент пикселейlibreyolo val model=LibreMoGe2s-normal.pt data=my-dataset.yaml imgsz=518Экспорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Surface normals | Surface normals to ONNX: поддерживается | Surface normals to TorchScript: поддерживается | Surface normals to ExecuTorch: поддерживается | Surface normals to TensorRT: поддерживается | Surface normals to OpenVINO: поддерживается | Surface normals to Paddle: не поддерживается | Surface normals to MNN: не поддерживается | Surface normals to RKNN: не поддерживается | Surface normals to ncnn: поддерживается | Surface normals to TFLite: не поддерживается | Surface normals to CoreML: не поддерживается | Surface normals to Core AI: не поддерживается |
Экспорт нормалей работает по контракту среды выполнения с фиксированным
разрешением и батчем 1: dynamic и batch, отличный от 1, отклоняются, а
imgsz должен нацело делиться на размер патча ViT-энкодера — LibreYOLO
проверяет это до старта запуска. Экспортированный артефакт загружается обратно
через LibreYOLO() по суффиксу файла, поэтому файл .onnx ведёт себя как
чекпойнт и возвращает тот же Results.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMoGe2s-normal.pt")model.export(format="onnx", imgsz=518)model.export(format="tensorrt", imgsz=518, half=True)libreyolo export model=LibreMoGe2s-normal.pt format=onnx imgsz=518libreyolo export model=LibreMoGe2s-normal.pt format=tensorrt imgsz=518 half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreMoGe2s-normal.onnx")result = model(SAMPLE_IMAGE) print(result.normal_map.array.shape)Лицензирование
Проверяйте лицензию в репозитории конкретных весов на Hugging Face. Она указана для каждого чекпойнта в организации LibreYOLO и может различаться даже внутри одного семейства. Этот репозиторий считается авторитетным источником, а сводка ниже описывает условия на момент последней проверки страницы.
Это описание соответствующих лицензий, а не юридическая консультация. Если ответ важен для коммерческого использования, прочитайте лицензии самостоятельно и проконсультируйтесь с юристом.
- Оригинальная работа
- MoGe-2, Microsoft
- Лицензия исходного проекта
- MIT
- Исходный код проекта
- github.com/microsoft/MoGe
- Код LibreYOLO
- MIT
- Веса
- MIT, повторно опубликованы на huggingface.co/LibreYOLO
- Толкование
- The publisher declares MIT for the model and checkpoints. LibreYOLO mirrors s and l; b remains an upstream download. The DINOv2 encoder retains its separate Apache-2.0 attribution.
Чекпойнты s и l размещены на зеркалах LibreYOLO; b остаётся в исходном репозитории. Скачанные артефакты сохраняют лицензию издателя.
Цитирование
@inproceedings{wang2025moge,
title={Moge: Unlocking accurate monocular geometry estimation for open-domain images with optimal training supervision},
author={Wang, Ruicheng and Xu, Sicheng and Dai, Cassie and Xiang, Jianfeng and Deng, Yu and Tong, Xin and Yang, Jiaolong},
booktitle={Proceedings of the Computer Vision and Pattern Recognition Conference},
pages={5261--5271},
year={2025}
}
@misc{wang2025moge2,
title={MoGe-2: Accurate Monocular Geometry with Metric Scale and Sharp Details},
author={Ruicheng Wang and Sicheng Xu and Yue Dong and Yu Deng and Jianfeng Xiang and Zelong Lv and Guangzhong Sun and Xin Tong and Jiaolong Yang},
year={2025},
eprint={2507.02546},
archivePrefix={arXiv},
primaryClass={cs.CV},
url={https://arxiv.org/abs/2507.02546},
}Скопировано из блока цитирования авторов на странице github.com/microsoft/MoGe#-citation.