Model reference · open weights
defm is an open-weight embedding model from leggedrobotics. defm (BF16) weighs 1.2 GB; the smallest configuration that runs it is RTX 3060 12 GB.
For self-hosting, compare this build's requirements below with the GPU you plan to rent.
Summary of the leggedrobotics/defm model card, 2026-10-29
What it is
| Released by | leggedrobotics |
|---|---|
| Released | 2026-01-20 |
| VRAM | 1.2 GB for the weights |
What it runs on
| Card | Runs | Memory |
|---|---|---|
| RTX 3060 12 GB | fits | 11.6 GB |
| RTX 4060 Ti 16 GB | fits | 15.4 GB |
| RTX 3090 24 GB | fits | 23.4 GB |
| RTX 4090 24 GB | fits | 23.4 GB |
| RTX 5090 32 GB | fits | 31.0 GB |
| L40S 48 GB | fits | 44.0 GB |
| A100 80 GB | fits | 78.2 GB |
| H100 80 GB | fits | 78.1 GB |
| RTX PRO 6000 Blackwell 96 GB | fits | 93.8 GB |
| DGX Spark (GB10) 128 GB unified | fits | 107 GB |
| H200 141 GB | fits | 138 GB |
| B200 180 GB | fits | 176 GB |
From the model card
DeFM (Depth Foundation Model) is a vision backbone trained on 60M depth images via self-distillation. It is engineered for robotic perception, providing metric-aware representations that excel in sim-to-real transfer and cross-sensor generalization.
TL;DR - A DINO-style encoder, but for depth image inputs.
Install the package from PyPI:
pip install defm
Loading through TorchHub only needs torch torchvision numpy huggingface_hub omegaconf.
Load via TorchHub for easy integration:
import torch
# Load the 304M-parameter foundation model
model = torch.hub.load('leggedrobotics/defm:main', 'defm_vit_l14', pretrained=True)
model.eval().to("cuda")
or, with the defm package installed:
from defm.model_factory import create_defm_model
model = create_defm_model("defm_vit_l14", pretrained=True) # weights from the Hugging Face Hub
DeFM requires depth maps to be processed into our metric-aware 3-channel format.
from defm import preprocess_depth_image
# Depth in meters: (H, W) numpy array, tensor or PIL image. target_size is an int (square) or (H, W).
normalized_depth = preprocess_depth_image(metric_depth, target_size=518, patch_size=14).to("cuda")
with torch.no_grad():
output = model.get_intermediate_layers(
normalized_depth, n=1, reshape=True, return_class_token=True)
spatial_tokens = output[0][0] # (B, C, H', W')
class_token = output[0][1] # (B, C)
The CNN models (defm_resnet50, defm_efficientnet_b0, ...) return a dict instead, and their input height and width
must be multiples of 32:
model = torch.hub.load('leggedrobotics/defm:main', 'defm_resnet50', pretrained=True).eval().to("cuda")
normalized_depth = preprocess_depth_image(metric_depth, target_size=(224, 320)).to("cuda")
with torch.no_grad():
output = model(normalized_depth)
class_token = output["global_backbone"] # (B, C)
spatial_tokens = output["dense_bifpn"]["P4"] # (B, C, H/16, W/16), the features distilled from the ViT
For more details, visit our GitHub repository.
The following table provides a comprehensive overview of the DeFM model family, including architectural parameters, inference latency across training and deployment hardware (224x224), and performance on the ImageNet-1k-Depth benchmark.
| Model | Params (M) | RTX 4090 BS-128 (ms) | Jetson Orin (ms) | Top-5 KNN (%) | Linear Prob (%) | Checkpoint |
|---|---|---|---|---|---|---|
| DeFM ViT-L/14 | 303.7 | 624.91 | 72.82 | 85.42 | 72.76 | Download |
| DeFM ViT-S/14 | 21.6 | 63.76 | 11.92 | 79.37 | 62.74 | Download |
| DeFM ResNet-50 | 26.2 | 69.39 | 17.79 | 78.93 | 62.56 | Download |
| DeFM ResNet-34 | 23.3 | 33.08 | 13.54 | 73.84 | 54.78 | Download |
| DeFM ResNet-18 | 11.7 | 21.06 | 8.67 | 70.93 | 51.57 | Download |
| DeFM EfficientNet-B6 | 28.98 | 150.98 | 54.11 | 79.30 | 60.70 | Download |
| DeFM EfficientNet-B4 | 14.16 | 86.51 | 39.67 | 76.45 | 56.24 | Download |
| DeFM EfficientNet-B2 | 4.95 | 46.12 | 28.37 | 72.89 | 51.64 | Download |
| DeFM EfficientNet-B0 | 3.01 | 29.39 | 21.04 | 69.54 | 47.17 | Download |
| DeFM RegNetY-1.6GF | 12.4 | 44.25 | 41.82 | 77.96 | 58.88 | Download |
| DeFM RegNetY-800MF | 6.3 | 25.21 | 24.16 | 76.43 | 58.62 | Download |
| DeFM RegNetY-400MF | 4.1 | 17.27 | 25.17 | 74.43 | 51.80 | Download |
benchmarks/ reproduces the linear-probe evaluations of the paper for DeFM and all image
baselines (DINOv2, DINOv3, Depth Anything V2, C-RADIOv3, Theia), loading every model from its official
Hugging Face weights:
git clone https://github.com/leggedrobotics/defm && cd defm
pip install -e ".[benchmarks]"
python -m benchmarks.segmentation --encoder defm_vit_l14 --dataset tartanground # ScanNet, SUN RGB-D, OFFSED, TartanGround, GraspNet
python -m benchmarks.classification --encoder defm_vit_s14 --eval knn linear # ImageNetQuoted from the model card on Hugging Face. The full card is behind the Hugging Face link above.