Введение

Добрый день, уважаемые хаброжители !!! Случилось страшное… Нам надо серьезно поговорить и обсудить пару “скользких” моментиков ;)) Вернее так, говорить мы сегодня будем про “подмены” лица во всей красе или, как принято сейчас величать сие явление,  дипфейки. Так вот, случилось нам давеча участвовать в хакатоне Kryptonite ML Challenge 2025 (Разработка модели распознавания, способная противостоять DeepFake атакам) от компании «Криптонит».

Титульный лист нашей презентации
Титульный лист нашей презентации

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

Данный хак (Kryptonite ML Challenge — соревнование по обучению модели распознавания лиц, которая корректно работает с задачей верификации и определяет фальшивые изображения, созданные с помощью DeepFake-технологий) не был первым и попал в череду примерно родственных хакатонов, которые проходят, например, у Касперского с их киберимунной разработкой.

Забегая вперед скажу сразу, что на Kryptonite ML Challenge мы взяли первое место и выдали очень крутое решение! Более того, компания пригласила нас пройти собеседование. Жюри понравился наш вайб-кодинг и красивый репозиторий. Ну, мы старались, что тут еще скажешь. Сегодня же мы хотим поделиться своими мыслями как это было и что по итогу нам удалось “накопать”. Всех заинтересованных лиц приглашаем под кат.

Анализ задачи

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

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

  • высокое качество подделок, которые к тому же постоянно эволюционируют;

  • ограниченность в действительно «мощных» наборах данных;

  • потеря деталей изображения (темная кожа в темное время суток);

  • изменение частоты спектра освещения;

  • артефакты сжатия и пост-обработки;

  • частотно-пространственный спектр нарушений (проблема малых отклонений, фильтрация высоких частот);

  • искажение фазового пространства;

  • имитация когнитивных шаблонов.

В ходе соревнования предстояло создать модель распознавания лиц, которая должна уметь:

  • распознавать фальшивые изображения, созданные с помощью DeepFake-технологий, без использования модулей защиты от спуфинга;

  • точно сравнивать реальные фотографии одного и того же человека; различать снимки разных людей.

Целевой была метрика EER (Equal Error Rate), оценивает баланс между ложными срабатываниями и пропусками.

Организация и команда

Хакатон проходил на платформе Codenrock. Всего на хак зарегистрировалось 502 участника, было сформировано порядка 200 команд. 147 участников приступили к выполнению задачи. По итогу было представлено порядка 65 решений, из которых 5 на финальном питчинге было представлено и только 3 номинировано.

По итогу хакатона 15 команд добились точности в определении DeepFake-пары с показателем 0.99 и выше. 14 команд использовали функцию triplet-loss в своих проектах. 9 команд написали хорошую документацию. 7 команд представили хорошие решения по метрике EER.

Так же жюри отметило нашу команду “Кибер-розыск” за потрясающий баг-репорт системы загрузки решений платформы Codenrock. Итоговый призовой фонд составил 600 000 р.

Общий пайплайн работы над задачей
Общий пайплайн работы над задачей

Времени на хак было выделено более чем достаточно: 19 февраля — предварительный онлайн-митап по задачам; 1 марта — открытие соревнования; 1-9 марта — основной этап работы над проектами; 3-7 марта — чекпоинты с менторами; 10-15 марта — отбор финалистов; 16 марта — питчинг проектов и награждение победителей.

Участие мы принимали от Финансового университета при правительстве РФ, кафедра искусственного интеллекта. По составу команды мы были в такой сборке:

  • Даниил Аль-Натор – подготовка данных, ресёрч и обучение модели;

  • Илья Обухов – аналитика и визуализация данных;

  • Артем Тарантин – ML Ops, подготовка данных, обучение модели;

  • Денис Маликов – аналитика данных, backend и frontend разработка;

  • Миронов Владимир – тренер команды и руководитель клуба по спортивному и соревновательному Data Science Финансового университета при Правительстве РФ. 

Разработка

При подходе мы начали с рассмотрения SOTA-моделей, из структуры, и качества содержания. Мы рассмотрели несколько SOTA-моделей (State-Of-The-Art) для сравнения: FaceNet, ArcFace, MagFace, AdaFace, GhostFace – легковесная модель. При этом мы смотрели на основные критерии оценки:

  1. Точность на бенчмарках: LFW (вынесен на слайд), AGEDB и других.

  2. Скорость обработки.

3. Устойчивость к «грязным» данным (это означает, что модель способна хорошо обучаться и выдавать корректные результаты, даже если в обучающей выборке есть ошибки). По совокупности метрик и устойчивости к разным искажениям лучшим выбором стала модель AdaFace, архитектура которой базируется на ResNet101.

