ReSwapper tiene como objetivo reproducir la implementación de inswapper. Este repositorio proporciona código para entrenamiento e inferencia e incluye pesos previamente entrenados.
Aquí está la comparación de la producción de Inswapper y Reswapper.
clon de git https://github.com/somanchiu/ReSwapper.gitcd ReSwapper pitón -m venv venv venvscriptsactivar instalación de pip -r requisitos.txt pip instalar antorcha 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/
La arquitectura del modelo inswapper se puede visualizar en Netron. Puede comparar con la implementación de ReSwapper para ver similitudes arquitectónicas.
También podemos usar el siguiente código Python para obtener más detalles:
modelo = onnx.load('test.onnx')printable_graph=onnx.helper.printable_graph(modelo.graph)
objetivo: forma [1, 3, 128, 128], normalizada a rango [-1, 1]
fuente (latente): [1, 512] forma, las características de la cara de origen
El cálculo del "emap" latente se puede extraer del modelo inswapper original.
latente = source_face.normed_embedding.reshape((1,-1))latente = np.dot(latente, emap)latente /= np.linalg.norm(latente)
No hay información publicada por insightface. Es una parte importante del entrenamiento. Sin embargo, hay muchos artículos y documentos a los que se puede hacer referencia. Al leer una cantidad sustancial de artículos y artículos sobre intercambio de rostros, fidelidad de identificación y transferencia de estilo, con frecuencia encontrará las siguientes palabras clave:
pérdida de contenido
pérdida de estilo/pérdida de identificación
pérdida de percepción
Si no desea entrenar el modelo desde cero, puede descargar los pesos previamente entrenados y pasar model_path a la función de tren en train.py.
Descargue FFHQ para usarlo como imágenes de destino y de origen. Para las imágenes de caras intercambiadas, podemos usar la salida inswapper.
Optimizador: Adán
Tasa de aprendizaje: 0,0001
Modifique el código en train.py si es necesario. Luego, ejecuta:
tren python.py
El modelo se guardará como "reswapper-
No dejes el entrenamiento demasiado pronto.
Estoy usando un RTX3060 de 12 GB para entrenar. Se necesitan alrededor de 12 horas para dar 50.000 pasos.
Es posible que sea necesario cambiar el optimizador a SGD para la capacitación final, ya que muchos artículos muestran que SGD puede generar una menor pérdida.
intercambio de Python.py
reswapper-429500.pth
Crear modelo de resolución 512
Implementar la funcionalidad de pegar caras
Agregue emap al archivo onnx