ReSwapper visa reproduzir a implementação do inswapper. Este repositório fornece código para treinamento, inferência e inclui pesos pré-treinados.
Aqui está a comparação da saída do Inswapper e do Reswapper.
clone git https://github.com/somanchiu/ReSwapper.gitcd ReSwapper python -m venv venv venvscriptsativar pip instalar -r requisitos.txt pip instalar tocha torchvision --force --index-url https://download.pytorch.org/whl/cu121 pip instalar onnxruntime-gpu --force --extra-index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/onnxruntime-cuda-12/pypi/simple/
A arquitetura do modelo inswapper pode ser visualizada no Netron. Você pode comparar com a implementação do ReSwapper para ver semelhanças arquitetônicas
Também podemos usar o seguinte código Python para obter mais detalhes:
modelo = onnx.load('test.onnx')printable_graph=onnx.helper.printable_graph(model.graph)
alvo: formato [1, 3, 128, 128], normalizado para intervalo [-1, 1]
fonte (latente): [1, 512] forma, as características da face de origem
O cálculo do "emap" latente pode ser extraído do modelo inswapper original.
latente = source_face.normed_embedding.reshape((1,-1))latent = np.dot(latent, emap)latent /= np.linalg.norm(latent)
Não há informações divulgadas pelo insightface. É uma parte importante do treinamento. No entanto, existem muitos artigos e artigos que podem ser referenciados. Ao ler um número substancial de artigos e artigos sobre troca de rosto, fidelidade de identidade e transferência de estilo, você encontrará frequentemente as seguintes palavras-chave:
perda de conteúdo
perda de estilo/perda de id
perda perceptiva
Se não quiser treinar o modelo do zero, você pode baixar os pesos pré-treinados e passar model_path para a função train em train.py.
Baixe FFHQ para usar como imagens de destino e origem. Para as imagens de rosto trocadas, podemos usar a saída do inswapper.
Otimizador: Adam
Taxa de aprendizagem: 0,0001
Modifique o código em train.py, se necessário. Então, execute:
trem python.py
O modelo será salvo como "reswapper-
Não interrompa o treinamento muito cedo.
Estou usando um RTX3060 12GB para treinamento. Demora cerca de 12 horas para 50.000 passos.
Pode ser necessário alterar o otimizador para SGD no treinamento final, pois muitos artigos mostram que o SGD pode resultar em perdas menores.
troca python.py
reswapper-429500.pth
Criar modelo de resolução 512
Implementar funcionalidade de colagem facial
Adicione emap ao arquivo onnx