Downloads · 30 days
0
bartdani/zuordnung-data
zuordnung-data is a machine learning model from bartdani. Use it for the machine learning task on the model card, and read the license before you ship it in a product.
Pretrained models for matching aerial drone photos to satellite imagery. Each model embeds aerial and satellite images into a shared 256-dimensional space; at inference time, the closest satellite tile to a drone phot…
Downloads · 30 days
0
Access
Public
Updated Jul 12, 2026
Repo size
—
Likes
0
Public
Click a slice to open those files.
.json7.4 KB · 62%
From the Hugging Face model README
Pretrained models for matching aerial drone photos to satellite imagery. Each model embeds aerial and satellite images into a shared 256-dimensional space; at inference time, the closest satellite tile to a drone photo is retrieved.
| Component | Detail |
|---|---|
| Backbone | dinov2_vitb14 (87M params, 768-dim output) |
| Pooling | GeM (Generalized Mean, p=3.0) or CLS token |
| Projector | 768 -> 256 (Linear) |
| Loss | InfoNCE (temperature=0.07) |
| Embedding dim | 256 |
| LoRA | Optional LoRA on Q/V attention (rank 32-64) |
| Model | Test Top-1 | Test GPS 2500m | Pool | LoRA | Role |
|---|---|---|---|---|---|
| 336_gem_v9d_lora_r64 | 60.8% | 66.4% | GEM | r64 | primary (default single model + ensem... |
| 336_gem_v4 | 56.2% | 63.9% | GEM | — | ensemble member (default pair with v9d) |
| 336_gem_runC_best | 58.1% | 64.9% | GEM | r32 | standalone alternative |
| 518_gem_lora_r32 | 58.1% | 64.9% | GEM | r32 | standalone (518px variant) |
| 336_gem_geo_v1 | 55.0% | 66.6% | GEM | — | best for GPS-constrained deployment |
| 336_gem_v6 | — | — | GEM | — | warm-start base for v9d, runC, 518 |
| gem_warmstart_v2 | — | — | GEM | — | foundational warm-start base |
The default ensemble pairs the two strongest complementary models:
[
{
"id": "336_gem_v9d_lora_r64",
"weight": 1.0,
"role": "primary"
},
{
"id": "336_gem_v4",
"weight": 1.0,
"role": "secondary"
}
]
from gui_app.config import ENSEMBLE_MODELS # already wired
import torch, sys
sys.path.insert(0, '..') # project root
from core.model import DINOv2SiameseNetwork, apply_lora
from core.checkpoint import inspect_checkpoint
path = '336_gem_v9d_lora_r64/336_gem_v9d_lora_r64_best.pth'
info = inspect_checkpoint(path)
model = DINOv2SiameseNetwork(
backbone=info['backbone'],
img_size=info['img_size'],
embedding_dim=info['embedding_dim'],
aerial_input_dim=info['aerial_input_dim'],
pool=info['pool'],
dropout=0.0,
grad_checkpointing=False,
)
# Apply LoRA if the checkpoint contains LoRA weights
ckpt = torch.load(path, map_location='cpu', weights_only=False)
if any('.attn.qkv.lora_A' in k for k in ckpt['model_state_dict']):
args = ckpt.get('args', {})
apply_lora(model,
rank=args.get('lora_rank', 64),
alpha=args.get('lora_alpha', args.get('lora_rank', 64)),
target=args.get('lora_target', 'qv'))
model.load_state_dict(ckpt['model_state_dict'])
model.eval()
If you use these models, please cite the Zuordnung project.
Models are released under the same license as this repository.