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