Чем хорош DeepFaceLive?
Конечно,
будет более подходящим выбором для наших задач, поскольку DeepFaceLive не обладает прямой функцией экспорта в видеофайл. Тем не менее, стоит отметить, что DeepFaceLab предназначен для более сложной работы с дипфейками, не имеет удобного интерфейса и требует значительных временных затрат. С целью упрощения процесса создания дипфейка мы решили сосредоточиться на DeepFaceLive в нашей статье, где мы рассмотрим процесс работы с видеороликом и получение окончательного результата в виде видеофайла.
Важно:
Программа (
). На момент написания гайда программа полностью чиста и безобидна. Гайд представляет из себя переведенное
на русский язык с небольшими адаптациями к нашим целям.
Плюсы и минусы софта:
+ FOSS проект.
+ Простота установки.
+ Работает на CPU, NVIDIA, AMD.
+- Не сохраняет результат напрямую в видеофайл. Но это исправимо (см. спойлер "Собираем итоговый видеофайл")
- Скорее всего не самое лучшее решение, так как подобных проектов множество.
- Высокие системные требования (см. спойлер "Системные требования").
- Не работает на MAC.
- Может портить объекты у лица (ярко показано на ролике результате, приложенном ниже).
Системные требования:
Минимум:
Видеокарта, поддерживающая DirectX12
(Рекомендовано RTX 2070+ / Radeon RX 5700 XT+ )
Совеременный CPU с AVX
4GB ОЗУ, 32GB+ размер файла подкачки
Windows 10
Подготовка:
Nvidia:
1.1. Переходим на
.
1.2. Выбираем нужные значения и жмём кнопку "Поиск".
1.3. На открывшейся странице нажимаем кнопку "Скачать", принимаем условия и дожидаемся загрузки.
1.4. Следуем инструкциям в установщике.
AMD:
1.1. Переходим на
.
1.2. Выбираем нужные значения и жмём кнопку "Submit".
1.3. Выбираем нужную систему и скачиваем нужный драйвер.
1.4. Следуем инструкциям в установщике.
2. Увеличение файла подкачки.
2.1. Открываем параметры.
2.2. Переходим в раздел "Система".
2.3. Переходим в подраздел "О программе" и нажимаем на ссылку "Дополнительные параметры системы"
2.4. В открывшемся окне нажимаем кнопку "Параметры" в разделе "Быстродействие". В следующем окне переходим на вкладку "Дополнительно" и нажимаем кнопку "Изменить". В последнем окне выбираем "Указать размер" и задаем максимальный размер файла подкачки не менее 32 GB (32768 MB). Применяем изменения и перезагружаем компьютер.
Установка:
1. Переходим в
программы.
2. Скачиваем архив из любого источника и распаковываем его.
3. В распакованной папке переходим в папку "DeepFaceLive". В ней выбираем один из установщиков. Так как мы хотим, чтобы DeepFaceLive задействовал нашу видеокарту, мы выберем DeepFaceLive_NVIDIA.
4. Выбираем нужный путь и распаковываем архив.
Совет: не используйте в пути программы кириллицу.
Запуск программы :
1. Переходим в папку с установленной программой.
2. Открываем файл DeepFaceLive.bat
3. В открывшейся программе выбираем нужные значения (см. фото и описание под ним).
Под цифрой:
1 - Выбираем исходный видеоролик.
2 - Выбираем нашу видеокарту, для ускорения процесса.
3 - Выбираем нашу видеокарту, для ускорения процесса.
4 - Выбираем нашу видеокарту, для ускорения процесса.
5 - Выбираем нужную модель для дипфейка (полный список готовых моделей можно найти ).
6 - Выбираем нашу видеокарту, для ускорения процесса.
7 - Выбираем "Merged frame".
8 - Выбираем папку, куда сохранятся обработанные кадры видео (так и должно быть, смотри следующий спойлер).
4. После этого нажимаем кнопку "Play" (цифра 9 на картинке снизу) и дожидаемся, когда обработаются все кадры. В моем случае 270 кадров.
Собираем файл:
Так как программа не предназначена для экспорта готового видеоролика, она сохраняет последовательность кадров, из которых нужно собрать итоговый видеоролик. Также, нужно добавить аудиодорожку с оригинального видеоролика. Конечно, всё это можно сделать в видеоредакторе, однако, мне проще написать маленький Python скрипт, который будет делать это всё автоматически.
1. Устанавливаем написанную мною программу / Python скрипт, кому как удобнее.
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')
2. Для удобства, положим папку с кадрами, оригинальный видеоролик и приложение / Python скрипт в одну папку.
3. Запускаем командную строку в этой папке и пишем в неё следующую команду:
ftv --in original.mp4 --ff frames --out out.mp4 , где original.mp4 - это оригинальный видеоролик, frames это папка с кадрами, out.mp4 это название итогового ролика.
4. Дожидаемся результата.