How GeoPin Works
GeoPin uses a three-stage pipeline to determine where a photo was taken in the Netherlands: deep visual embeddings, approximate nearest-neighbor search and geometric verification.
Visual Embedding Engine
Every image, both the query and the millions of reference images in our database, is processed by GeoPin's visual embedding engine, a specialised deep learning model for place recognition. It transforms each image into a compact 512-dimensional embedding vector that captures its geographic visual identity.
Unlike classification models that predict discrete locations, our model learns a continuous embedding space where visually similar places cluster closely together. Two photos of the same street corner, taken at different times and from different angles, produce vectors that lie close together in this space.
Vector Similarity Search
The query embedding is compared against our full database of geo-tagged reference embeddings via approximate nearest-neighbor (ANN) search. This retrieves the most likely locations where the query image was taken.
Our index is built on HNSW (Hierarchical Navigable Small World) graphs, enabling sub-millisecond search across millions of vectors. The top-k candidates (typically k=100) are retrieved with their associated GPS coordinates and reference images.
Geometric Verification
Vector similarity alone can produce false positives: different locations that happen to look alike. To eliminate these, GeoPin applies geometric verification using local feature matching.
GeoPin's verification engine extracts robust local features from both the query image and each candidate reference image. A specialised feature matcher then matches these features with a lightweight attention-based architecture, finding correspondences that satisfy the geometric constraints of a true scene match.
Only candidates with sufficient geometrically consistent feature matches pass verification. The final result includes GPS coordinates, a confidence score and the matched reference images.
Multi-source reference database
GeoPin's accuracy depends on comprehensive coverage. We index street-level imagery from multiple open and commercial sources across the Netherlands.
Mapillary
The largest source of crowdsourced street-level imagery. Millions of geo-tagged photos contributed by community mappers across all Dutch provinces.
25.2M imagesKartaView
OpenStreetMap-affiliated street-level imagery platform. Provides supplementary coverage of Dutch roads, intersections and rural areas.
5.4M imagesPanoramax
Open-source panoramic imagery initiative. Growing coverage of French and Dutch streets with high-resolution panoramic captures.
1.5M imagesMapilio
AI-powered street-level imagery platform. Contributes additional imagery from Dutch urban and suburban areas with precise GPS coordinates.
1.4M imagesAmsterdam Open Panorama
Official open data from the Municipality of Amsterdam. Complete panoramic street-level imagery of all public roads within the municipality.
2.5M imagesOther
Additional sources including municipal open data, regional panorama sets and other open street-level imagery platforms.
3.0M imagesSee it in action
Upload any photo taken in the Netherlands and watch the pipeline at work. Results in seconds, not hours.