Ранее мы рассматривали различные способы по созданию видео с заменой лица, но они были довольно некачественными. Именно поэтому в этой статье мы разберем DeepFaceLive, настроим его и обработаем видеоматериал. Приложение намного лучше справляется, чем все бесплатные онлайн-сервисы. Единственным минусом является то, что результат сохраняется покадрово, но и эту проблему мы решим.

Учтите, что приложение имеет довольно высокие системные требования:

Приступим к реализации:
Первым делом необходимо настроить свою операционную систему, для начала обновляем драйвера на видеокарту. После чего переходим в "Дополнительные параметры системы":


Повторяем все действия с изображения ниже и указываем файл подкачки в размере не менее 32768 мегабайт на любом удобном для Вас диске:


Теперь переходим на страницу приложения, находящуюся на Github, и загружаем с любого удобного источника:


Распаковываем загруженный архив и запускаем установщик, соответствующий вашей видеокарте. NVIDIA_bulid для Nvidia, DirectX12_build для AMD:


Открываем папку, которую Вы указали при установке и запускаем файл "DeepFaceLive.bat"


Настраиваем все, смотря на изображение ниже. 1 — видеоматериал, на котором будет заменяться лицо; 2, 3, 4 и 6 — указываем ваш GPU; 5 — выбираем нужную модель (список можно посмотреть тут); 7 — выбираем "Merged frame"; 8 — указываем куда будут сохраняться обработанные карды вашего материала:


После того, как все настроено, нажимаем на кнопку, показанную под номером 9 на скриншоте. Ожидаем окончания процесса:


Так как видео сохраняется по кадрам, его потребуется соединить. Для этого устанавливаем Python, после чего создаем скрипт под названием script.py с таким кодом:
import cv2
import moviepy.editor as mpe
import argparse
import glob
import os

# Создание парсера
parser = argparse.ArgumentParser(description='Преобразование кадров в видео')
parser.add_argument('--in', dest='input_video', required=True, help='Путь к оригинальному видео')
parser.add_argument('--ff', dest='frames_folder', required=True, help='Путь к папке с кадрами')
parser.add_argument('--out', dest='output_video', required=True, help='Путь к выходному видео')

args = parser.parse_args()

# Получить fps из оригинального видео
clip = mpe.VideoFileClip(args.input_video)
fps = clip.fps

# Создать видеоряд из кадров
frame_array = []
files = glob.glob(args.frames_folder + '/*.jpg')  # путь к папке с кадрами
files.sort()  # убедитесь, что кадры в правильном порядке

for i in range(len(files)):
    filename = files[i]
    img = cv2.imread(filename)
    height, width, layers = img.shape
    size = (width, height)
    frame_array.append(img)

out = cv2.VideoWriter('temp.mp4', cv2.VideoWriter_fourcc(*'mp4v'), fps, size)

for i in range(len(frame_array)):
    out.write(frame_array[i])
out.release()

# Добавить звуковую дорожку из оригинального видео
my_clip = mpe.VideoFileClip('temp.mp4')
audio_background = mpe.AudioFileClip(args.input_video)
final_audio = mpe.CompositeAudioClip([audio_background])
final_clip = my_clip.set_audio(final_audio)
final_clip.write_videofile(args.output_video)

# Удалить временный файл
os.remove('temp.mp4')

Теперь перемещаем созданный скрипт и весь материал в одну папку, оригинальное видео должно называться "input.mp4", а кадры хранится в папке "processed":

Создаем качественное дипфейк-видео при помощи DeepFaceLive

Запускаем командную строку в этой папке и пишем команду "script.py --in input.mp4 --ff processed --out result.mp4" (без кавычек) :


На этом все, надеюсь статья оказалась для Вас полезной!