Implementação oficial do PyTorch do OpenStreetView-5M: Os muitos caminhos para a geolocalização visual global.
Primeiros autores: Guillaume Astruc, Nicolas Dufour, Ioannis Siglidis
Segundos autores: Constantin Aronssohn, Nacim Bouia, Stephanie Fu, Romain Loiseau, Van Nguyen Nguyen, Charles Raude, Elliot Vincent, Lintao XU, Hongyu Zhou
Último autor: Loic Landrieu
Instituto de Pesquisa: Imagine, LIGM, Ecole des Ponts, Univ Gustave Eiffel, CNRS, Marne-la-Vallée, França
OpenStreetView-5M é o primeiro benchmark de geolocalização aberto em grande escala de imagens de streetview.
Para ter uma noção da dificuldade do benchmark, você pode jogar nossa demo.
Nosso conjunto de dados foi usado em um extenso benchmark do qual fornecemos o melhor modelo.
Para mais detalhes e resultados, confira nossa página de artigos e projetos.
OpenStreetView-5M está hospedado em huggingface/datasets/osv5m/osv5m. Para baixar e extrair execute:
python scripts/download-dataset.py
Para diferentes maneiras de importar o conjunto de dados, consulte DATASET.md
Nosso melhor modelo no OSV-5M também pode ser encontrado no huggingface.
from PIL import Image
from models . huggingface import Geolocalizer
geolocalizer = Geolocalizer . from_pretrained ( 'osv5m/baseline' )
img = Image . open ( '.media/examples/img1.jpeg' )
x = geolocalizer . transform ( img ). unsqueeze ( 0 ) # transform the image using our dedicated transformer
gps = geolocalizer ( x ) # B, 2 (lat, lon - tensor in rad)
Para reproduzir os resultados do modelo em huggingface, execute:
python evaluation.py exp=eval_best_model dataset.global_batch_size=1024
Para replicar todos os experimentos do nosso artigo, fornecemos scripts dedicados em scripts/experiments
.
Para instalar nosso ambiente conda, execute:
conda env create -f environment.yaml
conda activate osv5m
Para executar a maioria dos métodos, primeiro você precisa pré-calcular os QuadTrees (cerca de 10 minutos):
python scripts/preprocessing/preprocess.py data_dir=datasets do_split=1000 # You will need to run this code with other splitting/depth arguments if you want to use different quadtree arguments
Use a pasta configs/exp para selecionar o experimento desejado. Sinta-se à vontade para explorá-lo. Todos os modelos avaliados no artigo possuem um arquivo de configuração dedicado
# Using more workers in the dataloader
computer.num_workers=20
# Change number of devices available
computer.devices=1
# Change batch_size distributed to all devices
dataset.global_batch_size=2
# Changing mode train or eval, default is train
mode=eval
# All these parameters and more can be changed from the config file!
# train best model
python train.py exp=best_model computer.devices=1 computer.num_workers=16 dataset.global_batch_size=2
@article { osv5m ,
title = { {OpenStreetView-5M}: {T}he Many Roads to Global Visual Geolocation } ,
author = { Astruc, Guillaume and Dufour, Nicolas and Siglidis, Ioannis
and Aronssohn, Constantin and Bouia, Nacim and Fu, Stephanie and Loiseau, Romain
and Nguyen, Van Nguyen and Raude, Charles and Vincent, Elliot and Xu, Lintao
and Zhou, Hongyu and Landrieu, Loic } ,
journal = { CVPR } ,
year = { 2024 } ,
}