ReSwapper стремится воспроизвести реализацию inswapper. Этот репозиторий предоставляет код для обучения, вывода и включает предварительно обученные веса.
Вот сравнение результатов Inswapper и Reswapper.
git клон https://github.com/somanchiu/ReSwapper.gitcd ReSwapper python -m венв венв venvscriptsactivate pip install -r требования.txt pip install torch torchvision --force --index-url https://download.pytorch.org/whl/cu121 pip install onnxruntime-gpu --force --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/
Архитектуру модели inswapper можно визуализировать в Netron. Вы можете сравнить реализацию ReSwapper, чтобы увидеть сходство архитектуры.
Мы также можем использовать следующий код Python, чтобы получить более подробную информацию:
модель = onnx.load('test.onnx')printable_graph=onnx.helper.printable_graph(model.graph)
цель: форма [1, 3, 128, 128], нормализованная до диапазона [-1, 1]
источник (скрытый): [1, 512] форма, особенности грани источника
Расчет скрытой «emap» можно извлечь из исходной модели inswapper.
latent = source_face.normed_embedding.reshape((1,-1))latent = np.dot(latent, emap)latent /= np.linalg.norm(latent)
Информации от Insightface нет. Это важная часть обучения. Однако существует множество статей и документов, на которые можно ссылаться. Прочитав значительное количество статей и статей о замене лиц, точности идентификации и переносе стиля, вы часто будете сталкиваться со следующими ключевыми словами:
потеря контента
потеря стиля/потеря идентификатора
потеря восприятия
Если вы не хотите обучать модель с нуля, вы можете загрузить предварительно обученные веса и передать model_path в функцию поезда в train.py.
Загрузите FFHQ, чтобы использовать его в качестве целевых и исходных изображений. Для замененных изображений лиц мы можем использовать выходные данные программы перестановки.
Оптимизатор: Адам
Скорость обучения: 0,0001
При необходимости измените код в train.py. Затем выполните:
поезд Python.py
Модель будет сохранена как «reswapper-<общее количество шагов>.pth».
Не прекращайте тренировку слишком рано.
Для обучения я использую RTX3060 12 ГБ. Для прохождения 50 000 шагов требуется около 12 часов.
Для окончательного обучения, возможно, потребуется изменить оптимизатор на SGD, поскольку во многих статьях показано, что SGD может привести к меньшим потерям.
python swap.py
reswapper-429500.pth
Создать модель с разрешением 512
Реализация функции обратной вставки лица
Добавить электронную карту в файл onnx