Исследование моделей для анализа работы DeepFake
Исследование моделей для анализа работы DeepFake

В качестве loss для обучения мы пробовали множество различных вариантов.

По каждому из использованных мы составили краткий список плюсов и минусов. Исходя из наших исследований, мы выяснили, что:

1) Adaptive Margin Loss:

+ адаптирует отступ (margin) динамически в зависимости от сходства между примерами, улучшая точность различения сложных случаев;

+ увеличивает margin при низком сходстве (cos_sim), что позволяет модели эффективнее отталкивать негативные примеры;

+ уменьшает чувствительность к ошибочным меткам и аномальным примерам, обеспечивая стабильность и устойчивость обучения;

– сложность подбора оптимальных параметров адаптации margin может привести к нестабильности обучения;

– требует дополнительного вычислительного ресурса на расчет адаптивного отступа по сравнению с фиксированными margin;

2) Contrastive Loss:

+ хорошо разделяет эмбеддинги настоящих и поддельных лиц;

+ эффективно отталкивает дипфейки от оригиналов;

- снижает компактность кластеров эмбеддингов одного и того же лица, что ухудшает качество распознавания;

3) Circle Loss:

+ позволяет тонко контролировать сходство и различие между эмбеддингами;

+ улучшает разделение дипфейков и оригиналов за счёт адаптивных границ принятия решений;

– приводит к чрезмерному разнесению эмбеддингов, что негативно влияет на точность распознавания лиц;

4) Center Loss:

– эмбеддингов одного класса вокруг общего центра, тем самым улучшая качество распознавание лиц;

+ является менее эффективным в задаче отделения дипфейков, так как не создаёт чёткой границы между поддельными и оригинальными изображениями

5) Triplet Loss:

+ явно формулирует разницу расстояний между положительными и отрицательными примерами, помогая отделить дипфейки от реальных фото;

– генерация подходящих троек изображений является сложной задачей;

– методика отрицательно влияет на стабильность и скорость сходимости обучения;

6) Hard Negative Mining:

+ позволяет фокусироваться на сложных негативных примерах, усиливая различия между дипфейками и оригиналами в эмбеддинговом пространстве;

– использование большого количества «жёстких» негативных примеров приводит к тому, что модель переобучается на отделении дипфейков, одновременно теряет обобщающую способность при распознавании лиц;

7) Knowledge Distillation:

+ переносит знания распознавания лиц из предобученной модели-учителя – приближает эмбеддинги реальных лиц к эмбеддингам модели до обучения на дипфейках

– сильно ухудшает обучение детекции дипфейков

Резюмируя, многие loss-функции хорошо отталкивали дипфейки в другую часть эмбеддингового пространства, но при этом ухудшали качество распознавания лиц. Требовалось подобрать loss, который бы сохранял баланс между всеми факторами. В итоге мы остановились на адаптивном маржине (Adaptive margin).

На чистых данных – нашей валидационной выборке такой подход показал наилучшую сходимость. Буквально за 100 шагов с батчем 32 он уже достигал неплохих результатов, а через несколько сотен уже показывал стабильность на дипфейках. Мы приняли решение ориентироваться именно на него, ведь публичный лидерборд не отражал качество модели ввиду большого процента ошибочной разметки.

Ресерч по AdaFace и Loss
Ресерч по AdaFace и Loss

 Здесь вы можете более подробно изучить архитектуру AdaFace (Она была разработана с целью улучшения точности и устойчивости моделей к разнообразию входных данных («сложных» изображений), таким как изменения освещения, позы лица, выражения эмоций и качества фотографий).         

Её особенность при обучении состоит в том, что она динамически адаптирует маржинальную функцию, что особенно важно для «сложных» изображений. А справа расписан лосс, который лучше всего подошёл под нашу задачу – Adaptive margin loss.

Он адаптирует отступ (margin) динамически в зависимости от сходства между примерами, улучшая точность различения сложных случаев и уменьшает чувствительность к ошибочным меткам и аномальным примерам, обеспечивая стабильность и устойчивость обучения.

Среди основных особенностей AdaFace можно выделить:

  • Динамическая адаптация маржинальной функции
    Это ключевое нововведение, позволяющее модели адаптироваться к сложности конкретного изображения во время обучения. Традиционные методы используют фиксированную маржу (margin), что ограничивает эффективность обработки сложных случаев. AdaFace же автоматически регулирует маржу для каждого примера, увеличивая её для сложных изображений и уменьшая для простых, что помогает повысить точность классификации.

  • Улучшенная устойчивость к шуму и вариациям
    Благодаря адаптации маржи модель лучше справляется с изменениями условий съемки (освещение, угол обзора, качество снимка). Это позволяет снизить влияние шума и сделать процесс распознавания более стабильным даже в неблагоприятных условиях.

  • Оптимизация скорости вычислений

  • Высокая производительность на публичных датасетах

