Эффективность различных нейросетей при распознавании дипфейков на фото

Автор статьи, участник AI-Лаборатории УИИ Спащенко А.

Введение

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

Цель исследования

Целью данного исследования является анализ и сравнение эффективности различных архитектур нейронных сетей, используемых для распознавания дипфейков на фотографиях. Для этого были выбраны несколько архитектур, среди которых: EfficientNet, Xception и ResNet50. Основной акцент сделан на проверку точности, скорости и эффективности этих моделей в задачах классификации изображений.

Методология

В исследовании использовались данные, представляющие собой набор фотографий с реальными и поддельными (дипфейковыми) изображениями. В качестве Dataset взята база специально подготовленный видеороликов с ресурса: https://www.kaggle.com/competitions/deepfake-detection-challenge/data. Примеры визуальных данных датасета приведены на рисунке 1.

Данные состоят из файлов .mp4, разделенных на сжатые наборы по ~ 10 ГБ каждый. Каждый набор файлов .mp4 сопровождается метаданными.json, которые содержат filename, label (real / fake), original и split столбцы. Обучение моделей происходило с использованием стандартных методов машинного обучения, включая оптимизацию гиперпараметров и кросс-валидацию для проверки качества моделей на тестовых данных.
а) изображения, имеющие label “ real”
а) изображения, имеющие label “ real”

Рисунок 1. Пример визуальных данных датасета

Подготовка данных

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

1. Загрузка и организация данных: Датасет состоял из видеороликов с реальными и поддельными изображениями. Из каждого видео извлекались ключевые кадры с изображениями лиц. Затем эти изображения были разделены на две категории: настоящие и поддельные.

2. Разделение на обучающую и тестовую выборки: Все изображения были случайным образом разделены на две части — 80% для обучения и 20% для тестирования. Это стандартная практика, которая помогает избежать переобучения модели и позволяет проверить её обобщающую способность на невидимых данных.

3. Подготовка генераторов данных: Для обучения моделей использовались генераторы данных, которые загружали изображения пакетами (батчами), нормализовали значения пикселей (в диапазон [0, 1]) и подавали их на вход модели в нужном формате.

4. Аугментация данных: Для повышения разнообразия обучающих данных и предотвращения переобучения была проведена аугментация данных. Это включает такие операции, как случайное вращение, изменение масштаба, отражение по горизонтали и вертикали.

Рисунок 1. Соотношение изображений по категориям

Исследование

EfficientNet

EfficientNet показала точность в 91.8% при распознавании дипфейков. Модель была настроена для бинарной классификации, где необходимо определить, является ли изображение настоящим или поддельным. Графики обучения приведены на рисунке:
Пример кода для обучения модели EfficientNet:
# Загрузка библиотек
from tensorflow.keras.applications import EfficientNetB0
from tensorflow.keras import layers, models

# Загрузка модели EfficientNetB0
base_model = EfficientNetB0(weights='imagenet', include_top=False, input_shape=(128, 128, 3))
base_model.trainable = False  # Замораживаем предобученные слои

# Построение модели
model = models.Sequential([
    base_model,
    layers.GlobalAveragePooling2D(),
    layers.Dense(128, activation='relu'),
    layers.Dense(1, activation='sigmoid')  # Для бинарной классификации (REAL/FAKE)
])

# Компиляция модели
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# Обучение модели
history = model.fit(train_generator, epochs=20, validation_data=test_generator)

# Оценка модели
test_loss, test_acc = model.evaluate(test_generator)
print(f'Точность EfficientNet: {test_acc:.2f}')

Xception

Модель Xception продемонстрировала точность в 95.2%, что делает её одной из самых эффективных моделей для распознавания дипфейков. Графики обучения приведены на рисунке:
Пример кода для обучения модели Xception:
# Загрузка библиотек
from tensorflow.keras.applications import Xception
from tensorflow.keras import layers, models

# Загрузка модели Xception
base_model = Xception(weights='imagenet', include_top=False, input_shape=(299, 299, 3))
base_model.trainable = False  # Замораживаем предобученные слои

