Sim Swap - нейросеть нового поколения для создания дипфейков #5
Главным отличием является скорость и относительная простота работы. Не нужно возиться с выборкой и тратить несколько суток, а то и недель на обучение!
Для создания дипфейка требуется лишь фотография и видеоролик, в который нужно вставить лицо с фотографии. Обучение не требуется, используется готовая универсальная модель, которая сразу лепит лицо на кадры.
Текущие минималки следующие: двухъядерный процессор с HT 2.3 ГГц, 8Gb ОЗУ, ноутбучная видеокарта GeForce GTX MX150 2Gb с поддержкой CUDA (красные в пролете), Windows 10 (на семерке просто не тестировал). Все, что сильнее, по идее должно потянуть. Но если заработает на еще более медленных ведрах, то можно будет легко эти системки обновить.
На качество и скорость обработки карточка не влияет, в ней хранятся кадры, поэтому аноны с двухгиговыми картами жаловались, что после 200 кадров (примерно 6-7 секунд) происходит вылет. Поэтому чем меньше видеопамяти, тем короче ролик. Либо разбивайте ваши ролики на короткие фрагменты и забейте в батч, потом опять склейте.
Время создания дипфейка в 10-11 раз превышает продолжительность оригинального ролика (при 30 fps; для 60 fps множитель увеличивается до 22).
Если подходящего железа нет, то можно использовать Colab. Но там иногда могут быть ошибки.
Kaggle-версия: https://www.kaggle.com/bananon/simswap-modifed Для новых акков Kaggle дает бесплатные 30 часов на неделю. Для каждой новой учетки приходится использовать другой номер. Будет интересен тем, кого заебали лимты Colab.
Туториал по установке и созданию роликов: https://www.youtube.com/watch?v=1NWJz_rFMq0[РАСКРЫТЬ] Если вылезет ошибка UnicodeEncodeError, то решение тут https://qiita.com/satamame/items/fdee302943b097a063de Если вкратце, то нужно изменить строку 635 в файле serialization.py В моем случае он находился по пути D:\ProgramData\Anaconda3\envs\simswap\Lib\site-packages\torch\serialization.py Было: with open(file_name, 'a+') as f: Стало: with open(file_name, 'a+', encoding='utf-8') as f:
Второй способ решения ошибки UnicodeEncodeError от другого анона: > АЛАРМ > Нашёл ебучее и тупое решение проблемы с UnicodeEncodeError > Замена Serialization не подошла т.к. эта срань не ставилась в окружение симсвап, подключиться к ней тоже не могу в связи хуй знает с чем. > Крч в анаконде тупо в ебучем anaconda/lib/encodings/cp1251.py меняем содержимое на содержимое в этой же папке в файле UTF-8.py > После этого спокойно подключаемся к окружению симсвапа и продолжаем мастурбацию китайской срани. > хуй знает, но мб кому-то поможет.
Если вылезает ошибка 'NoneType' object has no attribute, то либо еблет с фотки не распознался, любо неверный путь к файлам.
Для удаления водяного знака сначала отредактируйте файл simswaplogo.png из папки simswaplogo, удалите все символы в любом графическом редакторе, не забудьте сохранить прозрачность. Но даже если сделать файл прозрачным, остается синева. Поэтому откройте файл add_watermark.py из папки util и замените 23 строку. Должно получиться: def __init__(self, logo_path, size=0.3, oritation="DR", margin=(5,20,20,20), angle=15, rgb_weight=(0,0,0), input_frame_shape=None) -> None:
То есть вам нужно просто обнулить значения rgb_weight
Как убрать ебучий квадрат: > ЕБАТЬ РАБОТАЕТ! Не знаю, оговаривалось до меня или нет (я ток вкотился), но чтобы убрать "квадрат лица" и упрятать его, можно поиграться с настройками яркости-контраста, чуть темнее или светлее, буквально сотые от значения могут пофиксить ситуацию.
Теперь есть возможность использовать тулзу на любом ПК и ноутбуке! Все считается на процессоре! CUDA теперь необязателен!
Кодирует намного дольше, чем видеокарта, но это достойная альтернатива для всех, у кого красные или бюджетные видеокарты или их нет вовсе.
В треде /e/ анон показал возможность запуска на любом CPU. Мне подкинули идею > 1. Поставил торч цпу_онли > 2. Поменял в скриптах привязку к куде.
Что я в принципе и сделал, только для этого пришлось создавать отдельное окружение и устанавливать другие зависимости. Также я переписал код везде, где увидел привязку к CUDA на CPU.
Я сейчас тестирую отдельную версию, которая считает только на CPU и она работает, GPU и память не используется скриптами, хотя раньше она была забита под завязку.
>>250139371 Судя по всему дело в том что модель слишком маленькая, и датасет на котором модель тренировалась был слишком качественный, без артефактов сжатия и перекрытия лиц.