DeepFakes (от английского Deep Learning + Fakes) – этот термин впервые употребил в конце 2017 года пользователь, который создал на Reddit топик для публикации порнографических видеороликов. Для смены лица в них использовались решения с открытым исходным кодом. Как и в случае с некоторыми другие инновациями в области интернет-технологий, ранний прогресс шел рука об руку с порноиндустрией. Нечто подобное происходило и с потоковой передачей видео, а также с методами сжатия медиаданных.
Сейчас термин стал общеупотребительным для обозначения алгоритмов и технологий картографирования лиц и изменения видео. Под DeepFake мы понимаем:
смену лица;
синтез лица, т.е. объединение разных образцов для создания нового композитного лица;
манипуляции с атрибутом/выражением лица, вроде имитации улыбки или подмигивания.
Хотя манипуляции с видео далеко не новое явление, за последние годы произошло два больших изменения:
методы стали более продвинутыми за счет использования алгоритмов машинного обучения, в то время как старые технологии требовали утомительного ручного редактирования видео;
стало намного проще создавать собственные поддельные видео с помощью коммерческих приложений или программ с открытым исходным кодом.
Для создания DeepFake чаще всего используется две технологии, которые стоит рассмотреть немного подробнее.
GAN
Генеративные состязательные сети, или сокращенно GAN, представляют собой подход к генеративному моделированию с использованием методов глубокого обучения.
Генеративное моделирование – это задача обучения без учителя в машинном обучении, которая включает автоматическое обнаружение и изучение закономерностей во входных данных таким образом, чтобы модель можно было использовать для создания или вывода новых примеров, взятых из исходного набора данных.
При использовании GAN совместно обучаются две конкурирующие нейронные сети: «Дискриминатор» и «Генератор». Затем модель генератора создает искусственные изображения с использованием случайного шума, а дискриминатор обучается различать настоящие образцы и подделки. Если вы выровняете GAN с достаточно большим набором обучающих данных (человеческих лиц), он научится генерировать довольно реалистичные подделки.
Принцип работы GAN
Автоэнкодеры
Другой популярный подход – использование автоэнкодеров.
Автоэнкодер состоит из компонента кодировщика и декодера, где роль автоэнкодера состоит в том, чтобы научиться кодировать входное изображение в представление более низкой размерности. Роль декодера – восстановить это представление обратно в исходное изображение. Закодированное представление содержит связанные с лицевыми характеристиками исходного изображения детали узора, вроде выражения лица.
Принцип работы автоэнкодера
Если не вдаваться в подробности, основная идея метода заключается в том, что если у вас есть пара обучающихся отдельно (но с общим кодировщиком) автокодировщиков, два автокодера будут изучать лица как цели, так и источника. Декодер для цели затем можно комбинировать с общим кодировщиком. Если в кодер поступает исходное видео, но он подключен к декодеру для целевого, это генерирует синтетический выходной сигнал с подобием источников и характеристиками цели.
Мобильные приложения
Теперь мы последовательно разберем создание DeepFake на примере трех коммерческих мобильных приложений и сравним результаты.
Reface
Reface, ранее известный как Doublicat – одно из многих коммерческих мобильных приложений, позволяющих создавать собственные видео/изображения для обмена лиц без программирования.
На веб-сайте Reface говорится, что программа реализует «прорывную технологию AI/ML с использованием Generative Adversarial Networks», но никакой конкретики не приводится.
Приложение позволяет подставлять лица в одно из множества видео или выбрать собственное видео из интернета. Можно также обрабатывать и сохранять несколько лиц – это дает возможность повторно использовать их без импорта. Поскольку Reface распознает все лица в видео, можно установить отдельное лицо для каждого персонажа.
Большинство функций приложения доступно бесплатно, но чтобы избавиться от водяных знаков, придется оплатить подписку Pro.
Impressions
Приложение накладывает лица известных людей на записанные пользователем видео. Выбрав знаменитость, загрузите ролик, а программа создаст дипфейк-версию.
Impressions также включает каталог аудиозаписей из популярных фильмов и телесериалов, которые можно синхронизировать по губам. Приложение загружает и обрабатывает видео на своих серверах, поэтому для работы требуется подключение к Интернету.
Пока Impressions доступен только на iPhone или iPad, но компания-разработчик утверждает, что скоро появится версия и для Android. Приложение бесплатно при условии, что на клипах остается водяной знак.
Jiggy
Jiggy позволяет воспользоваться технологией создания дипфейков для развлечения. Приложение предлагает десятки танцевальных видео, в которые можно втиснуть свое или чужое лицо, загрузив фотографию. Jiggy также сканирует верхнюю часть тела, чтобы наложить ее на танцующего персонажа.
Как и Reface, Jiggy оживляет выражение и движения лица.
Приложения вроде Reface, Impressions и Jiggy позволяют легко попробовать модную технологию, не прибегая к программированию и вообще не вникая в технологические нюансы. Мы на этом не остановимся и далее рассмотрим более полное руководство по созданию DeepFake на коленке.
Делаем DeepFake при помощи модели движения первого порядка за 5 минут
Методология и подход
Новый способ анимации исходного изображения на основе видеоролика не требует дополнительной информации или аннотаций к объекту. Модель использует обученную для восстановления видео из неподвижного изображения нейронную сеть, а также движения на видео, которое изучается во время обучения. По исходному изображению и движущемуся видео можно предсказать, как изображенный объект перемещается в соответствии с движением на этих кадрах.
Модель отслеживает движения головы, разговоры, слежение за глазами и даже движения тела.
Исходный код модели находится на GitHub. Там же можно найти все необходимые пояснения, чтобы установить ее на свою машину, при необходимости переучить и протестировать, но мы пойдем еще более простым путем, который вообще не потребует разбираться с кодом.
Пошаговое руководство
Чтобы сделать собственный DeepFake, мы используем бесплатный облачный сервис Google Colab . Он основан на Jupyter Notebook и предоставляет всё необходимое для машинного обучения прямо в браузере. Вам понадобится только аккаунт Google.
Шаг 1. Откройте в браузере файл ipynb и скопируйте его на свой Google Диск. Это заранее подготовленный алгоритм машинного обучения.
Шаг 2. Запустите первый процесс, чтобы скачать ресурсы и настроить параметры модели.
Шаг 3. Дождитесь вывода надписи CONFIGURE DONE
. Чтобы проверить, промотайте страницу вниз.
Шаг 4. При помощи второго скрипта можно протестировать алгоритм, используя заранее заготовленную коллекцию видео и фото. Выберите исходное изображение, запустите run
и дождитесь результатов.
Шаг 5. Чтобы сделать собственное видео, вам потребуется перетащить в папку проекта изображение и исходное видео для анимации.
Шаг 6. После этого скопируйте путь к ним, пропишите его в соответствующих полях третьего сценария и нажмите запуск.
Вуаля, Сталлоне уже требует от вас одежду, ботинки и мотоцикл:
Или Мона Лиза:
Подводные камни
Представленный способ не универсален и может иногда выдавать неожиданные результаты. Учитывая личный опыт, приведем несколько рекомендаций:
чтобы сократить время обработки, стоит использовать небольшие видеоролики (до 30 секунда и до 5 МБ) – это ускорит обработку и предотвратит зависание процесса;
для достижения наилучшего результата используйте изображение и видео с одинаковым соотношением сторон и обрезанным лицом – на видео не должно быть других предметов кроме лица, иначе результат может оказаться неожиданным;
Постарайтесь обеспечить одинаковую пропорцию головы и фона на целевом изображении и во всем видео
DeepFaceLab
Говоря о дипфейках, нельзя забывать про DeepFaceLab. Подробный пошаговый туториал по этой нейросетевой библиотеке уже публиковался на нашем сайте. Этот инструмент требует мощного железа и/или больших затрат времени и не входит в категорию создания DeepFake на коленке, но если вы хотите глубже погрузиться в тему, начать стоит с него. ***
Для ознакомления с технологией создания DeepFakes или для развлечения вполне можно попробовать Reface или Impressions. Этих мобильных приложений хватит, чтобы подшутить над друзьями или сделать забавное видео. Если вы хотите чуть глубже разобраться в технологии, но без дорогого железа и многих часов рендера, стоит попробовать модель движения первого порядка для анимации изображений в Google Colab: алгоритм позволит поэкспериментировать с разными исходниками и параметрами, но также не требователен к ресурсам вашего компьютера. Для более серьезных манипуляций присмотритесь к возможностям DeepFaceLab. Удачи!