Загрузка...

Making high-quality deepfake videos quickly and easily

Thread in Articles created by Donor Nov 12, 2023. (bumped Jan 6, 2025) 2720 views

  1. Donor
    Donor Topic starter Nov 12, 2023
    Гайд по установке и использованию программы DeepFaceLive
    (в статье не будет рассказано про использование Live режима, мы делаем дипфейк на основе уже записанного видеоролика)


    Перед тем, как мы углубимся в создание дипфейков, хочу посоветовать лучший проект по созданию видеороликов.
    Профессиональные актеры, качественная постановка, краткие сроки - все, чтобы ваш проект встретил свой момент славы!
    Создавайте впечатляющие презентации с вебкамерой, выделяйтесь из толпы и завоевывайте внимание своей аудитории.

    Donor VideoMake - перенаправит вас к миру возможностей!
    [IMG]

    Конечно, 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. Обновление драйверов видеокарты.

    1.1. Переходим на официальный сайт NVIDIA.

    1.2. Выбираем нужные значения и жмём кнопку "Поиск".
    [IMG]

    1.3. На открывшейся странице нажимаем кнопку "Скачать", принимаем условия и дожидаемся загрузки.
    [IMG]

    1.4. Следуем инструкциям в установщике.
    1.1. Переходим на официальный сайт AMD.

    1.2. Выбираем нужные значения и жмём кнопку "Submit".
    [IMG]

    1.3. Выбираем нужную систему и скачиваем нужный драйвер.
    [IMG]

    1.4. Следуем инструкциям в установщике.

    2. Увеличение файла подкачки.




    2.1. Открываем параметры.
    [IMG]

    2.2. Переходим в раздел "Система".
    [IMG]

    2.3. Переходим в подраздел "О программе" и нажимаем на ссылку "Дополнительные параметры системы"
    [IMG]

    2.4. В открывшемся окне нажимаем кнопку "Параметры" в разделе "Быстродействие". В следующем окне переходим на вкладку "Дополнительно" и нажимаем кнопку "Изменить". В последнем окне выбираем "Указать размер" и задаем максимальный размер файла подкачки не менее 32 GB (32768 MB). Применяем изменения и перезагружаем компьютер.
    1. Переходим в репозиторий программы.

    2. Скачиваем архив из любого источника и распаковываем его.
    [IMG]

    3. В распакованной папке переходим в папку "DeepFaceLive". В ней выбираем один из установщиков. Так как мы хотим, чтобы DeepFaceLive задействовал нашу видеокарту, мы выберем DeepFaceLive_NVIDIA.
    [IMG]

    4. Выбираем нужный путь и распаковываем архив. Совет: не используйте в пути программы кириллицу.
    [IMG]
    1. Переходим в папку с установленной программой.

    2. Открываем файл DeepFaceLive.bat
    [IMG]

    3. В открывшейся программе выбираем нужные значения (см. фото и описание под ним).
    [IMG]
    Под цифрой:
    1 - Выбираем исходный видеоролик.
    2 - Выбираем нашу видеокарту, для ускорения процесса.
    3 - Выбираем нашу видеокарту, для ускорения процесса.
    4 - Выбираем нашу видеокарту, для ускорения процесса.
    5 - Выбираем нужную модель для дипфейка (полный список готовых моделей можно найти тут).
    6 - Выбираем нашу видеокарту, для ускорения процесса.
    7 - Выбираем "Merged frame".
    8 - Выбираем папку, куда сохранятся обработанные кадры видео (так и должно быть, смотри следующий спойлер).

    4. После этого нажимаем кнопку "Play" (цифра 9 на картинке снизу) и дожидаемся, когда обработаются все кадры. В моем случае 270 кадров.
    [IMG]
    Так как программа не предназначена для экспорта готового видеоролика, она сохраняет последовательность кадров, из которых нужно собрать итоговый видеоролик. Также, нужно добавить аудиодорожку с оригинального видеоролика. Конечно, всё это можно сделать в видеоредакторе, однако, мне проще написать маленький 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')

    2. Для удобства, положим папку с кадрами, оригинальный видеоролик и приложение / Python скрипт в одну папку.





    [IMG]

    3. Запускаем командную строку в этой папке и пишем в неё следующую команду: ftv --in original.mp4 --ff frames --out out.mp4 , где original.mp4 - это оригинальный видеоролик, frames это папка с кадрами, out.mp4 это название итогового ролика.

    4. Дожидаемся результата.
    Видеоролик, который я использовал:



    Результат всех наших усилий:



    Как Вы видите, лицо заменяется и держится стабильно, пока рядом с ним нет никаких объектов (хорошо заметны дефекты при дыме).
     
    1. Doklsi
      @Donor, неплохо, красава
    2. жди
      @Donor, заголовок и уник говорит, что статья не может быть плохой
  2. panacea
    panacea Nov 12, 2023 DeadInDesignerClothes 1272 Sep 18, 2018
    я слепой или его тут нет?
     
    1. View previous comments (1)
    2. Donor Topic starter
      panacea, отредачил, спасибо :duck_love:
    3. Veori
      panacea, бля мой пентиум не потянет
  3. Lilith
    Lilith Nov 16, 2023 Пишу и делюсь мыслями на своей стене. 3767 May 17, 2020
    О, копипаст с мипеда
     
    1. Donor Topic starter
      Lilith,
      Моя статья была опубликована 12.11.23, в то время как статья на форуме, о котором вы говорите, появилась 14.11.23. Это уже указывает на то, что моя статья была создана раньше.

      Кроме того, если вы внимательно посмотрите на фотографии, вы заметите, что мои оригинальные изображения не имеют водяных знаков, в то время как изображения в статье на форуме имеют водяные знаки (особенно хорошо видно на картинках, показывающих интерфейс программы). Это еще одно подтверждение того, что моя статья является оригинальной.

      В довесок, можно увидеть, что статья копирует даже Python скрипт.

      Я понимаю, что может быть сложно определить, кто является истинным автором в интернете, но я надеюсь, что эта информация поможет вам прояснить ситуацию.
Top
Loading...