Zoeken
← Terug naar Blog

Hoe GeoPin werkt: de technologie achter fotogeolocatie

Een technisch overzicht van GeoPin's geolocatiepijplijn — van CosPlace-embeddings en vectorzoekopdrachten tot geometrische verificatie met LightGlue.

Hoe GeoPin werkt: de technologie achter fotogeolocatie

Van foto naar coördinaten

Wanneer je een foto uploadt naar GeoPin, krijg je een set GPS-coördinaten terug — doorgaans binnen enkele seconden. Maar achter die eenvoudige interactie schuilt een meerfasige pijplijn die deep learning, hoogwaardige vectorzoekopdrachten en klassieke computervision combineert. Hier volgt hoe het allemaal werkt.

Fase 1: Visuele embedding met CosPlace

De eerste stap is het omzetten van je foto in iets waar een computer ruimtelijk mee kan redeneren. We gebruiken CosPlace, een model voor visuele plaatsherkenning dat is ontwikkeld aan de Polytechnische Universiteit van Turijn, om een compacte numerieke representatie van elk beeld te genereren.

CosPlace is gebouwd op een ResNet-152-backbone — een diep convolutioneel neuraal netwerk met 152 lagen. Het model is getraind op een enorme dataset van geotagde beelden op straatniveau en heeft geleerd embeddings te produceren waarbij beelden van dezelfde plaats bij elkaar clusteren in de vectorruimte, ongeacht veranderingen in belichting, seizoen, weer of camerahoek.

De uitvoer is een 512-dimensionale vector. Beschouw het als een vingerafdruk van de visuele scène: twee foto’s die op hetzelfde kruispunt zijn genomen, zullen vergelijkbare vingerafdrukken hebben, zelfs als de ene op een zonnige zomerochtend is geschoten en de andere op een regenachtige winteravond.

Wat CosPlace bijzonder effectief maakt, is de manier waarop het is getraind. In tegenstelling tot eerdere benaderingen die zorgvuldig samengestelde beeldparen vereisten, gebruikt CosPlace een groepsgebaseerde trainingsstrategie die beelden organiseert op basis van hun GPS-coördinaten. Hierdoor kan het model robuuste plaatsrepresentaties leren zonder de complexe mining van positieve en negatieve paren die eerdere systemen voor visuele plaatsherkenning parten speelde.

Fase 2: Vectorzoekopdrachten op schaal

Zodra we een 512-dimensionale embedding hebben voor je zoekfoto, moeten we de meest vergelijkbare embeddings in onze referentiedatabase vinden. Deze database bevat miljoenen beelden die Nederland dekken op straatniveau, elk vooraf verwerkt door hetzelfde CosPlace-model en opgeslagen samen met de bekende GPS-coördinaten.

Zoeken door miljoenen 512-dimensionale vectoren naar de dichtstbijzijnde buren klinkt rekenkundig duur — en met een brute-force-aanpak zou het dat ook zijn. Dit is waar approximate nearest neighbor (ANN) search om de hoek komt kijken.

We gebruiken Cloudflare Vectorize als onze vectordatabase. Het implementeert het Hierarchical Navigable Small World (HNSW)-algoritme, dat een meerlagige grafiekstructuur bouwt over de vectoren. In plaats van je zoekopdracht te vergelijken met elk afzonderlijk referentiebeeld, navigeert HNSW door deze grafiek om snel de benaderde dichtstbijzijnde buren te vinden — waarbij een minimaal verlies aan nauwkeurigheid wordt geruild voor dramatische snelheidsverbeteringen.

Het resultaat: uit miljoenen kandidaten halen we de top-K visueel meest vergelijkbare referentiebeelden op in milliseconden. Elke kandidaat wordt geleverd met bekende GPS-coördinaten, wat ons een eerste set locatiehypotheses geeft.

Fase 3: Herrangschikking en filtering

