3,583 papers
arXiv:2610.20055 84 14 окт. 2026 г. FREE

GeoCloak: защита геолокации фото через правку мелких подсказок на заднем плане

КЛЮЧЕВАЯ СУТЬ
Модель угадывала город по фото в 41% случаев. После правки пары мелких деталей на заднем плане — только в 10%. Метод GeoCloak позволяет выложить снимок и не выдать, где он сделан, а сам кадр почти не меняется. Фишка: не маскируй всё фото, а найди самую «дорогую» улику и перепиши только её. Это табличка с улицей, вывеска пекарни или номер региона на машине. Модель по ним определяет место съёмки, а человек их даже не замечает. Размытие и очистка метаданных (координат в файле) почти не помогают. Здесь фото остаётся тем же по смыслу, а точность угадывания падает с 41% до 10%.
Адаптировать под запрос
⚡

TL;DR

GeoCloak — агентная система из трёх ролей. Первая (ClueAgent) находит на фото всё, что выдаёт место съёмки, и ранжирует подсказки по точности. Вторая (EditAgent) правит самые опасные из них: заменяет текст на вывеске, меняет объект, стирает деталь. Третья (Orchestrator) в цикле проверяет два условия: модель уже не угадывает место, и фото не испортилось. Правка идёт точечно, а не шумом по всей картинке.

Главная находка: подсказки, которые выдают место, обычно мелкие и на периферии кадра. Это табличка с названием улицы, вывеска магазина, номер машины, почтовый ящик нужной формы. Человек их почти не замечает, а модель, понимающая картинки (LVLM), по ним определяет город по одному фото без метаданных. Размытие и удаление метаданных почти не помогают. Защитный «шум» поверх всей картинки портит снимок и всё равно защищает хуже.

Метод решает это так: находи подсказки → правь самую «дорогую» → проверяй, что модель ошибается, а фото осталось прежним. В цикле три шага, пока модель не перестанет угадывать место или не кончится лимит попыток. Точность определения города упала с 41% до 10%. Одной семантической правки уже хватает для сильной защиты, шум нужен только для остатков.


🔬

Схема метода

ШАГ 0: ClueAgent смотрит на исходное фото и пытается угадать место
        → если угадал: режим «стандарт»
        → если не угадал: режим «с подсказкой» (ему сообщают реальное место,
          чтобы он нашёл скрытые улики, которые заметит более сильный атакующий)

ЦИКЛ (до N попыток):
ШАГ 1: ClueAgent.analyze(фото) → список подсказок:
        тип (достопримечательность / текст и вывески / культура / пространство),
        описание, область на фото, оценка точности 0–1
ШАГ 2: EditAgent.plan(подсказки) → план: какую подсказку правим,
        одна из 5 стратегий, текстовый запрос для редактора, обоснование
ШАГ 3: EditAgent.execute → новое фото
ШАГ 4: Orchestrator.utility_check → главные объекты на месте? фото не уехало?
        → нет: откат, EditAgent переделывает план
ШАГ 5: Orchestrator.protection_check → ClueAgent.geopredict(новое фото)
        → угадал верно: новая итерация
        → не угадал: СТОП

В статье шаги идут в разных вызовах модели под управлением кода-оркестратора. В чате это несколько сообщений подряд.

5 стратегий правки: - ReplaceText — заменить текст на вывеске, номере, названии магазина на текст из похожего, но другого региона. - ReplaceObject — заменить объект (почтовый ящик, трамвай, дорожный знак) на правдоподобный из соседней страны. - EraseObject — стереть деталь, которую нельзя заменить, но можно аккуратно закрасить. - AddDecoy — добавить рядом ложную подсказку, если главная улика слишком большая. - StyleTransfer — сменить стиль дальних зданий или растительности, не трогая главный объект.

