Au-delà de la recherche d'image : géolocaliser une île parmi 80 millions de candidats grâce au GPU

Au-delà de la recherche d'image : géolocaliser une île parmi 80 millions de candidats grâce au GPU

Information GéographiqueCalcul GPUOSINTIngénierie Algorithmique

Sources:HN + web research

Une alternative originale à la recherche d’image inversée

Sofia Santos, experte en sécurité et OSINT, a publié une photographie aérienne prise par drone montrant une station balnéaire, défiant la communauté de retrouver le nom du complexe, les coordonnées de l’île et l’orientation de l’appareil. La photo ne contenait aucune donnée GPS ni métadonnées d’appareil (EXIF) : elle n’affichait que des cocotiers, de la plage de sable blanc et trois masses terrestres au loin sur la mer.

La première réaction de la plupart des participants a été d’ouvrir des moteurs de recherche d’image inversée, tentant de faire reconnaître les structures ou le paysage par un modèle de vision. Le développeur yassa9 a choisi une démarche totalement différente : fermer la barre de recherche, coder un algorithme sur mesure et charger l’intégralité des 882 Mo de données vectorielles du littoral mondial directement dans la mémoire VRAM d’une carte graphique.

Face à des paysages naturels fortement homogènes, les modèles de reconnaissance visuelle généraux échouent fréquemment, générant d’immenses faux positifs sur des plages tropicales. Réduire la recherche à une géométrie déterministe est devenu le seul moyen d’échapper au piège probabiliste.

Vue aérienne du complexe hôtelier de l'île d'Oan Figure : Image originale du défi OSINT publié par Sofia Santos, comportant trois îlots distincts. Source : Blog de yassa9

Transformer trois îlots en une empreinte géométrique

Trois masses terrestres sont clairement visibles sur le cliché : la petite île P0 du complexe au premier plan, l’île plate P1 à droite, et l’île P2 présentant des reliefs montagneux à gauche. Ces trois points physiques sur un plan bidimensionnel forment un triangle spécifique.

Le rapport des longueurs des trois côtés ainsi que les angles intérieurs constituent une signature géométrique infalsifiable. En tenant compte de la déformation de perspective et de l’aberration de la lentille, l’algorithme a défini une marge de tolérance de ±20 % pour cette caractéristique géométrique, la transformant en une « empreinte géographique » interrogeable par machine.

La première étape du traitement a consisté à charger le jeu de données vectorielles des littoraux mondiaux d’OpenStreetMap land-polygons-split-4326, dont le fichier non compressé pèse 882 Mo. Pour éviter une explosion du volume de calcul, le pipeline a mis en œuvre une stratégie de compression spatiale progressive :

En se basant sur les caractéristiques de la végétation tropicale, la latitude de recherche a été restreinte entre ±30° autour de l’équateur. Le nombre de polygones terrestres restants a chuté de plusieurs millions à 141 131. Ce premier filtre a éliminé 68 % des polygones terrestres mondiaux, circonscrivant le calcul strictement à la zone tropicale.

Ensuite, un échantillonnage de densité spatiale à 5 km a réduit le nombre de nœuds à 51 576 points, puis un regroupement spatial à 20 km a divisé les nœuds en 23 500 clusters d’îles. En énumérant les combinaisons de trois points dans chaque cluster, 80 690 777 triangles candidats ont été générés. Ces 80,69 millions de combinaisons ont transformé une recherche intuitive et incertaine en un problème standard de force brute calculable.

Carte de distribution mondiale des sites candidats Figure : Distribution des localisations candidates dans la zone de tolérance après filtrage géométrique et accélération CUDA. Source : Blog de yassa9

Recherche fulgurante sur GPU en 204 millisecondes

Parcourir 80,69 millions de combinaisons géométriques sur un CPU conventionnel aurait pris plusieurs dizaines de minutes, ce qui constituait le principal goulot d’étranglement d’ingénierie. yassa9 a écrit un kernel CUDA dédié, assignant la vérification de chaque triangle candidat à un thread de calcul GPU indépendant.

Exécuté sur une carte graphique grand public d’entrée de gamme, la NVIDIA RTX 3050 (n’occupant que 5,2 Go de VRAM), le kernel CUDA a terminé l’ensemble des 80,69 millions de tests de correspondance de forme en seulement 204,1 millisecondes. En un instant, il a éliminé 99,8 % des combinaisons invalides, ne conservant que 158 784 triangles candidats.

