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檔案中