Как использовать


Шаг №3


Работа с программой FakeApp. Шаг №3 — Создание видео

Если Вы хотите изменить лица на всех изображениях в папке C:\fakes\data_A на лицо B, переходите к пункту «Конвертирование изображений»

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

Подготовка изображений для конвертирования

Прежде всего сохраните копию файлов из папки C:\fakes\data_A в какую-нибудь другую папку, чтобы не потерять их.

Затем извлеките каждый кадр видео при помощи FFmpeg, действуя так же, как в разделе Подготовка исходного видео в шаге №1

Уменьшите все полученные изображения, скопируйте их в папку C:\fakes\data_A и выполните извлечение, выравнивание и очистку лиц с помощью FakeApp, как в предыдущих шагах. Если изображения не входили в набор данных, на котором обучалась компьютерная модель, придётся снова обучить её, пока потери не будут ниже 0.02.

Конвертирование изображений

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

Введите пути к папкам в полях Model и Data точно так же, как на скриншоте, учитывая направление слешей (только прямые, /) и не забыв дописать слеш в конце. Можете поэкспериментировать с настройкой Seamless, вводя в поле «true» или «false» (без кавычек), если вокруг изменённого лица образуется прямоугольник, или наблюдается дрожание.

Для более плавного изменения лица в кадре можно попробовать менять значения полей Blur Size и Kernel Size. Эти настройки влияют на размытие и устранение нежелательного эффекта, при котором лицо «распадается» на части. Если такой эффект наблюдается в получившемся видео, а также если лицо получилось слишком размытым, попробуйте установить оба этих значения в 0.

Поле Direction отвечает за направление конвертирования. По умолчанию оно установлено в «AtoB», т.е. лицо A меняется на лицо B.

Для начала конвертирования нажмите кнопку Start. Процесс конвертирования занимает куда меньше времени, чем обучение, даже без использования графического процессора.

После конвертирования в папке C:\fakes\data_A будет создана папка merged, в которой будут находиться изображения с изменённым лицом. Прежде чем переходить к следующему пункту, следует проверить, что получилось, и убедиться, что изображения имеют нормальное качество. В противном случае нужно продолжить обучение модели.

Создание видео из полученных изображений

Среди полученных изображений могут быть не все кадры исходного видео. Это происходит потому, что FakeApp обрабатывает не все кадры, а только те, где присутствуют лица. Для того, чтобы восстановить всю последовательность кадров, скопируйте все файлы из папки C:\fakes\data_A\merged в папку C:\fakes\data_A.

Сконвертированные изображения называются так же, как исходные, поэтому система предложит перезаписать их. После перезаписи все кадры будет расположены по порядку.

Разумеется, после перезаписи исходные изображения (с лицом A), которые мы использовали для обучения, пропадут, но их всегда можно восстановить из папки, в которую мы скопировали их на предыдущем шаге.

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

Теперь, когда последовательность кадров получена, осталось собрать из них видео. Открываем командную строку, переходим в папку C:\fakes\data_A, как в предыдущих шагах. Вводим следующую команду:

ffmpeg -f image2 -i imagename%04d.jpg -vcodec libx264 -crf 15 -pix_fmt yuv420p output_filename.mp4

В результате из файлов с именами imagename0001.jpg, imagename0002.jpg и т.д. будет создан видеофайл output_filename.mp4.

Параметр -crf отвечает за качество видео и может принимать значения от 0 до 51, при этом меньшие числа означают лучшее качество. По умолчанию видео создаётся с частотой 25 кадров в секунду, но при необходимости Вы можете изменить частоту с помощью параметра -r.

Слово imagename в команде нужно изменить на реальные имена файлов в папке data_A. К примеру, если у Вас файлы в этой папке называются bob0001.jpg, bob0002.jpg и т.д., в команду нужно ввести bob%04d.jpg. Кроме того, вместо output_filename.mp4 можно ввести имя конечного видеофайла.

Итак, «фейковое» видео готово. Если результат Вас не устраивает, можете изменить параметры конвертирования и попробовать ещё раз, либо продолжить обучение модели. Некоторые пользователи также используют различное ПО для редактирования видео, чтобы поправить отдельные фрагменты, вместо того, чтобы переделывать весь видеоролик.