Гайд по установке и использованию программы DeepFaceLive (в статье не будет рассказано про использование Live режима, мы делаем дипфейк на основе уже записанного видеоролика) Перед тем, как мы углубимся в создание дипфейков, хочу посоветовать лучший проект по созданию видеороликов. Профессиональные актеры, качественная постановка, краткие сроки - все, чтобы ваш проект встретил свой момент славы! Создавайте впечатляющие презентации с вебкамерой, выделяйтесь из толпы и завоевывайте внимание своей аудитории. Donor VideoMake - перенаправит вас к миру возможностей! Почему не DeepFaceLab? Конечно, DeepFaceLab будет более подходящим выбором для наших задач, поскольку DeepFaceLive не обладает прямой функцией экспорта в видеофайл. Тем не менее, стоит отметить, что DeepFaceLab предназначен для более сложной работы с дипфейками, не имеет удобного интерфейса и требует значительных временных затрат. С целью упрощения процесса создания дипфейка мы решили сосредоточиться на DeepFaceLive в нашей статье, где мы рассмотрим процесс работы с видеороликом и получение окончательного результата в виде видеофайла. Внимание! Программа не моя (GitHub). На момент написания гайда программа полностью чиста и безобидна. Гайд представляет из себя переведенное wiki программы на русский язык с небольшими адаптациями к нашим целям. Плюсы и минусы программы + FOSS проект. + Простота установки. + Работает на CPU, NVIDIA, AMD. +- Не сохраняет результат напрямую в видеофайл. Но это исправимо (см. спойлер "Собираем итоговый видеофайл") - Скорее всего не самое лучшее решение, так как подобных проектов множество. - Высокие системные требования (см. спойлер "Системные требования"). - Не работает на MAC. - Может портить объекты у лица (ярко показано на ролике результате, приложенном ниже). Системные требования Видеокарта, поддерживающая DirectX12 (Рекомендовано RTX 2070+ / Radeon RX 5700 XT+ ) Совеременный CPU с AVX 4GB ОЗУ, 32GB+ размер файла подкачки Windows 10 Подготовка 1. Обновление драйверов видеокарты. NVIDIA 1.1. Переходим на официальный сайт NVIDIA. 1.2. Выбираем нужные значения и жмём кнопку "Поиск". 1.3. На открывшейся странице нажимаем кнопку "Скачать", принимаем условия и дожидаемся загрузки. 1.4. Следуем инструкциям в установщике. AMD 1.1. Переходим на официальный сайт AMD. 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 скрипт, кому как удобнее. 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') 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') .EXE VirusTotal Программа 2. Для удобства, положим папку с кадрами, оригинальный видеоролик и приложение / Python скрипт в одну папку. 3. Запускаем командную строку в этой папке и пишем в неё следующую команду: ftv --in original.mp4 --ff frames --out out.mp4 , где original.mp4 - это оригинальный видеоролик, frames это папка с кадрами, out.mp4 это название итогового ролика. 4. Дожидаемся результата. Результаты Видеоролик, который я использовал: Результат всех наших усилий: Как Вы видите, лицо заменяется и держится стабильно, пока рядом с ним нет никаких объектов (хорошо заметны дефекты при дыме).
Lilith, Моя статья была опубликована 12.11.23, в то время как статья на форуме, о котором вы говорите, появилась 14.11.23. Это уже указывает на то, что моя статья была создана раньше. Кроме того, если вы внимательно посмотрите на фотографии, вы заметите, что мои оригинальные изображения не имеют водяных знаков, в то время как изображения в статье на форуме имеют водяные знаки (особенно хорошо видно на картинках, показывающих интерфейс программы). Это еще одно подтверждение того, что моя статья является оригинальной. В довесок, можно увидеть, что статья копирует даже Python скрипт. Я понимаю, что может быть сложно определить, кто является истинным автором в интернете, но я надеюсь, что эта информация поможет вам прояснить ситуацию.