5 принципов выбора, по порядку: 1. Начни с малого: бери подсказку с лучшим отношением «точность / площадь». 2. Вписывай естественно: свет, перспектива и стиль не должны меняться. 3. Оставайся культурно близко: замены только из соседнего региона. 4. Не трогай главный объект. 5. Упорствуй и эскалируй: при неудаче перепиши запрос, потом смени стратегию.


🚀

Пример применения

Задача: Блогер из Казани хочет выложить сторис из кофейни с видом из окна, но не хочет, чтобы подписчики (и случайные люди) вычислили район. В кадре его латте на подоконнике. Во дворе видна табличка с названием улицы, вывеска местной пекарни и машина с кодом региона 116. Башни Сююмбике или других узнаваемых достопримечательностей нет, они были бы сознательным раскрытием места.

Промпт:

Ты работаешь как система из трёх ролей. Я загружаю фото и сообщаю реальное место съёмки: Казань, Россия, район Старо-Татарская слобода. Твоя цель: чтобы по отредактированному фото место нельзя было определить, а фото осталось тем же по смыслу.


Задача 1. Найди все подсказки о месте на фото. Для каждой дай:
- тип: достопримечательность / текст и вывески / культура / пространство
- описание и почему она выдаёт место
- область на фото (где находится)
- оценка точности от 0 до 1 (1 = однозначно указывает на место)
Задача 2. Как атакующий: по этим подсказкам назови лучшую догадку «город, страна».



Выбери одну подсказку с лучшим отношением «оценка точности / площадь на фото».
Выбери стратегию: ReplaceText, ReplaceObject, EraseObject, AddDecoy, StyleTransfer.
Принципы по порядку:
1. Начни с малого.
2. Вписывай естественно: свет, перспектива, стиль.
3. Замены только из соседнего региона, чтобы выглядело правдоподобно.
4. Не трогай главный объект (латте, подоконник).
5. При неудаче перепиши запрос, затем смени стратегию.
Выдай план: подсказка, стратегия, обоснование и готовый запрос для редактора изображений на английском.



Я вставлю запрос в редактор изображений и пришлю результат. Тогда проверь:
- utility_check: главные объекты на месте, фото выглядит естественно, артефактов нет? Если нет, откат и новый план.
- protection_check: повтори роль ClueAgent на новом фото. Если ты всё ещё называешь Казань, начинай новую итерацию. Если нет, остановись.
Максимум 5 итераций. В конце перечисли, какие подсказки остались видимыми.


Начни с шага 0: проанализируй фото и назови догадку.

Результат: Модель сначала выдаст таблицу подсказок с типами, областями и оценками. Скорее всего, сверху окажутся табличка с улицей и номер региона на машине. Затем она предложит план: стратегию, обоснование и готовый запрос для редактора изображений (например, Nano Banana или встроенный редактор ChatGPT). Вы вставляете запрос в редактор, возвращаете картинку, и модель проверяет её и повторно угадывает место. Цикл идёт, пока модель не перестанет называть Казань или не кончатся 5 попыток. В финале будет список подсказок, которые ещё остались.


🧠

Почему это работает

Слабость: защита «в лоб» плохо работает. Размытие и очистка метаданных не мешают модели читать вывески и узнавать архитектуру. Шум поверх всего кадра портит снимок и действует одинаково на все фото, хотя у каждого фото свои улики.

Сильная сторона LLM: модель, понимающая картинки, умеет находить и классифицировать улики, как это делает атакующий. Она же умеет описывать правки словами и выбирать стратегию под конкретную подсказку. Один и тот же инструмент служит и атакующим, и защитником, и проверяющим.

Как метод это использует: ClueAgent сам играет роль атакующего, поэтому условие остановки честное: «модель больше не угадывает». Правка идёт в первую очередь по самым информативным и самым мелким подсказкам, так что фото почти не меняется, а место становится нечитаемым. Жёсткий utility_check не даёт правке задеть главный объект.

