Причины (что выдает подделку):
1. Неравномерный шум (PRNU/Photo Response Non-Uniformity) и паттерны CFA (Color Filter Array). Даже при сглаживании артефактов нейросетями, шумовая сигнатура матрицы в оригинале уникальна. В подделке, особенно Deepfake-вставке, шум отсутствует или имеет ярко выраженный «пластиковый» градиент, особенно в переходах тени/свет.
2. Аномалии в метаданных (EXIF). Подлинный снимок содержит последовательную цепочку: модель камеры, серийный номер, объектив, дата/время. Подделка часто имеет «битые» поля, время в будущем, или указывает на ПО (Photoshop, GIMP). Ключевой признак — рассинхронизация даты/времени с прогнозируемым положением солнца (через SunCalc) или погодой.
3. Следы JPEG-рекомпрессии. Двойное сжатие (оригинал → монтаж → сохранение) порождает специфические артефакты в разностном слое (Error Level Analysis — ELA).
4. Геометрические несоответствия. Тени, каустика (блики), отражения в глазах (глаза-катаптеры) — в нейросетевых генерациях (GANs/Diffusion) тени часто «залипают», а отражения отсутствуют или расположены асимметрично.
Решение (только легальные инструменты, РФ):
1. Проверка метаданных и ELA (онлайн/локально):
Локально: `exiftool image.jpg` — смотреть поля `Software`, `DateTimeOriginal`, `Make`, `Model`.
Онлайн: FotoForensics (fotoforensics.com) — вкладка `ELA` (установить уровень 80–90%). Если фон (небо, стена) светится яркими цветными пятнами — явный признак вставки и пересохранения. Важно: не загружать конфиденциальные фото на сторонние серверы (нарушение ФЗ-152).
2. Анализ шума (Forensically — Chrome extension):
Вкладка `Noise Analysis` → карта шума. В месте вставки (лицо, объект) шум резко ниже или выше, чем на остальной части снимка.
3. Проверка матрицей CFA (шахматная демозаика):
В Forensically: канал `Luminance Gradient` или `PCA`. В оригинальном фото пиксельные паттерны распределены Хаотично. В сгенерированном AI — наблюдаются повторяющиеся блоки (2x2, 4x4).
4. Анализ геометрии тени (скриптинг):
Команда (Linux/WSL): Использовать `ImageMagick` для выделения изолинии тени, затем наложить сетку угла (через Python+OpenCV). Если угол падения света на объект не совпадает с углом на фоне (разница >5°) — подделка.
5. Глаза-катаптеры (Deepfake detection):
Увеличить зону снимка с глазами до 200%. В подделках AI часто путает блики на радужке — вместо двух симметричных точек (источник света) видно одно пятно или сложную форму.
Пример команды (анализ ошибки сжатия через Python):
python
import cv2
import numpy as np
def error_level_analysis(img_path, quality=95):
img = cv2.imread(img_path)
cv2.imwrite('tmp.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, quality])
compressed = cv2.imread('tmp.jpg')
diff = cv2.absdiff(img, compressed)
cv2.imshow('ELA', diff 15) # масштабирование
cv2.waitKey(0)Если разностное изображение показывает текстуру (шум) — оригинал. Если белые/черные поля — подделка.
Итог:** Даже идеальное на вид фото выдает себя на уровне шума, метаданных и геометрии света. Инструмент — Forensically (вкладки ELA, Noise, Luminance) или локальный скрипт с OpenCV. Никаких сервисов с загрузкой данных — работать локально или через Docker.