DeepFake своими руками - знакомимся с пакетом DeepFaceLab
23.01.2020 6 109 0 +154 Rageskin

DeepFake своими руками - знакомимся с пакетом DeepFaceLab

---
+154
В закладки
DeepFake своими руками - знакомимся с пакетом DeepFaceLab видео, можно, data_src, более, data_dst, extract, модели, создания, который, только, чтобы, check, video, кадры, DeepFaceLab, некоторые, очень, лучше, images, использовать

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

DeepFake, DeepNude, Deep... - всё чаще слова с данным корнем звучат с экранов ТВ или пестрят в заголовках статей и блогов, заманивая сочной провокационной картинкой на обложке. Нейросети всё лучше учатся распознавать или изменять наши лица, тела, голоса. Всё труднее становится заметить эти подделки даже профессионалам. Источник скандалов и дискредитации известных персон, удел мошенников или просто обычное хобби и весёлый досуг? Всё зависит от чистоты помыслов людей, в чьих руках (особенно если прямых) оказывается подобное ПО. Моё внимание к данного рода программам привлекли видео, где  Сталлоне остался "Один дома" и был вместо Арнольда в "Терминатор 2". Захотелось попробовать и узнать - насколько реально освоить это ремесло человеку, не обладающему знаниями в этой области, а также и не имеющему особых навыков использования фото- и видеоредакторов?! Попробуем разобраться вместе!

Скачав данный пакет программ (DeepFaceLab) около недели назад, я был несколько ошарашен, ибо перед моим взором предстала следующая картина:

DeepFake своими руками - знакомимся с пакетом DeepFaceLab видео, можно, data_src, более, data_dst, extract, модели, создания, который, только, чтобы, check, video, кадры, DeepFaceLab, некоторые, очень, лучше, images, использовать

Однако постепенно, шаг за шагом изучая обучающие видео и pdf файл обучения, пробуя что-то с этим всем добром сделать, я понял, что это - большой труд, который проделал автор данного ПО, чтобы облегчить наше бремя создания видеофейков. Сильно глубоко вдаваться в сам процесс создания DeepFake (далее DF) не буду: для этого есть, уже упомянутые выше - видео на ютуб от автора, других умельцев и мануал (или писать отдельную статью). Но некоторые пояснения, которые возможно смогут помочь людям, решившим бросить вызов коварным нейросетям, я, с вашего позволения, попробую сообщить.

Про железо, куда же без него родного! Кроме очевидного (конец первого абзаца), тут есть некоторые нюансы: т.к. лимитирующим по времени этапом создания DF является тренировка нейросети (далее ИИ), которое происходит на видеокарте (CUDA предпочтительнее, но можно даже на встройке!), то именно её параметры будут нам важнее, чем CPU. Мощь ядра и большой объём VRAM - ускоряют процесс и позволяют использовать более "тяжёлые" настройки, влияющие как на скорость некоторых операций, так и качество итогового видеоматериала. Автор пакета выставил следующие требования к комплектующим:
Минимальные системные требования: Windows 7 и выше, процессор с поддержкой SSE инструкций, 2Gb ОЗУ с подкачкой, OpenCL-совместимая видеокарта (NVIDIA, AMD, Intel HD Graphics)
Рекомендуемые системные требования: Windows 7 и выше, процессор с поддержкой AVX инструкций, 8Gb ОЗУ, NVIDIA видеокарта 6GB видео памяти.

Из чего можно сделать вывод, что лучше использовать карты уровня GeForce GTX 1060 (и более поздние аналоги) для nVidia или AMD Radeon 470 и выше. Мой конфиг: Ryzen 7 1800X @ 4.0 GHz, GeForce GTX 1080 Ti.

Отбор видеоматериала источника лица и видео, из которого делают DF - огромное, если не решающее, влияние на итоговый результат. Лучше использовать FHD исходники, ну или уж хотя бы честный HD. Выбор персонажей для источника лица и под замену - второй кит, на котором держится успешность нашего фейка. Если вы заменяете, например, блондинку с прямыми волосами на брюнетку с пышными - есть не иллюзорный шанс получить плохую узнаваемость героя DF. Худых моделей легче "вписать" в толстых, что наверное логично. Есть конечно исключения - вдруг вы, наоборот, хотите довести фэйк до абсурда и вписываете специально какие-то нелепые соотношения моделей (старика в ребёнка и т.д.). Такой подход тоже вполне имеет право на жизнь! Последний этап "пробоподготовки" - тщательно проверить: какие лица выделил детектор лиц, а он выделяет ВСЮ массовку! И приходится переназначать такие кадры вручную. Тренироваться лучше начинать на простых сценах, где 1 человек, и он более менее статичен: пресс-конференции, монологи и всё в таком духе. По мере увеличения способностей, повышать сложность сцены. Ещё очень важный момент при отборе лиц: SRC - это лицо, которые мы хотим вставить. DST - лицо, заменяемое в нашем фэйке. SRC лицо - нужно очень серьёзно "просеивать": удалять кадры, где чем-то закрывается лицо, размытые, смазанные и т.д. Оставлять только чёткие! А DST наоборот - нам нужны абсолютно все кадры с данным лицом, а иначе потом будут пропуски кадров, и настоящий герой видео будет возвращаться в фэйк.

Тренировка ИИ. Сложный процесс, имеющий кучи, непонятных не только новичку, но и чуть более опытным пользователям, настроек (в продвинутых моделях), поэтому лучше начинать либо с H64 или с DF (в данном случае это название модели для тренировки), т.к. они проще. Хотя можно запускать и более сложные модели, такие как SAE и SAE HD, в режиме "по умолчанию", главное чтобы хватило VRAM, иногда надо снижать некоторые параметры. Тренировать ИИ рекомендуют ОТ одного дня. Но на картах уровня 1080ti и выше, на мой взгляд, это время можно сократить, но исходя из результата, который выводится на экран в процессе тренировки. Пример:

