Введение в самый популярный инструмент глубокого подделки с открытым исходным кодом
За последние несколько лет впечатляющие достижения в области машинного обучения дали нам ужасающую способность выполнять фотореалистичные манипуляции с видео с помощью техники, известной как DeepFaking.
Базовая технология, отвечающая за этот метод, находится в Generative Adversarial Networks (GAN), - новом классе фреймворка машинного обучения, впервые предложенном Яном Гудфеллоу и его коллегами в 2014 году. В этом методе две нейронные сети (генератор и дискриминатор) соревнуются друг с другом в минимаксной игре, чтобы создать модель, способную генерировать новые данные с теми же свойствами обучающего набора. Подробнее в их white paper здесь.
Дипфейки получили огромное внимание средств массовой информации как по хорошим, так и по плохим причинам. Последствия использования этой технологии могут быть ужасающими. В мире, переполненном фейковыми новостями и мистификациями, становится все более важным ознакомиться с тем, как выглядят «фальшивые» и «синтетические» СМИ.
Получив более 13 000 звезд на GitHub, DeepFaceLab стал популярным решением как для потребительских, так и для профессиональных дипфейков. Даже если у вас ограниченные аппаратные и технические знания, я покажу вам, насколько легко создавать качественные дипфейки из ограниченных данных обучения.
В частности, мы будем изображать лицо Тони Старка на Илоне Маске в три этапа:
- Этап извлечения -, на котором мы подготавливаем и очищаем наш набор данных.
- Этап обучения - на котором мы обучаем нашу модель.
- Фаза конверсии - где мы используем нашу модель для создания маски.
Чтобы загрузить и ознакомиться с инструментом, вы можете найти репо здесь и технический документ здесь. Обратите внимание, что в настоящее время поддерживаются только операционные системы Windows и Linux.
Фаза I: добыча
После загрузки DeepFaceLab вы будете жить в двух разных каталогах:
- Каталог проекта (называется DeepFaceLab_NVIDIA)
- Каталог рабочая область (подкаталог основного каталога проекта)
Каталог проекта содержит наши файлы сценариев, которые мы будем использовать для выполнения действий (извлечение, обучение), а каталог нашей рабочей области будет содержать следующее:
- Исходные данные - лица, которые мы хотим встроить.
- Данные о назначении - лица объекта, которые мы хотим переопределить.
- Модель - двигатель с двигателем GAN, который мы будем обучать.
- Начните с добавления ваших
data_dst.mp4
иdata_src.mp4
видеофайлов в рабочее пространство. - Вернитесь в каталог DeepFaceLab_NVIDIA.
- Запустите
2) extract images from video data_src.bat
, чтобы извлечь обучаемые лица из исходного видео. - Запустите
3) extract images from video data_dst FULL FPS.bat
, чтобы извлечь обучаемые лица из целевого видео. - Перейдите к папкам
data_dst
иdata_src
, чтобы очистить извлеченные грани, удалив смещенные и деформированные грани. - (Необязательно) Запустите
4.2) data_dst sort.bat
и5.2) data_dst sort.bat
, чтобы упростить сравнение лиц во время очистки.
💡 Полезные советы для этого этапа:
- Выбор правильного источника и назначения обучающих видеороликов - самый важный этап этого процесса. Качество видео, выравнивание лиц и освещение - все это факторы, которые могут повлиять на качество готового продукта.
- Вы можете найти высококачественные клипы на YouTube из таких источников, как интервью со знаменитостями и видеоклипы.
- Не переусердствуйте с исходными данными. Я считаю, что приятным моментом являются около 2000 лиц (или извлеченный 2–3-минутный клип) с разными углами и выражениями, в идеале те, которые соответствуют вашему целевому клипу.
Фаза II: Обучение
Для этого базового дипфейка мы будем использовать модель Quick96, поскольку она лучше поддерживает графические процессоры низкого уровня и, как правило, более удобна для новичков.
- Из каталога проекта запустите
6) train Quick96.bat
- При появлении запроса выберите свой графический процессор (также поддерживается использование только процессора)
Когда обучение начнется, вы увидите эти числа в окне командной строки. Что они имеют в виду?
Starting. Press "Enter" to stop training and save model. [12:33:13][#000219][0764ms][0.9550][0.9910]
Слева направо столбцы представляют следующее.
- Текущее местное время
- Текущая итерация
- Время итерации
- Величина потерь SRC
- Значение потери летнего времени
Наша цель - получить как можно более низкие значения потерь src и dst.
Поставьте в очередь обучающую монтажную музыку Rocky! Продолжаем тренироваться 💪
Как и мои первые попытки играть на саксофоне в детстве, первая партия итераций будет выглядеть довольно жалко. Со временем и обучением призрачные капли начнут принимать форму, чем-то напоминающую наши объекты. Слева направо столбцы изображений представляют собой выходные данные нашей модели со следующими данными:
- Образец лица SRC
- Сгенерировано лицо SRC из этого образца
- Образец лица DST
- Создано лицо DST из этого образца
- Сгенерированное лицо SRC, моделирующее образец лица DST
Как вы понимаете, последний столбец - это тот, который нас больше всего интересует, и он даст нам хороший сигнал о том, насколько аутентичным будет выглядеть наш дипфейк.
После 160000 итераций вы действительно можете увидеть, как наши сгенерированные лица достигают ужасающего уровня реализма. Пришло время собрать все воедино!
💡 Полезные советы для этого этапа:
- Терпение является ключевым моментом на этом этапе. Я рекомендую вам подождать не менее 80 000 итераций для достижения наилучших возможных результатов. В зависимости от вашего оборудования вам может потребоваться запустить его на ночь или на выходных. Или вы можете сделать современный эквивалент наблюдения за высыханием краски, наблюдая за поездом своей модели.
- На более продвинутых моделях помните, какое разрешение изображения вы используете, так как это усложнит обучение и может даже оказаться слишком большим для вашего графического процессора. С GTX 1060, использующей 6 ГБ видеопамяти, я смог заставить свой графический процессор работать с разрешением до 192 в моей модели. Все, что превышало эту сумму, привело к сбою моей модели при установке.
- DeepFaceLab также поддерживает трансферное обучение, при котором предварительно обученные модели могут использоваться для значительного повышения начальной скорости обучения. Вы можете найти многие из них на форумах сообщества DeepFaceLab.
Этап III: преобразование
Теперь, когда наша модель полностью обучена, мы можем объединить наши сгенерированные лица с целевым видео.
В каталоге проекта запустите 7) merge Quick96.bat
, чтобы вызвать интерактивное слияние.
Хорошо, здесь много чего происходит. Давайте разберемся с этим.
Нам нужно идти кадр за кадром и вносить какие-либо корректировки в сгенерированную маску лица с помощью следующих методов.
- Привыкайте нажимать Tab для перехода между интерфейсом и рамкой изображения.
- Используйте маску размытия (E и D) и маску размытия (W и S), чтобы подогнать созданное лицо к форме лица объекта. В базовой модели Quick96 у нас ограниченная поддержка распознавания линии подбородка, поэтому этот шаг необходим.
- Когда вы будете готовы двигаться дальше, вы можете использовать клавишу точки для перехода к следующему кадру или использовать Shift +. для обработки всех оставшихся кадров.
Это довольно примитивный инструмент, но вы будете удивлены, насколько далеко он может вас продвинуть, когда достаточно обученная модель справится с большей частью тяжелой работы.
После этого запустите 8) merged to mp4 lossless.bat
, чтобы запустить небольшой скрипт FFmpeg, который построит ваше объединенное видео и отобразит его как result.mp4.
Куда идти дальше?
Удовлетворив свой первый дипфейк, вы быстро почувствуете аппетит к созданию более нелепых творений. Пример Тони Старка / Илона Маска - это своего рода «Hello World» инструмента DeepFaceLab, и вскоре вы обнаружите, что модель Quick96 и ваш четырехлетний графический процессор Nvidia просто не годятся для более сложных случаев.
В своей следующей статье я покажу вам, как мы можем использовать модель SAEHD для создания гораздо более качественных сгенерированных масок для лица и как мы можем переложить накладные расходы на обучение в облако с помощью GoogleCollab. записные книжки. Быть в курсе! 🤖