MegaLoc

MegaLoc is an image retrieval model for visual place recognition (VPR) that achieves state-of-the-art on most VPR datasets, including indoor and outdoor environments.

Paper: MegaLoc: One Retrieval to Place Them All (CVPR 2025 Workshop)

GitHub: gmberton/MegaLoc

Usage

import torch
import torchvision.transforms as tfm
from PIL import Image

model = torch.hub.load("gmberton/MegaLoc", "get_trained_model")

# Same preprocessing we use for evaluation: ImageNet normalization, resize to 322x322
# (any resolution works, paper results are computed at 322x322)
transform = tfm.Compose([
    tfm.ToTensor(),
    tfm.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    tfm.Resize(size=[322, 322], antialias=True),
])

images = torch.stack([transform(Image.open(path).convert("RGB")) for path in ["im1.jpg", "im2.jpg"]])
with torch.inference_mode():
    descriptors = model(images)  # shape [2, 8448], L2-normalized

similarities = descriptors @ descriptors.T  # cosine similarities

For benchmarking on VPR datasets, see VPR-methods-evaluation.

Qualitative Examples

Top-1 retrieved images from the SF-XL test set (2.8M database images):

teaser

Citation

@InProceedings{Berton_2025_CVPR,
    author    = {Berton, Gabriele and Masone, Carlo},
    title     = {MegaLoc: One Retrieval to Place Them All},
    booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR) Workshops},
    month     = {June},
    year      = {2025},
    pages     = {2861-2867}
}
Downloads last month
29,277
Safetensors
Model size
0.2B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 1 Ask for provider support

Paper for gberton/MegaLoc