Модель показала значительное улучшение результатов на популярных бенчмарках распознавания лиц, таких как LFW (Labeled Faces in the Wild), MegaFace Challenge и IJB-C (IARPA Janus Benchmark C).

AdaFace тестировалась на нескольких широко известных и авторитетных датасетах для оценки эффективности методов распознавания лиц.

1. Labeled Faces in the Wild (LFW): Этот классический датасет используется для тестирования алгоритмов распознавания лиц и включает около 13 тысяч изображений примерно 6 тысяч разных людей. Изображения получены из различных источников интернета и характеризуются значительным разнообразием условий съемки (разные углы наклона головы, освещение, возраст, выражение лица и др.).

2. MegaFace Challenge: Один из крупнейших публично доступных тестов распознавания лиц, включающий миллионы отвлекающих изображений наряду с основными изображениями испытуемых. Цель этого теста — оценить устойчивость модели к большим базам данных и высокой плотности отвлечений.

3. IARPA Janus Benchmarks: Эти наборы данных разработаны Национальным агентством разведывательных технологий (IARPA) и содержат различные сценарии использования, такие как групповые фотографии, кадры видеонаблюдения, фото с мобильных устройств и т.п., предназначенные для проверки способности моделей распознавать лица в реальных ситуациях.

4. VGGFace2 Dataset: Создан на основе коллекций VGG Face Database, этот датасет содержит огромное количество изображений (~3 миллиона) около 9 тысяч персон. Данные представляют собой преимущественно веб-изображения с широким спектром условий съемки, включая разные ракурсы, освещенность и эмоциональные состояния.

5. CASIA WebFace: Широко используемый датасет, содержащий порядка полумиллиона изображений около 10 тысяч индивидуумов. Как и другие наборы данных, CASIA WebFace характеризуется значительной вариативностью условий съемки.

При работе с лицами была важна правильная детекция лица и выравнивание (alignment). Наиболее перспективными и запоминающимися моделями были:

  1. MTCNN – быстрый, но плохая точность, много ошибок обнаружения лица.

  2. RetinaFace – отличное качество, но довольно медленный.

  3. DFA – на базе ResNet50, по совокупным показателям (точность, скорость, удобство интеграции) оказался лучшим решением в нашем случае. Чтобы модель умела отличать реальные фото от дипфейков самых разнообразных типов, мы сформировали дополнительный комбинированный датасет из:

  • CelebA: 10 000 персон, около 200 000 реальных фото.

  • Дипфейков для каждого человека (4 разных архитектуры: Roop, Ghost, Arc2Face, InstantID). Вот примеры генераций этих моделей.

Формирование пар для обучения:

Мы берём k комбинации реальных n фото одного человека. Затем мы k/2 раз брали случайное фото из и этих n и случайное фото другого случайного человека – пары «реальное лицо + другое лицо». После этого ?/2 раз брали случайное лицо из тех же n и брали случайный дипфейк этого человека – пары «реальное лицо + его дипфейк».

  • Реальное лицо + то же лицо – метка 1 (50% датасета);

  • Реальное лицо + другое лицо – метка 0 (25% датасета);

  • Реальное лицо + его дипфейк – метка 0 (25% датасета);

Претрейн и анализ работы
Претрейн и анализ работы
Датасет и его баги
Датасет и его баги

При работе над задачей мы столкнулись с проблемой ошибочной разметки примерно в 10 % реальных фотографий. Вот очевидные примеры (Рис. 5). Это был реальный фейл, но в целом мы были готовы и к таким поворотам и быстро адаптировались к проблеме. Чтобы повысить качество данных, мы разработали собственную процедуру очистки. В итоге, модель корректно разделила разных людей по кластерам, что позволило очистить датасет практически полностью, сохранив действительно сложные случаи, имеющие важную роль при обучении. Метрики на чистых данных сильно выросли. С помощью AdaFace построили матрицы сходства для лиц в каждой папке:

            1.На их основе сформировали граф, соединяя лица с высоким сходством.

            2. Провели кластеризацию, удаляя изолированные вершины и разделяя данные на             связные компоненты.