Рычаги управления: - Число итераций N → меньше для беглой проверки, больше для чувствительных фото. - Целевой уровень защиты → «страна» сильнее, чем «город»: нужно убрать больше улик. - Режим «с подсказкой» (вы называете реальное место) → модель находит скрытые улики, которые пропустила бы без подсказки. - Набор стратегий → уберите AddDecoy, если ложные объекты неприемлемы. - Порядок принципов → поставьте «не трогай главный объект» выше всего, если снимок критичен.


📋

Шаблон промпта

Ты работаешь как система из трёх ролей. Я загружаю фото и сообщаю реальное место съёмки: {реальное_место}. Цель: чтобы по отредактированному фото {уровень_защиты} нельзя было определить, а фото осталось тем же по смыслу.


Задача 1. Найди все подсказки о месте на фото. Для каждой дай:
- тип: достопримечательность / текст и вывески / культура / пространство
- описание и почему она выдаёт место
- область на фото
- оценка точности от 0 до 1 (1 = однозначно указывает на место)
Задача 2. Как атакующий: по этим подсказкам назови лучшую догадку «{формат_догадки}».



Выбери одну подсказку с лучшим отношением «оценка точности / площадь на фото».
Выбери стратегию: ReplaceText, ReplaceObject, EraseObject, AddDecoy, StyleTransfer.
Принципы по порядку:
1. Начни с малого.
2. Вписывай естественно: свет, перспектива, стиль.
3. Замены только из соседнего региона.
4. Не трогай главный объект: {главный_объект}.
5. При неудаче перепиши запрос, затем смени стратегию.
Выдай план: подсказка, стратегия, обоснование и готовый запрос для редактора изображений на английском.



Я вставлю запрос в редактор изображений и пришлю результат. Тогда проверь:
- utility_check: главные объекты на месте, фото естественное, артефактов нет? Если нет, откат и новый план.
- protection_check: повтори роль ClueAgent на новом фото. Если ты всё ещё называешь {реальное_место}, начинай новую итерацию. Иначе остановись.
Максимум {число_итераций} итераций. В конце перечисли, какие подсказки остались.


Начни с шага 0: проанализируй фото и назови догадку.

Что подставлять: {реальное_место} — где сделан снимок на самом деле; {уровень_защиты} — город, регион или страну; {формат_догадки} — например, «город, страна»; {главный_объект} — то, что должно остаться нетронутым; {число_итераций} — обычно 3–5.

🚀 Быстрый старт — вставь в чат:

Вот шаблон GeoCloak для защиты геолокации фото. Адаптируй под мою задачу: [опиши, какое фото и что хочешь скрыть].
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит реальное место съёмки, нужный уровень защиты и что в кадре главное. Реальное место нужно, чтобы остановка цикла была честной: «модель больше не называет именно это место». Главный объект нужен, чтобы правки его не задели. Остальное модель возьмёт из шаблона.


⚠️

Ограничения

⚠️ Ручной вариант в чате — это адаптация: в статье цикл исполняет код-оркестратор. Он считает метрики (CLIP-сходство, проверка главных объектов) и запускает правки сам. Шаблон выше — упрощённый перенос идеи, его эффективность авторы не проверяли.

⚠️ Нужно знать реальное место: оно служит условием остановки. Фото и место при этом уходят облачной модели, то есть вы передаёте приватные данные провайдеру. Статья отмечает этот риск и предлагает открытые модели на своём железе.

⚠️ Остановка по одной модели — не гарантия: цикл заканчивается, когда ваша модель перестала угадывать место. Это не значит, что убраны все улики. Более сильный атакующий может справиться. Поэтому в оригинале есть режим «с подсказкой» и внешняя проверка.

⚠️ Крупные улики плохо поддаются правке: целую архитектуру или скайлайн стереть нельзя. Для таких случаев в оригинале используется шум, который требует кода и GPU. Это вне чата.

⚠️ Узнаваемые достопримечательности исключены: если в кадре Эйфелева башня, метод не для вас. Авторы считают, что такое фото обычно выкладывают сознательно.

⚠️ Качество редактора изображений: правка должна выглядеть естественно. Плохо вписанная вывеска сама бросается в глаза и портит снимок.

