ReSwaper 旨在重现 inswapper 的实现。该存储库提供用于训练、推理的代码,并包括预训练的权重。
这是Inswapper和Reswapper的输出比较。
git 克隆 https://github.com/somanchiu/ReSwapper.gitcd ReSwapper python -m venv venv venv脚本激活 pip install -r 要求.txt pip 安装 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 中可视化。您可以与 ReSwaper 实现进行比较以查看架构相似之处
我们还可以使用以下Python代码来获取更多详细信息:
model = onnx.load('test.onnx')printable_graph=onnx.helper.printable_graph(model.graph)
目标:[1, 3, 128, 128] 形状,标准化为 [-1, 1] 范围
source (latent): [1, 512] 形状,源人脸的特征
计算latent,“emap”可以从原来的inswapper模型中提取出来。
潜在 = source_face.normed_embedding.reshape((1,-1))潜在 = np.dot(潜在, emap)潜在 /= np.linalg.norm(潜在)
Insightface尚未发布任何信息。这是培训的重要组成部分。不过,有很多文章和论文可以参考。通过阅读大量有关换脸、ID保真度和风格迁移的文章和论文,您会经常遇到以下关键词:
内容损失
风格丢失/身份丢失
知觉丧失
如果您不想从头开始训练模型,可以下载预训练的权重并将 model_path 传递到 train.py 中的训练函数中。
下载 FFHQ 用作目标和源图像。对于交换的面部图像,我们可以使用 inswapper 输出。
优化器:亚当
学习率:0.0001
如果需要,修改train.py中的代码。然后,执行:
蟒蛇火车.py
模型将保存为“reswapper-<总步骤>.pth”。
不要过早停止训练。
我使用 RTX3060 12GB 进行训练。 50,000 步大约需要 12 小时。
最终训练时优化器可能需要更改为 SGD,因为许多文章表明 SGD 可以带来更低的损失。
蟒蛇交换.py
reswapper-429500.pth
创建512分辨率模型
实现人脸回贴功能
将emap添加到onnx文件中