DeepFake своими руками - знакомимся с пакетом DeepFaceLab видео, можно, data_src, более, data_dst, extract, модели, создания, который, только, чтобы, check, video, кадры, DeepFaceLab, некоторые, очень, лучше, images, использовать

Выложу свой стандартный алгоритм создания DF, который поможет в самостоятельном освоении:

  1. 2) extract images from video data_src (источники лиц - им заменяют)
  2. 3.2) extract images from video data_dst FULL FPS (лицо, которое будет заменено)
  3. 4) data_src extract faces S3FD all GPU (детектирование лиц источника)
  4. [4.1) data_src check result] (удаляем всех левых персонажей, ошибочные кадры - крупные массивы фото, остальное отсеем позже)
  5. 4.2.2) data_src sort by similar histogram
  6. 4.1) data_src check result
  7. 4.2.1) data_src sort by blur
  8. 4.1) data_src check result (удалить мутные)
  9. 4.2.6) data_src sort by best (автоматика сама отбирает лучшие лица и удаляет ненужные, можно сразу использовать только этот пункт и потом вручную проверить, не осталось ли там "неликвида")
  10. 5) data_dst extract faces S3FD all GPU (детектирование лица "под замену")
  11. [5.1) data_dst check results]
  12. 5.2) data_dst sort by similar histogram
  13. 5.1) data_dst check results
  14. 5.3) data_dst sort by blur (Ручная проверка и удаление кадров, где несколько лиц или не совсем корректно определены контуры нужного лица в папке DeepFaceLabworkspacedata_dstaligned_debug).
  15. 5) data_dst extract faces MANUAL RE-EXTRACT DELETED
    RESULTS DEBUG (восстановление удалённого и последующая ручная разметка маски лица)
  16. 6) train SAE HD  (тренировка модели, можно брать другую использовав соответвующий *.bat файл)
  17. 7) convert SAE HD (замена dst лица на src, используя натренированную ранее модель)
  18. 8) converted to mp4 ("склеивание" стоп-кадров в видео)
Здесь "2) extract images from video data_src" - это "батник"  "2) extract images from video data_src.bat" из папки "DeepFaceLab" и т.д. Эх, наверное сумбур уже пошёл, и я тут чутка перегрузил терминами, которые сложно воспринимать без подробного описания,  а писать полную статью с подробным описанием всех действий - я в данный момент не потяну. При просмотре самых вводных видео от автора ПО - многое встанет на свои места. Если не хотите пока забивать голову, можно бегло пробежать по видео ниже, чтобы понять приблизительный уровень DF у человека, который неделю (плотно) пытался разбираться в этом вопросе. И сделать какие-то выводы о дальнейшей целесообразности самостоятельных попыток создания DeepFake видео.

Вывод: за неделю ознакомиться с данным пакетом можно, но получить реально хороший уровень фэйков - тяжело (если конечно вы не гений :)), потому что многие параметры моделей можно подбирать только эмпирическим путём или общаясь с более опытными фэйкерами, например, на рутрекере.
Привожу варианты своих "работ", чтобы вы могли оценить приблизительный уровень и некий прогресс в динамике обучения. Если она вообще имеется конечно. Все видео приводить не буду, можно поглядеть на моём канале. Только основные вехи.

Самое первое видео, его исходники идут в комплекте DeepFaceLab, т.е. и предназначены для первых тренировок (файлы data_dst.mp4 и data_src.mp4 в папке "DeepFaceLabworkspace", свои видеофайлы вы в дальнейшем должны называть также, чтобы программа их подхватывала и использовала).

Тут особо и комментировать нечего, ляп на ляпе. По сути, я в тот момент просто жал почти везде "Enter" и всё было в режиме "по умолчанию", т.к. я ещё мало что понимал и не умел менять настройки (модели масок, цветовые и почти все прочие). Это делается уже почти в конце, на этапе "7) convert SAE HD" из алгоритма выше. Время тренировки модели - около 3-4 часов.

Далее пошёл этап набивания шишек (я многие из них уже озвучил ранее): когда наше видео по качеству хуже чем источник - получается, что очень сильно заметны грани заменённого лица. Один  раз я не заметил, что детектор не взял некоторые лица, и они потом исчезли в видео. Выбор слишком сложных динамических сцен, совершенно разное освещение SRC и  DST лиц - тоже получается слишком "топорная" вставка.
Пример ошибки со вставкой Поклонской в Шурыгину - она довольно тяжело узнаётся из-за совсем разных причёсок и цвета волос:

Тут на миг пропадает лицо Греты (замена на неизвестную широкой общественности журналистку):

Ну и в самом конце, самый последний фэйк, который закончил только сегодня - тренировал 16 часов, личный рекорд пока что. Само обращение очень сочное, хорошего качества, а мой источник лица немного не дотягивает до такого уровня детализации и цветопередачи, возможно если продолжить тренировку модели с некоторыми другими настройками - его качество ещё можно поднять:

Если кого-то заинтересовала данная тема - скачивайте DeepFaceLab, устанавливайте и вперёд! Какие-то моменты могу попробовать подсказать, но в Интернете достаточно подробных рукописных и видеогайдов.

уникальные шаблоны и модули для dle
Комментарии (0)
Добавить комментарий
Прокомментировать
[related-news]
{related-news}
[/related-news]