Autonomous, keyless photographic geolocation using 5-pillar multimodal evidence fusion.
Find where photographs were taken across mountains, coastlines, rural roads, and urban areas using local neural vision priors and physical geospatial verification.
Quick Start • Architecture • Evaluation Benchmarks • Limitations • Technical Docs • REST API
Status: Active Research Prototype (v0.1.0-alpha)
EarthTrace is an experimental system for photographic geolocation and open-source intelligence (OSINT) verification. It combines local vision embeddings with physical spatial verification against open elevation, mapping, and satellite databases.
IMPORTANT ETHICAL NOTICE:
EarthTrace is developed and provided strictly for defensive research, humanitarian relief, open-source journalism, environmental mapping, and academic study.Strictly Prohibited Uses:
- Do not use this software to track, stalk, dox, or compromise non-consenting individuals or private residences.
- Do not deploy this software to infringe upon personal privacy or violate applicable local, national, or international laws.
- Local Data Retention: All uploaded images and intermediate processing artifacts are isolated to the local
jobs/directory and subject to an automated 24-hour cleanup policy to prevent persistent storage of analyzed imagery.
- Your photo never leaves your machine: All deep learning models (GeoCLIP, RapidOCR) execute locally in your GPU/CPU memory. No raw photographs are ever sent to external cloud AI APIs or third-party servers.
- Candidate Geosearch: For candidate verification, the pipeline queries open public geospatial endpoints (OpenStreetMap Overpass, AWS Terrarium DEM elevation tiles, and Wikimedia Commons) using candidate geographical coordinates only—never image data.
- Offline / Air-Gapped Operation: All fetched spatial tiles and vector data are cached to
.geo-cache/. When pre-populated, EarthTrace can operate entirely disconnected from the internet (OFFLINE_MODE=true).
Interactive Web Dashboard showing coordinate telemetry, Leaflet vector map with calibrated uncertainty boundary, directional heading ray, and all 5 multimodal evidence inspector tabs.
- OS: Windows 10/11 (64-bit), Linux (Ubuntu 22.04+), or macOS (Apple Silicon supported via CPU/MPS).
- Python: 3.11 or 3.12.
-
Hardware: NVIDIA GPU with
$\ge 4\text{ GB}$ VRAM (tested on Quadro M1200, GTX 1650, RTX 3050/4060) or CPU fallback.
git clone https://github.com/AshadAbbasi212/EarthTrace.git
cd EarthTrace
powershell -ExecutionPolicy Bypass -File scripts\setup_windows.ps1
powershell -ExecutionPolicy Bypass -File scripts\run.ps1git clone https://github.com/AshadAbbasi212/EarthTrace.git
cd EarthTrace
chmod +x scripts/setup_linux.sh
./scripts/setup_linux.sh
source .venv/bin/activate
uvicorn geolocator.app.api:app --host 127.0.0.1 --port 8080docker build -t earthtrace .
docker run -p 8080:8080 --gpus all earthtraceOpen your browser at http://127.0.0.1:8080.
flowchart TD
Photo[Input Photograph] --> S0[Stage 0: Intake & Metadata Verification]
S0 -->|EXIF GPS Found| FastPath[Fast-Path Geodetic Verification]
S0 -->|No EXIF GPS| S1[Stage 1: Clue Extraction & RapidOCR]
S1 --> S2[Stage 2: Global Prior & Biome Filtering]
subgraph S2_Group [Stage 2: Candidate Formation]
S2 --> GeoCLIP[GeoCLIP Vision Prior]
S2 --> Climate[Köppen-Geiger Classification]
S2 --> LandCover[ESA WorldCover Filtering]
S2 --> SpatialClustering[Spatial Coordinate Clustering]
end
SpatialClustering --> S3[Stage 3: Specialized Solvers]
subgraph S3_Group [Stage 3: Spatial Solvers]
S3 -->|Terrain & Mountain Scene| S3a[Stage 3a: 3D DEM Skyline NCC Profiling]
S3 -->|Built & Rural Scene| S3b[Stage 3b: OSM Infrastructure Corridors]
S3 -->|Architectural Landmark| S3c[Stage 3c: Cadastral Building Matcher]
end
S3a --> S4[Stage 4: Multimodal Verification]
S3b --> S4
S3c --> S4
FastPath --> S4
subgraph S4_Group [Stage 4: Verification & Pose]
S4 --> SatCheck[Satellite Orthophoto SIFT Homography]
S4 --> StreetCheck[Keyless Street-Level Geosearch]
S4 --> PoseSolver[3D Camera Resection Solver]
end
S4 --> S5[Stage 5: Decision Engine & Multi-Format Report]
S5 --> OutJSON[report.json]
S5 --> OutHTML[report.html]
S5 --> OutGeoJSON[report.geojson]
S5 --> WebUI[Web Dashboard]
For complete technical formulas and pipeline specifications, see docs/architecture.md.
Evaluated across the 66-image balanced global benchmark set (eval/manifest.csv) spanning all 11 biomes and 7 continents:
| Standard Distance Metric | Threshold Radius | Observed Result | Literature Benchmark (Standard Vision Models) |
|---|---|---|---|
| Street Level | 34.8% | ~10–15% | |
| City Level | 56.1% | ~25–35% | |
| District / Subnational | 74.2% | ~45–55% | |
| Regional / Biome | 86.4% | ~65–70% | |
| Continental | 95.5% | ~85–90% | |
| Median Error Distance | — | 18.4 km | ~150–400 km |
| Peak GPU VRAM Usage | 1,840 MB | — |
To reproduce these numbers:
python -m eval.run_eval --manifest eval/manifest.csv --photos-dir eval/photos --output-dir eval/results/heldout_runTo prevent data leakage during benchmark evaluation:
- EXIF Stripping: All benchmark evaluation photos in
eval/photos/andeval/photos_obscure/have EXIF metadata completely stripped (has_exif: False). - Bypassed Fast Path: The Stage 0 EXIF fast-path is strictly bypassed during evaluation; coordinates are solved exclusively from visual inference (Stages 1–3) and physical verification (Stage 4).
- Ground-Level Retrieval Isolation: Ground-level geotagged search (Wikimedia Commons) queries only candidate coordinates generated downstream by Stages 2 & 3 to display reference context. It does not propose coordinates or participate in candidate formulation.
Evaluation Transparency Note: The 10 landmark targets below illustrate the fast-path catalog and cadastral building footprint alignment. Because these structures have cataloged footprints in OpenStreetMap, errors are near-zero. They serve as a pipeline sanity demonstration rather than an unconstrained blind benchmark.
Note on Shibuya Crossing: The visual embeddings resolved to the central Tokyo metropolitan coordinate cluster ($3.43\text{ km}$ error), placing it correctly in Tier T3 (City level, $R \le 25\text{km}$) rather than structural pinpoint.
To maintain forensic honesty, every prediction is bound by uniform, strictly defined confidence tiers:
-
Tier 1 (T1) — Landmark / Cadastral Pinpoint: Calibrated radius
$R \le 100\text{ m}$ . Assigned only when structural building footprint, monument contour, or exact EXIF geodetic coordinates match. -
Tier 2 (T2) — Neighborhood / Corridor: Calibrated radius
$R \le 2.0\text{ km}$ . Assigned when linear infrastructure intersections (bridges, rail crossings) or distinctive terrain skylines correlate strongly. -
Tier 3 (T3) — City / Local Valley: Calibrated radius
$R \le 25\text{ km}$ . Assigned when town names, regional gazetteer routes, or valley elevation bounds are verified. -
Tier 4 (T4) — District / Subnational County: Calibrated radius
$R \le 200\text{ km}$ . Assigned when subnational scripts, ccTLDs, or dialed telephone codes establish district bounds. -
Tier 5 (T5) — Biome / State / Province: Calibrated radius
$R \le 750\text{ km}$ . Assigned when Köppen-Geiger climate classification, ESA WorldCover, and solar hemisphere match. -
Tier 6 (T6) — Macro-Region / Continent: Calibrated radius
$R > 750\text{ km}$ . Assigned when evidence is diffuse or ambiguous.
In addition to cataloged urban landmarks, EarthTrace was evaluated on obscure rural, unpaved, and natural wilderness photographs lacking road signs, street numbers, or Google Street View coverage:
As an active research prototype, EarthTrace has specific operational boundaries:
- Featureless & Textureless Environments: Uniform open ocean, featureless sand dunes, or completely flat plains lacking vegetation gradients or infrastructure cannot be localized beyond broad continental biomes (T5/T6).
- Cloud-Covered or Obscured Horizons: The 3D DEM skyline solver requires visible ridgelines or mountain peaks. Low-altitude fog, heavy cloud cover, or dense foreground tree occlusions prevent Normalized Cross-Correlation (NCC) alignment.
- Macro & Indoor Photography: Close-up photographs of food, indoor rooms, or objects lacking exterior architectural or geographic markers will either return wide region-level bounds (T5/T6) or honest "unknown".
- Network Access vs. True Air-Gapped Mode: In default online operation, EarthTrace does not upload images, but it queries public OpenStreetMap Overpass and AWS Terrarium endpoints using candidate coordinates. For fully air-gapped environments, the
.geo-cache/directory must be pre-populated with required spatial tiles. - Cold-Start Latency: To adhere to the 4 GB VRAM limit, neural models are loaded sequentially. Initial cold-start runs take ~60–90 seconds while weights are transferred to GPU memory. Subsequent cached queries take ~15–30 seconds.
- Technical Architecture & Mathematics: Deep dive into 3D camera resection, raycasting, Earth curvature correction, and the 5 multimodal evidence pillars.
- REST API Reference: FastAPI endpoint schemas, SSE real-time streaming, and JSON report specifications.
- Third-Party Notices: OpenStreetMap (ODbL), Mapzen/AWS Terrarium DEM, Wikimedia Commons, and GeoCLIP attribution.
- Contributing Guidelines: Development setup, testing instructions, and responsible use policies.
EarthTrace is open-source software licensed under the MIT License.
Developed by Ashad Abbasi.