Niet alle kandidaten uit de vectorzoekopdracht zijn even betrouwbaar. De cosinusgelijkenis-score tussen embeddings geeft ons een globale maat van visuele gelijkenis, maar deze kan worden misleid door scènes die er oppervlakkig vergelijkbaar uitzien zonder dezelfde locatie te zijn. Een generiek viaduct in Amsterdam kan er op embeddingniveau vergelijkbaar uitzien als een in Rotterdam.

Voordat we overgaan tot de dure geometrische verificatie, passen we een filterstap toe. Kandidaten onder een gelijkheidsdrempel worden verworpen. We analyseren ook de ruimtelijke verdeling van topkandidaten — als veel onafhankelijke overeenkomsten in hetzelfde geografische gebied clusteren, is dat een sterk signaal, nog vóór verificatie.

Fase 4: Geometrische verificatie met LightGlue

Dit is waar we overgaan van “deze scènes lijken op elkaar” naar “dit is dezelfde plek.” Geometrische verificatie legt nauwkeurige ruimtelijke overeenkomsten vast tussen het zoekbeeld en elke kandidaat.

We gebruiken LightGlue, een lichtgewicht feature-matchingmodel ontwikkeld door ETH Zürich en Microsoft. Het proces werkt als volgt:

  1. Keypoint-detectie. We extraheren lokale kenmerken (keypoints en hun descriptors) uit zowel het zoekbeeld als het referentiebeeld van de kandidaat met behulp van SuperPoint, een zelfgesuperviseerde keypoint-detector. Elk keypoint vertegenwoordigt een onderscheidend visueel element — een hoek van een gebouw, een textuurpatroon, een rand van een bord.

  2. Feature-matching. LightGlue neemt de twee sets keypoints en leert welke overeenkomen met hetzelfde fysieke punt in de scène. In tegenstelling tot traditionele matchers die descriptors onafhankelijk vergelijken, gebruikt LightGlue aandachtsmechanismen om de globale rangschikking van keypoints mee te wegen, waardoor het veel robuuster is tegen gezichtspuntveranderingen en occlusies.

  3. Geometrische consistentiecontrole. De gematchte keypoints moeten geometrisch consistent zijn — ze moeten voldoen aan de beperkingen van projectieve meetkunde (de epipolaire beperking). We schatten een fundamentele matrix met behulp van RANSAC en verwerpen overeenkomsten die niet in het geometrische model passen. Als er na deze filtering genoeg inliers overblijven, hebben we sterk bewijs dat beide beelden dezelfde fysieke scène tonen.

Het aantal geverifieerde geometrische inliers dient als onze betrouwbaarheidsscore. Een overeenkomst met honderden geometrisch consistente featureovereenkomsten is vrijwel zeker correct. Een overeenkomst met slechts een handvol inliers is veel minder betrouwbaar.

Alles samengebracht

De volledige pijplijn werkt als een trechter:

  • Miljoenen referentiebeelden zijn geïndexeerd in de vectorruimte.
  • Honderden kandidaten worden opgehaald via approximate nearest neighbor search.
  • Tientallen overleven herrangschikking en ruimtelijke filtering.
  • Een paar slagen voor de geometrische verificatie met hoog vertrouwen.

De uiteindelijke locatieschatting wordt afgeleid van de geverifieerde overeenkomsten. Wanneer meerdere referentiebeelden uit hetzelfde gebied de geometrische verificatie doorstaan, kunnen we een nauwkeurige positie trianguleren. De betrouwbaarheidsscore weerspiegelt zowel het aantal geverifieerde overeenkomsten als de geometrische consistentie van het bewijs.

Waarom deze architectuur?

Geen enkele fase zou de klus alleen aankunnen. Embeddings zonder verificatie produceren te veel foutieve overeenkomsten. Verificatie zonder embeddings is te traag. De combinatie geeft ons zowel snelheid als nauwkeurigheid — precisie op meterniveau, doorgaans in minder dan vijf seconden.