⚠️ Цена и время: оригинал тратит в среднем около $0.32 и 8 минут на фото при максимальной защите. В ручном режиме это ваше время.


🔍

Как исследовали

Команда собрала четыре набора фото из 108 стран и 576 городов. Убрали снимки с узнаваемыми достопримечательностями, потому что их выкладывают намеренно и модели угадывают их по памяти, а не по уликам. Атаковали 5 разными LVLM тремя способами: простой запрос, двухэтапный разбор подсказок и агент с инструментами. Получилось 11 конфигураций атакующих. Проверяли и на поисковом GeoCLIP, и на коммерческом GeoSeer. Базой для сравнения были два метода шума, M-Attack и GeoShield.

Точность определения города упала с 41,2% до 9,9%, у M-Attack — 24,5%, у GeoShield — 19,7%. Против сильнейшего атакующего (Gemini 3.1 Pro) — с 51,3% до 13,8%, а у конкурентов 33,2% и 37,3%. Сама система работала на Gemini-2.5-Pro, но защищала и от более сильных моделей.

Люди оценили качество правленых фото на 4,43 из 5, у конкурентов 2,63 и 2,53. Сходство по CLIP составило 0,92 против 0,77 и 0,42. Удивительно, что одной семантической правки уже достаточно для сильной защиты, а шум добавляет лишь часть эффекта. Авторы проверили и адаптивных атакующих: промпты, учитывающие правки, предобработку и дообучение на защищённых фото. Защита держалась.

Практический вывод: защита фото — это работа с конкретными уликами, а не с картинкой целиком. Модель, которая нашла улики, может сама подсказать, что править.


💡

Адаптации и экстраполяции

🔧 Техника: убрать «реальное место» → режим аудита без правок

Для быстрой проверки перед публикацией оставьте только роль ClueAgent. Уберите EditAgent и Orchestrator и замените финал:

Найди все подсказки о месте на фото (тип, область, оценка точности 0–1).
Назови догадку «город, страна» и уверенность. Дай топ-3 улики, которые я должен убрать первыми.

Вы получите быстрый аудит: знаете, что стоит закрыть, и правите вручную в любом редакторе.

Экстраполяция (не из статьи): тот же принцип «ранжируй улики по информативности к размеру» можно применить к скриншотам и документам перед публикацией. Попросите модель найти мелкие утечки: номера, имена в вкладках, названия внутренних систем. Это моя идея, статья такого не проверяла.


🔗

Ресурсы

  • Название: GeoCloak: An Agentic Framework for Semantics-Preserving Geolocation Privacy via Peripheral Clue Manipulation
  • Авторы: Yixin Wu (HKUST Guangzhou / HKUST), Mingjie Li, Michael Backes, Yang Zhang (CISPA Helmholtz Center for Information Security), Yun Shen (HPE)
  • Связанные работы из статьи: GeoMiner (двухэтапный разбор улик, Li et al.), GeoVista (агент-геолокатор), M-Attack, GeoShield, GeoCLIP, GeoSeer
  • Полные промпты EditAgent находятся в Appendix B, примеры стратегий в Appendix C, многошаговый пример в Appendix A (в присланном фрагменте их нет)

📋 Дайджест исследования

Ключевая суть

Модель угадывала город по фото в 41% случаев. После правки пары мелких деталей на заднем плане — только в 10%. Метод GeoCloak позволяет выложить снимок и не выдать, где он сделан, а сам кадр почти не меняется. Фишка: не маскируй всё фото, а найди самую «дорогую» улику и перепиши только её. Это табличка с улицей, вывеска пекарни или номер региона на машине. Модель по ним определяет место съёмки, а человек их даже не замечает. Размытие и очистка метаданных (координат в файле) почти не помогают. Здесь фото остаётся тем же по смыслу, а точность угадывания падает с 41% до 10%.

Принцип работы