Les processeurs de flux parallèles d’un GPU sont idéalement adaptés aux vérifications géométriques indépendantes ; le temps d’exécution de 0,2 seconde du kernel a multiplié par des milliers l’efficacité de la recherche.

Un pipeline de filtrage des données à plusieurs niveaux

Même réduit à 158 784 candidats, ce volume restait largement au-delà des capacités d’une vérification humaine manuelle, nécessitant la construction d’un pipeline de filtrage multidimensionnel par étapes. L’algorithme a d’abord effectué une déduplication spatiale, fusionnant les triangles adjacents répétés pour ramener les cibles à 8 915.

Un contrôle d’eau libre a suivi, éliminant les lacs intérieurs et les archipels denses à l’aide de boîtes englobantes (bounding boxes), laissant 948 nœuds. Pour correspondre à la structure de récif corallien visible sur la photo, l’algorithme a introduit l’indice de compacité de Polsby-Popper (rapport périmètre/surface de la ligne de côte), réduisant à nouveau les candidats à 213. Le calcul de compacité a éliminé avec succès les côtes fragmentées et très irrégulières, préservant les îles présentant de larges atolls.

Le filtrage ultérieur par taux de remplissage elliptique a réduit les cibles à 137. À ce stade, l’algorithme s’est connecté aux données de télédétection satellitaire pour évaluer la végétation via l’indice NDVI avec un seuil de 0,6. Cet indice de végétation élevé a immédiatement écarté les bancs de sable nus et les structures artificielles non végétalisées, ramenant les candidats restants à 66.

La dernière étape automatisée a été l’interrogation des données d’élévation Copernicus DEM 30m. L’algorithme a comparé le relief montagneux de l’île P2 observé sur la photo, exigeant des sites candidats la présence de reliefs d’une hauteur spécifique, restreignant finalement la sélection à 26 candidats. La correspondance d’élévation à 30 mètres de résolution a éliminé une multitude de récifs coralliens plats, portant le coup de grâce du pipeline automatisé.

Vérification humaine et algorithmes de niveau militaire

Le pipeline automatisé ayant réduit 80,69 millions d’options à seulement 26, la vérification finale a été confiée à l’inspection humaine. yassa9 a examiné les images satellitaires par ordre de priorité algorithmique et a réussi à identifier la cible exacte au 8e candidat vérifié.

La localisation confirmée est l’île d’Oan, dans les États fédérés de Micronésie (coordonnées : 7°21’48.4”N 151°45’20.7”E). Le complexe hôtelier de la photo a été identifié comme l’Oan Island Resort, et la caméra du drone au moment de la prise de vue était orientée vers le nord-ouest à un cap de 324,97°.

Dans les discussions sur Hacker News, de nombreux ingénieurs ont souligné que cette solution réinventait en substance le principe de navigation TERCOM (Terrain Contour Matching) utilisé par les missilistes pour le guidage de croisière. Le Jet Propulsion Laboratory (JPL) de la NASA a également utilisé des algorithmes de correspondance de caractéristiques géométriques similaires lors de l’atterrissage du rover Mars 2020 Perseverance, réduisant l’ellipse d’atterrissage d’un ordre de grandeur.

Cette expérience personnelle démontre une réalité d’ingénierie : qu’il s’agisse de géolocaliser une île à des dizaines de kilomètres ou de réussir un atterrissage de précision sur Mars, s’appuyer sur des contraintes géométriques déterministes pour dissiper l’ambiguïté visuelle est une approche technique extrêmement fiable.

La puissance de calcul abat les barrières de l’expérience

De 882 Mo de données côtières à une exécution GPU de 204 millisecondes, cette expérience visant à retrouver une île déserte démontre toute la puissance de la résolution de problèmes en ingénierie moderne.

Les contours des trois îlots sur la photo n’étaient en réalité qu’une suite de coordonnées géométriques inscrites à la surface de la Terre. Dès lors que les caractéristiques physiques sont traduites en structures de données calculables, l’immense espace inconnu peut être rapidement compressé par le vrombissement de la puissance de calcul.

Lorsque la force brute du GPU rencontre des contraintes géométriques strictes, la recherche visuelle humaine traditionnelle, longtemps dépendante de l’expérience et du hasard, se trouve intégralement restructurée par les algorithmes d’énumération des machines.

Liens de référence :

  • Blog de yassa9 : Geolocating an Island Photo
  • Discussion Hacker News : Geolocating an Island Photo
  • Défi OSINT gralhix : Challenge #004