Создаем качественное дипфейк-видео при помощи DeepFaceLive
Ранее мы рассматривали различные способы по созданию видео с заменой лица, но они были довольно некачественными. Именно поэтому в этой статье мы разберем 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»:
Запускаем командную строку в этой папке и пишем команду «script.py —in input.mp4 —ff processed —out result.mp4» (без кавычек) :
На этом все, надеюсь статья оказалась для Вас полезной!
Texnologiyalar
Создаем качественное дипфейк-видео при помощи DeepFaceLive