TL;DR
Мультимодальная LLM (понимает и текст, и картинки) может проверять, не сгенерировано ли лицо на фото. Нужно загрузить два изображения: заведомо настоящее и подозрительное. Модель сравнивает их и говорит, какое из двух сгенерировано. Это парное сравнение: у модели есть эталон реальности, а не одна картинка «в вакууме».
Главная находка: модели распознают подделки по структурным странностям: свет, геометрия фона, анатомия. Невидимые метки вроде Google SynthID им для этого не нужны. Но качество сильно скачет между поколениями моделей. Лучшие дают почти безошибочный результат против отдельных генераторов, у остальных ответ ближе к подбрасыванию монетки. Есть и ловушка: у картинок с невидимой меткой SynthID точность определения упала (примерно на десятую долю), возможно, потому что метка сглаживает видимые артефакты. Кроме того, объяснения модели («вижу кривые тени у уха») могут быть выдуманы: вердикт верный, а обоснование нет.
Суть метода: одно обращение. Вы даёте два изображения, говорите модели, что одно из них настоящее, а другое сгенерировано, и просите выбрать подделку с обоснованием. Позиции A и B нужно менять местами и повторять запуск.
Схема метода
ШАГ 1: Подготовить пару → настоящее фото-эталон + подозрительное (позицию A/B выбрать случайно)
ШАГ 2: Один промпт → «одно реальное, другое сгенерировано, какое фейк?» + ответ в JSON (вердикт + обоснование)
ШАГ 3: Повторить 3–5 раз, меняя местами A и B → смотреть, стабилен ли вердикт
ШАГ 4: Проверить обоснования глазами → не доверять, пока не увидите названный артефакт сами
Шаги 2–3 выполняются в одном чате, каждый запуск в новом диалоге.
Пример применения
Задача: PR-менеджер конференции по маркетплейсам собирает афишу. Новый «спикер из Новосибирска» прислал портрет, и он подозрительно гладкий. Настоящий портрет другого спикера, которого вы снимали лично, есть в архиве. Нужно понять, не нарисовала ли нейросеть лицо.
Промпт:
Тебе даны два изображения: IMAGE A и IMAGE B.
Одно из них — РЕАЛЬНАЯ фотография, другое — СГЕНЕРИРОВАНО ИИ.
Твоя задача — определить, какое изображение сгенерировано (фейк).
Сравни изображения по свету, теням, геометрии фона, коже, волосам, ушам,
украшениям, краям объектов. Для вердикта называй только то, что
реально видно на картинке; если уверенности нет — так и скажи.
Ответ строго в JSON:
{
"fake": "A" или "B",
"confidence": число 0–100,
"evidence": ["конкретный признак 1 и где он на изображении", "признак 2"],
"uncertain": "что в картинке не позволяет быть уверенным"
}
(A — архивный портрет, B — присланный. Второй запуск: поменять местами.)
Результат: модель вернёт JSON с вердиктом, оценкой уверенности и списком признаков с привязкой к местам на фото. Если вердикт совпал в нескольких запусках с разной расстановкой A/B, это сильный сигнал. Если вердикт «перепрыгивает» за позицией или признаки каждый раз новые, ответу верить нельзя. Названные модельные «улики» проверьте глазами, увеличив фото.
Почему это работает
Слабость. Одиночная картинка не даёт модели точки отсчёта. Современные генераторы убрали грубые пиксельные огрехи, и «просто выглядит ли это настоящим» превращается в субъективное впечатление. К тому же модели склонны придумывать убедительные обоснования для любого вердикта.
Сильная сторона. Мультимодальные модели хорошо замечают смысловые нестыковки: свет падает с двух сторон, фон «не складывается», руки и уши выглядят странно. Сравнение двух картинок помогает: реальное фото задаёт норму текстуры, шума и освещения, и отклонение видно ярче.
Как метод использует это. Формат «одно реальное, другое фейк» превращает открытую задачу в выбор из двух: проще, и случайное угадывание даёт 50%. Перестановка A и B убирает позиционную предвзятость. Повторные запуски показывают, держится ли вердикт.
Рычаги управления:
- Эталон → берите фото в схожем формате (портрет, свет, разрешение). Чем похожее условия, тем меньше ложных срабатываний.
- Число прогонов → 3–5 для важного решения, 1–2 для беглой проверки.
- Поле uncertain → убери, если хочешь только вердикт. Оставь, чтобы видеть слабые места.
- Список признаков в промпте → расширь под свой случай (текст на одежде, украшения, зубы).
- Выбор модели → новая версия топовой модели заметно лучше старой.
Шаблон промпта
Оригинальная формулировка авторов (парный режим):
You are presented with two images, labelled IMAGE A and IMAGE B. One is a REAL photograph, and the other is AI-GENERATED. Your task is to identify which image is the AI-generated fake.
Авторы просили бинарный ответ и обоснование. Рабочая версия на русском:
Тебе даны два изображения: IMAGE A и IMAGE B.
Одно из них — РЕАЛЬНАЯ фотография, другое — СГЕНЕРИРОВАНО ИИ.
Твоя задача — определить, какое изображение сгенерировано.
Ответ строго в JSON:
{
"fake": "A" или "B",
"confidence": число 0–100,
"evidence": ["{признак}: {где на изображении}"],
"uncertain": "{что мешает быть уверенным}"
}
Что подставлять:
- IMAGE A / IMAGE B — в одну позицию кладёте эталон, в другую проверяемое. На следующем запуске меняете местами.
- Эталон — фото, в реальности которого вы уверены, желательно в том же жанре (портрет к портрету).
- Поля evidence и uncertain можно убрать, если нужен только вердикт, но тогда вы теряете возможность проверить логику.
Ограничения
⚠️ Нужен надёжный эталон: метод построен на условии «одно реальное, другое фейк». Если оба снимка сгенерированы или оба настоящие, модель всё равно выберет одного «виновного».
⚠️ Обоснования могут быть выдуманными: авторы отдельно проверяли, называет ли модель реально существующие артефакты или «галлюцинирует». Предыдущие работы показывали, что модели уверенно описывают несуществующие искажения. Не принимайте объяснение на веру.
⚠️ Точность зависит от модели: старые и слабые версии заметно хуже новых. Между генераторами тоже есть разброс: одни подделки ловятся почти всегда, другие сложнее.
⚠️ Только полностью синтетические лица: подмена лица в видео (face-swap) и правка настоящих фото в исследование не входили.
⚠️ Не доказательство: это быстрый фильтр, а не судебная экспертиза. Для решений с последствиями (увольнение, отказ, обвинение) нужна независимая проверка.
⚠️ Опора на метки ненадёжна: при проверке картинок Gemini с меткой SynthID точность определения падала. Не рассчитывайте, что «метка поможет модели».
⚠️ Доступный фрагмент статьи обрезан: результаты сравнения одиночного и парного режимов и итоги аудита обоснований в нём не показаны. Выводы здесь опираются на аннотацию и описание методики.
Как исследовали
Исследователи собрали набор из 400 лиц: 50 настоящих портретов из датасета FFHQ и 350 сгенерированных семью топовыми генераторами, по 50 каждым. Промпты для генерации составили по матрице (возраст, пол, этничность, профессия, свет), чтобы модели не цеплялись за демографические стереотипы. Картинки брали через API, чтобы не было логотипов и сжатия интерфейса.
Шесть мультимодальных моделей проверяли в трёх экспериментах. В первом им показывали одну картинку. Во втором — пару (настоящее и фейк, позиции случайны). В третьем — Gemini проверяли на собственных картинках в пяти вариантах: чистая контрольная, с видимым логотипом-«искрой», с невидимой SynthID и их комбинации. Метку обрезали или пересэмплировали, чтобы понять, на что реально смотрит модель.
Результат: лучшая модель доходила до 97,9% в парном режиме против отдельных генераторов, среднее по парам составило 82,5%. Точность сильно различалась между поколениями моделей. Неожиданность: картинки с SynthID определялись примерно на 10% хуже, чем контрольные. Авторы предполагают, что встраивание метки подавляет часть видимых артефактов. Вывод для практики: модели в основном опираются на структурные странности, а не на цифровые метки.
Для проверки честности обоснований авторы взяли 10 картинок и прогнали каждую по 5 раз через каждую модель. Затем вручную сверили названные артефакты с реальными: «подтверждённый признак» или «галлюцинация».
Адаптации и экстраполяции
🔧 Техника: добавить перестановку и голосование → устойчивый вердикт
Авторы рандомизировали позиции A и B. В работе это можно превратить в рутину: запустить 4 раза (2 раза в одном порядке, 2 в обратном) и принимать только вердикт, который выпал во всех запусках.
Мини-протокол:
Запуск 1: A=эталон, B=проверяемое
Запуск 2: A=проверяемое, B=эталон
Запуск 3–4: повторить в новых диалогах
Вывод: «подозрительно», если проверяемое названо фейком в ≥3 из 4
🔧 Техника: потребовать «привязку к месту» → проще отсеять выдумки
Вместо "evidence": ["..."] просите: «для каждого признака укажи область: левое ухо, воротник, фон справа». Проверяя названные области, вы быстро увидите, где модель придумывает.
Экстраполяция (гипотеза, в статье не проверялась): тот же принцип «эталон + кандидат вместо одиночного объекта» можно попробовать для текстов: показать модели образец вашего живого стиля и подозрительный текст. Эффект здесь не измерялся, считайте это идеей для самостоятельной проверки.
Ресурсы
- Работа: Beyond Generation: Using Multimodal LLMs as Detectors of LLM-Generated Deepfake Facial Images
- Авторы: Olivia Salamon, Virginia N. L. Franqueira, Shujun Li
- Университет: Institute of Cyber Security for Society (iCSS), School of Computing, University of Kent, Великобритания
- Данные и скрипты: репозиторий
OliviaSalamon/dissertation-corpusна GitHub - Упомянутое: SynthID (Google DeepMind), датасет FFHQ, протокол Two-Alternative Forced Choice (выбор из двух)
