PINE
карты точек, нормалей и инстансов за один проход
PINE — one-step Diffusion Transformer, который по изображению предсказывает point map, surface normals и instance map за один forward pass. Модель работает на 512×512 и выпускается в трёх размерах: PINE-B (0.24B), PINE-L (0.80B) и PINE-H (1.85B).
🧩 Ключевые особенности
- 🧩 Три карты за один forward pass: point map, surface normals и instance map.
- ⚡ One-step diffusion: каждый поток токенов имеет свои входные и выходные слои, а transformer-блоки общие; stream mask решает, какие потоки обмениваются токенами.
- 🌐 Camera-aware ray encoding позиционирует каждый токен по лучу камеры, а grounding attention добавляет сходство признаков замороженного DINOv3 к логитам внимания.
- 📀 Три варианта с DINOv3-энкодерами ViT-B/16, ViT-L/16 и ViT-H+/16; файлы весов — 0.6, 2.0 и 4.0 GB.
- 🔎 Все модели работают на 512×512 за один шаг сэмплирования.
💡 Пример
import torch
from util.checkpoint import load_model
model = load_model('pretrained/pine-l-512.pth')
image = ... # (1, 3, H, W) in [-1, 1], H/W кратны 16
with torch.amp.autocast('cuda', dtype=torch.bfloat16):
maps = model.generate(image.cuda(), intrinsics=None) # (1, 9, H, W)
points, normals, instances = maps.float().chunk(3, dim=1)
Подробнее
Rel^p на семи zero-shot датасетах: PINE-H — 3.33 с интринсиками и 4.16 без; PINE-L — 3.76/4.70; PINE-B — 4.69/5.62.В файлах — EMA-веса последней эпохи; DINOv3-энкодер не входит: его gated-веса нужно запросить и положить в
pretrained/dinov3/.Лицензия весов — CC BY-NC 4.0, только non-commercial; код — Apache 2.0.








Комментарии