# Построение модели
model = models.Sequential([
    base_model,
    layers.GlobalAveragePooling2D(),
    layers.Dense(128, activation='relu'),
    layers.Dense(1, activation='sigmoid')  # Для бинарной классификации (REAL/FAKE)
])

# Компиляция модели
model.compile(optimizer='Adam', loss='binary_crossentropy', metrics=['accuracy'])

# Обучение модели
history = model.fit(train_generator, epochs=10, validation_data=test_generator)

# Оценка модели
test_loss, test_acc = model.evaluate(test_generator)
print(f'Точность Xception: {test_acc:.2f}')

ResNet50

ResNet50 показала точность в 94.7%, демонстрируя высокую производительность при распознавании реальных и поддельных изображений. Графики обучения приведены на рисунке:
Пример кода для обучения модели ResNet50:
# Загрузка библиотек
from tensorflow.keras.applications import ResNet50
from tensorflow.keras import layers, models

# Загрузка модели ResNet50
base_model = ResNet50(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
base_model.trainable = False  # Замораживаем предобученные слои

# Построение модели
model = models.Sequential([
    base_model,
    layers.GlobalAveragePooling2D(),
    layers.Dense(128, activation='relu'),
    layers.Dense(1, activation='sigmoid')  # Для бинарной классификации (REAL/FAKE)
])

# Компиляция модели
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# Обучение модели
history = model.fit(train_generator, epochs=10, validation_data=test_generator)

# Оценка модели
test_loss, test_acc = model.evaluate(test_generator)
print(f'Точность ResNet50: {test_acc:.2f}')

Сравнение моделей

Для сравнения эффективности нейронных сетей использовались следующие показатели: точность распознавания, скорость обучения и количество ложноположительных и ложноотрицательных результатов. Результаты приведены в Таблице 1.

Таблица 1 – Сравнение эффективности нейронных сетей
Результаты экспериментов показали, что нейронные сети на базе архитектур Xception и ResNet50 демонстрируют наилучшие результаты при распознавании дипфейков на фотографиях, значительно превосходя другие модели по точности и скорости обработки. EfficientNet показала себя как оптимальная модель для реального использования благодаря своей гибкости и экономичности. Этот анализ подчеркивает важность выбора правильной архитектуры нейронной сети для решения конкретных задач в области компьютерного зрения.

Анализ причин низкой эффективности моделей

Рассмотрим причины ошибочной классификации на примере трех изображений (рисунок 2).
a)
б)
в)

Рисунок 2. Изображения, неверно распознанные сетью EfficientNet

Для каждого из представленных изображений нейросеть ошиблась, классифицировав их как "Fake", хотя истинный класс был "Real".

На изображении Рисунок 2(А) видны следующие особенности, которые могли ввести нейросеть в заблуждение:

1. Размытость и низкая резкость: Лицо на изображении выглядит размытым, и контуры нечеткие. Модель может интерпретировать это как артефакты генерации дипфейков, поскольку дипфейки часто содержат признаки размытия, особенно в областях границ лица.

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

3. Неправильная поза головы: Голова слегка наклонена и повёрнута, что делает часть лица менее доступной для анализа. Нейросети, обученные в основном на изображениях с фронтальным ракурсом, могли испытывать трудности с классификацией таких отклонений.

На изображении Рисунок 2(Б) присутствуют следующие характеристики, которые могли вызвать ошибку:

1. Нечеткость и шум: Изображение выглядит очень размытым и с шумом. Нейросеть могла расценить размытость как следствие плохого алгоритма наложения лица, что характерно для некоторых дипфейков.

2. Отсутствие деталей на лице: Лицо не имеет четко выраженных деталей, таких как текстура кожи, мелкие морщины и другие микрохарактеристики, которые помогают классифицировать изображение как реальное. Недостаток таких деталей может заставить модель сделать вывод, что изображение искусственное.

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

Изображение Рисунок 2(В) также содержит признаки, которые могли привести к неправильной классификации:

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

2. Асимметричное освещение: Лицо освещено неравномерно, одна сторона значительно темнее другой. Это могло привести к неправильной интерпретации признаков, особенно в области глаз и рта, где световые и теневые эффекты часто являются важными для классификации.

