Цель
Я раньше не прикасался к DeepFakes и вдруг хочу отправить видео станции B для воспроизведения. Пробовать довольно хлопотно, вот запись ям, на которые я наступал.
Цель этой статьи состоит в том, чтобыThe Singing Trump
Видео заменено нашим товарищем Chuan Jianguo.
Конечный эффект:
Ссылка на видео:Woohoo.Proportion.com/video/BV12 Боюсь…
Описание окружающей среды
Среда, которую я пробовал в этой статье, — это среда Linux-сервера, потому что она работает быстрее.
Среда Python: версия Anoconda python3.7
GPU: K80, 12 ГБ видеопамяти
Версия DeepFake: 2.0
Другие инструменты:ffmpeg
подготовка материала
Сначала нужно подготовить один или несколькоThe Singing Trump
, и видео товарища Чуань Цзяньго. Используйте в качестве материала для смены лица.
сегментация видео
Сначала разрежьте видеоматериал на несколько картинок через ffmpeg.
mkdir output
ffmpeg -i 你的视频.mp4 -r 2 output/video-frame-t-%d.png
Видео здесь не обязательно должно быть mp4, другие форматы подойдут, тогда-r 2
Это значит, что это 2 кадра, то есть каждую секунду собирается две картинки, можете попробовать по собственному видео. Наконец, выводится в выходную папку.Префикс можно определить случайно, а название не критично.
Лучше всего найти здесь еще несколько видео, потому что дипфейк подскажет, чтобы количество лиц было больше 200. Я подготовил здесь 3 видео, всего 6 видео.
ffmpeg -i sing_trump1.mp4 -r 2 sing_trump_output/st1-%d.png
ffmpeg -i sing_trump2.flv -r 2 sing_trump_output/st2-%d.png
ffmpeg -i sing_trump3.mp4 -r 2 sing_trump_output/st3-%d.png
ffmpeg -i trump1.webm -r 2 trump_output/t1-%d.png
ffmpeg -i trump2.mp4 -r 2 trump_output/t2-%d.png
ffmpeg -i trump3.mp4 -r 2 trump_output/t3-%d.png
После завершения он довольно большой, и беспорядок в сумме составляет 3,7 Гб.
клонировать код + установить зависимости
Тут особо нечего сказать, код с гитхаба.
git clone https://github.com/deepfakes/faceswap.git
Затем установите среду в соответствии с вашей реальной ситуацией.Я здесь, чтобы установить процессор на ПК, а затем установить nvidia на сервер.
извлечь лицо
Далее вытяните все грани.
python3 faceswap.py extract -i trump_output -o trump_output_face
python3 faceswap.py extract -i sing_trump_output -o sing_trump_output_face
Вот и все после того, как здесь нарисовано лицо.
лицо фильтра
следующая потребностьруководствоУдаляем все лица, которые нам не нужны.
Изменить выравнивание
Когда мы вызываем Extract для создания лица, автоматически создается файл корректуры для сохранения информации о лице на исходном изображении.После удаления лица необходимо выровнять лицо с исходным изображением.
Здесь вы можете открыть инструмент графического интерфейса
python3 faceswap.py gui
Затем выберите «Выравнивания» в разделе «Инструменты».
Далее выберитеRemove-Faces
, а затем введите путь к файлу выравнивания, путь к лицу и путь к исходному изображению.
Затем нажмите зеленую кнопку, чтобы начать и запустить.
потомsing_trump_out
Также сделайте то же самое.
начать обучение
Затем можно приступать к обучению.-m
Параметр — это место для сохранения модели.
python3 ./faceswap.py train -A sing_trump_output_face -ala sing_trump_output/alignments.fsa -B trump_output_face -alb trump_output/alignments.fsa -m model
Кусок пирога
Если я использую здесь gpu, я обнаружил, что tensorflow 2.2 начинается с cuda10.1 или выше, но я не могу установить его здесь, поэтому мне нужно использовать tensorflow 1.14 или tensorflow 1.15, для использования которых требуется версия deepfake 1.0.
GitHub.com/deep fake is/published…
Скриншот тренировки
Я обнаружил, что операции faceswap1.0 и основной ветки одинаковы, и особых изменений нет.
Моя скорость здесь около 100 шагов за 2 минуты.
Конвертировать видео
Подготовить кадры видео
Прежде всего, нам нужно подготовить видео, которое мы хотим конвертировать, а затем разделить видео, это не в соответствии с предыдущим количеством кадров.
ffmpeg –i sing_trump2.flv input_frames/video-frame-%d.png
Вот мое видео 1 минута 41 секунда.
После конвертации осталось около 3050 картинок, это примерно 30 кадров, а тут всего 7,1Г (256Г для мака это реально невыносимо)
Выровнять снова
Далее нам нужно снова выровнять лицо видеоизображения, которое мы хотим преобразовать, сначала нарисуйте лицо.
python3 faceswap.py extract -i input_frames -o input_frames_face
Затем удалите лишнее лицо,像前面的步骤一样的操作
выбрать с помощью графического интерфейсаRemove-Faces
, а затем выровнять.
Замена лица AI для каждого кадра
Преобразовать с помощью команды convert
python3 faceswap.py convert -i input_frames/ -o output_frames -m model/
Скорость у меня здесь около 1 картинки в секунду, а реальных лиц только больше 600. Если лица плотнее, то, по моим оценкам, может быть не так быстро. Конвертация всех картинок занимает около 5 минут (этот гпу был В это время все иначе. В реальности программа может работать немного быстрее).
Эффект
Через 20 минут тренировки
После тренировки на 1200 шагов это выглядит так Эффект выглядит не очень, но уже немного интересно.
Через час тренировки
После дня обучения
Объединение изображений в видео
Наконец, изображения синтезируются в видео через ffmpeg.
ffmpeg -i output_frames/video-frame-%d.png -vcodec libx264 -r 30 out.mp4
После объединения здесь я обнаружил, что это было 2 минуты, но влияние было не слишком большим.В конце концов, нам все равно нужно отредактировать его позже, и было бы хорошо отредактировать его с помощью программного обеспечения, такого как PR.
Суммировать
Посмотрев видео можно увидеть, что когда лицо маленькое, faceswap не распознает лицо, поэтому не подменяется, что немного прискорбно.
Лично я считаю, что самый трудоемкий процесс всего дипфейка — это удаление лишних лиц.