Views
No views yet
Base model:metric3d_vit_giant2loaded viatorch.hub.load("yvanyin/metric3d", "metric3d_vit_giant2")
metric3d_vit_giant2) on the Hypersim dataset subset: far depth range, low-light scenes.| Base model | metric3d_vit_giant2 (torch.hub yvanyin/metric3d) |
| Dataset | the Hypersim dataset subset: far depth range, low-light scenes |
| Loss | Direct metric-depth L1 + gradient loss |
| LoRA rank / alpha | 16 / 32 |
| LoRA targets | qkv, proj |
1import torch
2from peft import PeftModel
3import torch.nn as nn
4import torch.utils.checkpoint as torch_checkpoint
5
6# Load base model
7model = torch.hub.load("yvanyin/metric3d", "metric3d_vit_giant2",
8 pretrain=True, trust_repo=True)
9
10# Apply the same gradient-checkpointing wrapper used during training
11# (needed so PEFT key names match the saved adapter)
12def enable_gradient_checkpointing(model):
13 try:
14 encoder = model.depth_model.encoder
15 except AttributeError:
16 encoder = model.base_model.model.depth_model.encoder
17
18 class _CheckpointedBlock(nn.Module):
19 def __init__(self, block):
20 super().__init__()
21 self.block = block
22 def forward(self, x):
23 return torch_checkpoint.checkpoint(self.block, x, use_reentrant=False)
24
25 for blk_group in encoder.blocks:
26 for key in list(blk_group._modules.keys()):
27 blk_group._modules[key] = _CheckpointedBlock(blk_group._modules[key])
28
29enable_gradient_checkpointing(model)
30model = PeftModel.from_pretrained(model, "igzi/depth-lora-checkpoints_hypersim_depth_light-hypersim_far_low_light")
31model.eval()
32
33# Inference: input pixel_values shape (B, 3, 616, 1064), values normalised
34# with mean=[123.675, 116.28, 103.53], std=[58.395, 57.12, 57.375]
35pred_canonical, _, _ = model({"input": pixel_values})
36# De-canonicalise: pred_metric = pred_canonical * (fx_scaled / 1000)