ReSwapper vise à reproduire l’implémentation d’inswapper. Ce référentiel fournit du code pour la formation, l'inférence et inclut des poids pré-entraînés.
Voici la comparaison des résultats d’Inswapper et Reswapper.
git clone https://github.com/somanchiu/ReSwapper.gitcd ReSwapper python -m venv venv venvscriptsactiver pip install -r exigences.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/
L'architecture du modèle inswapper peut être visualisée dans Netron. Vous pouvez comparer avec l'implémentation de ReSwapper pour voir les similitudes architecturales
Nous pouvons également utiliser le code Python suivant pour obtenir plus de détails :
modèle = onnx.load('test.onnx')printable_graph=onnx.helper.printable_graph(model.graph)
cible : forme [1, 3, 128, 128], normalisée à la plage [-1, 1]
source (latente) : [1, 512] forme, les caractéristiques de la face source
Calcul du latent, "emap" peut être extrait du modèle inswapper original.
latent = source_face.normed_embedding.reshape((1,-1))latent = np.dot(latent, emap)latent /= np.linalg.norm(latent)
Aucune information n’a été publiée par Insightface. C'est une partie importante de la formation. Cependant, de nombreux articles et documents peuvent être référencés. En lisant un nombre important d'articles et de documents sur l'échange de visage, la fidélité d'identité et le transfert de style, vous rencontrerez fréquemment les mots-clés suivants :
perte de contenu
perte de style/perte d'identité
perte de perception
Si vous ne souhaitez pas entraîner le modèle à partir de zéro, vous pouvez télécharger les poids pré-entraînés et transmettre model_path dans la fonction train dans train.py.
Téléchargez FFHQ pour l'utiliser comme images cibles et sources. Pour les images de visage échangées, nous pouvons utiliser la sortie inswapper.
Optimiseur : Adam
Taux d'apprentissage : 0,0001
Modifiez le code dans train.py si nécessaire. Ensuite, exécutez :
python train.py
Le modèle sera enregistré sous "reswapper-
N'arrêtez pas l'entraînement trop tôt.
J'utilise un RTX3060 12 Go pour la formation. Il faut environ 12 heures pour 50 000 pas.
L'optimiseur devra peut-être être remplacé par SGD pour la formation finale, car de nombreux articles montrent que SGD peut entraîner une perte moindre.
python swap.py
reswapper-429500.pth
Créer un modèle de résolution 512
Implémenter la fonctionnalité de collage du visage
Ajouter emap au fichier onnx