ReSwapper zielt darauf ab, die Implementierung von inswapper zu reproduzieren. Dieses Repository stellt Code für Training und Inferenz bereit und enthält vorab trainierte Gewichte.
Hier ist der Vergleich der Ausgabe von Inswapper und Reswapper.
Git-Klon https://github.com/somanchiu/ReSwapper.gitcd ReSwapper python -m venv venv venvscriptsactivate pip install -r Anforderungen.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/
Die Inswapper-Modellarchitektur kann in Netron visualisiert werden. Sie können einen Vergleich mit der ReSwapper-Implementierung durchführen, um architektonische Ähnlichkeiten festzustellen
Wir können auch den folgenden Python-Code verwenden, um weitere Details zu erhalten:
model = onnx.load('test.onnx')printable_graph=onnx.helper.printable_graph(model.graph)
Ziel: [1, 3, 128, 128] Form, normalisiert auf [-1, 1] Bereich
Quelle (latent): [1, 512] Form, die Merkmale des Quellgesichts
Die Berechnung der latenten „Emap“ kann aus dem ursprünglichen Inswapper-Modell extrahiert werden.
latent = source_face.normed_embedding.reshape((1,-1))latent = np.dot(latent, emap)latent /= np.linalg.norm(latent)
Es liegen keine von Insightface veröffentlichten Informationen vor. Es ist ein wichtiger Teil der Ausbildung. Es gibt jedoch viele Artikel und Aufsätze, auf die verwiesen werden kann. Wenn Sie eine beträchtliche Anzahl von Artikeln und Artikeln zum Thema Face Swapping, ID-Treue und Stilübertragung lesen, werden Sie häufig auf die folgenden Schlüsselwörter stoßen:
Inhaltsverlust
Stilverlust/ID-Verlust
Wahrnehmungsverlust
Wenn Sie das Modell nicht von Grund auf trainieren möchten, können Sie die vorab trainierten Gewichte herunterladen und model_path an die Train-Funktion in train.py übergeben.
Laden Sie FFHQ herunter, um es als Ziel- und Quellbilder zu verwenden. Für die ausgetauschten Gesichtsbilder können wir die Inswapper-Ausgabe verwenden.
Optimierer: Adam
Lernrate: 0,0001
Ändern Sie den Code in train.py bei Bedarf. Führen Sie dann Folgendes aus:
Python train.py
Das Modell wird als „reswapper-
Beenden Sie das Training nicht zu früh.
Ich verwende für das Training eine RTX3060 12 GB. Für 50.000 Schritte dauert es etwa 12 Stunden.
Für das abschließende Training muss der Optimierer möglicherweise auf SGD geändert werden, da in vielen Artikeln gezeigt wird, dass SGD zu geringeren Verlusten führen kann.
Python swap.py
reswapper-429500.pth
Erstellen Sie ein Modell mit einer Auflösung von 512
Implementieren Sie die Funktion zum Zurückkleben von Gesichtern
Fügen Sie Emap zur ONNX-Datei hinzu