ReSwapper bertujuan untuk mereproduksi implementasi inswapper. Repositori ini menyediakan kode untuk pelatihan, inferensi, dan menyertakan bobot yang telah dilatih sebelumnya.
Berikut perbandingan output Inswapper dan Reswapper.
git clone https://github.com/somanchiu/ReSwapper.gitcd ReSwapper python -m venv venv venvscriptsaktifkan instalasi pip -r persyaratan.txt pip instal obor 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/
Arsitektur model inswapper dapat divisualisasikan di Netron. Anda dapat membandingkan dengan implementasi ReSwapper untuk melihat kesamaan arsitektur
Kita juga dapat menggunakan kode Python berikut untuk mendapatkan detail lebih lanjut:
model = onnx.load('test.onnx')printable_graph=onnx.helper.printable_graph(model.graph)
target: bentuk [1, 3, 128, 128], dinormalisasi ke rentang [-1, 1]
sumber (laten): [1, 512] bentuk, ciri-ciri wajah sumber
Perhitungan laten, "emap" dapat diekstraksi dari model inswapper asli.
laten = source_face.normed_embedding.reshape((1,-1))latent = np.dot(latent, emap)latent /= np.linalg.norm(latent)
Tidak ada informasi yang dirilis dari Insightface. Ini adalah bagian penting dari pelatihan. Namun banyak sekali artikel dan makalah yang bisa dijadikan referensi. Dengan membaca sejumlah besar artikel dan makalah tentang pertukaran wajah, kesetiaan ID, dan transfer gaya, Anda akan sering menemukan kata kunci berikut:
kehilangan konten
kehilangan gaya/kehilangan id
kehilangan persepsi
Jika Anda tidak ingin melatih model dari awal, Anda dapat mengunduh bobot yang telah dilatih sebelumnya dan meneruskan model_path ke dalam fungsi kereta di train.py.
Unduh FFHQ untuk digunakan sebagai gambar target dan sumber. Untuk gambar wajah yang ditukar, kita dapat menggunakan keluaran inswapper.
Pengoptimal: Adam
Kecepatan pembelajaran: 0,0001
Ubah kode di train.py jika diperlukan. Kemudian, jalankan:
python kereta.py
Model akan disimpan sebagai "reswapper-
Jangan menghentikan pelatihan terlalu dini.
Saya menggunakan RTX3060 12GB untuk pelatihan. Dibutuhkan sekitar 12 jam untuk 50.000 langkah.
Pengoptimal mungkin perlu diubah ke SGD untuk pelatihan akhir, karena banyak artikel menunjukkan bahwa SGD dapat menghasilkan kerugian yang lebih rendah.
python swap.py
reswapper-429500.pth
Buat model resolusi 512
Menerapkan fungsionalitas tempel kembali wajah
Tambahkan emap ke file onnx