ReSwapper は、inswapper の実装を再現することを目的としています。このリポジトリはトレーニング、推論用のコードを提供し、事前トレーニングされた重みが含まれています。
以下は、Inswapper と Reswapper の出力の比較です。
git clone https://github.com/somanchiu/ReSwapper.gitcd ReSwapper Python -m venv venv venvscriptsactivate pip install -r 要件.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/
インスワッパー モデルのアーキテクチャは Netron で視覚化できます。 ReSwapper の実装と比較して、アーキテクチャの類似点を確認できます。
次の Python コードを使用して詳細を取得することもできます。
モデル = onnx.load('test.onnx')printable_graph=onnx.helper.printable_graph(model.graph)
ターゲット: [1, 3, 128, 128] 形状、[-1, 1] 範囲に正規化
ソース (潜在): [1, 512] 形状、ソース面の特徴
潜在的な「emap」の計算は、元のインスワッパー モデルから抽出できます。
latent = source_face.normed_embedding.reshape((1,-1))latent = np.dot(latent, emap)latent /= np.linalg.norm(latent)
インサイトフェイスから公開されている情報はありません。それはトレーニングの重要な部分です。ただし、参考になる記事や論文はたくさんあります。顔の交換、ID の忠実性、スタイルの転送に関するかなりの数の記事や論文を読むと、次のキーワードに頻繁に遭遇するでしょう。
コンテンツの損失
スタイルの喪失/IDの喪失
知覚の喪失
モデルを最初からトレーニングしたくない場合は、事前トレーニングされた重みをダウンロードし、train.py の train 関数に model_path を渡すことができます。
FFHQ をダウンロードして、ターゲット イメージおよびソース イメージとして使用します。交換された顔画像の場合は、inswapper 出力を使用できます。
オプティマイザー: アダム
学習率: 0.0001
必要に応じて、train.py のコードを変更します。次に、以下を実行します。
Python train.py
モデルは「reswapper-<合計ステップ数>.pth」として保存されます。
トレーニングを早すぎて中止しないでください。
トレーニングにはRTX3060 12GBを使用しています。 50,000歩には約12時間かかります。
多くの記事で SGD の方が損失が少ないことが示されているため、最終トレーニングではオプティマイザーを SGD に変更する必要がある場合があります。
Pythonスワップ.py
reswapper-429500.pth
512解像度モデルの作成
顔ペーストバック機能を実装する
emapをonnxファイルに追加する