GeoCloak: An Agentic Framework for Semantics-Preserving Geolocation Privacy via Peripheral Clue Manipulation
Organizations: The Hong Kong University of Science and Technology (Guangzhou) · The Hong Kong University of Science and Technology · CISPA Helmholtz Center for Information Security · HPE
Abstract
The rapid advancement of large vision language models (LVLMs) has made geolocation inference from images highly accurate and accessible. This poses serious privacy risks: a passive adversary with black-box LVLM access can infer a user's location from a single photo with no metadata. Existing protection methods rely almost exclusively on adversarial perturbation, which introduces perceptible visual artifacts and utility degradation. We identify the visual-geolocation asymmetry: geolocation-decisive clues, such as street signs, tend to be visually peripheral but dominate location inference. Exploiting this asymmetry, we propose GeoCloak, an agentic framework for semantics-preserving geolocation privacy protection. It acts as a clue-aware planner that analyzes each image to identify geolocation-relevant clues, dispatches targeted semantic edits to directly suppress peripheral clues, and autonomously configures adversarial perturbation to further suppress residual geolocation features, all under iterative utility-aware feedback. We evaluate GeoCloak on four diverse datasets spanning 108 countries and 576 cities against five LVLMs and three inference methods. GeoCloak reduces overall city-level accuracy from 41.2% to 9.9%, approximately half of the best-performing baseline, while achieving substantially superior utility preservation both qualitatively and quantitatively. We hope this work takes a meaningful step toward practical, semantics-preserving geolocation privacy protection, giving users greater control over the location information inadvertently embedded in their shared images.
Figures & tables
| GeoBench | Im2GPS3k | Dataset-GSS | Dataset-PCW | |
| Exempt Rate | 37.5% | 53.4% | 21.0% | 55.3% |
| Level-Wise Acc. | Distance-Based Acc. | ||||||
| Dataset | Type | City | State | Country | @1km | @25km | @100km |
| Overall | Exempt | 73.0% | 84.0% | 93.9% | 30.8% | 82.3% | 86.0% |
| Non-Exempt | 48.3% | 58.9% | 87.9% | 16.1% | 55.2% | 61.6% | |
| Zero-Shot | GeoVista | GeoMiner | |||||||||||
| Dataset | Defense | Gemini-2.5-Pro | Gemini-3.1-Pro | GPT-5.4 | o3 | Qwen3.5-Plus | GeoVista | Gemini-2.5-Pro | Gemini-3.1-Pro | GPT-5.4 | o3 | Qwen3.5-Plus | Overall |
| GeoBench | Initial | 74.1% | 81.9% | 63.1% | 71.6% | 54.7% | 63.7% | 70.6% | 77.2% | 58.8% | 62.5% | 53.1% | 66.5% |
| M-Attack | 54.4% | 62.8% | 37.2% | 47.2% | 33.1% | 42.8% | 50.9% | 60.6% | 38.8% | 36.9% | 28.4% | 44.8% | |
| GeoShield | 53.1% | 64.1% | 36.2% | 40.3% | 29.4% | 35.9% | 50.0% | 60.3% | 35.0% | 30.3% | 28.4% | 42.1% | |
| GeoCloak | 17.5% | 22.2% | 18.1% | 25.3% | 11.2% | 21.6% | 19.1% | 22.5% | 12.2% | 16.9% | 7.5% | 17.6% | |
| Im2GPS3k | Initial | 30.0% | 30.9% | 24.0% | 29.6% | 16.3% | 18.9% | 30.0% | 26.6% | 21.5% | 19.7% | 17.2% | 24.1% |
| Attacker | Mechanism | Initial | GeoCloak |
| GeoCLIP [ 4 ] | Embedding-based retrieval | 12.1 | 5.0 |
| GeoSeer [ 10 ] | Commercial black-box tool | 30.7 | 5.7 |
| Defense | Naturalness | Semantic Preservation | Overall Quality |
| GeoShield | 2.23 | 3.68 | 2.53 |
| M-Attack | 2.31 | 3.77 | 2.63 |
| GeoCloak | 4.57 | 4.45 | 4.43 |
| Dataset | Defense | CLIP Sim | BERT Score | BLEU | ROUGE-L |
| Overall | M-Attack | 0.7719 | 0.9124 | 0.0968 | 0.3839 |
| GeoShield | 0.4209 | 0.9047 | 0.0766 | 0.3480 | |
| GeoCloak | 0.9197 | 0.9158 | 0.1136 | 0.4054 |
| Design Choice | Overall |
| Initial | 24.1% |
| GeoCloak w/o Semantic Editing | 15.4% |
| GeoCloak w/o Perturbation | 5.1% |
| Closed-source alternative † | 6.3% |
| Open-source alternative ‡ | 7.4% |
| GeoCloak (Full) | 4.0% |
| Attacker | Setting | GeoBench | Im2GPS3k | Dataset-GSS | Dataset-PCW | Overall |
| Naive | Initial | 69.1 | 26.2 | 34.9 | 36.1 | 43.4 |
| GeoCloak | 18.9 | 4.8 | 9.3 | 8.2 | 11.1 | |
| GeoCloak (JPEG) | 20.0 | 4.9 | 9.6 | 8.2 | 11.5 | |
| Adaptive | Initial | 66.6 | 26.5 | 32.8 | 33.0 | 41.6 |
| GeoCloak | 24.0 | 8.0 | 15.2 | 11.9 | 15.9 |
Appendix figures & tables12 assets
Supplementary material from the paper’s appendix.
Appendix
| Strategy | Application Scenario | Original | Protected | How it protects |
| Replace Text | Signs, street names, or any visible text reveal the location. | Replacing Romanian sign text on the red shop signs with Polish words shifts the language clue and misleads the predicted location from Chişinău, Moldova to Warsaw, Poland. | ||
| Replace Object | Location-specific objects are present (e.g., post boxes and traffic signs). | Replacing the American highway sign with a Canadian highway sign shifts the predicted location from Southfield, Michigan, USA, to Windsor, Ontario, Canada. | ||
| Erase Object | An object, sign, text, or logo is too specific to replace but small enough to remove cleanly. | Removing all text from the orange billboard shifts the predicted location from San José, Costa Rica, to San Salvador, El Salvador. | ||
| Add Decoy | Dominant clues are too large or structural to edit or perturb directly. | Adding a small Saguaro cactus growing among the rocks shifts the predicted location from Khomas, Namibia to Tucson, Arizona, US. | ||
| Style Transfer | Apply only to small or background elements. | Changing the architectural style of the greenish building on the left from Russian neoclassical to German neoclassical shifts the predicted location from Moscow, Russia to Warsaw, Poland. |
| Dataset | #Samples | #Countries | #Cities |
| IM2GPS3K | 500 | 74 | 297 |
| Dataset-GSS | 500 | 61 | 161 |
| Dataset-PCW | 267 | 6 | 76 |
| GeoBench | 512 | 64 | 117 |
| Overall | 1,779 | 108 | 576 |
| #Clues | Initial | GeoCloak | GeoShield | M-Attack |
| 2 | 3.83/11 | 0.00/11 | 1.67/11 | 1.33/11 |
| 3 | 5.89/11 | 1.11/11 | 2.22/11 | 3.33/11 |
| 4 | 6.39/11 | 1.35/11 | 3.36/11 | 4.00/11 |
| 5 | 6.76/11 | 1.70/11 | 3.02/11 | 3.99/11 |
| 6 | 6.58/11 | 1.74/11 | 3.17/11 | 3.82/11 |
| 7 | 5.12/11 | 1.29/11 | 2.35/11 | 2.29/11 |
| Geo-identifiability | Initial | GeoCloak | GeoShield | M-Attack |
| Low (1–4/11) | 2.18/11 | 0.35/11 | 0.39/11 | 0.57/11 |
| Medium (5–7/11) | 5.98/11 | 0.86/11 | 1.73/11 | 2.39/11 |
| High (8–11/11) | 9.84/11 | 2.75/11 | 5.69/11 | 6.91/11 |
| Overall | 6.55/11 | 1.57/11 | 3.13/11 | 3.90/11 |
| Level-Wise Acc. | Distance Acc. | |||||||
| Model | Method | Defense | City | State | Country | @1km | @25km | @100km |
| Gemini-2.5-Pro | Zero-Shot | Initial | 48.3% | 58.9% | 87.9% | 16.1% | 55.2% | 61.6% |
| M-Attack | 32.3% | 36.5% | 55.2% | 11.2% | 34.8% | 38.0% | ||
| GeoShield | 26.0% | 27.7% | 44.4% | 9.6% | 26.7% | 29.8% | ||
| GeoCloak | 9.5% | 10.9% | 18.0% | 2.8% | 9.8% | 11.9% | ||
| GeoMiner | Initial | 46.9% | 59.1% | 88.2% | 30.2% | 53.7% | 62.1% | |
| Defense | Naturalness | Semantic Preservation | Overall Quality |
| GeoShield | 2.23 [2.06, 2.41] | 3.68 [3.59, 3.76] | 2.53 [2.38, 2.68] |
| M-Attack | 2.31 [2.15, 2.47] | 3.77 [3.67, 3.86] | 2.63 [2.49, 2.78] |
| GeoCloak | 4.57 [4.44, 4.69] | 4.45 [4.34, 4.56] | 4.43 [4.30, 4.55] |
| Initial | M-Attack | GeoShield | GeoCloak | |||||||
| Model | Method | API | Ref. | API | Ref. | API | Ref. | API | Ref. | |
| Gemini-2.5-Pro | Zero-Shot | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | |
| GeoMiner | 0.0% | 0.2% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | ||
| Gemini-3.1-Pro | Zero-Shot | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | |
| GeoMiner | 0.2% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | ||
| GPT-5.4 | Zero-Shot | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | 0.0% | |
Privacy Protection in VLMs
Privacy protection in vision-language models limits sensitive information exposure while preserving useful image understanding and multimodal reasoning.
See all 37 papers