Работает как маленькая команда из трёх ролей. Сыщик (ClueAgent) находит все улики и ставит каждой оценку точности от 0 до 1. Ретушёр (EditAgent) выбирает одну улику и правит её одной из пяти стратегий: заменить текст, заменить объект, стереть, добавить ложную подсказку, сменить стиль дальних зданий. Контролёр (Orchestrator) проверяет два условия: главный объект на месте, а модель больше не называет место. Если не прошло, всё идёт по кругу. Правило выбора: бери улику с лучшим отношением «точность / площадь на фото». Мелкая и выдающая место улика правится почти бесплатно. Это как вырвать одну страницу с адресом из дневника, а не сжигать весь дневник. Замены берутся только из соседнего региона, чтобы вывеска выглядела правдоподобно. Начинаешь с малого и усиливаешь правку только при неудаче.

Почему работает

Улики, которые выдают место, мелкие и лежат на периферии кадра. Модель, понимающая картинки, находит их быстрее человека. Шум поверх всего снимка бьёт по всем пикселям одинаково и портит фото. У каждого кадра своя слабая точка, и точечная правка бьёт именно в неё. Вторая причина в самой проверке. Сыщик играет роль атакующего, поэтому условие остановки честное: модель действительно перестала угадывать. Одной смысловой правки уже хватает для сильной защиты, шум нужен только для остатков. Цена полного цикла в авторской версии: около $0.32 и 8 минут на фото. Режим «с подсказкой» добавляет ещё один плюс. Модели сообщают реальное место, и она находит скрытые улики, которые заметил бы более сильный атакующий.

Когда применять

Личная приватность → сторис, объявления и фото интерьеров, особенно когда в кадре есть вывески, номера, таблички и нестандартные предметы. Подходит и для проверки: что из вашего фото выдаёт район. НЕ подходит, если в кадре крупная улика вроде скайлайна или целой архитектуры. Её нельзя стереть правкой. НЕ подходит и для узнаваемых достопримечательностей. Авторы считают, что такие фото выкладывают сознательно. Чат-вариант ниже — упрощённый перенос идеи. Авторы его эффективность не проверяли. Остановка по одной модели тоже не гарантия: более сильный атакующий может найти то, что вы пропустили. Фото и реальное место уходят облачному провайдеру, это тоже приватные данные.

Мини-рецепт

1. Назови реальное место: модель должна знать, что именно скрываем. Без этого условие остановки не работает.
2. Выбери глубину защиты: «город», «регион» или «страна». Чем крупнее, тем больше улик придётся убрать.
3. Отметь главный объект: то, что правка трогать не должна. Например, латте на подоконнике.
4. Запусти шаблон с тремя ролями: сыщик, ретушёр, контролёр. Модель сама выдаст таблицу улик и первый план правки.
5. Вставь запрос в редактор изображений: например, Nano Banana или встроенный редактор ChatGPT. Верни картинку в чат.
6. Дай модели проверить результат: она повторит роль сыщика. Если всё ещё называет место, идёт новый круг. Лимит — 3–5 итераций.
7. Прочитай список оставшихся улик: то, что модель не смогла убрать, надо решать вручную или шумом.

Примеры

[ПЛОХО] : Размой фон и удали метаданные, чтобы никто не понял, где снято
[ХОРОШО] : Ты работаешь как система из трёх ролей. Реальное место съёмки: Казань, Россия, район Старо-Татарская слобода. Цель: по отредактированному фото место нельзя определить, а смысл фото тот же. Сыщик: найди все улики (тип, описание, область, оценка точности 0–1) и назови лучшую догадку «город, страна». Ретушёр: возьми улику с лучшим отношением «точность / площадь», выбери стратегию (ReplaceText, ReplaceObject, EraseObject, AddDecoy, StyleTransfer), не трогай латте и подоконник, выдай запрос для редактора изображений на английском. Контролёр: после правки проверь, что объекты на месте и фото естественное. Повтори роль сыщика. Если всё ещё называешь Казань, начинай новую итерацию. Максимум 5 итераций. В конце перечисли оставшиеся улики. Начни с шага 0: проанализируй фото и назови догадку. На таком фото модель, скорее всего, выделит табличку с улицей и код региона 116. Она заменит текст на вывеске на похожий из соседней области и проверит, всё ли ещё читается Казань.
Источник: GeoCloak: An Agentic Framework for Semantics-Preserving Geolocation Privacy via Peripheral Clue Manipulation
ArXiv ID: 2610.20055 | Сгенерировано: 2026-10-15 08:00

