ReSwapper는 inswapper의 구현을 재현하는 것을 목표로 합니다. 이 저장소는 훈련, 추론을 위한 코드를 제공하고 사전 훈련된 가중치를 포함합니다.
다음은 Inswapper와 Reswapper의 출력을 비교한 것입니다.
자식 클론 https://github.com/somanchiu/ReSwapper.gitcd ReSwapper 파이썬 -m venv venv venv스크립트활성화 pip 설치 -r 요구사항.txt pip 설치 토치 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에서 시각화할 수 있습니다. ReSwapper 구현과 비교하여 아키텍처 유사성을 확인할 수 있습니다.
다음 Python 코드를 사용하여 자세한 내용을 얻을 수도 있습니다.
모델 = onnx.load('test.onnx')printable_graph=onnx.helper.printable_graph(model.graph)
대상: [1, 3, 128, 128] 모양, [-1, 1] 범위로 정규화됨
소스(잠재): [1, 512] 모양, 소스 얼굴의 특징
잠재 계산인 "emap"은 원래 inswapper 모델에서 추출될 수 있습니다.
latent = source_face.normed_embedding.reshape((1,-1))latent = np.dot(latent, emap)latent /= np.linalg.norm(latent)
Insightface에서 공개된 정보가 없습니다. 훈련의 중요한 부분입니다. 하지만 참고할 수 있는 논문과 논문은 많습니다. 얼굴 교환, ID 충실도, 스타일 이전에 관한 수많은 기사와 논문을 읽으면 다음과 같은 키워드를 자주 접하게 됩니다.
콘텐츠 손실
스타일 손실/ID 손실
지각 상실
모델을 처음부터 훈련하고 싶지 않다면 사전 훈련된 가중치를 다운로드하고 model_path를 train.py의 훈련 함수에 전달할 수 있습니다.
FFHQ를 다운로드하여 대상 및 소스 이미지로 사용하세요. 교체된 얼굴 이미지의 경우 inswapper 출력을 사용할 수 있습니다.
옵티마이저: 아담
학습률: 0.0001
필요한 경우 train.py의 코드를 수정하세요. 그런 다음 다음을 실행합니다.
파이썬 train.py
모델은 "reswapper-<총 단계>.pth"로 저장됩니다.
훈련을 너무 일찍 중단하지 마십시오.
저는 훈련용으로 RTX3060 12GB를 사용하고 있습니다. 50,000걸음에는 약 12시간이 소요됩니다.
많은 기사에서 SGD가 손실을 줄일 수 있다는 것을 보여 주므로 최종 훈련을 위해 최적화 프로그램을 SGD로 변경해야 할 수도 있습니다.
파이썬 스왑.py
reswapper-429500.pth
512 해상도 모델 생성
얼굴 붙여넣기 기능 구현
onnx 파일에 emap 추가