3. Фокус на несущественных деталях: В случае использования механизма внимания, возможно, нейросеть фокусировалась на областях, которые не являются ключевыми для определения подлинности, например, на фоновых элементах. Это часто происходит, если модель не была должным образом обучена игнорировать подобные отвлекающие факторы.

Вывод:

  • Размытость и шум на всех трех изображениях оказались основными факторами, которые могли сбить модель. Размытые границы лица часто интерпретируются как результат работы алгоритмов генерации дипфейков.
  • Плохое освещение и низкая контрастность мешают модели выделить важные черты лица. Более сложные архитектуры с механизмами внимания могли бы улучшить фокусировку на значимых областях.
  • Минимальная изменчивость выражения лица на всех изображениях могла восприниматься моделью как отсутствие естественных движений, что часто встречается в дипфейках. Использование временных признаков и аугментации с изменением освещения и контраста может улучшить устойчивость модели.
Анализ качества классификации с использованием матрицы ошибок (Confusion Matrix) на примере работы модели Xception.

Для оценки качества работы модели Xception при классификации изображений на классы "REAL" и "FAKE" была построена нормализованная матрица ошибок (confusion matrix, рисунок 3) тестовой выборке. Эта матрица предоставляет наглядное представление о том, насколько хорошо модель справляется с задачей классификации, и помогает выявить основные ошибки, которые совершает модель.

Рисунок 3. Нормализованная матрица ошибок

Разбор полученных результатов

Класс "FAKE" (Поддельные изображения):
  • Значение 0.81 в первой строке, первом столбце (FAKE-FAKE) означает, что 81% поддельных изображений были правильно классифицированы как FAKE.
  • Значение 0.19 в первой строке, втором столбце (FAKE-REAL) показывает, что 19% поддельных изображений были ошибочно классифицированы как REAL.

Класс "REAL" (Настоящие изображения):
  • Значение 0.83 во второй строке, первом столбце (REAL-FAKE) показывает, что 83% настоящих изображений были ошибочно классифицированы как FAKE.
  • Значение 0.17 во второй строке, втором столбце (REAL-REAL) показывает, что только 17% настоящих изображений были правильно классифицированы как REAL.

Модель классифицирует 81% поддельных изображений правильно, что значительно лучше, чем в случае с реальными изображениями. В практическом плане это является положительным качеством.

Рекомендации по улучшению качества распознавания

Несмотря на достигнутые результаты, модели для распознавания дипфейков, такие как EfficientNet, Xception и ResNet50, сталкиваются с рядом проблем, которые ограничивают их эффективность. Одной из основных причин низкой эффективности является недостаточное разнообразие тренировочного набора данных. Дипфейки могут быть созданы с использованием различных технологий и уровней качества, что требует от модели способности обобщать и адаптироваться к различным условиям. Если тренировочный набор данных недостаточно разнообразен, модель может плохо справляться с распознаванием дипфейков, созданных с использованием новых технологий.

Другой причиной низкой эффективности является использование статических изображений для обучения. Большинство современных дипфейков — это видео, и важная информация для их распознавания может быть представлена не только в отдельных кадрах, но и в изменениях между ними. Использование временных признаков и анализ движений лица и мелких изменений могут улучшить точность распознавания. Исследования показывают, что использование рекуррентных нейронных сетей (RNN) или трансформеров для анализа последовательностей кадров способно существенно улучшить точность моделей распознавания дипфейков.

Кроме того, одним из факторов, ограничивающих эффективность, является способность моделей учитывать артефакты и мельчайшие искажения, которые сложно выявить с помощью обычных методов. Дипфейки создаются с высоким качеством, и видимые артефакты могут быть минимальными. В этом случае использование обучающих методов, таких как «adversarial training» (соревновательное обучение), может помочь модели стать более устойчивой к таким искажениям. Генеративные состязательные сети (GAN) могут быть полезны для создания сложных обучающих примеров, что повысит способность модели обнаруживать аномалии.