Методы

МетодСуть
Проверка скрытия через атакующую роль, которой назвали верный ответЧто делать: ты закрыл или заменил чувствительные данные. Теперь проверь, что они не угадываются. Шаг 1: попроси модель сыграть атакующего. Пусть угадает скрытое по результату без подсказок. Шаг 2: если не угадала, назови ей реальный ответ. Попроси: «найди все улики, которые ведут к {реальный ответ}, и оцени каждую по точности от 0 до 1». Шаг 3: правь улику с лучшим отношением «точность к размеру правки». Мелкая и информативная правится первой. Шаг 4: повтори проверку на новой версии. Остановись, когда атакующий не называет реальный ответ или кончились попытки. Почему работает: знание ответа помогает найти слабые улики, которые вслепую легко пропустить. Атакующий в цикле даёт честное условие остановки: «угадывание больше не получается». Точечная правка меняет мало, поэтому смысл материала сохраняется. Когда да: проверка анонимизации, где утечка идёт через косвенные детали. Примеры: фото, описание кейса, резюме, отчёт. Когда нет: улики слишком крупные, и их не заменить без потери смысла. Ещё одна оговорка: остановка по одной модели не гарантия. Более сильный атакующий может справиться. Данные и реальный ответ уходят провайдеру модели. Для чувствительных материалов нужна локальная модель
📖 Простыми словами

GeoCloak: AnAgenticFramework for Semantics-Preserving Geolocation Privacy via Peripheral Clue Manipulation

arXiv: 2610.20055

Современные мультимодальные нейросети вычисляют твою геолокацию по фото не по EXIF-данным, а по микроскопическим зацепкам на фоне. Ты почистил метаданные, но модель считывает код региона на случайной тачке, название местной пекарни и форму урны. Защита «в лоб» через размытие или наложение цифрового шума на весь снимок — это полный провал, потому что она либо портит фото в кашу, либо пасует перед зрением ИИ.

Это как надеть на лицо маску, но забыть снять футболку с надписью «Лучший сварщик Рязани». Формально лицо скрыл, но спалился за секунду. Тупо замазывать фон черными плашками — всё равно что идти по улице с картонной коробкой на голове, когда можно просто аккуратно срезать опасные ярлыки.

Решение проблемы — фреймворк GeoCloak, где три агента работают как слаженная банда. Сначала ClueAgent сканирует снимок и ранжирует улики: от вывески на углу до кода 116 на номерах. Затем EditAgent точечно перерисовывает критичные детали: стирает текст, меняет логотип или подменяет объект без потери качества. А финальный Orchestrator гоняет систему по кругу, пока чужой ИИ не начнет выдавать полную дичь, а картинка при этом останется визуально идеальной.

Тестировали на фото из соцсетей, но принцип маскировки периферии универсален. Он одинаково нужен журналистам под прикрытием, активистам, военкорам и тем, кто просто не хочет сталкеров у подъезда. Привычная анонимность умерла: зрительные модели вроде GPT-4o работают как бесплатные сыщики, собирая пазл из любого случайного отражения.

Короче: хватит уповать на чистку геотегов — алгоритмам на них плевать. Будущее приватности строится на умном контр-обмане нейросетей, когда спасает не тотальный блюр, а хирургическая замена 2-3 фоновых пикселей. Кто возьмет таких агентов на вооружение — сохранит безопасность, остальные будут удивляться, откуда незнакомцы знают их точный адрес.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с