VGGT
VGGT (Meta): cameras, depth and 3D points for many images in one pass. Non-commercial weights.
Commercial use: no (weights: CC-BY-NC-4.0).
| variant | input | backend | time (ms) | peak memory (MiB, allocated / reserved) |
|---|---|---|---|---|
vggt-1b | synthetic (336x518) | original (fp32) original portable kernels portable + torch.compile TensorRT fp16 | 2502 965 651 458 557 424 | 6958 / 7358 8688 / 9158 3691 / 4674 3702 / 4654 3611 / 3856 3642 (engine) |
Details
- Original code: https://github.com/facebookresearch/vggt at
a288dd0 - Code licence: LicenseRef-VGGT (permissive); files:
LICENSE - Weights licence: CC-BY-NC-4.0
- Licence evidence: https://github.com/facebookresearch/vggt/blob/a288dd0/LICENSE.txt and https://huggingface.co/facebook/VGGT-1B (license: cc-by-nc-4.0)
- Training data: Per the paper (arXiv 2503.11651): Co3Dv2, BlendMVS, DL3DV, MegaDepth, Kubric, WildRGB, ScanNet, HyperSim, Mapillary, Habitat, Replica, MVS-Synth, PointOdyssey, Virtual KITTI, Aria Synthetic Environments, Aria Digital Twin; DINOv2 initialisation
- Licence note: The VGGT code licence allows commercial use, but the VGGT-1B weights are CC-BY-NC-4.0; Meta's separately licensed commercial checkpoint is not packaged.
- Options:
long_side= 518 (>= 14) - Kernel libraries:
fastbb,cudnn_hacc - Variants:
vggt-1b - Outputs: depth, confidence, world_points, intrinsics, cam_to_world, points_confidence (in
extras); kind:scale_invariant - Input size: any H x W >= 1, resized or padded inside the model
- Tested up to (portable, fp16, RTX 5060 Ti 16 GB):
vggt-1b3000x4000 (8.0 GiB peak allocated, 10.1 reserved) vggt-1b336x518, first call: portable + torch.compile 74 s (cold Inductor cache), TensorRT fp16 199 s (ONNX + engine).vggt-1boriginal (fp32) 336x518: float32 (the authors' autocast off)vggt-1boriginal 336x518: original default (README / demo): torch.autocast(bfloat16)vggt-1bload / first call: original 19.37 s / 1.289 s (336x518), portable 4.98 s / 0.689 s (336x518), kernels 5.99† s / 0.459 s (336x518)- † measured in the speed sweep after the portable load (or an earlier size) in the same process: file cache and kernels are warm, so the time is lower than a fresh start.
- Protocol, median of 5 after 3 warm-up, uint8 CUDA input (synthetic for bench_inputs sizes), card defaults; gc before each load; peak = max over the first call and the timed calls
Measured
640x512 crops, the 7 most co-visible views as sources; GT = depth rendered from the structured-light points. AbsRel / delta1 over GT pixels, after per-image median scaling unless the model takes the cameras (calibrated MVS: cameras, error in mm; PatchMatchNet also the depth range 425-935 mm, MVSAnywhere its own range from the camera baselines). Original = the original code named under Details, same checkpoint and protocol.
| variant | dataset | original fp32 | original fp16 | portable | kernels | note |
|---|---|---|---|---|---|---|
vggt-1b | DTU scans 1, 9, 24, 33, 75, view 24 + 7 sources, AbsRel / delta1 % | 0.0026 / 99.94 | 0.0027 / 99.94 | 0.0026 / 99.94 | 0.0026 / 99.94 |
Measured on NVIDIA GeForce RTX 5060 Ti, torch 2.14.1+cu130, 2026-11-06.
Parity
CPU, float32: max |diff| <= 0.002 vs the original. GPU, float16 (the default), portable and kernels: mean |diff| <= 0.02 and p99 <= 0.25 (absolute error of the output depth).
| variant | kernels error vs original, mean / p99 | GPU, torch | kernels used |
|---|---|---|---|
vggt-1b | 0.00044 / 0.00183 | RTX 5060 Ti, torch 2.14.1+cu130 | cudnn_hacc@cudnn92400, fastbb@7d058322634d:sm_120 |