Наконец, регуляризация и настройка гиперпараметров также играют ключевую роль в улучшении качества распознавания. Методы, такие как Dropout и Batch Normalization, могут помочь предотвратить переобучение, делая модель более устойчивой и способной к обобщению. Использование кросс-валидации для выбора оптимальных гиперпараметров позволяет улучшить общую производительность модели.

Работа с дисбалансом классов и адаптация моделей к новым датасетам

Дисбаланс классов — это распространенная проблема, при которой одна из категорий (например, поддельные изображения) существенно преобладает над другой (настоящие изображения). В таких условиях модель может склоняться к предсказаниям в пользу преобладающего класса, что снижает её точность. В нашем случае наблюдается существенное преобладание класса Fake над классом Real.

Для решения проблемы дисбаланса классов в нашем исследовании были использованы следующие подходы:

1. Аугментация данных: Мы использовали методы аугментации данных, такие как случайное вращение, изменение масштаба и отражение изображений. Это позволяет искусственно увеличить количество данных для менее представленного класса и сделать модель более устойчивой к различным типам искажений. Пример исследования, описывающего подобные подходы, — работа Buda et al. (2018) "A systematic study of the class imbalance problem in convolutional neural networks" (https://arxiv.org/abs/1710.05381), в которой представлены различные методы работы с дисбалансом и их эффективность.

2. Взвешивание классов: В нашем коде было применено взвешивание классов, где каждому классу был назначен вес, обратно пропорциональный количеству его примеров в тренировочном наборе данных. Это позволяло модели придавать большее значение примерам из класса, который был менее представлен. Такой подход помогает компенсировать дисбаланс и избежать игнорирования менее представленных классов.

3. Подвыборка и надвыборка: Хотя в нашем коде это не применялось напрямую, другие методы, такие как подвыборка (undersampling) и надвыборка (oversampling), также часто используются для балансировки данных. Подвыборка снижает количество примеров доминирующего класса, а надвыборка увеличивает количество примеров меньшего класса, что позволяет достичь более сбалансированного тренировочного набора.

Адаптация моделей к новым датасетам (Domain Adaptation)

Адаптация моделей к новым наборам данных, особенно в условиях, когда тестовые данные могут отличаться по распределению от обучающих, играет важную роль в обеспечении стабильной и надежной производительности. Это особенно актуально в случае дипфейков, которые могут создаваться с использованием различных технологий.

1. Тонкая настройка предобученных моделей (Fine-Tuning): Один из методов адаптации — использование предобученных моделей, таких как Xception, с последующей тонкой настройкой на новом наборе данных. В нашем исследовании мы использовали модель Xception, разморозив верхние слои для дообучения на данных дипфейков. Такой подход позволяет модели сохранять знания, приобретенные на большом наборе данных.

2. Методы адаптации домена: Важно, чтобы модель могла быть адаптирована к новым условиям. Один из таких подходов представлен в работе Ganin and Lempitsky (2015) "Unsupervised domain adaptation by backpropagation"( https://arxiv.org/abs/1409.7495), где описана техника градиентной обратной связи, позволяющая модели учить доменно-независимые признаки. Это особенно полезно, когда тестовые данные отличаются от обучающих, и необходимо минимизировать различия между ними.

3. Самосупервизорное обучение (Self-Supervised Learning): Методы самосупервизорного обучения, такие как контрастное обучение (Contrastive Learning), также могут быть применены для адаптации модели. В работе Chen et al. (2020) “A simple framework for contrastive learning of visual representations” (https://arxiv.org/abs/2002.05709) предлагается метод обучения модели, который позволяет лучше выделять информативные признаки, даже если данные недостаточно аннотированы. Контрастное обучение помогает модели лучше адаптироваться к разнообразным наборам данных, что особенно важно при ограниченности аннотаций.

Заключение

Работа с дисбалансом классов и адаптация модели к новым данным являются ключевыми факторами, которые влияют на её способность обобщать знания и точно классифицировать изображения в условиях изменяющихся или несбалансированных данных. В нашем исследовании мы применили взвешивание классов и аугментацию данных, что позволило модели лучше справляться с дисбалансом.
Made on
Tilda