Изображение выглядит как линия, круг, диаграмма  Содержимое, созданное искусственным интеллектом, может быть неверным.
Изображение выглядит как Человеческое лицо, человек, снимок экрана, Лоб  Содержимое, созданное искусственным интеллектом, может быть неверным.

            3. Вручную проверили самые сложные случаи и исправили ошибки разметки.

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

Такая схема обеспечила сбалансированное обучение: модель сохраняла точность распознавания самих лиц и учится новой задаче: отличать дипфейк от оригинала. В целом, при претрейне мы получили отличные показатели. Судя по результатам обучения претрейна, лучшие модели были получены на 43, 138 и 164 шагах, после пошла в переобучение. Модель достигла значения EER 0,0344 на публичном лидерборде при том, что она ещё даже не видела обучающих данных, выданных организаторами.

Обучение модели
Обучение модели

Мы обучали модель на нашем датасете, а после обученный претрейн использовали для подстройки под датасет хакатона. В ходе обучения обнаружилось, что изображения недиффузионных моделей генерации дипфейков распознаются гораздо хуже, чем изображения диффузионных. 9 Качество распознавания дипфейков на InstanID и Arc2Face очень быстро достигало 99%+ точности, в то время как другие модели сходились гораздо медленнее. Вероятно, это потому, что у диффузионных моделей очень узнаваемые паттерны из-за специфики итеративной генерации. На презентацию мы вывели лучшие гиперпараметры и графики обучения на выданных данных. Модель быстро сходилась к нулю ошибок на парах дипфейк и реальное лицо и в то же время практически не теряла способность к распознаванию лиц, во многом благодаря грамотной очистке датасета. Результаты и выводы

  1. Точность: Мы достигли низкого EER и высокой валидируемой точности.

  2. Скорость: При инференсе на RTX 4090 модель обрабатывала около 900 изображений в секунду совместно с моделью детекции и выравнивания лиц.

  3. Оптимизация через перевод в формат ONNX и быстрая процедура выравнивания помогли добиться довольно высокой производительности.

Результаты
Результаты

Таким образом, мы получили модель, которая:

  • Надёжно различает реальное лицо от дипфейка.

  • Сохраняет высокую точность верификации лица.

  • Быстро работает и масштабируется под большие потоки изображений.

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

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

  • Кластер DeepFake (отмечен красным) — здесь собраны изображения, которые модель классифицирует как дипфейки.

  • Один из женских Кластеров (синий)

  • Один мужских из кластеров (зелёный).

  • На визуализации можно находить и другие кластеры, например, расовые.

Кластеры
Кластеры

Результат показывает, что модель правильно чётко отделяет дипфейки от реальных фотографий, а также корректно группирует людей по разным внешним признакам, что свидетельствует о хорошей структурированности эмбеддингов. Здесь же мы визуализировали примеры атак с добавлением шума. Эксперимент показывает, что, шум может незначительно увеличить сходство между изображениями разных (похожих!) людей, но это изменение очень мало, что показывает некую устойчивость модели к данной атаке.

FGSM-атаки (Fast Gradient Sign Method). Также мы провели тестирование модели на атаки уклонения (FGSM атаки) с ε = 0.1.

Изначально дипфейки детектируются и сходство с реальными фото равно нулю.

Однако после FGSM-атаки показатель сходства резко возрастает, что указывает на уязвимость модели к таким манипуляциям.

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

            В процессе экспериментов мы пробовали множество разных подходов:

1) Triplet loss — не дал ощутимого прироста, усложнил подбор негативных примеров.

Атаки
Атаки

2) Обучение без претрейна — при больших объёмах неверной разметки модель      сходилась хуже.

3) Заморозка части слоёв, добавление ветки с механизмом внимания (attention). Модель недостаточно эффективно адаптировалась к новым признакам дипфейков.

4) Пробовали различные гиперпараметры, оптимизаторы, планировщики.

5) Аугментации, не меняющие признаки лица: световые, шум, повороты не дали прироста по сравнению с базовым решением.

6) Автолейблинг публичного датасета – не дал прироста, вероятно из-за ощутимого             количества ошибок в автоматической разметке.

Перспективы масштабирования:

  1. Увеличение объёмов данных: ещё больше реальных и синтетических изображений, чтобы покрыть все возможные варианты дипфейков.

  2. Атаки FGSM-подобного типа: исследовать дополнительные методы защиты от целенаправленных атак, где шум или небольшие искажения сильно меняют эмбеддинги.

Очевидно, что тема борьбы с дипфейками будет только набирать актуальность, и верим, что наше решение может лечь в основу практического сервиса по проверке фотографий и видеоматериалов на достоверность.

Комментарии (0)