Человек-подделка: какие бывают дипфейки лиц и как их детектировать

Привет, Хабр! Меня зовут Александр Паркин, я руководитель исследовательских проектов в Vision Labs. Сегодня хочу рассказать, какие бывают дипфейки лиц и как их детектировать. Фальшивых лиц становится всё больше и они выглядят всё убедительнее, поэтому без надежных инструментов для их обнаружения сейчас никуда. О том, как определить, что перед вами не настоящий человек и том, как предотвратить манипуляции с вашими фотографиями (да, так тоже можно) — под катом.

67142e039b4139d7ac4a2b1a072fa894.jpg

Что такое дипфейки и какими они бывают?

И термин, и его реализация впервые появились на Reddit в 2017 году: один из пользователей тогда сделал несколько фейковых видео со знаменитостями.

Слово «дипфейк» происходит от двух терминов: deep learning, глубокий метод машинного обучения на нейросетях, и fake — подделка. Изначально термин относили только к замене лица человека. Постепенно это понятие расширилось и на другие категории, включая аудио, видео, текст и так далее.

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

В чем разница? Liveness — технология, которая помогает системе отличить живого человека. Она определяет физическую (не цифровую!) маску, даже если она из силикона или латекса, фото, запись голоса или видео.

Алгоритм работает в связке с системой распознавания лиц, но главное отличие в том, что он отвечает не на вопрос «Тот ли это человек?», а на вопрос «Живой ли это человек?».

92d33b7668fbe6aef8fc35261c6aaef0.png

Liveness — это очень интересная и обширная тема. О ней мы поговорим в другой раз.

Сейчас давайте погрузимся в мир дипфейков и посмотрим на их самые распространенные типы:

  • перенос лица;

  • перенос выражения лица;

  • кастомизация атрибутов. Добавление очков, затемнение или осветление кожи, изменение прически и так далее;

  • генерация лица с нуля. Создание несуществующих в реальности людей;

  • синхронизация губ в ходе разговора.

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

  • рекламная интеграция;

  • цифровые аватары;

  • дубляж фильмов;

  • виртуальная примерочная (макияж, укладка волос и т.п.);

  • анонимизация аватара на видео во время конференции;

  • цифровые актеры — эта технология становится всё более популярной в Голливуде.

Теперь — о незаконном использовании дипфейков:

  • компрометирующий контент;

  • манипуляция общественным мнением;

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

  • обход системы аутентификации.

Один из наиболее популярных разновидностей дипфейков — Face Swap. Такие фальшивки сложнее всего обнаружить. Особенно когда их много, а найти подделку нужно быстро.

3d17691af3d1220bd30cbe9056b765a5.png

Алгоритмы генерации разделяются на два типа:

  1. Auto-Encoder. Получается очень хорошее качество, но для обучения нейросети нужна база видео.

  2. ID-Injection. Здесь сохраняются черты оригинального лица. К ним добавляют лицо другого человека и получается нечто среднее между двумя людьми. Вот как это выглядит:

657a004e3c55fc01b15e4b79d80bb047.png

В реальности типов генерации ещё больше. Я описал два, чтобы показать: защитившись от одних алгоритмов, у нас нет гарантии, что мы защитимся и от других.

Защита от подделки

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

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

  • очень много трудностей из-за сжатия данных, включая JPEG, H254. Детекторы дипфейков ориентируются на низкоуровневые артефакты, а сжатие часть из них убирает;

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

  • не до конца устоявшиеся тестовые данные. У разных методов детекции нет «золотого стандарта» образцов для проверки данных и из-за этого сложно сравнить результаты разных алгоритмов детекции.;

  • хорошей точностью могут похвастаться только модели, в которые встроено много нейросетей с большим количеством параметров. Они почти не ошибаются, но даже на видеокарте работают медленно. Это сильно затрудняет создание real-time дипфейк-детекторов

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

0b8c23c6b1a7028b620d5bf7afc92df3.png

Простое и рабочее решение. Но лучше взять классификатор, который «заточен» для работы с видео и под дипфейки.

4ab197fc8a02625e42c3c197e6aac3c7.png

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

Что дает такое предобучение? В этом случае нейронка улавливает изменения и лучше адаптируется под новые атаки, чем если бы её обучали дополнительно. На скриншоте ниже — зависимость эффективности работы нейросетей по метрике AUC (сравниваются результаты разных алгоритмов детекции на 4 тестовых датасетах).

7ec34de903a8d8b0fc5d01e11018771b.png

Если зафризить и не обучать основную часть сети, а обновлять её последнюю часть, она будет лучше выявлять новые фальшивки, так как не переобучается под артефакты старых видов атак.

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

8effb9f501cf8274a2dbe4ef32d88508.png

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

8105a49de1e801a5a82efc13648f350f.png

В предыдущих способах мы сравнивали фейки с реальными данными, то тут нам придётся синтезировать «ненастоящие» данные и обучить сеть на них. Таким способом можно предсказывать места с изменениями на картинке.

Как защитить ваши изображения

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

67d2ed9a925a15c3db47708beb1828ea.png

Тут уже есть моменты Adversarial attack. Мы добавляем на изображение лица шум, и при создании дипфейка из-за этого выделяются элементы с искажённым цветом. Например, после замены лица мошенник получит синее изображение, на котором сложно разглядеть человека. Тут уже никого не обманешь!

2cabf7e2be3e3e4047b4ecc89f71ffa1.png

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

Для человека картинка выглядит совершенно нормальной, а машина использовать такой снимок не сможет:

d5d1a96fc8929b80a5302decc9ea7fd9.png

Заключение

Совершенствуются как способы создания дипфейков — появляются всё более комплексные технологии, так и методы защиты. На все 100% не эффективен ни один из методов, так что нужно понимать: дипфейков будет становиться ещё больше.

Буду рад ответить в комментариях на ваши вопросы. И пишите, если заинтересовал какой-то из перечисленных способов детекции — возможно, мы расскажем о нём подробнее в следующих статьях.

© Habrahabr.ru