
Motore di geolocalizzazione locale-primo che identifica coordinate GPS precise di foto a livello stradale utilizzando i modelli di visione artificiale CosPlace, ALIKED e LightGlue. Precisione inferiore a 50 m, nessun punto di riferimento necessario.
Motore di geolocalizzazione stradale open‑source
Carica una foto stradale. Ottieni coordinate GPS precise.
Precisione inferiore a 50 m. Nessun punto di riferimento necessario. Funziona interamente sul tuo hardware.
Demo · Come funziona · Per iniziare · Utilizzo · FAQ
Netryx è uno strumento di geolocalizzazione locale‑first che identifica le coordinate GPS esatte di una fotografia stradale. A differenza della ricerca inversa per immagini (che confronta con immagini caricate sul web), Netryx confronta con panorami stradali acquisiti sistematicamente — quindi funziona su qualsiasi angolo di strada senza alcuna presenza su Internet.
La pipeline principale combina tre modelli di visione artificiale all'avanguardia:
Google Lens cerca su Internet. Netryx cerca nel mondo fisico.
Netryx utilizza una pipeline a tre stadi che restringe progressivamente da milioni di candidati a una singola corrispondenza precisa. Netryx è semplicemente uno strumento, è agnostico rispetto alla fonte e può elaborare immagini da qualsiasi fornitore come Mapillary o KartaView o qualsiasi altro.
Ogni panorama stradale nell'indice è stato pre‑elaborato in una "impronta digitale" a 512 dimensioni usando CosPlace, un modello di riconoscimento visivo di luoghi addestrato su milioni di immagini geotaggate.
Quando carichi una foto di query:
Questo stadio viene eseguito in meno di 1 secondo indipendentemente dalla dimensione dell'indice — è una singola moltiplicazione di matrici.
CosPlace trova luoghi che sembrano simili. Lo Stadio 2 dimostra che sono lo stesso posto usando la verifica geometrica.
Per ogni candidato:
Questo stadio elabora 300–500 candidati in 2–5 minuti a seconda dell'hardware.
La corrispondenza iniziale è buona ma non sempre ottimale. Il raffinamento la migliora:
Per immagini difficili (notte, sfocate, a bassa texture), la Modalità Ultra aggiunge:
Immagine di query
│
├── Estrazione descrittore CosPlace (impronta 512‑dim)
├── Estrazione descrittore capovolto
│
▼
Ricerca nell'indice (similarità coseno, filtro per raggio)
│
├── Primi 500 candidati ordinati per similarità visiva
│
▼
Scarica panorami → Ritaglia a 3 FOV → Estrai keypoint ALIKED/DISK
│
├── Matching LightGlue con keypoint della query
├── Verifica geometrica RANSAC
│
▼
Raffinamento orientamento (±45°, 3 FOV, primi 15 candidati)
│
├── Raggruppamento consenso spaziale
├── Punteggio di confidenza
│
▼
📍 Coordinate GPS + Punteggio di confidenza
Supporto GPU:
# Clona il repository
git clone https://github.com/sparkyniner/Netryx-OpenSource-Next-Gen-Street-Level-Geolocation.git
cd .\Netryx-OpenSource-Next-Gen-Street-Level-Geolocation\
# Crea ambiente virtuale
python3 -m venv venv
source venv/bin/activate # Su Windows: venv\Scripts\activate
# Installa le dipendenze
pip install -r requirements.txt
# Installa esplicitamente LightGlue (richiesto per il matching)
pip install git+https://github.com/cvg/LightGlue.git
# Opzionale: installa kornia per la Modalità Ultra (LoFTR)
pip install kornia
Nota:
lightglueviene importato dall'app come modulo Python, ma viene installato dal repository GitHub sopra.
Se vuoi utilizzare la funzione di geolocalizzazione cieca assistita dall'AI:
export GEMINI_API_KEY="tua_chiave_qui"
python test_super.py
Utenti macOS: se la GUI appare vuota, aggiorna tkinter: brew install [email protected] (o la versione del tuo Python). Il tkinter incluso nel Python di sistema ha problemi noti di rendering sulle versioni recenti di macOS.
Prima di cercare, devi indicizzare un'area. Questo processo esplora i panorami di Street View ed estrae le impronte CosPlace.
Tempi stimati di indicizzazione:
L'indice viene salvato in modo incrementale — se il processo viene interrotto, riprende da dove era stato lasciato al prossimo avvio.
Abilita la casella Ultra Mode per immagini difficili. Aggiunge il matching denso LoFTR, il salto del descrittore e l'espansione di vicinato. Significativamente più lento ma cattura corrispondenze che la pipeline standard non trova.
Tutti gli embedding sono memorizzati in un unico indice unificato. Quando cerchi, il filtro del raggio restringe automaticamente i risultati all'area specificata. Questo significa:
Flusso dei dati:
Modalità Create:
Punti della griglia → Google Street View API → Panorami → Ritagli → CosPlace → cosplace_parts/*.npz
Costruzione automatica:
cosplace_parts/*.npz → cosplace_descriptors.npy + metadata.npz (indice ricercabile)
Modalità Search:
Immagine query → CosPlace → Ricerca indice (filtrato per raggio) → Scarica candidati → ALIKED/DISK + LightGlue → Risultato
netryx/
├── test_super.py # Applicazione principale (GUI + indicizzazione + ricerca)
├── cosplace_utils.py # Caricamento del modello CosPlace ed estrazione descrittori
├── build_index.py # Costruttore di indice autonomo ad alte prestazioni (per grandi dataset)
├── requirements.txt # Dipendenze Python
├── cosplace_parts/ # Chunk di embedding grezzi (creati durante l'indicizzazione)
├── index/ # Indice compilato ricercabile
│ ├── cosplace_descriptors.npy # Tutti i descrittori a 512 dimensioni
│ └── metadata.npz # Coordinate, orientamenti, ID panoid
└── README.md
La precisione diminuisce con un raggio di ricerca maggiore?
No. CosPlace classifica per similarità visiva su tutto l'indice. Che il tuo indice copra 1 km o 50 km, i primi candidati sono sempre i più simili visivamente. Il filtro del raggio si limita a escludere le voci geograficamente irrilevanti prima della classificazione.
Quanto tempo richiede una ricerca?
In genere 2–5 minuti su Apple Silicon, 1–3 minuti su GPU NVIDIA. Il collo di bottiglia è lo scaricamento delle tile dei panorami da Google (limitato dalla rete), non il matching stesso.
Posso indicizzare un intero paese?
Non è pratico. Un raggio di 10 km produce circa 100.000 panorami e un indice di circa 7 GB. Un intero paese richiederebbe petabyte. Indicizza città o regioni di interesse specifiche (5–20 km).
La mia ricerca ha trovato 0 candidati.
Le tue coordinate di ricerca non si sovrappongono ad alcuna area indicizzata. Indicizza prima l'area oppure regola il centro/raggio di ricerca in modo che si sovrapponga ai dati indicizzati esistenti. Usa "Show Coverage Map" per visualizzare cosa è stato indicizzato.
La corrispondenza è leggermente sbagliata (fuori di un isolato).
Abilita la Modalità Ultra. L'espansione di vicinato cerca tutti i panorami entro 100 m dalla corrispondenza iniziale, trovando spesso il nodo stradale esatto corretto.
Funziona con foto di interni?
No. Netryx confronta solo con panorami stradali esterni. Foto di interni, immagini aeree/satellitari e foto ravvicinate di oggetti non produrranno risultati significativi.
Costa denaro?
Netryx è gratuito e open source. La funzione opzionale AI Coarse richiede una chiave API Gemini (livello gratuito disponibile da Google). I costi di calcolo sono relativi al tuo hardware — nessun servizio cloud richiesto.
Esiste una versione ospitata?
Sì. netryx.live esegue l'intera pipeline nel cloud, così non devi configurare nulla in locale. Utile se vuoi risultati rapidi senza costruire il tuo indice. Tuttavia, è circa il 30% meno accurato della versione open source a causa di limitazioni di calcolo.
netryx.live esegue lo stesso motore nel cloud — carica una foto, ottieni coordinate. Nessuna installazione, nessuna indicizzazione, nessuna GPU richiesta. Tuttavia, è circa il 30% meno accurato della versione open source a causa di limitazioni di calcolo.
Sairaj Balaji — ricercatore AI e creatore di PrismX. Sovvenzioni da Microsoft for Startups e ElevenLabs. In evidenza su Fast Company e Deutsche Welle.
Licenza MIT. Vedi LICENSE per i dettagli.
Netryx è progettato per la ricerca OSINT legittima, il giornalismo investigativo, il monitoraggio dei diritti umani, la risposta ai disastri e la ricerca accademica.
Responsabilità dell'utente: Sei l'unico responsabile del rispetto delle leggi applicabili, inclusi i Termini di servizio di Google Maps/Street View e le normative locali sulla privacy.
Non utilizzare per: Stalking, molestie, sorveglianza non autorizzata o qualsiasi attività che violi la privacy o la sicurezza di individui.
Gli sviluppatori di Netryx declinano ogni responsabilità per un uso improprio.
| Caso d'uso | Collegamento |
|---|
| Geolocalizzazione di un attacco missilistico — Qatar (febbraio 2026) | Guarda su YouTube |
| Monitoraggio di conflitti — proteste a Parigi | Guarda su YouTube |
| Geolocalizzazione cieca da una foto casuale — Parigi | Guarda su YouTube |
| Approfondimento tecnico: come funziona la pipeline | Guarda su YouTube |
| Componente | Minimo | Consigliato |
|---|
| Sistema operativo | macOS / Linux / Windows | macOS (M1+) o Linux con GPU NVIDIA |
| VRAM GPU | 4 GB | 8 GB+ |
| RAM | 8 GB | 16 GB+ |
| Archiviazione | 10 GB | 50 GB+ (dipende dalla dimensione dell'area indicizzata) |
| Internet | Richiesto per indicizzazione e ricerca | Banda larga consigliata |
| Python | 3.9+ | 3.10+ |
| Raggio | Panorami approssimativi | Tempo (M2 Max) | Dimensione indice |
|---|
| 0.5 km | ~500 | 30 min | ~60 MB |
| 1 km | ~2.000 | 1–2 ore | ~250 MB |
| 5 km | ~30.000 | 8–12 ore | ~3 GB |
| 10 km | ~100.000 | 24–48 ore | ~7 GB |
| Modello | Scopo | Articolo |
|---|
| CosPlace | Riconoscimento visivo di luoghi (descrittore globale) | CVPR 2022 |
| ALIKED | Estrazione di caratteristiche locali (usato su CUDA) | IEEE TIP 2023 |
| DISK | Estrazione di caratteristiche locali (usato su MPS/CPU) | NeurIPS 2020 |
| LightGlue | Matching profondo delle caratteristiche | ICCV 2023 |
| LoFTR | Matching denso senza rilevatore (Modalità Ultra) | CVPR 2021 |
| Caratteristica | CUDA (NVIDIA) | MPS (Mac) | CPU |
|---|
| Estrattore di caratteristiche | ALIKED (1024 kp) | DISK (768 kp) | DISK (768 kp) |
| Attenzione flash LightGlue | Abilitata | Disabilitata | Disabilitata |
| LoFTR (Modalità Ultra) | Piena velocità | Fallback CPU per alcune operazioni | Piena CPU |
| Velocità di indicizzazione | Più veloce | Buona | Lenta |